| # 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 "c-lui" |
| 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}"]] |
| } |
| } |