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

            Bug ID: 18975
           Summary: gold: code_fill not executed if linker script is in
                    use
           Product: binutils
           Version: 2.26 (HEAD)
            Status: NEW
          Severity: normal
          Priority: P2
         Component: gold
          Assignee: ccoutant at gmail dot com
          Reporter: koriakin at 0x04 dot net
                CC: ian at airs dot com
  Target Milestone: ---

Consider this test case:

$ cat a.lds
SECTIONS {
        .text : { *(.text) }
}
$ cat a.s
nop
$ cat b.s
.balign 16
nop
$ as a.s -o a.o
$ as b.s -o b.o
$ ld.bfd a.o b.o -T a.lds
$ objdump -d a.out

a.out:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <.text>:
   0:   90                      nop
   1:   66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
   8:   00 00 00 
   b:   0f 1f 44 00 00          nopl   0x0(%rax,%rax,1)
  10:   90                      nop

BFD ld properly fills the code section with nops. However:

$ ld.gold a.o b.o -T a.lds
$ objdump -d a.out

a.out:     file format elf64-x86-64


Disassembly of section .text:

0000000000000020 <.text>:
  20:   90                      nop
        ...
  2d:   00 00                   add    %al,(%rax)
  2f:   00                      .byte 0x0
  30:   90                      nop

gold stuffs zero bytes there instead. 

This works just fine if no linker script is used.

This bug can cause catastrophic failure if length of a .fini/.init section
chunk is not a multiple of next chunk's alignment - I found it by running gold
testsuite on s390x + RHEL, which has glibc's crt*.o .fini 4-byte aligned, but
gcc's crt*.o 1-byte aligned and with length not divisible by 4.

I'll attempt to make a patch for this issue.

Could be a cause of #15860 by the looks of it.

-- 
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