I noticed these symbols are always emitted by the Mold linker and the presence of the symbols seems to me pretty hand when it comes to disassembly:
$ cat lib.c
void foo() {
__builtin_printf("xxx\n");
}
$ gcc lib.c -fPIC -shared -o lib.so -fuse-ld=mold
$ readelf -sW lib.so
...
67: 00000000000026f0 0 NOTYPE LOCAL DEFAULT 19 _DYNAMIC
68: 00000000000028e8 0 NOTYPE LOCAL DEFAULT 21 _GLOBAL_OFFSET_TABLE_
69: 00000000000015e0 0 NOTYPE LOCAL DEFAULT 16 _PROCEDURE_LINKAGE_TABLE_
...
81: 0000000000000000 0 TLS LOCAL DEFAULT 1 _TLS_MODULE_BASE_
On the other hand, the Wild linker does not emit these symbols.
I noticed these symbols are always emitted by the Mold linker and the presence of the symbols seems to me pretty hand when it comes to disassembly:
On the other hand, the Wild linker does not emit these symbols.