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.
This commit is contained in:
Jan Beulich
2022-06-28 08:56:06 +02:00
parent f40bb390bb
commit d0e0f9c87a

View File

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