Add a testcase for PR ld/18176
PR ld/18176 * ld-x86-64/pr18176.d: New file. * ld-x86-64/pr18176.s: Likewise. * ld-x86-64/pr18176.t: Likewise. * ld-x86-64/x86-64.exp: Run pr18176.
This commit is contained in:
parent
16c1c9d6a6
commit
875b5b9d14
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
2015-04-01 Alan Modra <amodra@gmail.com>
|
2015-04-01 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
PR ld/18176
|
||||||
* ldlang.c (lang_size_sections): When alignment of sections
|
* ldlang.c (lang_size_sections): When alignment of sections
|
||||||
results in relro base adjustment being too large, don't go lower
|
results in relro base adjustment being too large, don't go lower
|
||||||
than the initial value.
|
than the initial value.
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
2015-04-01 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR ld/18176
|
||||||
|
* ld-x86-64/pr18176.d: New file.
|
||||||
|
* ld-x86-64/pr18176.s: Likewise.
|
||||||
|
* ld-x86-64/pr18176.t: Likewise.
|
||||||
|
* ld-x86-64/x86-64.exp: Run pr18176.
|
||||||
|
|
||||||
2015-03-31 H.J. Lu <hongjiu.lu@intel.com>
|
2015-03-31 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* ld-bootstrap/bootstrap.exp (extralibs): Add -lz.
|
* ld-bootstrap/bootstrap.exp (extralibs): Add -lz.
|
||||||
|
9
ld/testsuite/ld-x86-64/pr18176.d
Normal file
9
ld/testsuite/ld-x86-64/pr18176.d
Normal file
@ -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
|
52
ld/testsuite/ld-x86-64/pr18176.s
Normal file
52
ld/testsuite/ld-x86-64/pr18176.s
Normal file
@ -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
|
39
ld/testsuite/ld-x86-64/pr18176.t
Normal file
39
ld/testsuite/ld-x86-64/pr18176.t
Normal file
@ -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/ : { *(.*) }
|
||||||
|
}
|
@ -318,6 +318,7 @@ run_dump_test "mov1d"
|
|||||||
run_dump_test "pr17935-1"
|
run_dump_test "pr17935-1"
|
||||||
run_dump_test "pr17935-2"
|
run_dump_test "pr17935-2"
|
||||||
run_dump_test "pr18160"
|
run_dump_test "pr18160"
|
||||||
|
run_dump_test "pr18176"
|
||||||
|
|
||||||
# Must be native with the C compiler
|
# Must be native with the C compiler
|
||||||
if { [isnative] && [which $CC] != 0 } {
|
if { [isnative] && [which $CC] != 0 } {
|
||||||
|
Loading…
Reference in New Issue
Block a user