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:
H.J. Lu 2015-04-01 04:24:05 -07:00
parent 16c1c9d6a6
commit 875b5b9d14
6 changed files with 110 additions and 0 deletions

View File

@ -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.

View File

@ -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.

View 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

View 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

View 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/ : { *(.*) }
}

View File

@ -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 } {