Subject | Re: [firebird-support] running Firebird without fbintl |
---|---|
Author | Hamish Moffatt |
Post date | 2018-07-10T00:00:33Z |
On 06/07/18 18:59, Dimitry Sibiryakov sd@...
[firebird-support] wrote:
delete[](), while libfbembed.dylib is not.
macOS has nm but it doesn't demangle. They have their own utility
symbols(1).
Here's the whole list of symbols exported (flags including "EXT") from
fbintl:
$ symbols Versions/A/fbintl| grep " EXT"
0x00000000000016c0 ( 0x130) LD_lookup_charset [FUNC,
EXT, NameNList, MangledNameNList, Merged, NList, FunctionStarts]
0x0000000000001840 ( 0x340) LD_lookup_texttype [FUNC,
EXT, NameNList, MangledNameNList, Merged, NList, FunctionStarts]
0x0000000000001b80 ( 0x2a0) LD_setup_attributes
[FUNC, EXT, NameNList, MangledNameNList, Merged, NList, FunctionStarts]
0x0000000000001ef0 ( 0x40) LD_version [FUNC, EXT,
NameNList, MangledNameNList, Merged, NList, FunctionStarts]
0x0000000000037b90 ( 0x40) operator new(unsigned
long) [FUNC, EXT, NameNList, MangledNameNList, Merged, NList,
FunctionStarts]
0x0000000000037c20 ( 0x40) operator new[](unsigned
long) [FUNC, EXT, NameNList, MangledNameNList, Merged, NList,
FunctionStarts]
0x0000000000037c60 ( 0x40) operator delete(void*)
[FUNC, EXT, NameNList, MangledNameNList, Merged, NList, FunctionStarts]
0x0000000000037cf0 ( 0x40) operator delete[](void*)
[FUNC, EXT, NameNList, MangledNameNList, Merged, NList, FunctionStarts]
ie new, new[], delete and delete[] are exported.
Meanwhile libfbembed.dylib (ie the main Firebird binary) has these
marked as PEXT = private-external.
$ symbols libfbembed.dylib | grep delete
....
0x0000000030451b70 ( 0x40) operator delete(void*)
[FUNC, PEXT, NameNList, MangledNameNList, Merged, NList, FunctionStarts]
0x0000000030451bb0 ( 0x40) operator delete[](void*)
[FUNC, PEXT, NameNList, MangledNameNList, Merged, NList, FunctionStarts]
Now to work out how to fix it.
Hamish
[firebird-support] wrote:
> 06.07.2018 10:45, 'Paul Beach' pbeach@... [firebird-support] wrote:Right, it looks like fbintl is exporting operator delete() and operator
>>> With GCC "-fvisibility=internal" can be used to suppress exporting of all symbols.
>> We currently use -fvisibility-inlines-hidden and -fvisibility=hidden for clang...
> But still framework somehow calls internal delete. Did you check exported symbols with
> nm (or whatever utility on MacOS can show public symbols of a library)?
delete[](), while libfbembed.dylib is not.
macOS has nm but it doesn't demangle. They have their own utility
symbols(1).
Here's the whole list of symbols exported (flags including "EXT") from
fbintl:
$ symbols Versions/A/fbintl| grep " EXT"
0x00000000000016c0 ( 0x130) LD_lookup_charset [FUNC,
EXT, NameNList, MangledNameNList, Merged, NList, FunctionStarts]
0x0000000000001840 ( 0x340) LD_lookup_texttype [FUNC,
EXT, NameNList, MangledNameNList, Merged, NList, FunctionStarts]
0x0000000000001b80 ( 0x2a0) LD_setup_attributes
[FUNC, EXT, NameNList, MangledNameNList, Merged, NList, FunctionStarts]
0x0000000000001ef0 ( 0x40) LD_version [FUNC, EXT,
NameNList, MangledNameNList, Merged, NList, FunctionStarts]
0x0000000000037b90 ( 0x40) operator new(unsigned
long) [FUNC, EXT, NameNList, MangledNameNList, Merged, NList,
FunctionStarts]
0x0000000000037c20 ( 0x40) operator new[](unsigned
long) [FUNC, EXT, NameNList, MangledNameNList, Merged, NList,
FunctionStarts]
0x0000000000037c60 ( 0x40) operator delete(void*)
[FUNC, EXT, NameNList, MangledNameNList, Merged, NList, FunctionStarts]
0x0000000000037cf0 ( 0x40) operator delete[](void*)
[FUNC, EXT, NameNList, MangledNameNList, Merged, NList, FunctionStarts]
ie new, new[], delete and delete[] are exported.
Meanwhile libfbembed.dylib (ie the main Firebird binary) has these
marked as PEXT = private-external.
$ symbols libfbembed.dylib | grep delete
....
0x0000000030451b70 ( 0x40) operator delete(void*)
[FUNC, PEXT, NameNList, MangledNameNList, Merged, NList, FunctionStarts]
0x0000000030451bb0 ( 0x40) operator delete[](void*)
[FUNC, PEXT, NameNList, MangledNameNList, Merged, NList, FunctionStarts]
Now to work out how to fix it.
Hamish