https://sourceware.org/bugzilla/show_bug.cgi?id=18288

Cary Coutant <ccoutant at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |ASSIGNED
            Summary|linker -s output suboptimal |gold does not handle common
                   |                            |symbols in shared libraries
                   |                            |correctly

--- Comment #20 from Cary Coutant <ccoutant at gmail dot com> ---
The library libopendbx.so has an allocated common symbol:

    24: 0000000000203090     1 COMMON  GLOBAL DEFAULT   23 __gnu_lto_v1

(This is a marker symbol emitted by GCC during LTO.)

Gold is doing two things wrong here:

(1) It's processing the symbol from the shared library as a normal common
symbol, and trying to allocate a 1-byte common block with alignment of
0x203090. Instead, we should simply treat the symbol as a regular defined
symbol.

(2) In mistakenly taking the symbol's address as a requested alignment, we end
up with some weird address layout because the alignment is not a multiple of
the page size. That results in the unusually large alignment of the .bss
section, and also results in the internal error in set_offset reported in the
more recent comments.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to