aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-06-10 13:08:15 +0930
committerAlan Modra <amodra@gmail.com>2020-06-10 22:19:07 +0930
commit84df1f9dcb8ef24cc38db4cc0939e99752c4e42b (patch)
treee86e56f70a0991e1b6a5313c88787109615b7974 /ld
parent7ab967941150b2f79fc089893bf51e6bb53d245b (diff)
downloadgdb-84df1f9dcb8ef24cc38db4cc0939e99752c4e42b.zip
gdb-84df1f9dcb8ef24cc38db4cc0939e99752c4e42b.tar.gz
gdb-84df1f9dcb8ef24cc38db4cc0939e99752c4e42b.tar.bz2
Fix x86 ld testsuite fails with glibc < 2.28
* testsuite/ld-elf/linux-x86.exp: Build tests when non-native. (check_pr25749b): Add optional args. Set expected pass file from args. Run -1b and -2a tests with passall.out. * testsuite/ld-elf/passall.out: New file. * testsuite/ld-elf/pr25749-1.c: Adjust to pass with older glibc. * testsuite/ld-elf/pr25749-2.c: Likewise. * testsuite/lib/ld-lib.exp (run_ld_link_exec_tests): Use regexp_diff to compare expected output from running binary.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog11
-rw-r--r--ld/testsuite/ld-elf/linux-x86.exp22
-rw-r--r--ld/testsuite/ld-elf/passall.out1
-rw-r--r--ld/testsuite/ld-elf/pr25749-1.c8
-rw-r--r--ld/testsuite/ld-elf/pr25749-2.c8
-rw-r--r--ld/testsuite/lib/ld-lib.exp11
6 files changed, 41 insertions, 20 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 74636bb..18fec01 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,14 @@
+2020-06-10 Alan Modra <amodra@gmail.com>
+
+ * testsuite/ld-elf/linux-x86.exp: Build tests when non-native.
+ (check_pr25749b): Add optional args. Set expected pass file
+ from args. Run -1b and -2a tests with passall.out.
+ * testsuite/ld-elf/passall.out: New file.
+ * testsuite/ld-elf/pr25749-1.c: Adjust to pass with older glibc.
+ * testsuite/ld-elf/pr25749-2.c: Likewise.
+ * testsuite/lib/ld-lib.exp (run_ld_link_exec_tests): Use
+ regexp_diff to compare expected output from running binary.
+
2020-06-10 H.J. Lu <hongjiu.lu@intel.com>
PR ld/26094
diff --git a/ld/testsuite/ld-elf/linux-x86.exp b/ld/testsuite/ld-elf/linux-x86.exp
index eeaf459..aae75d4 100644
--- a/ld/testsuite/ld-elf/linux-x86.exp
+++ b/ld/testsuite/ld-elf/linux-x86.exp
@@ -48,10 +48,6 @@ run_ld_link_tests [list \
]
# Test very simple native Linux/x86 programs with linux-x86.S.
-if { ![isnative] || ![check_compiler_available] } {
- return
-}
-
run_ld_link_exec_tests [list \
[list \
"Run PR ld/23428 test" \
@@ -215,7 +211,7 @@ if { [istarget "i?86-*-linux*"] } {
}
}
-proc check_pr25749b {testname srcfilea srcfileb cflags ldflags dsoldflags} {
+proc check_pr25749b {testname srcfilea srcfileb cflags ldflags dsoldflags args} {
global objcopy
global srcdir
global subdir
@@ -253,6 +249,12 @@ proc check_pr25749b {testname srcfilea srcfileb cflags ldflags dsoldflags} {
"lib${testname}.so" \
] \
]
+
+ set pass "pass.out"
+ if { [llength $args] > 0 } {
+ set pass [lindex $args 0]
+ }
+
run_ld_link_exec_tests [list \
[list \
"Run ${testname}b ($ldflags $cflags)" \
@@ -260,7 +262,7 @@ proc check_pr25749b {testname srcfilea srcfileb cflags ldflags dsoldflags} {
"" \
[list $srcfilea]\
"${testname}b" \
- "pass.out" \
+ "$pass" \
"$cflags -I../bfd" \
] \
]
@@ -269,13 +271,13 @@ proc check_pr25749b {testname srcfilea srcfileb cflags ldflags dsoldflags} {
check_pr25749b "pr25749-1a" "pr25749-1.c" "pr25749-1a.c" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" ""
check_pr25749b "pr25749-1a" "pr25749-1.c" "pr25749-1a.c" "-fPIE" "-pie" ""
check_pr25749b "pr25749-1a" "pr25749-1.c" "pr25749-1a.c" "-fPIE" "-pie" "-Wl,-Bsymbolic"
-check_pr25749b "pr25749-1b" "pr25749-1.c" "pr25749-1b.c" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" ""
-check_pr25749b "pr25749-1b" "pr25749-1.c" "pr25749-1b.c" "-fPIE" "-pie" ""
+check_pr25749b "pr25749-1b" "pr25749-1.c" "pr25749-1b.c" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" "" "passall.out"
+check_pr25749b "pr25749-1b" "pr25749-1.c" "pr25749-1b.c" "-fPIE" "-pie" "" "passall.out"
check_pr25749b "pr25749-1b" "pr25749-1.c" "pr25749-1b.c" "-fPIE" "-pie" "-Wl,-Bsymbolic"
check_pr25749b "pr25749-1d" "pr25749-1.c" "pr25749-1d.c" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" "-Wl,-defsym=_begin=0"
check_pr25749b "pr25749-1d" "pr25749-1.c" "pr25749-1d.c" "-fPIE" "-pie" "-Wl,-defsym=_begin=0"
check_pr25749b "pr25749-1d" "pr25749-1.c" "pr25749-1d.c" "-fPIE" "-pie" "-Wl,-Bsymbolic -Wl,-defsym=_begin=0"
-check_pr25749b "pr25749-2a" "pr25749-2.c" "pr25749-2a.s" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" ""
-check_pr25749b "pr25749-2a" "pr25749-2.c" "pr25749-2a.s" "-fPIE" "-pie" ""
+check_pr25749b "pr25749-2a" "pr25749-2.c" "pr25749-2a.s" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" "" "passall.out"
+check_pr25749b "pr25749-2a" "pr25749-2.c" "pr25749-2a.s" "-fPIE" "-pie" "" "passall.out"
check_pr25749b "pr25749-2b" "pr25749-2.c" "pr25749-2b.s" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" ""
check_pr25749b "pr25749-2b" "pr25749-2.c" "pr25749-2b.s" "-fPIE" "-pie" ""
diff --git a/ld/testsuite/ld-elf/passall.out b/ld/testsuite/ld-elf/passall.out
new file mode 100644
index 0000000..beec04b
--- /dev/null
+++ b/ld/testsuite/ld-elf/passall.out
@@ -0,0 +1 @@
+PASS.*
diff --git a/ld/testsuite/ld-elf/pr25749-1.c b/ld/testsuite/ld-elf/pr25749-1.c
index 5b37af0..12d0574 100644
--- a/ld/testsuite/ld-elf/pr25749-1.c
+++ b/ld/testsuite/ld-elf/pr25749-1.c
@@ -6,7 +6,13 @@ extern intptr_t size (void);
int
main ()
{
- if (size () == 147)
+ if (size () == 303 /* size of this file */)
printf ("PASS\n");
+#ifdef __GLIBC_PREREQ
+# if !__GLIBC_PREREQ (2, 28)
+ else
+ printf ("PASS (incorrect result due to glibc bug)\n");
+# endif
+#endif
return 0;
}
diff --git a/ld/testsuite/ld-elf/pr25749-2.c b/ld/testsuite/ld-elf/pr25749-2.c
index 820bebc..3ef6f0c 100644
--- a/ld/testsuite/ld-elf/pr25749-2.c
+++ b/ld/testsuite/ld-elf/pr25749-2.c
@@ -6,7 +6,13 @@ extern intptr_t size;
int
main ()
{
- if (size == 137)
+ if (size == 293 /* size of this file */)
printf ("PASS\n");
+#ifdef __GLIBC_PREREQ
+# if !__GLIBC_PREREQ (2, 28)
+ else
+ printf ("PASS (incorrect result due to glibc bug)\n");
+# endif
+#endif
return 0;
}
diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
index 6535881..a949437 100644
--- a/ld/testsuite/lib/ld-lib.exp
+++ b/ld/testsuite/lib/ld-lib.exp
@@ -773,14 +773,9 @@ proc run_ld_link_exec_tests { ldtests args } {
verbose "$exec_output" 1
set failed 1
} else {
- send_log "diff $binfile.out $srcdir/$subdir/$expfile\n"
- verbose "diff $binfile.out $srcdir/$subdir/$expfile"
- catch "exec diff $binfile.out $srcdir/$subdir/$expfile" exec_output
- set exec_output [prune_warnings $exec_output]
-
- if ![string match "" $exec_output] then {
- send_log "$exec_output\n"
- verbose "$exec_output" 1
+ send_log [file_contents $binfile.out]
+ verbose [file_contents $binfile.out] 2
+ if [regexp_diff "$binfile.out" "$srcdir/$subdir/$expfile"] {
set failed 1
}
}