I have an undocumented shared object, libXSAL.so, which I would like to link against.
I have written a partial header file containing the functions I need, with signatures inferred from reverse engineering with Ghidra.
gcc
fails at link time: undefined reference to 'function_name'
for each of the functions I use.
nm -D libXSAL.so
nm: libXSAL.so: No symbols
objdump -t libXSAL.so
libXSAL.so: file format elf32-littleSYMBOL TABLE:no symbols
However, Ghidra spots the names of the functions as given in the symbol table, and by picking through the hexdump manually, I can see them too.
As far as I can see, name mangling is not at hand in the library nor my own code; the library seems to be C, and my code is too.
My goal is to be able to link to this library as it is.
Why do some tools see symbols, while others do not?