# Expect script for MIPS ELF linker tests
#   Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008
#   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 "mips*-*-vxworks"]} {
    set mipsvxtests {
	{"VxWorks shared library test 1" "-shared -Tvxworks1.ld"
	 "-mips2" {vxworks1-lib.s}
	 {{readelf --relocs vxworks1-lib.rd} {objdump -dr vxworks1-lib.dd}
	  {readelf --symbols vxworks1-lib.nd} {readelf -d vxworks1-lib.td}}
	 "libvxworks1.so"}
	{"VxWorks executable test 1 (dynamic)" \
	 "tmpdir/libvxworks1.so -Tvxworks1.ld -q --force-dynamic"
	 "-mips2" {vxworks1.s}
	 {{readelf --relocs vxworks1.rd} {objdump -dr vxworks1.dd}}
	 "vxworks1"}
	{"VxWorks executable test 2 (dynamic)" \
	 "-Tvxworks1.ld -q --force-dynamic"
	 "-mips2" {vxworks2.s}
	 {{readelf --segments vxworks2.sd}}
	 "vxworks2"}
	{"VxWorks executable test 2 (static)"
	 "-Tvxworks1.ld"
	 "-mips2" {vxworks2.s}
	 {{readelf --segments vxworks2-static.sd}}
	 "vxworks2"}
    }
    run_ld_link_tests $mipsvxtests
    run_dump_test "vxworks1-static"
    run_dump_test "vxworks-forced-local-1"
    return
}

if {![istarget mips*-*-*] || ![is_elf_format]} {
    return
}

set has_newabi [expr [istarget *-*-irix6*] || [istarget mips64*-*-linux*]]
set linux_gnu [expr [istarget mips*-*-linux*]]
set embedded_elf [expr [istarget mips*-*-elf]]

if { $linux_gnu } {
    run_ld_link_tests [list \
	[list "Dummy shared library for MIPS16 PIC test 1" \
	      "-shared -melf32btsmip" \
	      "-EB -32 -mips1" \
	      { mips16-pic-1-dummy.s } \
	      {} \
	      "mips16-pic-1-dummy.so"] \
	[list "MIPS16 PIC test 1" \
	      "-melf32btsmip -T mips16-pic-1.ld tmpdir/mips16-pic-1-dummy.so" \
	      "-EB -32 -mips1 -I $srcdir/$subdir" \
	      { mips16-pic-1a.s mips16-pic-1b.s } \
	      { { objdump { -dr -j.text } mips16-pic-1.dd }
		{ readelf -A mips16-pic-1.gd } } \
	      "mips16-pic-1"] \
	[list "MIPS16 PIC test 2" \
	      "-melf32btsmip -T mips16-pic-1.ld -shared" \
	      "-EB -32 -mips1 -I $srcdir/$subdir" \
	      { mips16-pic-2a.s mips16-pic-2b.s } \
	      { { objdump { -dr -j.text } mips16-pic-2.dd } \
		{ readelf -A mips16-pic-2.gd } \
	        { readelf --symbols mips16-pic-2.nd } \
		{ readelf --relocs mips16-pic-2.rd } \
		{ readelf -d mips16-pic-2.ad } } \
	     "mips16-pic-2"] \
	[list "MIPS16 PIC test 3" \
	      "-melf32btsmip -T mips16-pic-1.ld tmpdir/mips16-pic-1-dummy.so" \
	      "-EB -32 -mips1 -I $srcdir/$subdir" \
	      { mips16-pic-3a.s mips16-pic-3b.s } \
	      { { objdump -dr mips16-pic-3.dd } \
		{ readelf --relocs mips16-pic-3.rd } \
		{ readelf -A mips16-pic-3.gd } } \
	      "mips16-pic-3"] \
	[list "MIPS16 PIC test 4 (shared library)" \
	      "-shared -melf32btsmip -T mips16-pic-1.ld --version-script mips16-pic-4.ver" \
	      "-EB -32 -mips1" \
	      { mips16-pic-4a.s mips16-pic-4b.s } \
	      { { objdump -dr mips16-pic-4a.dd } \
		{ readelf --symbols mips16-pic-4a.nd } \
		{ readelf -A mips16-pic-4a.gd } } \
	      "mips16-pic-4.so"] \
	[list "MIPS16 PIC test 4 (executable)" \
	      "-melf32btsmip -T mips16-pic-1.ld tmpdir/mips16-pic-4.so" \
	      "-EB -32 -mips1" \
	      { mips16-pic-4c.s } \
	      { { objdump -dr mips16-pic-4b.dd } } \
	      "mips16-pic-4"]]
}

if { [istarget mips64*-linux-gnu] } {
    set o32_as_flags "-32 -EB"
    set o32_ld_flags "-melf32btsmip"
} else {
    set o32_as_flags ""
    set o32_ld_flags ""
}

# Check MIPS16 markings being passed through link.
run_dump_test "mips16-1"

# MIPS branch offset final link checking.
run_dump_test "branch-misc-1"

# Test multi-got link.  We only do this on GNU/Linux because it requires
# the "traditional" emulations.
if { $linux_gnu } {
    run_dump_test "multi-got-1"
    run_dump_test "multi-got-no-shared"
    run_dump_test "multi-got-hidden-1"
    run_dump_test "multi-got-hidden-2"
}

# Test __gnu_local_gp accesses
if { $linux_gnu } {
    run_dump_test "no-shared-1-o32"
    if { $has_newabi } {
	run_dump_test "no-shared-1-n32"
	run_dump_test "no-shared-1-n64"
    }
}

if $has_newabi {
    run_dump_test "elf-rel-got-n32"
    run_dump_test "elf-rel-xgot-n32"
    if { $linux_gnu } {
	run_dump_test "elf-rel-got-n64-linux"
	run_dump_test "elf-rel-xgot-n64-linux"
    } else {
	run_dump_test "elf-rel-got-n64"
	run_dump_test "elf-rel-xgot-n64"
    }

    run_dump_test "relax-jalr-n32"
    run_dump_test "relax-jalr-n32-shared"
    run_dump_test "relax-jalr-n64"
    run_dump_test "relax-jalr-n64-shared"
}

if { $linux_gnu } {
    run_dump_test "rel32-o32"
    run_dump_test "rel32-n32"
    run_dump_test "rel64"
    # The first test checks that a mixed PIC/non-PIC relocatable link
    # will not introduce any stubs itself, but will flag PIC functions
    # for the final link.
    #
    # The second test checks that we insert stubs for calls from
    # non-PIC functions to PIC functions when linking the original
    # two objects together.
    #
    # The third test checks that we do the same when linking the
    # result of the first link (with no other source files).
    run_ld_link_tests {
	{"PIC and non-PIC test 1 (relocatable)" "-r -melf32btsmip"
	 "-32 -EB -mips2" {pic-and-nonpic-1a.s pic-and-nonpic-1b.s}
	 {{objdump -dr pic-and-nonpic-1-rel.dd}
	  {readelf --symbols pic-and-nonpic-1-rel.nd}}
	 "pic-and-nonpic-1-rel.o"}
	{"PIC and non-PIC test 1 (static 1)"
	 "-melf32btsmip -Tpic-and-nonpic-1.ld"
	 "-32 -EB -mips2" {pic-and-nonpic-1a.s pic-and-nonpic-1b.s}
	 {{objdump -dr pic-and-nonpic-1.dd}
	  {readelf --symbols pic-and-nonpic-1.nd}}
	 "pic-and-nonpic-1-static1.o"}
	{"PIC and non-PIC test 1 (static 2)"
	 "-melf32btsmip -Tpic-and-nonpic-1.ld tmpdir/pic-and-nonpic-1-rel.o"
	 "" {}
	 {{objdump -dr pic-and-nonpic-1.dd}
	  {readelf --symbols pic-and-nonpic-1.nd}}
	 "pic-and-nonpic-1-static2.o"}
    }
    run_dump_test "pic-and-nonpic-2"
    run_ld_link_tests {
	{"PIC and non-PIC test 3 (shared library)"
	 "-melf32btsmip -shared -Tpic-and-nonpic-3a.ld"
	 "-32 -EB -mips2" {pic-and-nonpic-3a.s}
	 {{readelf --segments pic-and-nonpic-3a.sd}
	  {readelf -A pic-and-nonpic-3a.gd}
	  {objdump -dr pic-and-nonpic-3a.dd}}
	 "pic-and-nonpic-3a.so"}
	{"PIC and non-PIC test 3 (executable)"
	 "-melf32btsmip -Tpic-and-nonpic-3b.ld tmpdir/pic-and-nonpic-3a.so"
	 "-32 -EB -mips2" {pic-and-nonpic-3b.s}
	 {{readelf --segments pic-and-nonpic-3b.sd}
	  {objdump -dr pic-and-nonpic-3b.dd}
	  {objdump {-s -j.got.plt} pic-and-nonpic-3b.pd}
	  {readelf -A pic-and-nonpic-3b.gd}
	  {readelf --relocs pic-and-nonpic-3b.rd}
	  {readelf --symbols pic-and-nonpic-3b.nd}
	  {readelf -d pic-and-nonpic-3b.ad}}
	 "pic-and-nonpic-3b"}
    }
    run_dump_test "pic-and-nonpic-3-error"
    run_ld_link_tests {
	{"PIC and non-PIC test 4 (shared library)"
	 "-melf32btsmip -shared -Tpic-and-nonpic-3a.ld"
	 "-32 -EB -mips2" {pic-and-nonpic-4a.s}
	 {}
	 "pic-and-nonpic-4a.so"}
	{"PIC and non-PIC test 4 (executable)"
	 "-melf32btsmip -Tpic-and-nonpic-4b.ld tmpdir/pic-and-nonpic-4a.so"
	 "-32 -EB -mips2" {pic-and-nonpic-4b.s}
	 {{readelf --segments pic-and-nonpic-4b.sd}
	  {objdump -dr pic-and-nonpic-4b.dd}
	  {objdump {-s -j.got -j.data} pic-and-nonpic-4b.gd}
	  {readelf --relocs pic-and-nonpic-4b.rd}
	  {readelf --symbols pic-and-nonpic-4b.nd}
	  {readelf -d pic-and-nonpic-4b.ad}}
	 "pic-and-nonpic-4b"}
    }
    run_dump_test "pic-and-nonpic-4-error"
    run_ld_link_tests {
	{"PIC and non-PIC test 5 (executable)"
	 "-melf32btsmip -Tpic-and-nonpic-5b.ld tmpdir/pic-and-nonpic-3a.so tmpdir/pic-and-nonpic-4a.so"
	 "-32 -EB -mips2" {pic-and-nonpic-5a.s pic-and-nonpic-5b.s}
	 {{readelf --segments pic-and-nonpic-5b.sd}
	  {objdump -dr pic-and-nonpic-5b.dd}
	  {objdump {-s -j.got.plt -j.data} pic-and-nonpic-5b.pd}
	  {readelf -A pic-and-nonpic-5b.gd}
	  {readelf --relocs pic-and-nonpic-5b.rd}
	  {readelf --symbols pic-and-nonpic-5b.nd}
	  {readelf -d pic-and-nonpic-5b.ad}}
	 "pic-and-nonpic-5b"}
    }
    set abis { o32 -32 elf32btsmip }
    if $has_newabi {
	lappend abis n32 -n32 elf32btsmipn32
	lappend abis n64 -64 elf64btsmip
    }
    foreach { abi flag emul } $abis {
	run_ld_link_tests [list \
	    [list "PIC and non-PIC test 6 ($abi shared library)" \
		 "-m$emul -shared -Tpic-and-nonpic-3a.ld" \
		 "$flag -EB -mips3" \
		 [list "pic-and-nonpic-6-${abi}a.s"] {} \
		 "pic-and-nonpic-6-${abi}.so"] \
	    [list "PIC and non-PIC test 6 ($abi executable)" \
		 "-m$emul -Tpic-and-nonpic-6.ld tmpdir/pic-and-nonpic-6-${abi}.so" \
		 "$flag -EB -mips3" \
		 [list "pic-and-nonpic-6-${abi}b.s" \
		      "pic-and-nonpic-6-${abi}c.s"] \
		 [list "readelf {--wide --segments} pic-and-nonpic-6-${abi}.sd" \
		      "objdump -dr pic-and-nonpic-6-${abi}.dd" \
		      "objdump {-s -j.got.plt} pic-and-nonpic-6-${abi}.pd" \
		      "readelf -A pic-and-nonpic-6-${abi}.gd" \
		      "readelf --relocs pic-and-nonpic-6-${abi}.rd" \
		      "readelf --symbols pic-and-nonpic-6-${abi}.nd" \
		      "readelf -d pic-and-nonpic-6-${abi}.ad"] \
		 "pic-and-nonpic-6-${abi}"]]
    }
}

if { $embedded_elf } {
    run_dump_test "region1"
}

if $embedded_elf {
    # This could work on other targets too, but would need the appropriate
    # ld -m switch.
    run_dump_test "reloc-1-rel"
}
if $has_newabi {
    run_dump_test "reloc-1-n32"
    if $linux_gnu {
	# Uses a linux-specific ld -m switch
	run_dump_test "reloc-1-n64"
    }
}
run_dump_test "reloc-2"
run_dump_test "reloc-merge-lo16"
run_dump_test "reloc-3"
if {$has_newabi} {
    run_dump_test "reloc-3-n32"
}
run_dump_test "reloc-4"
run_dump_test "reloc-5"

if {$has_newabi && $linux_gnu} {
    run_dump_test "eh-frame1-n32"
    run_dump_test "eh-frame1-n64"
    run_dump_test "eh-frame2-n32"
    run_dump_test "eh-frame2-n64"
}
if {$embedded_elf} {
    run_dump_test "eh-frame3"
    run_dump_test "eh-frame4"
}
if {$linux_gnu} {
    set eh_frame5_test {
	{"MIPS eh-frame 5"
	 "-melf32btsmip -shared -Teh-frame5.ld"
	 "-32 -EB"
	 {eh-frame5.s}
	 {{readelf {--relocs -wf} eh-frame5.d}}
	 "eh-frame5.so"}
    }
    run_ld_link_tests $eh_frame5_test
}

run_dump_test "jaloverflow"
run_dump_test "jaloverflow-2"
if {$has_newabi} {
    run_dump_test "jalbal"
}

run_dump_test "mode-change-error-1"

run_dump_test "mips16-hilo"
if {$has_newabi} {
    run_dump_test "mips16-hilo-n32"
}

if { $linux_gnu } {
    run_dump_test "textrel-1"
    run_dump_test "got-page-1"
    if $has_newabi {
	run_dump_test "got-page-2"
	run_dump_test "dyn-sec64"
    }
    run_dump_test "got-page-3"
    run_dump_test "got-dump-1"
    if $has_newabi {
	run_dump_test "got-dump-2"
    }
    run_dump_test "reloc-estimate-1"
}

if $has_newabi {
    run_dump_test "emit-relocs-1"
}

run_dump_test "hash1a"
run_dump_test "hash1b"
run_dump_test "hash1c"

if {[istarget mips*-*-linux*]} {
     # The number of symbols that are always included in the symbol table
     # for these tests.  The 4 are:
     #
     #     the null symbol entry
     #     the .MIPS.stubs section symbol
     #     _gp
     #     _GLOBAL_OFFSET_TABLE_
     set base_syms 4
     foreach dynsym { 7fff 8000 fff0 10000 2fe80 } {
	 run_ld_link_tests \
	     [list [list \
			"Stub for dynsym 0x$dynsym" \
			"-shared -melf32btsmip -T stub-dynsym-1.ld" \
			[concat \
			     "-EB -march=mips1 -32 -KPIC" \
			     "--defsym base_syms=$base_syms" \
			     "--defsym dynsym=0x$dynsym"] \
			[list "stub-dynsym-1.s"] \
			[list [list \
				   "objdump" "-dz" \
				   "stub-dynsym-1-$dynsym.d"]] \
			"stub-dynsym-1-$dynsym"]]
     }
 }

# For tests which may involve multiple files, use run_ld_link_tests.

# List contains test-items with 3 items followed by 2 lists:
# 0:name 1:ld options 2:assembler options
# 3:filenames of assembler files 4: action and options. 5: name of output file

# Actions:
# objdump: Apply objdump options on result.  Compare with regex (last arg).
# nm: Apply nm options on result.  Compare with regex (last arg).
# readelf: Apply readelf options on result.  Compare with regex (last arg).

set mips_tls_tests {
    {"Static executable with TLS" "-static -melf32btsmip -T mips-dyn.ld"
     "-EB -march=mips1 -32 -KPIC" {tlsbin-o32.s}
     {{objdump {-dr -m mips:isa32r2} tlsbin-o32.d} {objdump -srj.got tlsbin-o32.got}}
     "tls-static-o32"}
    {"Shared library with TLS" "-shared -melf32btsmip -T mips-lib.ld"
     "-EB -march=mips1 -32 -KPIC" {tlslib-o32.s}
     {{objdump {-dr -m mips:isa32r2} tlslib-o32.d} {objdump -Rsj.got tlslib-o32.got}}
     "tlslib-o32.so"}
    {"Dynamic executable with TLS"
     "-melf32btsmip -T mips-dyn.ld tmpdir/tlslib-o32.so"
     "-EB -march=mips1 -32 -KPIC" {tlsdyn-o32.s}
     {{objdump {-dr -m mips:isa32r2} tlsdyn-o32.d} {objdump -Rsj.got tlsdyn-o32.got}}
     "tls-dynamic-o32"}
    {"Shared library with multiple GOTs and TLS"
     "-shared -melf32btsmip -T mips-lib.ld"
     "-EB -march=mips1 -32 -KPIC" {tls-multi-got-1-1.s tls-multi-got-1-2.s}
     {{readelf {-d -r} tls-multi-got-1.r}
      {objdump {-dr -m mips:isa32r2} tls-multi-got-1.d}
      {objdump -Rsj.got tls-multi-got-1.got}}
     "tlslib-multi.so"}
    {"Shared library with TLS and versioning"
     "-shared -melf32btsmip -T mips-lib.ld --version-script tlslib.ver"
     "-EB -march=mips1 -32 -KPIC" {tlslib-o32.s}
     {{objdump {-dr -m mips:isa32r2} tlslib-o32.d} {objdump -Rsj.got tlslib-o32-ver.got}}
     "tlslib-o32-ver.so"}
    {"Dynamic executable with TLS and versioning"
     "-melf32btsmip -T mips-dyn.ld tmpdir/tlslib-o32-ver.so"
     "-EB -march=mips1 -32 -KPIC" {tlsdyn-o32.s tlsdyn-o32-2.s}
     {{objdump {-dr -m mips:isa32r2} tlsdyn-o32-1.d} {objdump -Rsj.got tlsdyn-o32-1.got}}
     "tls-dynamic-o32-ver"}
    {"Dynamic executable with TLS and versioning (order 2)"
     "-melf32btsmip -T mips-dyn.ld tmpdir/tlsdyn-o32.o tmpdir/tlslib-o32-ver.so tmpdir/tlsdyn-o32-2.o"
     "-EB -march=mips1 -32 -KPIC" {}
     {{objdump {-dr -m mips:isa32r2} tlsdyn-o32-2.d} {objdump -Rsj.got tlsdyn-o32-2.got}}
     "tls-dynamic-o32-ver-2"}
    {"Dynamic executable with TLS and versioning (order 3)"
     "-melf32btsmip -T mips-dyn.ld tmpdir/tlsdyn-o32-2.o tmpdir/tlslib-o32-ver.so tmpdir/tlsdyn-o32.o"
     "-EB -march=mips1 -32 -KPIC" {}
     {{objdump {-dr -m mips:isa32r2} tlsdyn-o32-3.d} {objdump -Rsj.got tlsdyn-o32-3.got}}
     "tls-dynamic-o32-ver-3"}
    {"Shared library with TLS and hidden symbols"
     "-shared -melf32btsmip -T mips-lib.ld --version-script tlslib-hidden.ver"
     "-EB -march=mips1 -32 -KPIC" {tlslib-o32.s}
     {{objdump {-dr -m mips:isa32r2} tlslib-o32.d} {objdump -Rsj.got tlslib-o32-hidden.got}}
     "tlslib-o32-hidden.so"}
    {"Shared library with TLS and hidden symbols (2)"
     "-shared -melf32btsmip -T mips-lib.ld"
     "-EB -march=mips1 -32 -KPIC" {tls-hidden2a.s tls-hidden2b.s}
     {{objdump -drj.text tls-hidden2.d} {objdump -sj.got tls-hidden2-got.d}}
     "tls-hidden2.so"}
    {"Shared library with TLS and hidden symbols (3)"
     "-shared -melf32btsmip -T tls-hidden3.ld"
     "-EB -march=mips2 -32 -KPIC" {tls-hidden3a.s tls-hidden3b.s}
     {{objdump -dj.text tls-hidden3.d} {objdump -sj.got tls-hidden3.got}
      {readelf --relocs tls-hidden3.r}}
     "tls-hidden3.so"}
    {"Shared library with TLS and hidden symbols (4)"
     "-shared -melf32btsmip -T tls-hidden3.ld"
     "-EB -march=mips2 -32 -KPIC" {tls-hidden4a.s tls-hidden4b.s}
     {{objdump -sj.got tls-hidden4.got} {readelf --relocs tls-hidden4.r}}
     "tls-hidden4.so"}
}

if {[istarget mips*-*-linux*]} {
    run_ld_link_tests $mips_tls_tests
}

set mips16_call_global_test [list \
    [list "Global calls from mips16" \
	 "$o32_ld_flags" \
	 "$o32_as_flags -mips32r2" \
	 {mips16-call-global-1.s mips16-call-global-2.s mips16-call-global-3.s} \
	 {{objdump -dr mips16-call-global.d}} \
	 "mips16-call-global"]]

run_ld_link_tests $mips16_call_global_test

set mips16_intermix_test [list \
    [list "Intermixing mips32 and mips16 functions" \
	 "$o32_ld_flags" \
	 "$o32_as_flags -mips32r2" \
	 {mips16-intermix-1.s mips16-intermix-2.s} \
	 {{objdump -t mips16-intermix.d}} \
	 "mips16-intermix"]]

run_ld_link_tests $mips16_intermix_test

run_dump_test "mips16-local-stubs-1"

run_dump_test "attr-gnu-4-00"
run_dump_test "attr-gnu-4-01"
run_dump_test "attr-gnu-4-02"
run_dump_test "attr-gnu-4-03"
run_dump_test "attr-gnu-4-04"
run_dump_test "attr-gnu-4-05"
run_dump_test "attr-gnu-4-10"
run_dump_test "attr-gnu-4-11"
run_dump_test "attr-gnu-4-12"
run_dump_test "attr-gnu-4-13"
run_dump_test "attr-gnu-4-14"
run_dump_test "attr-gnu-4-15"
run_dump_test "attr-gnu-4-20"
run_dump_test "attr-gnu-4-21"
run_dump_test "attr-gnu-4-22"
run_dump_test "attr-gnu-4-23"
run_dump_test "attr-gnu-4-24"
run_dump_test "attr-gnu-4-25"
run_dump_test "attr-gnu-4-30"
run_dump_test "attr-gnu-4-31"
run_dump_test "attr-gnu-4-32"
run_dump_test "attr-gnu-4-33"
run_dump_test "attr-gnu-4-34"
run_dump_test "attr-gnu-4-35"
run_dump_test "attr-gnu-4-40"
run_dump_test "attr-gnu-4-41"
run_dump_test "attr-gnu-4-42"
run_dump_test "attr-gnu-4-43"
run_dump_test "attr-gnu-4-44"
run_dump_test "attr-gnu-4-45"
run_dump_test "attr-gnu-4-51"

if { $linux_gnu } {
    run_ld_link_tests {
	{"GOT and versioning 1"
	 "-shared -melf32btsmip --version-script got-vers-1.ver"
	 "-EB -mips2 -32" {got-vers-1a.s got-vers-1b.s}
	 {{readelf -d got-vers-1.dd}
	  {readelf --symbols got-vers-1.sd}
	  {readelf --relocs got-vers-1.rd}}
	 "got-vers-1.so"}
    }
}

run_dump_test "undefined"

# Test the conversion from jr to b
if { $linux_gnu } {
    run_dump_test "jr-to-b-1"
    run_dump_test "jr-to-b-2"
}
