aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2022-06-28 08:56:06 +0200
committerJan Beulich <jbeulich@suse.com>2022-06-28 08:56:06 +0200
commitd0e0f9c87a3eb141f2036c3ca1569ce7ba2d9ff3 (patch)
treea1949839e0853c00ade36271441a4a3e83fbc10b /ld
parentf40bb390bbf2c4a7a4ff0a042ac9ab9168ab6956 (diff)
downloadfsf-binutils-gdb-d0e0f9c87a3eb141f2036c3ca1569ce7ba2d9ff3.zip
fsf-binutils-gdb-d0e0f9c87a3eb141f2036c3ca1569ce7ba2d9ff3.tar.gz
fsf-binutils-gdb-d0e0f9c87a3eb141f2036c3ca1569ce7ba2d9ff3.tar.bz2
ld/x86: skip p_align-1 tests with unsuitable compiler
When the compiler doesn't properly arrange for foo's alignment, there's no point even trying these tests. Report the situation as a single "unsupported" test.
Diffstat (limited to 'ld')
-rw-r--r--ld/testsuite/ld-elf/linux-x86.exp82
1 files changed, 46 insertions, 36 deletions
diff --git a/ld/testsuite/ld-elf/linux-x86.exp b/ld/testsuite/ld-elf/linux-x86.exp
index e3f2018..ae0ed6a 100644
--- a/ld/testsuite/ld-elf/linux-x86.exp
+++ b/ld/testsuite/ld-elf/linux-x86.exp
@@ -185,44 +185,54 @@ run_ld_link_exec_tests [list \
"" \
"tmpdir/indirect-extern-access-2.so" \
] \
- [list \
- "Run p_align-1a without PIE" \
- "$NOPIE_LDFLAGS" \
- "" \
- { p_align-1.c } \
- "p_align-1a" \
- "pass.out" \
- "$NOPIE_CFLAGS" \
- ] \
- [list \
- "Run p_align-1b with PIE" \
- "-pie" \
- "" \
- { p_align-1.c } \
- "p_align-1b" \
- "pass.out" \
- "-fpie" \
- ] \
- [list \
- "Run p_align-1c with -Wl,-z,max-page-size=0x1000 without PIE" \
- "$NOPIE_LDFLAGS -Wl,-z,max-page-size=0x1000" \
- "" \
- { p_align-1.c } \
- "p_align-1c" \
- "pass.out" \
- "$NOPIE_CFLAGS" \
- ] \
- [list \
- "Run p_align-1d with -Wl,-z,max-page-size=0x1000 with PIE" \
- "-pie -Wl,-z,max-page-size=0x1000" \
- "" \
- { p_align-1.c } \
- "p_align-1d" \
- "pass.out" \
- "-fpie" \
- ] \
]
+# Old gcc silently ignores __attribute__ ((aligned())) with too big alignment.
+ld_compile $CC_FOR_TARGET $srcdir/$subdir/p_align-1.c tmpdir/p_align-1.o
+set output [run_host_cmd "$READELF" "-SW tmpdir/p_align-1.o"]
+if { [regexp { [.]data *PROGBITS .* 8388608[\n]} $output] } then {
+ run_ld_link_exec_tests [list \
+ [list \
+ "Run p_align-1a without PIE" \
+ "$NOPIE_LDFLAGS" \
+ "" \
+ { p_align-1.c } \
+ "p_align-1a" \
+ "pass.out" \
+ "$NOPIE_CFLAGS" \
+ ] \
+ [list \
+ "Run p_align-1b with PIE" \
+ "-pie" \
+ "" \
+ { p_align-1.c } \
+ "p_align-1b" \
+ "pass.out" \
+ "-fpie" \
+ ] \
+ [list \
+ "Run p_align-1c with -Wl,-z,max-page-size=0x1000 without PIE" \
+ "$NOPIE_LDFLAGS -Wl,-z,max-page-size=0x1000" \
+ "" \
+ { p_align-1.c } \
+ "p_align-1c" \
+ "pass.out" \
+ "$NOPIE_CFLAGS" \
+ ] \
+ [list \
+ "Run p_align-1d with -Wl,-z,max-page-size=0x1000 with PIE" \
+ "-pie -Wl,-z,max-page-size=0x1000" \
+ "" \
+ { p_align-1.c } \
+ "p_align-1d" \
+ "pass.out" \
+ "-fpie" \
+ ] \
+ ]
+} else {
+ unsupported "p_align-1"
+}
+
proc elfedit_test { options test output } {
global ELFEDIT
global READELF