diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 1e5e92374d..83eb64543b 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2020-11-28 Alan Modra + + PR 26907 + * elf.c (elf_sort_sections): Don't sort zero size !load sections + after load sections. + 2020-11-27 Jozef Lawrynowicz * elf.c (special_sections_g): Add .gnu.linkonce.n and .gnu.linkonce.p. diff --git a/bfd/elf.c b/bfd/elf.c index 28621da915..419c5f4420 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -5257,7 +5257,8 @@ elf_sort_sections (const void *arg1, const void *arg2) /* Put !SEC_LOAD sections after SEC_LOAD ones. */ -#define TOEND(x) (((x)->flags & (SEC_LOAD | SEC_THREAD_LOCAL)) == 0) +#define TOEND(x) (((x)->flags & (SEC_LOAD | SEC_THREAD_LOCAL)) == 0 \ + && (x)->size != 0) if (TOEND (sec1)) { diff --git a/ld/ChangeLog b/ld/ChangeLog index fbc2d8a631..b6d1aefdaf 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2020-11-28 Alan Modra + + * testsuite/ld-elf/pr26907.ld, + * testsuite/ld-elf/pr26907.s, + * testsuite/ld-elf/pr26907.d: New test. + 2020-11-27 Jozef Lawrynowicz * emulparams/armelf.sh (OTHER_SECTIONS): Remove .noinit section diff --git a/ld/testsuite/ld-elf/pr26907.d b/ld/testsuite/ld-elf/pr26907.d new file mode 100644 index 0000000000..1efb8cc34b --- /dev/null +++ b/ld/testsuite/ld-elf/pr26907.d @@ -0,0 +1,9 @@ +#ld: -T pr26907.ld +#readelf: -lW +#xfail: dlx-*-* ft32-*-* h8300-*-* ip2k-*-* m32r*-*-elf* m32r*-*-rtems* +#xfail: moxie-*-* msp430-*-* mt-*-* pru*-*-* visium-*-* + +#failif +#... + +LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+ 0x0+ .* +#... diff --git a/ld/testsuite/ld-elf/pr26907.ld b/ld/testsuite/ld-elf/pr26907.ld new file mode 100644 index 0000000000..2cce1ee09c --- /dev/null +++ b/ld/testsuite/ld-elf/pr26907.ld @@ -0,0 +1,7 @@ +ENTRY (_start) +SECTIONS +{ + .text : { *(.text) } + .bss : { . = .; *(.bss) } + .data : { *(.data) } +} diff --git a/ld/testsuite/ld-elf/pr26907.s b/ld/testsuite/ld-elf/pr26907.s new file mode 100644 index 0000000000..13b3a54073 --- /dev/null +++ b/ld/testsuite/ld-elf/pr26907.s @@ -0,0 +1,9 @@ + .text + .global _start +_start: + .quad 0 + + .data + .quad 0 + + .section .bss,"aw",%nobits