This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: strip vs. nm vs. readelf


Indeed, the output of "nm -D" produced a lot of symbols, and inspection of readelf output listed a lot of symbols in the .dynsym section.

Thanks. This resolves my initial confusion regarding apparent contradictory output of these programs.

It also made me want to learn more about;
- the meaning of the various sections;
- which parts of source code can be found in which sections (related to loading, relocation and dynamic linking).


Could anybody recommend books or other sources of information from where I could start an exploration of these areas? My first interest is an introductory text, but more advanced material is also most welcome.


Thanks in advance,


Erik Leunissen
==============





On Wed, Dec 14, 2005 at 10:24:11PM +0100, Erik Leunissen wrote:

L.S.

I stumble across some apparent contradictory behaviour of the applications strip, nm and readelf.

This occurs when processing a shared lib "myLib.so" which has been subjected to the strip application as follows:

strip --strip-unneeded myLib.so


       --strip-unneeded
           Remove all symbols that are not needed for relocation processing.

... but leaves the dynamic symbol table; that is always necessary.


Next, when I invoke:

nm -a myLib.so

the output is (as expected):

nm: myLib.so: no symbols


Try nm -D myLib.so.


Finally, when doing:

readelf -a myLib.so

a lot of information is emitted, including the names of symbols that I believed to be removed by strip.


See which section it says they're in.  They'll be in .dynsym, which is
part of the executable image.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]