29560073abbb0729a7b5d00f10cd59bbe0e9e330
[platform/upstream/binutils.git] / ld / testsuite / ld-loongarch-elf / ld-loongarch-elf.exp
1 # Expect script for LoongArch ELF linker tests
2 #   Copyright (C) 2021-2024 Free Software Foundation, Inc.
3 #
4 # This file is part of the GNU Binutils.
5 #
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
19 # MA 02110-1301, USA.
20 #
21
22 proc loongarch_choose_lp64_emul {} {
23     if { [istarget "loongarch64be-*"] } {
24         return "elf64bloongarch"
25     }
26     return "elf64lloongarch"
27 }
28
29 if [istarget "loongarch64-*-*"] {
30     run_dump_test "jmp_op"
31     run_dump_test "macro_op"
32     run_dump_test "syscall"
33     run_dump_test "disas-jirl"
34     run_dump_test "local-ifunc-reloc"
35     run_dump_test "anno-sym"
36 }
37
38 if [istarget "loongarch32-*-*"] {
39     run_dump_test "jmp_op"
40     run_dump_test "macro_op_32"
41     run_dump_test "syscall"
42     run_dump_test "disas-jirl-32"
43 }
44
45 if [istarget "loongarch64-*-*"] {
46   if [check_shared_lib_support] {
47     run_ld_link_tests \
48         [list \
49             [list \
50                 "64_pcrel" \
51                 "-e 0x0 -z relro" "" \
52                 "" \
53                 {64_pcrel.s} \
54                 [list \
55                     [list objdump -D 64_pcrel.d] \
56                 ] \
57                 "64_pcrel" \
58             ] \
59         ]
60   }
61
62   # loongarch*-elf target do not support -shared option
63   if [check_shared_lib_support] {
64     run_ld_link_tests \
65         [list \
66              [list \
67                   "data plt" \
68                   "-shared" "" \
69                   "" \
70                   {data-plt.s} \
71                   {} \
72                   "data-plt.so" \
73              ] \
74         ]
75
76     if [file exist "tmpdir/data-plt.so"] {
77       set objdump_output [run_host_cmd "objdump" "-d tmpdir/data-plt.so"]
78       if { [ regexp "<a@plt>" $objdump_output] } {
79         fail "data plt"
80       } {
81         pass "data plt"
82       }
83     }
84   }
85
86   run_ld_link_tests \
87       [list \
88           [list \
89               "medium code model call" \
90               "-e 0x0" "" \
91               "" \
92               {medium-call.s} \
93               {} \
94               "medium-call" \
95           ] \
96       ]
97 }
98
99 if [istarget "loongarch64-*-*"] {
100   if [check_shared_lib_support] {
101     run_dump_test "desc-ie"
102     run_dump_test "desc-le"
103     run_dump_test "ie-le"
104     run_dump_test "tlsdesc-dso"
105     run_dump_test "desc-norelax"
106     run_dump_test "desc-relax"
107   }
108 }