diff options
-rw-r--r-- | ld/testsuite/ld-x86-64/pr18176.d | 9 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr18176.s | 52 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr18176.t | 39 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/x86-64.exp | 1 |
4 files changed, 101 insertions, 0 deletions
diff --git a/ld/testsuite/ld-x86-64/pr18176.d b/ld/testsuite/ld-x86-64/pr18176.d new file mode 100644 index 0000000..3a08539 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr18176.d @@ -0,0 +1,9 @@ +#name: PR ld/18176 +#as: --64 +#ld: -melf_x86_64 -shared -z relro -T pr18176.t -z max-page-size=0x200000 -z common-page-size=0x1000 +#readelf: -l --wide +#target: x86_64-*-linux* + +#... + GNU_RELRO 0x04bd07 0x000000000024bd07 0x000000000024bd07 0x0022f9 0x0022f9 R 0x1 +#pass diff --git a/ld/testsuite/ld-x86-64/pr18176.s b/ld/testsuite/ld-x86-64/pr18176.s new file mode 100644 index 0000000..405355f --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr18176.s @@ -0,0 +1,52 @@ + .section .init,"ax",@progbits + .p2align 2 + .space 0x1a + .section .text,"ax",@progbits + .p2align 4 + .space 0x3ab96 + .section .fini,"ax",@progbits + .p2align 2 + .space 0x9 + .section .foo_hdr,"a",@progbits + .p2align 2 + .space 0xd14 + .section .foo,"a",@progbits + .p2align 3 + .space 0x4d5c + .section .rodata,"a",@progbits + .p2align 6 + .space 0xa54d + .section .xxx,"a",@progbits + .space 0xf43 + .section .yyy,"aw",@progbits + .space 0x1 + .section .init_array,"aw",@init_array + .p2align 3 + .space 0x10 + .section .fini_array,"aw",@fini_array + .p2align 3 + .space 0x8 + .section .tdata,"awT",%progbits + .p2align 3 + .space 0x4 + .section .tbss,"awT",%nobits + .p2align 3 + .space 0x40 + .section .data.rel.ro,"aw",%progbits + .p2align 6 + .space 0x1b60 + .section .jcr,"aw",@progbits + .p2align 3 + .space 0x8 + .section .bar,"aw",@progbits + .p2align 3 + .space 0x640 + .section .data,"aw",%progbits + .p2align 5 + .space 0x70 + .section .bss,"aw",%nobits + .p2align 6 + .space 0x8a0 + .section BUS_ERROR_MAP,"aw",%progbits + .p2align 3 + .space 0x230 diff --git a/ld/testsuite/ld-x86-64/pr18176.t b/ld/testsuite/ld-x86-64/pr18176.t new file mode 100644 index 0000000..480c0cd --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr18176.t @@ -0,0 +1,39 @@ +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; + .hash : { *(.hash) } + .gnu.hash : { *(.gnu.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .init : { *(.init) } + .text : { *(.text) } + .fini : { *(.fini) } + .rodata : { *(.rodata) } + .foo_hdr : { *(.foo_hdr) } + .foo : { *(.foo) } + .xxx : { *(.xxx) } + . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); + .yyy : { *(.yyy) } + .tdata : { *(.tdata) } + .tbss : { *(.tbss) } + .init_array : { *(.init_array) } + .fini_array : { *(.fini_array) } + .jcr : { *(.jcr) } + .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } + .dynamic : { *(.dynamic) } + .bar : { *(.bar) } + . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); + .got.plt : { *(.got.plt) } + .data : { *(.data) } + __bss_start = .; + .bss : + { + *(.bss) + . = ALIGN(. != 0 ? 64 / 8 : 1); + } + . = ALIGN(64 / 8); + _end = .; PROVIDE (end = .); + . = DATA_SEGMENT_END (.); + /DISCARD/ : { *(.*) } +} diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp index c480530..57b9e48 100644 --- a/ld/testsuite/ld-x86-64/x86-64.exp +++ b/ld/testsuite/ld-x86-64/x86-64.exp @@ -313,6 +313,7 @@ run_dump_test "mov1a" run_dump_test "mov1b" run_dump_test "mov1c" run_dump_test "mov1d" +run_dump_test "pr18176" # Must be native with the C compiler if { [isnative] && [which $CC] != 0 } { |