diff options
Diffstat (limited to 'ld/testsuite/ld-elf/elf.exp')
-rw-r--r-- | ld/testsuite/ld-elf/elf.exp | 37 |
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" |