aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-elf/elf.exp
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite/ld-elf/elf.exp')
-rw-r--r--ld/testsuite/ld-elf/elf.exp37
1 files changed, 37 insertions, 0 deletions
diff --git a/ld/testsuite/ld-elf/elf.exp b/ld/testsuite/ld-elf/elf.exp
index acdad8d..8f24a75 100644
--- a/ld/testsuite/ld-elf/elf.exp
+++ b/ld/testsuite/ld-elf/elf.exp
@@ -61,6 +61,8 @@ if { [is_remote host] } then {
remote_download host merge.ld
}
+# Note - the output file from the second test (symbol3w.a) is
+# used in the proc is_elf64 test below...
run_ld_link_tests [list \
[list "Build symbol3.a" \
"" "" $hpux \
@@ -70,6 +72,41 @@ run_ld_link_tests [list \
{symbol3w.s} {} "symbol3w.a" ] \
]
+
+# True if the object format is known to be 64-bit ELF.
+#
+proc is_elf64 { binary_file } {
+ global READELF
+ global READELFFLAGS
+
+ set readelf_size ""
+ catch "exec $READELF $READELFFLAGS -h $binary_file > readelf.out" got
+
+ if ![string match "" $got] then {
+ return 0
+ }
+
+ if { ![regexp "\n\[ \]*Class:\[ \]*ELF(\[0-9\]+)\n" \
+ [file_contents readelf.out] nil readelf_size] } {
+ verbose "FAILED to determine ELF size"
+ return 0
+ }
+
+ if { $readelf_size == "64" } {
+ return 1
+ }
+
+ return 0
+}
+
+if [is_elf64 tmpdir/symbol3w.a] {
+ set ASFLAGS "$ASFLAGS --defsym ALIGN=3"
+} else {
+ set ASFLAGS "$ASFLAGS --defsym ALIGN=2"
+}
+
+
+
# Targets that use _bfd_generic_link_add_symbols won't pass pr21703 tests
run_ld_link_tests {
{"PR ld/21703"