On Fri, Oct 17, 2008 at 01:06:29PM -0500, Steven Munroe wrote: > Alan can you respond to this. This XLC but I suspect it is common with > GCC and the PPC64 ABI.
Indeed, this is due to the ABI. Content-Description: Forwarded message - finding fuction names > To: linuxppc-dev@ozlabs.org > Subject: finding fuction names > From: [EMAIL PROTECTED] > Date: Fri, 17 Oct 2008 11:07:11 -0400 > Cc: [EMAIL PROTECTED] > > /* > > Hi, > > We have code in our product that produces stacktraces. Part of the > implementation of this code runs nm to find all of the entry points in > our libraries. > > Using the 7.0 version of this compiler to compile the simple code below > > xlC_r -c -q64 tt.cxx > nm -C tt.o > U __IBMCPlusPlusExceptionV1 > 0000000000000000 D test() > 0000000000000000 T .test() > > Using the 8.0 version of this compiler to compile the simple code below > > xlC_r -c -q64 tt.cxx > nm -C tt.o > U __IBMCPlusPlusExceptionV2 > 0000000000000000 D test() > > > We grep the nm output for text symbols which are labeled with 'T'. > Not all function names are not labeled as text in objects compiled with > 8.0. > Is there another way to find all of the fuction names in a library or > a compiler switch that will put all fuctions into the text segment ? The PowerPC64 ABI uses function descriptors, stored in the .opd section, a data section. The address of a function is that of its descriptor, which nm correctly shows as a 'D' type symbol. A symbol marking the start of the function code is unnecessary since you can find that from the descriptor, so later compilers omit the "dot" symbol. nm --synthetic will look up the descriptor for you and display fake "dot" symbols marking the start of each function's code. -- Alan Modra Australia Development Lab, IBM _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev