Hi Jim,

On 9/12/07, Jim Wilson <[EMAIL PROTECTED]> wrote:
> Sunzir Deepur wrote:
> > recently I've encountered a problem in which some removals of
> > (what seems to be unneeded) lines of header files inflicted changes in
> > the resulting binary. further inverstigation showed
> > that the chages were different __FUNCTION__.numbers (in the __FUNCTION__.
> > xxx symbol names).
>
> This would be clearer if you gave an example.

 This is the diff between the old and the new binaries examined
under objdump -d -t :

2c2
< old.o:     file format elf32-i386
---
> new.o:     file format elf32-i386
10c10
< 00000000 l     O .rodata      0000000f __FUNCTION__.4883
---
> 00000000 l     O .rodata      0000000f __FUNCTION__.4848
12c12
< 0000005a l     O .rodata      00000010 __FUNCTION__.4921
---
> 0000005a l     O .rodata      00000010 __FUNCTION__.4886
17c17
< 000000d8 l     O .rodata      00000015 __FUNCTION__.4965
---
> 000000d8 l     O .rodata      00000015 __FUNCTION__.4930
20c20
< 00000119 l     O .rodata      0000000e __FUNCTION__.5002
---
> 00000119 l     O .rodata      0000000e __FUNCTION__.4967
22c22
< 000001a8 l     O .rodata      0000000e __FUNCTION__.5022
---
> 000001a8 l     O .rodata      0000000e __FUNCTION__.4987
24c24
< 0000021b l     O .rodata      00000010 __FUNCTION__.5051
---
> 0000021b l     O .rodata      00000010 __FUNCTION__.5016

> However, I'm guessing
> that the issue here is the names for function local statics.  The names
> for these are unique within a function, but not unique across a file.
> The assembler requires unique names for them, so we add the DECL_UID to
> make them unique.  See lhd_set_decl_assembler_name in langhooks.c.  The
> DECL_UID changes if you add/delete declarations.

Yes ! That is it ! Thanks so much ! I use the __FUNCTION__ macro
in my code, and i guess it is translated into a static variable holding
the function name, which perfectly fits your explanation !

Thanks!!
Sunzir

Reply via email to