# Expect script for RISC-V ELF linker tests # Copyright (C) 2017-2019 Free Software Foundation, Inc. # # This file is part of the GNU Binutils. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, # MA 02110-1301, USA. # if [istarget "riscv*-*-*"] { run_dump_test "call-relax" run_dump_test "c-lui" run_dump_test "c-lui-2" run_dump_test "disas-jalr" run_dump_test "pcrel-lo-addend" run_dump_test "pcrel-lo-addend-2" run_dump_test "attr-merge-arch-01" run_dump_test "attr-merge-arch-02" run_dump_test "attr-merge-arch-03" run_dump_test "attr-merge-strict-align-01" run_dump_test "attr-merge-strict-align-02" run_dump_test "attr-merge-strict-align-03" run_dump_test "attr-merge-strict-align-04" run_dump_test "attr-merge-strict-align-05" run_dump_test "attr-merge-stack-align" run_dump_test "attr-merge-priv-spec" run_dump_test "attr-merge-arch-failed-01" run_dump_test "attr-merge-stack-align-failed" run_ld_link_tests { { "Weak reference 32" "-T weakref.ld -melf32lriscv" "" "-march=rv32i -mabi=ilp32" {weakref32.s} {{objdump -d weakref32.d}} "weakref32"} { "Weak reference 64" "-T weakref.ld -melf64lriscv" "" "-march=rv64i -mabi=lp64" {weakref64.s} {{objdump -d weakref64.d}} "weakref64"} } # The following tests require shared library support. if ![check_shared_lib_support] { return } set abis { rv32gc ilp32 elf32lriscv rv64gc lp64 elf64lriscv } foreach { arch abi emul } $abis { # This checks whether our linker scripts handle __global_pointer$ # correctly. It should be defined in executables and PIE, but not # in shared libraries. set suff64 [string map {ilp32 "" lp64 -64} $abi] run_ld_link_tests [list \ [list "gp test ($abi shared library)" \ "-m$emul -shared" "" \ "-march=$arch -mabi=$abi -fpic" \ { gp-test.s } \ [list "readelf --syms gp-test-lib.sd"] \ "gp-test-lib-${abi}.so"] \ [list "gp test ($abi executable)" \ "-m$emul" "" \ "-march=$arch -mabi=$abi" \ { gp-test.s } \ [list "readelf --syms gp-test.sd"] \ "gp-test-${abi}"]] } run_ld_link_tests { { "Link non-pic code into a shared library (setup)" "-shared" "" "" {lib-nopic-01a.s} {} "lib-nopic-01a.so" } } run_dump_test "lib-nopic-01b" }