diff options
author | Alan Modra <amodra@gmail.com> | 2022-01-31 09:38:17 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2022-01-31 14:09:34 +1030 |
commit | 9ff8aa7d418bc508dbd429576b93e30ed9dc5891 (patch) | |
tree | b3824081c322e03acf00fe47eac23da0e07bf6bb /ld | |
parent | a634f5af2f57db8028d75ccebc478146d42e3151 (diff) | |
download | fsf-binutils-gdb-9ff8aa7d418bc508dbd429576b93e30ed9dc5891.zip fsf-binutils-gdb-9ff8aa7d418bc508dbd429576b93e30ed9dc5891.tar.gz fsf-binutils-gdb-9ff8aa7d418bc508dbd429576b93e30ed9dc5891.tar.bz2 |
Re: PR28827, assertion building LLVM 9 on powerpc64le-linux-gnu
In trying to find a testcase for PR28827, I managed to hit a linker
error in bfd_set_section_contents with a .branch_lt input section
being too large for the output .branch_lt.
bfd/
PR 28827
* elf64-ppc.c (ppc64_elf_size_stubs): Set section size to
maxsize past STUB_SHRINK_ITER before laying out. Remove now
unnecessary conditional setting of maxsize at start of loop.
ld/
* testsuite/ld-powerpc/pr28827-2.d,
* testsuite/ld-powerpc/pr28827-2.lnk,
* testsuite/ld-powerpc/pr28827-2.s: New test.
* testsuite/ld-powerpc/powerpc.exp: Run it.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/testsuite/ld-powerpc/powerpc.exp | 1 | ||||
-rw-r--r-- | ld/testsuite/ld-powerpc/pr28827-2.d | 48 | ||||
-rw-r--r-- | ld/testsuite/ld-powerpc/pr28827-2.lnk | 9 | ||||
-rw-r--r-- | ld/testsuite/ld-powerpc/pr28827-2.s | 15 |
4 files changed, 73 insertions, 0 deletions
diff --git a/ld/testsuite/ld-powerpc/powerpc.exp b/ld/testsuite/ld-powerpc/powerpc.exp index 3eb707f..3d738f5 100644 --- a/ld/testsuite/ld-powerpc/powerpc.exp +++ b/ld/testsuite/ld-powerpc/powerpc.exp @@ -445,6 +445,7 @@ if [ supports_ppc64 ] then { run_dump_test "tlsie" run_dump_test "non-contiguous-powerpc64" run_dump_test "tprel" + run_dump_test "pr28827-2" } run_dump_test "localgot" diff --git a/ld/testsuite/ld-powerpc/pr28827-2.d b/ld/testsuite/ld-powerpc/pr28827-2.d new file mode 100644 index 0000000..8da819d --- /dev/null +++ b/ld/testsuite/ld-powerpc/pr28827-2.d @@ -0,0 +1,48 @@ +#as: -a64 +#ld: -melf64ppc --plt-align=0 -T pr28827-2.lnk +#objdump: -dr + +.*: file format .* + +Disassembly of section \.text: + +.*: +.*: (49 ff ff f0|f0 ff ff 49) b .* <far1> + \.\.\. + +.* <.*\.plt_branch\..*>: +.*: (e9 82 80 28|28 80 82 e9) ld r12,-32728\(r2\) +.*: (7d 89 03 a6|a6 03 89 7d) mtctr r12 +.*: (4e 80 04 20|20 04 80 4e) bctr + +.* <_start>: +.*: (49 ff ff d8|d8 ff ff 49) b .* <far1> +.*: (4b ff ff f0|f0 ff ff 4b) b .* + +Disassembly of section \.far1: + +.*: +.*: (4a 00 00 38|38 00 00 4a) b .* <_start> + +.* <.*\.long_branch\..*>: +.*: (49 ff ff f4|f4 ff ff 49) b .* <far2> + \.\.\. + +.* <far1>: +.*: (41 82 ff f4|f4 ff 82 41) beq .* +.*: (4a 00 00 24|24 00 00 4a) b .* <_start> + +Disassembly of section \.far2: + +.*: +.*: (e9 82 80 20|20 80 82 e9) ld r12,-32736\(r2\) +.*: (7d 89 03 a6|a6 03 89 7d) mtctr r12 +.*: (4e 80 04 20|20 04 80 4e) bctr + +.*: +.*: (4a 00 00 24|24 00 00 4a) b .* <far1> + \.\.\. + +.* <far2>: +.*: (40 82 ff f4|f4 ff 82 40) bne .* +.*: (4b ff ff e4|e4 ff ff 4b) b .* diff --git a/ld/testsuite/ld-powerpc/pr28827-2.lnk b/ld/testsuite/ld-powerpc/pr28827-2.lnk new file mode 100644 index 0000000..61a8ca2 --- /dev/null +++ b/ld/testsuite/ld-powerpc/pr28827-2.lnk @@ -0,0 +1,9 @@ +SECTIONS +{ + . = SIZEOF_HEADERS; + .text : { *(.text) } + . = . + 0x2000000 + 32 - 4 * SIZEOF (.text); + .far1 : { *(.far1) } + . = . + 0x2000000 + 32 - 4 * SIZEOF (.far1); + .far2 : { *(.far2) } +} diff --git a/ld/testsuite/ld-powerpc/pr28827-2.s b/ld/testsuite/ld-powerpc/pr28827-2.s new file mode 100644 index 0000000..a628d6d --- /dev/null +++ b/ld/testsuite/ld-powerpc/pr28827-2.s @@ -0,0 +1,15 @@ + .globl _start + .text +_start: + b far1 + b far2 + + .section .far1,"ax",@progbits +far1: + beq far2 + b _start + + .section .far2,"ax",@progbits +far2: + bne far1 + b _start |