https://sourceware.org/bugzilla/show_bug.cgi?id=12181
--- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Mark Mitchell from comment #3)
> For what it's worth, and without knowledge of the Solaris linker, I agree
> that the code in the Solaris linker seems to be unecessary. I don't see
> anything wrong with the symbols as they currently stand.
>
> It seems slightly undesirable to me to make them global hidden simply
> because that does mean that the linker will "see" them outside of the object
> file where they are defined, and that just seems messy.
obj-elf.c has
if (!sy
|| (sy != symbol_lastP
&& (sy->sy_next == NULL
|| sy->sy_next->sy_previous != sy)))
{
/* Create the symbol now. */
sy = symbol_new (group_name, now_seg, (valueT) 0, frag_now);
#ifdef TE_SOLARIS
/* Before Solaris 11 build 154, Sun ld rejects local group
signature symbols, so make them weak hidden instead. */
symbol_get_bfdsym (sy)->flags |= BSF_WEAK;
S_SET_OTHER (sy, STV_HIDDEN);
#else
symbol_get_obj (sy)->local = 1;
#endif
symbol_table_insert (sy);
This is wrong:
[hjl@gnu-tools-1 ld]$ cat x.s
.text
.global xxx
xxx:
call foo
[hjl@gnu-tools-1 ld]$ cat y.s
.section .text.foo,"Gx",%progbits,foo,comdat
.text
.global bar
bar:
call xxx
[hjl@gnu-tools-1 ld]$ ../gas/as-new -o x.o x.s
[hjl@gnu-tools-1 ld]$ ../gas/as-new -o y.o y.s
[hjl@gnu-tools-1 ld]$ readelf -sW x.o | grep foo
5: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND foo
[hjl@gnu-tools-1 ld]$ readelf -sW y.o | grep foo
8: 0000000000000000 0 NOTYPE WEAK HIDDEN 1 foo
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ foo shouldn't be weak and
hidden.
[hjl@gnu-tools-1 ld]$
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
bug-binutils mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-binutils