diff options
-rw-r--r-- | ld/ChangeLog | 8 | ||||
-rw-r--r-- | ld/pe-dll.c | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-scripts/pr18963.d | 19 | ||||
-rw-r--r-- | ld/testsuite/ld-scripts/pr18963.s | 7 | ||||
-rw-r--r-- | ld/testsuite/ld-scripts/pr18963.t | 13 |
5 files changed, 33 insertions, 16 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 53a3c9d..82893a9 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,11 @@ +2020-04-16 Stephen Casner <casner@acm.org> + + PR ld/18963 + * testsuite/ld-scripts/pr18963.s: New, replaces empty data.s to + allocate space in text, data, bss here rather than pr18963.t. + * testsuite/ld-scripts/pr18963.t: Remove assignments to dot. + * testsuite/ld-scripts/pr18963.d: Change addresses to fit 16 bits. + 2020-04-15 Fangrui Song <maskray@google.com> PR binutils/24613 diff --git a/ld/pe-dll.c b/ld/pe-dll.c index 0addde2..1145d7a 100644 --- a/ld/pe-dll.c +++ b/ld/pe-dll.c @@ -1540,7 +1540,7 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info) if (s->output_section->vma == 0) { /* Huh? Shouldn't happen, but punt if it does. */ - einfo (_("%P: zero vma section reloc detected: `%s' #%d f=%d\n"), + einfo (_("%P: zero vma section reloc detected: `%s' index %d flags %x\n"), s->output_section->name, s->output_section->index, s->output_section->flags); continue; diff --git a/ld/testsuite/ld-scripts/pr18963.d b/ld/testsuite/ld-scripts/pr18963.d index 699db59..293887f 100644 --- a/ld/testsuite/ld-scripts/pr18963.d +++ b/ld/testsuite/ld-scripts/pr18963.d @@ -1,15 +1,22 @@ -# source: data.s +# source: pr18963.s # ld: -T pr18963.t # nm: -B -n +# notarget: tic*-*-* ia64-*-* *-*-aix* microblaze-*-* *-*-vms +# Skip this test on targets which have sizeof(byte) != sizeof(octet). +# On these targets the ".lcomm _bss,0x100" directive does not create +# a 0x100 byte long section as needed by the test. +# Also skip it for AIX and IA64 targets because they use a non-standard version of .lcomm. +# And skip for the microblaze target which does not support a .bss section at all. +# Plus skip for VMS based targets as the linker automatically adds extra libraries that may not be present in a cross build. #... -0+70000 A D +0+a00 . D #... -0+70000 A E +0+a00 . E #... -0+80000 T A +[02]+b00 T A #... -0+90000 T B +[02]+c00 D B #... -0+a0000 D C +[02]+d00 . C #pass diff --git a/ld/testsuite/ld-scripts/pr18963.s b/ld/testsuite/ld-scripts/pr18963.s new file mode 100644 index 0000000..6a59f55 --- /dev/null +++ b/ld/testsuite/ld-scripts/pr18963.s @@ -0,0 +1,7 @@ + .globl _start + .text +_start: + .=.+0x800 + .data + .=.+0x100 + .lcomm _bss,0x100 diff --git a/ld/testsuite/ld-scripts/pr18963.t b/ld/testsuite/ld-scripts/pr18963.t index 830ded7..94f8f16 100644 --- a/ld/testsuite/ld-scripts/pr18963.t +++ b/ld/testsuite/ld-scripts/pr18963.t @@ -1,25 +1,20 @@ SECTIONS { - . = 0x80000; - A = .; - .text : + .text 0x300 : { - _start = .; *(.text) - . = 0x10000; } - B = .; + A = .; .data : { *(.data) - . = 0x10000; } - C = .; + B = .; .bss : { *(.bss) - . = 0x10000; } + C = .; D = A - C + B; E = A + B - C; /DISCARD/ : {*(*)} |