aarch64-elf.exp 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  1. # Expect script for various AARCH64 ELF tests.
  2. # Copyright (C) 2009-2022 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. # Exclude non-aarch64-ELF targets.
  21. if { ![is_elf_format] || ![istarget "aarch64*-*-*"] } {
  22. return
  23. }
  24. # List contains test-items with 3 items followed by 2 lists:
  25. # 0:name 1:ld early options 2:ld late options 3:assembler options
  26. # 4:filenames of assembler files 5: action and options. 6: name of output file
  27. # Actions:
  28. # objdump: Apply objdump options on result. Compare with regex (last arg).
  29. # nm: Apply nm options on result. Compare with regex (last arg).
  30. # readelf: Apply readelf options on result. Compare with regex (last arg).
  31. set aarch64elftests {
  32. {"Erratum 835769 dump test"
  33. "--fix-cortex-a53-835769" "" "" {erratum835769.s}
  34. {{objdump -dr erratum835769.d}}
  35. "erratum835769"}
  36. }
  37. set tmp {
  38. {"Erratum 835769 dump test -shared"
  39. "--fix-cortex-a53-835769 -shared" "" "" {erratum835769.s}
  40. {{objdump -dr erratum835769.d}}
  41. "erratum835769"}
  42. }
  43. if [check_shared_lib_support] { append aarch64elftests $tmp }
  44. proc aarch64_choose_ilp32_emul {} {
  45. if [istarget *linux*] then {
  46. if [istarget aarch64_be-*] {
  47. return "aarch64linux32b"
  48. }
  49. return "aarch64linux32"
  50. }
  51. if [istarget aarch64_be-*] {
  52. return "aarch64elf32b"
  53. }
  54. return "aarch64elf32"
  55. }
  56. proc aarch64_choose_lp64_emul {} {
  57. if [istarget *linux*] then {
  58. if [istarget aarch64_be-*] {
  59. return "aarch64linuxb"
  60. }
  61. return "aarch64linux"
  62. }
  63. if [istarget aarch64_be-*] {
  64. return "aarch64elfb"
  65. }
  66. return "aarch64elf"
  67. }
  68. proc run_dump_test_lp64 { testname } {
  69. run_dump_test $testname \
  70. [list [list as "-mabi=lp64"] \
  71. [list ld [concat "-m " [aarch64_choose_lp64_emul]]]]
  72. }
  73. set eh-frame-merge-lp64 [list [list "EH Frame merge" \
  74. [concat "-m " [aarch64_choose_lp64_emul] \
  75. " -Ttext 0x8000"] \
  76. "" "-mabi=lp64" {eh-frame-bar.s eh-frame-foo.s} \
  77. {{objdump --dwarf=frames eh-frame.d}} \
  78. "eh-frame"]]
  79. run_ld_link_tests $aarch64elftests
  80. run_ld_link_tests eh-frame-merge-lp64
  81. run_dump_test "erratum843419"
  82. run_dump_test "erratum843419_tls_ie"
  83. run_dump_test "erratum843419-adr"
  84. run_dump_test "erratum843419-adrp"
  85. run_dump_test "erratum843419-far-adr"
  86. run_dump_test "erratum843419-far-full"
  87. run_dump_test "erratum843419-full"
  88. run_dump_test "erratum843419-no-args"
  89. run_dump_test "erratum835769-843419"
  90. # Relocation Tests
  91. run_dump_test_lp64 "weak-undefined"
  92. run_dump_test "emit-relocs-22"
  93. run_dump_test "emit-relocs-23"
  94. run_dump_test "emit-relocs-28"
  95. run_dump_test "emit-relocs-86"
  96. run_dump_test "emit-relocs-86-overflow"
  97. run_dump_test "emit-relocs-87"
  98. run_dump_test "emit-relocs-88"
  99. run_dump_test "emit-relocs-88-overflow"
  100. run_dump_test "emit-relocs-89"
  101. run_dump_test "emit-relocs-90"
  102. run_dump_test "emit-relocs-90-overflow"
  103. run_dump_test "emit-relocs-92"
  104. run_dump_test "emit-relocs-112"
  105. run_dump_test "emit-relocs-112-overflow"
  106. run_dump_test "emit-relocs-113"
  107. run_dump_test "emit-relocs-114"
  108. run_dump_test "emit-relocs-114-overflow"
  109. run_dump_test "emit-relocs-115"
  110. run_dump_test "emit-relocs-116"
  111. run_dump_test "emit-relocs-116-overflow"
  112. run_dump_test "emit-relocs-117"
  113. run_dump_test "emit-relocs-118"
  114. run_dump_test "emit-relocs-118-overflow"
  115. run_dump_test "emit-relocs-119"
  116. run_dump_test "emit-relocs-257"
  117. run_dump_test "emit-relocs-257-be"
  118. # 258 is tested in 257
  119. # 259 is tested in 257
  120. run_dump_test_lp64 "emit-relocs-258-dyn-bad"
  121. run_dump_test_lp64 "emit-relocs-259-dyn-bad"
  122. run_dump_test_lp64 "emit-relocs-260"
  123. run_dump_test_lp64 "emit-relocs-260-be"
  124. # 261 is tested by 260
  125. run_dump_test_lp64 "emit-relocs-262"
  126. run_dump_test_lp64 "emit-relocs-263"
  127. run_dump_test_lp64 "emit-relocs-264"
  128. run_dump_test_lp64 "emit-relocs-264-bad"
  129. run_dump_test_lp64 "emit-relocs-265"
  130. run_dump_test_lp64 "emit-relocs-266"
  131. run_dump_test_lp64 "emit-relocs-266-bad"
  132. run_dump_test_lp64 "emit-relocs-267"
  133. run_dump_test_lp64 "emit-relocs-268"
  134. run_dump_test_lp64 "emit-relocs-268-bad"
  135. run_dump_test_lp64 "emit-relocs-269"
  136. run_dump_test_lp64 "emit-relocs-269-bad"
  137. run_dump_test_lp64 "emit-relocs-270"
  138. run_dump_test_lp64 "emit-relocs-270-bad"
  139. run_dump_test_lp64 "emit-relocs-270-overflow"
  140. run_dump_test_lp64 "emit-relocs-271"
  141. run_dump_test_lp64 "emit-relocs-271-overflow"
  142. run_dump_test_lp64 "emit-relocs-272"
  143. run_dump_test_lp64 "emit-relocs-272-overflow"
  144. run_dump_test_lp64 "emit-relocs-273"
  145. run_dump_test_lp64 "emit-relocs-274"
  146. run_dump_test_lp64 "emit-relocs-275"
  147. run_dump_test_lp64 "emit-relocs-276"
  148. run_dump_test_lp64 "emit-relocs-277"
  149. run_dump_test_lp64 "emit-relocs-278"
  150. run_dump_test_lp64 "emit-relocs-279"
  151. run_dump_test_lp64 "emit-relocs-279-bad"
  152. run_dump_test_lp64 "emit-relocs-280"
  153. # 281 is unused
  154. run_dump_test_lp64 "emit-relocs-282"
  155. run_dump_test_lp64 "emit-relocs-283"
  156. run_dump_test_lp64 "emit-relocs-284"
  157. run_dump_test_lp64 "emit-relocs-285"
  158. run_dump_test_lp64 "emit-relocs-286"
  159. run_dump_test_lp64 "emit-relocs-286-bad"
  160. run_dump_test_lp64 "emit-relocs-287"
  161. run_dump_test_lp64 "emit-relocs-287-overflow"
  162. run_dump_test_lp64 "emit-relocs-288"
  163. run_dump_test_lp64 "emit-relocs-289"
  164. run_dump_test_lp64 "emit-relocs-289-overflow"
  165. run_dump_test_lp64 "emit-relocs-290"
  166. run_dump_test_lp64 "emit-relocs-291"
  167. run_dump_test_lp64 "emit-relocs-291-overflow"
  168. run_dump_test_lp64 "emit-relocs-292"
  169. run_dump_test_lp64 "emit-relocs-293"
  170. # 294-298 are not done yet
  171. run_dump_test_lp64 "emit-relocs-299"
  172. # 300 is not done yet
  173. run_dump_test_lp64 "emit-relocs-301"
  174. run_dump_test_lp64 "emit-relocs-301-be"
  175. run_dump_test_lp64 "emit-relocs-302"
  176. run_dump_test_lp64 "emit-relocs-302-be"
  177. # 303-308 are not done yet
  178. run_dump_test_lp64 "emit-relocs-309-up"
  179. run_dump_test_lp64 "emit-relocs-309-low"
  180. run_dump_test_lp64 "emit-relocs-309-up-bad"
  181. run_dump_test_lp64 "emit-relocs-309-low-bad"
  182. run_dump_test_lp64 "emit-relocs-310"
  183. run_dump_test_lp64 "emit-relocs-310-be"
  184. run_dump_test_lp64 "emit-relocs-311"
  185. run_dump_test_lp64 "emit-relocs-312"
  186. run_dump_test_lp64 "emit-relocs-313"
  187. run_dump_test_lp64 "emit-relocs-515"
  188. run_dump_test_lp64 "emit-relocs-515-be"
  189. run_dump_test_lp64 "emit-relocs-516"
  190. run_dump_test_lp64 "emit-relocs-516-be"
  191. run_dump_test_lp64 "emit-relocs-523"
  192. run_dump_test_lp64 "emit-relocs-524"
  193. run_dump_test_lp64 "emit-relocs-525"
  194. run_dump_test_lp64 "emit-relocs-526"
  195. run_dump_test_lp64 "emit-relocs-526-overflow"
  196. run_dump_test_lp64 "emit-relocs-527"
  197. run_dump_test_lp64 "emit-relocs-528"
  198. run_dump_test_lp64 "emit-relocs-528-overflow"
  199. run_dump_test_lp64 "emit-relocs-529"
  200. run_dump_test_lp64 "emit-relocs-529-overflow"
  201. run_dump_test_lp64 "emit-relocs-530"
  202. run_dump_test_lp64 "emit-relocs-531"
  203. run_dump_test_lp64 "emit-relocs-531-overflow"
  204. run_dump_test_lp64 "emit-relocs-532"
  205. run_dump_test_lp64 "emit-relocs-533"
  206. run_dump_test_lp64 "emit-relocs-533-overflow"
  207. run_dump_test_lp64 "emit-relocs-534"
  208. run_dump_test_lp64 "emit-relocs-535"
  209. run_dump_test_lp64 "emit-relocs-535-overflow"
  210. run_dump_test_lp64 "emit-relocs-536"
  211. run_dump_test_lp64 "emit-relocs-537"
  212. run_dump_test_lp64 "emit-relocs-537-overflow"
  213. run_dump_test_lp64 "emit-relocs-538"
  214. run_dump_test_lp64 "emit-relocs-552"
  215. run_dump_test_lp64 "emit-relocs-552-overflow"
  216. run_dump_test_lp64 "emit-relocs-553"
  217. run_dump_test_lp64 "emit-relocs-554"
  218. run_dump_test_lp64 "emit-relocs-554-overflow"
  219. run_dump_test_lp64 "emit-relocs-555"
  220. run_dump_test_lp64 "emit-relocs-556"
  221. run_dump_test_lp64 "emit-relocs-556-overflow"
  222. run_dump_test_lp64 "emit-relocs-557"
  223. run_dump_test_lp64 "emit-relocs-558"
  224. run_dump_test_lp64 "emit-relocs-558-overflow"
  225. run_dump_test_lp64 "emit-relocs-559"
  226. run_dump_test_lp64 "emit-relocs-560"
  227. run_dump_test "reloc-overflow-bad"
  228. # test addend correctness when --emit-relocs specified for non-relocatable obj.
  229. run_dump_test_lp64 "emit-relocs-local-addend"
  230. # test addend correctness when -r specified.
  231. run_dump_test_lp64 "local-addend-r"
  232. # test error handling on pcrel relocation for shared libraries.
  233. run_dump_test_lp64 "pcrel_pic_undefined"
  234. run_dump_test_lp64 "pcrel_pic_defined"
  235. run_dump_test "limit-b"
  236. run_dump_test "limit-bl"
  237. run_dump_test "farcall-back"
  238. run_dump_test "farcall-b-defsym"
  239. run_dump_test "farcall-bl-defsym"
  240. run_dump_test "farcall-b-gsym"
  241. run_dump_test "farcall-b-plt"
  242. run_dump_test "farcall-bl-plt"
  243. run_dump_test "farcall-bl"
  244. run_dump_test "farcall-b"
  245. run_dump_test "farcall-b-none-function"
  246. run_dump_test "farcall-bl-none-function"
  247. run_dump_test "farcall-b-section"
  248. run_dump_test "farcall-bl-section"
  249. run_dump_test "farcall-group"
  250. run_dump_test "tls-relax-all"
  251. run_dump_test "tls-relax-all-ilp32"
  252. run_dump_test "tls-relax-gd-le"
  253. run_dump_test "tls-relax-gd-le-ilp32"
  254. run_dump_test "tls-relax-gdesc-le"
  255. run_dump_test "tls-relax-gdesc-le-now"
  256. run_dump_test "tls-relax-gdesc-le-ilp32"
  257. run_dump_test "tls-relax-gd-ie"
  258. run_dump_test "tls-relax-gd-ie-ilp32"
  259. run_dump_test_lp64 "tls-relax-large-gd-ie"
  260. run_dump_test_lp64 "tls-relax-large-gd-ie-be"
  261. run_dump_test_lp64 "tls-relax-large-gd-le"
  262. run_dump_test_lp64 "tls-relax-large-gd-le-be"
  263. run_dump_test_lp64 "tls-relax-large-desc-ie"
  264. run_dump_test_lp64 "tls-relax-large-desc-ie-be"
  265. run_dump_test_lp64 "tls-relax-large-desc-le"
  266. run_dump_test_lp64 "tls-relax-large-desc-le-be"
  267. run_dump_test "tls-relax-gdesc-ie"
  268. run_dump_test "tls-relax-ie-le"
  269. run_dump_test "tls-relax-ie-le-ilp32"
  270. run_dump_test "tls-relax-ld-le-small"
  271. run_dump_test "tls-relax-ld-le-small-ilp32"
  272. run_dump_test "tls-relax-ld-le-tiny"
  273. run_dump_test "tls-relax-ld-le-tiny-ilp32"
  274. run_dump_test "tls-desc-ie"
  275. run_dump_test "tls-desc-ie-ilp32"
  276. run_dump_test "tls-relax-gdesc-ie-2"
  277. run_dump_test "tls-relax-gdesc-le-2"
  278. run_dump_test "tls-relax-gdesc-le-2-ilp32"
  279. run_dump_test "tls-relax-ie-le-2"
  280. run_dump_test "tls-relax-ie-le-2-ilp32"
  281. run_dump_test "tls-relax-ie-le-3"
  282. run_dump_test "tls-relax-ie-le-3-ilp32"
  283. run_dump_test "tls-tiny-gd"
  284. run_dump_test "tls-tiny-gd-ie"
  285. run_dump_test "tls-tiny-gd-ie-ilp32"
  286. run_dump_test "tls-tiny-gd-le"
  287. run_dump_test "tls-tiny-gd-le-ilp32"
  288. run_dump_test "tls-tiny-desc"
  289. run_dump_test "tls-tiny-desc-ie"
  290. run_dump_test "tls-tiny-desc-ie-ilp32"
  291. run_dump_test "tls-tiny-desc-le"
  292. run_dump_test "tls-tiny-desc-le-ilp32"
  293. run_dump_test "tls-tiny-ie"
  294. run_dump_test_lp64 "tls-large-ie"
  295. run_dump_test_lp64 "tls-large-ie-be"
  296. run_dump_test_lp64 "tls-large-desc"
  297. run_dump_test_lp64 "tls-large-desc-be"
  298. run_dump_test "tls-tiny-ld"
  299. run_dump_test "tls-small-ld"
  300. run_dump_test_lp64 "tlsle"
  301. run_dump_test "tlsle-symbol-offset"
  302. run_dump_test "gc-got-relocs"
  303. run_dump_test "gc-tls-relocs"
  304. run_dump_test_lp64 "gc-plt-relocs"
  305. run_dump_test_lp64 "gc-relocs-257-dyn"
  306. run_dump_test_lp64 "gc-relocs-257"
  307. run_dump_test "implicit_got_section_1"
  308. run_dump_test "pr17415"
  309. run_dump_test_lp64 "tprel_g2_overflow"
  310. run_dump_test "tprel_add_lo12_overflow"
  311. run_dump_test "protected-data"
  312. run_dump_test_lp64 "pr22764"
  313. run_dump_test_lp64 "pr20402"
  314. # ifunc tests
  315. run_dump_test "ifunc-1"
  316. run_dump_test "ifunc-1-local"
  317. run_dump_test "ifunc-2"
  318. run_dump_test "ifunc-2-local"
  319. run_dump_test "ifunc-3a"
  320. run_dump_test "ifunc-3b"
  321. run_dump_test "ifunc-4"
  322. run_dump_test "ifunc-4a"
  323. run_dump_test "ifunc-5a"
  324. run_dump_test "ifunc-5b"
  325. run_dump_test "ifunc-5a-local"
  326. run_dump_test "ifunc-5b-local"
  327. run_dump_test "ifunc-5r-local"
  328. run_dump_test "ifunc-6a"
  329. run_dump_test "ifunc-6b"
  330. run_dump_test "ifunc-7a"
  331. run_dump_test "ifunc-7b"
  332. run_dump_test "ifunc-7c"
  333. run_dump_test "ifunc-8"
  334. run_dump_test_lp64 "ifunc-9"
  335. run_dump_test_lp64 "ifunc-10"
  336. run_dump_test_lp64 "ifunc-11"
  337. run_dump_test_lp64 "ifunc-12"
  338. run_dump_test_lp64 "ifunc-13"
  339. run_dump_test "ifunc-14a"
  340. run_dump_test "ifunc-14b"
  341. run_dump_test "ifunc-14c"
  342. run_dump_test "ifunc-14d"
  343. run_dump_test "ifunc-14e"
  344. run_dump_test "ifunc-14f"
  345. run_dump_test "ifunc-15"
  346. run_dump_test "ifunc-16"
  347. run_dump_test "ifunc-17a"
  348. run_dump_test "ifunc-17b"
  349. run_dump_test_lp64 "ifunc-18a"
  350. run_dump_test_lp64 "ifunc-18b"
  351. run_dump_test_lp64 "ifunc-19a"
  352. run_dump_test_lp64 "ifunc-19b"
  353. run_dump_test_lp64 "ifunc-20"
  354. run_dump_test_lp64 "ifunc-21"
  355. run_dump_test_lp64 "ifunc-22"
  356. run_dump_test "relasz"
  357. run_dump_test_lp64 "relocs-1027-symbolic-func"
  358. run_dump_test_lp64 "dt_textrel"
  359. run_dump_test "plt_mapping_symbol"
  360. run_dump_test_lp64 "rela-abs-relative"
  361. run_dump_test_lp64 "rela-abs-relative-be"
  362. run_dump_test_lp64 "rela-abs-relative-opt"
  363. run_dump_test_lp64 "pie-bind-locally"
  364. run_dump_test "property-bti-pac1"
  365. run_dump_test "property-bti-pac2"
  366. run_dump_test "property-bti-pac3"
  367. run_dump_test "property-bti-pac4-a"
  368. run_dump_test "property-bti-pac4-b"
  369. run_dump_test "bti-plt-1"
  370. run_dump_test "bti-plt-2"
  371. run_dump_test_lp64 "variant_pcs-r"
  372. run_dump_test_lp64 "variant_pcs-shared"
  373. run_dump_test_lp64 "variant_pcs-now"
  374. set aarch64elflinktests {
  375. {"ld-aarch64/so with global symbol" "-shared" "" "" {copy-reloc-so.s}
  376. {} "copy-reloc-so.so"}
  377. {"ld-aarch64/exe with copy relocation" "-e0 tmpdir/copy-reloc-so.so" "" ""
  378. {copy-reloc-exe.s} {{objdump -R copy-reloc.d}} "copy-reloc"}
  379. {"ld-aarch64/exe with copy relocation 2" "-e0 tmpdir/copy-reloc-so.so" "" ""
  380. {copy-reloc-exe-2.s} {{objdump -R copy-reloc-2.d}} "copy-reloc-2"}
  381. {"ld-aarch64/exe with copy relocation elimination" "-e0 tmpdir/copy-reloc-so.so" "" ""
  382. {copy-reloc-exe-eliminate.s} {{objdump -R copy-reloc-eliminate.d}} "copy-reloc-elimination"}
  383. {"ld-aarch64/so with global func" "-shared" "" "" {func-in-so.s}
  384. {} "func-in-so.so"}
  385. {"ld-aarch64/func sym hash opt for exe"
  386. "-e0 --hash-style=gnu tmpdir/func-in-so.so" "" ""
  387. {func-sym-hash-opt.s} {{readelf --dyn-sym func-sym-hash-opt.d}} "hash-opt"}
  388. {"Build bti-plt-so for PLT tests" "-shared" "" "" {bti-plt-so.s}
  389. {} "libbti-plt-so.so"}
  390. }
  391. if [check_shared_lib_support] {
  392. run_ld_link_tests $aarch64elflinktests
  393. }
  394. run_dump_test "bti-plt-3"
  395. run_dump_test "bti-plt-4"
  396. run_dump_test "bti-plt-5"
  397. run_dump_test "bti-plt-6"
  398. run_dump_test "bti-plt-7"
  399. run_dump_test "pac-plt-1"
  400. run_dump_test "pac-plt-2"
  401. run_dump_test "bti-pac-plt-1"
  402. run_dump_test "bti-pac-plt-2"
  403. run_dump_test "bti-warn"
  404. run_dump_test "weak-tls"
  405. run_dump_test "undef-tls"