[Bug middle-end/27950] [4.2 regression] undefined reference when compiling valgrind 3.2.0

seongbae dot park at gmail dot com gcc-bugzilla@gcc.gnu.org
Fri Jun 23 18:44:00 GMT 2006



------- Comment #4 from seongbae dot park at gmail dot com  2006-06-23 18:43 -------
The problem is causedby the extra DW_AT_const_value.
4.1.0 generates the following dwarf entry for auxmap:

 <1><a30c>: Abbrev Number: 31 (DW_TAG_variable)
     DW_AT_name        : (indirect string, offset: 0x35e): auxmap
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 362
     DW_AT_type        : <a318>
 <1><a318>: Abbrev Number: 26 (DW_TAG_const_type)

whereas 4.2.0 generates:
 <1><9c6e>: Abbrev Number: 70 (DW_TAG_variable)
     DW_AT_name        : (indirect string, offset: 0x16dd): auxmap_used
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 361
     DW_AT_type        : <9c69>
     DW_AT_const_value : 0

and the bad relocation is the value of DW_AT_const_value.
In the asembly:
        .uleb128 0x48
        .long   .LASF367
        .byte   0x1
        .value  0x16a
        .long   0x9c8b
        .long   hacky_auxmaps
        .uleb128 0x1b

Looks like the new feature to note the constant value of a symbol 
(auxmap is initialized to &hacky_auxmaps[0] as shown above)
causes the relocation to be left against a static symbol.


-- 

seongbae dot park at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |seongbae dot park at gmail
                   |                            |dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27950



More information about the Gcc-bugs mailing list