2


the title already describes my problem.
I found this post, but it didn't completely answers my question.
With the help of it i got this output from nm...

$nm -C -g -D ./libLoggingHandler.so 

000000cc A _DYNAMIC
...
000042e0 T write_str(char*, char const*, int*)
00005a78 T RingBuffer::WriteUnlock()
...
00005918 T TraceLines::GetItemSize()
...
         U SharedMemory::attach(int, void const*, int)
...
00003810 T TraceProfile::FindLineNr(int, int)
...
00002d40 T LoggingHandler::getLogLevel()
...
         U SharedResource::getSharedResourceKey(char const*, int)
...

which are the exported functions? I already found a hint in this post, that the "T" indicates that its getting exported. But if i check the nm manual here, it just says
T - The symbol is in the text (code) section.
My questions is: Does this output give me the information which functions are exported functions (or variables)?
If not, how do i get it?

Greetings, Pingu

Community
  • 1
  • 1
Pingu
  • 31
  • 1
  • 7

2 Answers2

0

i tried to check it myself using IDA, where you can see all the exported functions and variables. It seems that if the nm output line is marked with a 'T' or a 'B' it is a exported function.
Not sure if this works for every .so file, but as long as nobody else has a better solution...
Please correct me if i'm wrong.

Greetings Pingu

Pingu
  • 31
  • 1
  • 7
0

As an addendum, usually that .so file is only a pointer/link to the real file such as:

foo.so -> foo.so.1.5.1

Make sure it points to the version you think it should be pointing/linking to. Installations can go awry, it's a nice sanity check.