Why are dwarf2 symbols getting assigned hidden visibility?

John Marino gnugcc@marino.st
Sat Jan 15 10:56:00 GMT 2011


I really could use some help on this issue.
After examining the build logs of both DragonFlyBSD and NetBSD, I 
noticed an interesting difference between the binutils of each system.

DBSD assembler supports .weakref
NBSD assembler does not.

When reading symbols of env.o (comes from gcc/ada/env.c), there is a 
weak symbol there
35: 0000000000000000     8 OBJECT  WEAK   HIDDEN   20 
DW.ref.__gcc_personality_

unwind-c.c defines PERSONALITY_FUNCTION as __gcc_personality_v0
libgcc/config/i386/morestack.S mentions the same along with 
DW.ref.__gcc_personality_v0

Could the inability of NetBSD assembler support .weakref be the 
explanation for the unwind symbols to be marked as hidden on the gnat1 
executable even though they are marked as global on their individual 
object files?

Thanks, I'm a bit over my head on this topic.

John




On 1/13/2011 8:12 AM, John Marino wrote:
> I've successfully built the GNAT front-end of gcc 4.6 on several BSD 
> platforms.  The NetBSD versions (i386 and AMD64) have a problem that I 
> can't figure out, and I suspect it can be fixed with a change to the 
> build configuration.
>
> Although NetBSD passes its regression tests cleanly, there are some 
> dwarf2 functions it doesn't seem to recognize.  When I listed hidden 
> symbols embedded in a pre-stripped gnat1 executable, here is the result:
>
> > readelf -s gnat1 | grep HIDDEN
>  19135: 0000000000fc68c0   389 FUNC    LOCAL  HIDDEN   11 
> _Unwind_Find_FDE
>  19136: 0000000000fc4dc0    21 FUNC    LOCAL  HIDDEN   11 
> _Unwind_GetIPInfo
>  19137: 0000000000fc4db0     8 FUNC    LOCAL  HIDDEN   11 _Unwind_GetIP
>  19138: 0000000000fc66a0    38 FUNC    LOCAL  HIDDEN   11 
> __register_frame
>  19139: 0000000000fc52b0   241 FUNC    LOCAL  HIDDEN   11 
> _Unwind_Resume_or_Rethrow
>  19140: 0000000000fc4e00     8 FUNC    LOCAL  HIDDEN   11 
> _Unwind_GetRegionStart
>  19141: 0000000000fc53d0   155 FUNC    LOCAL  HIDDEN   11 
> _Unwind_Backtrace
>  19142: 0000000001299720   256 OBJECT  LOCAL  HIDDEN   13 __popcount_tab
>  19143: 0000000000fc4d50     8 FUNC    LOCAL  HIDDEN   11 _Unwind_GetCFA
>  19144: 00000000014b8820     0 OBJECT  LOCAL  HIDDEN   17 __DTOR_END__
>  19145: 00000000014b9168     0 OBJECT  LOCAL  HIDDEN   22 __dso_handle
>  19146: 0000000000fc4e60   269 FUNC    LOCAL  HIDDEN   11 
> __frame_state_for
>  19147: 0000000000fc6760    26 FUNC    LOCAL  HIDDEN   11 
> __register_frame_table
>  19148: 0000000000fc6600   130 FUNC    LOCAL  HIDDEN   11 
> __register_frame_info_bas
>  19149: 0000000000fc6880     5 FUNC    LOCAL  HIDDEN   11 
> __deregister_frame_info
>  19150: 0000000000fc51e0   193 FUNC    LOCAL  HIDDEN   11 _Unwind_Resume
>  19151: 0000000000fc53b0    26 FUNC    LOCAL  HIDDEN   11 
> _Unwind_DeleteException
>  19152: 0000000000fc6780   256 FUNC    LOCAL  HIDDEN   11 
> __deregister_frame_info_b
>  19153: 0000000000fc4f80   358 FUNC    LOCAL  HIDDEN   11 
> _Unwind_RaiseException
>  19154: 0000000000fc4de0     8 FUNC    LOCAL  HIDDEN   11 _Unwind_SetIP
>  19155: 0000000000fc66d0   114 FUNC    LOCAL  HIDDEN   11 
> __register_frame_info_tab
>  19156: 0000000000fc6890    33 FUNC    LOCAL  HIDDEN   11 
> __deregister_frame
>  19157: 0000000000fc4e50     8 FUNC    LOCAL  HIDDEN   11 
> _Unwind_GetTextRelBase
>  19158: 0000000000fc4e10    36 FUNC    LOCAL  HIDDEN   11 
> _Unwind_FindEnclosingFunc
>  19159: 0000000000fc4df0     8 FUNC    LOCAL  HIDDEN   11 
> _Unwind_GetLanguageSpecif
>  19160: 0000000000fc50f0   230 FUNC    LOCAL  HIDDEN   11 
> _Unwind_ForcedUnwind
>  19161: 00000000014b8a28     0 OBJECT  LOCAL  HIDDEN   21 
> _GLOBAL_OFFSET_TABLE_
>  19162: 0000000000fc2bf0    44 FUNC    LOCAL  HIDDEN   11 __popcountdi2
>  19163: 0000000000fc4d60    80 FUNC    LOCAL  HIDDEN   11 _Unwind_SetGR
>  19164: 0000000000fc4d00    72 FUNC    LOCAL  HIDDEN   11 _Unwind_GetGR
>  19165: 0000000000fc4e40     8 FUNC    LOCAL  HIDDEN   11 
> _Unwind_GetDataRelBase
>  19166: 0000000000fc6750     9 FUNC    LOCAL  HIDDEN   11 
> __register_frame_info_tab
>  19167: 0000000000fc6690     9 FUNC    LOCAL  HIDDEN   11 
> __register_frame_info
>
>
> The other BSDs consider these symbols global.  For example, here is a 
> subset of the same symbols taken from a stripped DragonFly BSD gnat1:
>
>    419: 0000000000fb10e0   373 FUNC    GLOBAL DEFAULT   10 
> _Unwind_Find_FDE
>    582: 0000000000fad8f0    21 FUNC    GLOBAL DEFAULT   10 
> _Unwind_GetIPInfo
>    920: 0000000000fad8e0     8 FUNC    GLOBAL DEFAULT   10 _Unwind_GetIP
>   2116: 0000000000fafb40   235 FUNC    GLOBAL DEFAULT   10 
> _Unwind_Resume_or_Rethrow
>   2762: 0000000000fad930     8 FUNC    GLOBAL DEFAULT   10 
> _Unwind_GetRegionStart
>   3171: 0000000000fafc50   155 FUNC    GLOBAL DEFAULT   10 
> _Unwind_Backtrace
>   4035: 0000000000fad880     8 FUNC    GLOBAL DEFAULT   10 _Unwind_GetCFA
>   9786: 0000000000fafa60   212 FUNC    GLOBAL DEFAULT   10 _Unwind_Resume
>   9841: 0000000000fafc30    21 FUNC    GLOBAL DEFAULT   10 
> _Unwind_DeleteException
>  12631: 0000000000faf800   359 FUNC    GLOBAL DEFAULT   10 
> _Unwind_RaiseException
>  13229: 0000000000fad910     8 FUNC    GLOBAL DEFAULT   10 _Unwind_SetIP
>  15888: 0000000000fad980     8 FUNC    GLOBAL DEFAULT   10 
> _Unwind_GetTextRelBase
>  16508: 0000000000fad940    36 FUNC    GLOBAL DEFAULT   10 
> _Unwind_FindEnclosingFunc
>  16814: 0000000000fad920     8 FUNC    GLOBAL DEFAULT   10 
> _Unwind_GetLanguageSpecif
>  17568: 0000000000faf970   230 FUNC    GLOBAL DEFAULT   10 
> _Unwind_ForcedUnwind
>  18388: 0000000000fad890    75 FUNC    GLOBAL DEFAULT   10 _Unwind_SetGR
>  19462: 0000000000fad830    72 FUNC    GLOBAL DEFAULT   10 _Unwind_GetGR
>  20086: 0000000000fad970     8 FUNC    GLOBAL DEFAULT   10 
> _Unwind_GetDataRelBase
>   1345: 0000000000fb0ec0    38 FUNC    GLOBAL DEFAULT   10 
> __register_frame
>   8011: 0000000000fb0f80    26 FUNC    GLOBAL DEFAULT   10 
> __register_frame_table
>   8532: 0000000000fb0e20   130 FUNC    GLOBAL DEFAULT   10 
> __register_frame_info_bas
>  14325: 0000000000fb0ef0   114 FUNC    GLOBAL DEFAULT   10 
> __register_frame_info_tab
>  20736: 0000000000fb0f70     9 FUNC    GLOBAL DEFAULT   10 
> __register_frame_info_tab
>  20856: 0000000000fb0eb0     9 FUNC    GLOBAL DEFAULT   10 
> __register_frame_info
>   9544: 0000000000fb10a0     5 FUNC    GLOBAL DEFAULT   10 
> __deregister_frame_info
>  10772: 0000000000fb0fa0   256 FUNC    GLOBAL DEFAULT   10 
> __deregister_frame_info_b
>  15277: 0000000000fb10b0    33 FUNC    GLOBAL DEFAULT   10 
> __deregister_frame
>   3677: 0000000001284260   256 OBJECT  GLOBAL DEFAULT   12 __popcount_tab
>  18046: 0000000000fad460    44 FUNC    GLOBAL DEFAULT   10 __popcountdi2
>
>
> I'm pretty well convinced that the NetBSD symbols should also be 
> classified as GLOBAL DEFAULT and this explains NetBSD's issue with 
> functions such as _Unwind_Resume and _Unwind_GetIPInfo.  I've gone 
> over config.gcc and the various NetBSD headers many times, but I don't 
> see what's causing this or what omission might be causing it.
>
> Can anybody suggest what may be wrong and how to correct it?
>
> Thanks,
> John
>
>



More information about the Gcc-help mailing list