From: Maciej W. Rozycki Date: Fri, 14 Sep 2018 19:22:57 +0000 (+0100) Subject: PR ld/21375: MIPS: Add test cases for undefined weaks resolving to zero X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=982d0151e9ada98e2b5577f9af797b396e48f815;p=binutils-gdb.git PR ld/21375: MIPS: Add test cases for undefined weaks resolving to zero Define a new procedure, `run_mips_undefweak_test', and use it to iterate over several scenarios involving undefined weak symbols resolving to zero, verifying expected regular MIPS, MIPS16 and microMIPS code, GOT and dynamic symbol table generation, as well as the setting of the EI_ABIVERSION field in the ELF file header. In particular ensure that symbol versioning works and that `__gnu_absolute_zero' gets assigned a version (any will do) even if it has not been listed for exportation in a linker version script. ld/ PR ld/21375 * testsuite/ld-mips-elf/pr21375-abi.hd: New test. * testsuite/ld-mips-elf/pr21375-noabi.hd: New test. * testsuite/ld-mips-elf/pr21375.dd: New test. * testsuite/ld-mips-elf/pr21375h.dd: New test. * testsuite/ld-mips-elf/pr21375p.dd: New test. * testsuite/ld-mips-elf/pr21375ph.dd: New test. * testsuite/ld-mips-elf/pr21375s.dd: New test. * testsuite/ld-mips-elf/pr21375s-n32.dd: New test. * testsuite/ld-mips-elf/pr21375s-n64.dd: New test. * testsuite/ld-mips-elf/pr21375sh.dd: New test. * testsuite/ld-mips-elf/pr21375sh-n32.dd: New test. * testsuite/ld-mips-elf/pr21375sh-n64.dd: New test. * testsuite/ld-mips-elf/pr21375shg.dd: New test. * testsuite/ld-mips-elf/pr21375sx.dd: New test. * testsuite/ld-mips-elf/pr21375sxh.dd: New test. * testsuite/ld-mips-elf/pr21375sm16.dd: New test. * testsuite/ld-mips-elf/pr21375sm16h.dd: New test. * testsuite/ld-mips-elf/pr21375su.dd: New test. * testsuite/ld-mips-elf/pr21375su-n32.dd: New test. * testsuite/ld-mips-elf/pr21375su-n64.dd: New test. * testsuite/ld-mips-elf/pr21375suh.dd: New test. * testsuite/ld-mips-elf/pr21375suh-n32.dd: New test. * testsuite/ld-mips-elf/pr21375suh-n64.dd: New test. * testsuite/ld-mips-elf/pr21375sux.dd: New test. * testsuite/ld-mips-elf/pr21375suxh.dd: New test. * testsuite/ld-mips-elf/pr21375.gd: New test. * testsuite/ld-mips-elf/pr21375h.gd: New test. * testsuite/ld-mips-elf/pr21375p.gd: New test. * testsuite/ld-mips-elf/pr21375ph.gd: New test. * testsuite/ld-mips-elf/pr21375s.gd: New test. * testsuite/ld-mips-elf/pr21375s-n32.gd: New test. * testsuite/ld-mips-elf/pr21375s-n64.gd: New test. * testsuite/ld-mips-elf/pr21375sh.gd: New test. * testsuite/ld-mips-elf/pr21375sh-n32.gd: New test. * testsuite/ld-mips-elf/pr21375sh-n64.gd: New test. * testsuite/ld-mips-elf/pr21375shg.gd: New test. * testsuite/ld-mips-elf/pr21375shl.gd: New test. * testsuite/ld-mips-elf/pr21375shv.gd: New test. * testsuite/ld-mips-elf/pr21375sx.gd: New test. * testsuite/ld-mips-elf/pr21375sxh.gd: New test. * testsuite/ld-mips-elf/pr21375.sd: New test. * testsuite/ld-mips-elf/pr21375-irix.sd: New test. * testsuite/ld-mips-elf/pr21375h.sd: New test. * testsuite/ld-mips-elf/pr21375h-irix.sd: New test. * testsuite/ld-mips-elf/pr21375p.sd: New test. * testsuite/ld-mips-elf/pr21375p-irix.sd: New test. * testsuite/ld-mips-elf/pr21375ph.sd: New test. * testsuite/ld-mips-elf/pr21375ph-irix.sd: New test. * testsuite/ld-mips-elf/pr21375s.sd: New test. * testsuite/ld-mips-elf/pr21375s-irix.sd: New test. * testsuite/ld-mips-elf/pr21375s-n32.sd: New test. * testsuite/ld-mips-elf/pr21375s-n32-irix.sd: New test. * testsuite/ld-mips-elf/pr21375s-n64.sd: New test. * testsuite/ld-mips-elf/pr21375s-n64-irix.sd: New test. * testsuite/ld-mips-elf/pr21375sh.sd: New test. * testsuite/ld-mips-elf/pr21375sh-irix.sd: New test. * testsuite/ld-mips-elf/pr21375sh-n32.sd: New test. * testsuite/ld-mips-elf/pr21375sh-n32-irix.sd: New test. * testsuite/ld-mips-elf/pr21375sh-n64.sd: New test. * testsuite/ld-mips-elf/pr21375sh-n64-irix.sd: New test. * testsuite/ld-mips-elf/pr21375shg.sd: New test. * testsuite/ld-mips-elf/pr21375shg-irix.sd: New test. * testsuite/ld-mips-elf/pr21375shl.sd: New test. * testsuite/ld-mips-elf/pr21375shl-irix.sd: New test. * testsuite/ld-mips-elf/pr21375shv.sd: New test. * testsuite/ld-mips-elf/pr21375shv-irix.sd: New test. * testsuite/ld-mips-elf/pr21375sx.sd: New test. * testsuite/ld-mips-elf/pr21375sx-irix.sd: New test. * testsuite/ld-mips-elf/pr21375sxh.sd: New test. * testsuite/ld-mips-elf/pr21375sxh-irix.sd: New test. * testsuite/ld-mips-elf/pr21375.ld: New test linker script. * testsuite/ld-mips-elf/pr21375-xgot.ld: New test linker script. * testsuite/ld-mips-elf/pr21375.ver: New test version script. * testsuite/ld-mips-elf/pr21375v.ver: New test version script. * testsuite/ld-mips-elf/pr21375.s: New test source. * testsuite/ld-mips-elf/pr21375-mips16.s: New test source. * testsuite/ld-mips-elf/pr21375-n32.s: New test source. * testsuite/ld-mips-elf/pr21375-n64.s: New test source. * testsuite/ld-mips-elf/pr21375-xgot.s: New test source. * testsuite/ld-mips-elf/mips-elf.exp (run_mips_undefweak_test): New procedure; run the new tests. --- diff --git a/ld/ChangeLog b/ld/ChangeLog index f4f1d2ed5b1..ad224ab9377 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,88 @@ +2018-09-14 Maciej W. Rozycki + + PR ld/21375 + * testsuite/ld-mips-elf/pr21375-abi.hd: New test. + * testsuite/ld-mips-elf/pr21375-noabi.hd: New test. + * testsuite/ld-mips-elf/pr21375.dd: New test. + * testsuite/ld-mips-elf/pr21375h.dd: New test. + * testsuite/ld-mips-elf/pr21375p.dd: New test. + * testsuite/ld-mips-elf/pr21375ph.dd: New test. + * testsuite/ld-mips-elf/pr21375s.dd: New test. + * testsuite/ld-mips-elf/pr21375s-n32.dd: New test. + * testsuite/ld-mips-elf/pr21375s-n64.dd: New test. + * testsuite/ld-mips-elf/pr21375sh.dd: New test. + * testsuite/ld-mips-elf/pr21375sh-n32.dd: New test. + * testsuite/ld-mips-elf/pr21375sh-n64.dd: New test. + * testsuite/ld-mips-elf/pr21375shg.dd: New test. + * testsuite/ld-mips-elf/pr21375sx.dd: New test. + * testsuite/ld-mips-elf/pr21375sxh.dd: New test. + * testsuite/ld-mips-elf/pr21375sm16.dd: New test. + * testsuite/ld-mips-elf/pr21375sm16h.dd: New test. + * testsuite/ld-mips-elf/pr21375su.dd: New test. + * testsuite/ld-mips-elf/pr21375su-n32.dd: New test. + * testsuite/ld-mips-elf/pr21375su-n64.dd: New test. + * testsuite/ld-mips-elf/pr21375suh.dd: New test. + * testsuite/ld-mips-elf/pr21375suh-n32.dd: New test. + * testsuite/ld-mips-elf/pr21375suh-n64.dd: New test. + * testsuite/ld-mips-elf/pr21375sux.dd: New test. + * testsuite/ld-mips-elf/pr21375suxh.dd: New test. + * testsuite/ld-mips-elf/pr21375.gd: New test. + * testsuite/ld-mips-elf/pr21375h.gd: New test. + * testsuite/ld-mips-elf/pr21375p.gd: New test. + * testsuite/ld-mips-elf/pr21375ph.gd: New test. + * testsuite/ld-mips-elf/pr21375s.gd: New test. + * testsuite/ld-mips-elf/pr21375s-n32.gd: New test. + * testsuite/ld-mips-elf/pr21375s-n64.gd: New test. + * testsuite/ld-mips-elf/pr21375sh.gd: New test. + * testsuite/ld-mips-elf/pr21375sh-n32.gd: New test. + * testsuite/ld-mips-elf/pr21375sh-n64.gd: New test. + * testsuite/ld-mips-elf/pr21375shg.gd: New test. + * testsuite/ld-mips-elf/pr21375shl.gd: New test. + * testsuite/ld-mips-elf/pr21375shv.gd: New test. + * testsuite/ld-mips-elf/pr21375sx.gd: New test. + * testsuite/ld-mips-elf/pr21375sxh.gd: New test. + * testsuite/ld-mips-elf/pr21375.sd: New test. + * testsuite/ld-mips-elf/pr21375-irix.sd: New test. + * testsuite/ld-mips-elf/pr21375h.sd: New test. + * testsuite/ld-mips-elf/pr21375h-irix.sd: New test. + * testsuite/ld-mips-elf/pr21375p.sd: New test. + * testsuite/ld-mips-elf/pr21375p-irix.sd: New test. + * testsuite/ld-mips-elf/pr21375ph.sd: New test. + * testsuite/ld-mips-elf/pr21375ph-irix.sd: New test. + * testsuite/ld-mips-elf/pr21375s.sd: New test. + * testsuite/ld-mips-elf/pr21375s-irix.sd: New test. + * testsuite/ld-mips-elf/pr21375s-n32.sd: New test. + * testsuite/ld-mips-elf/pr21375s-n32-irix.sd: New test. + * testsuite/ld-mips-elf/pr21375s-n64.sd: New test. + * testsuite/ld-mips-elf/pr21375s-n64-irix.sd: New test. + * testsuite/ld-mips-elf/pr21375sh.sd: New test. + * testsuite/ld-mips-elf/pr21375sh-irix.sd: New test. + * testsuite/ld-mips-elf/pr21375sh-n32.sd: New test. + * testsuite/ld-mips-elf/pr21375sh-n32-irix.sd: New test. + * testsuite/ld-mips-elf/pr21375sh-n64.sd: New test. + * testsuite/ld-mips-elf/pr21375sh-n64-irix.sd: New test. + * testsuite/ld-mips-elf/pr21375shg.sd: New test. + * testsuite/ld-mips-elf/pr21375shg-irix.sd: New test. + * testsuite/ld-mips-elf/pr21375shl.sd: New test. + * testsuite/ld-mips-elf/pr21375shl-irix.sd: New test. + * testsuite/ld-mips-elf/pr21375shv.sd: New test. + * testsuite/ld-mips-elf/pr21375shv-irix.sd: New test. + * testsuite/ld-mips-elf/pr21375sx.sd: New test. + * testsuite/ld-mips-elf/pr21375sx-irix.sd: New test. + * testsuite/ld-mips-elf/pr21375sxh.sd: New test. + * testsuite/ld-mips-elf/pr21375sxh-irix.sd: New test. + * testsuite/ld-mips-elf/pr21375.ld: New test linker script. + * testsuite/ld-mips-elf/pr21375-xgot.ld: New test linker script. + * testsuite/ld-mips-elf/pr21375.ver: New test version script. + * testsuite/ld-mips-elf/pr21375v.ver: New test version script. + * testsuite/ld-mips-elf/pr21375.s: New test source. + * testsuite/ld-mips-elf/pr21375-mips16.s: New test source. + * testsuite/ld-mips-elf/pr21375-n32.s: New test source. + * testsuite/ld-mips-elf/pr21375-n64.s: New test source. + * testsuite/ld-mips-elf/pr21375-xgot.s: New test source. + * testsuite/ld-mips-elf/mips-elf.exp (run_mips_undefweak_test): + New procedure; run the new tests. + 2018-09-14 Maciej W. Rozycki PR ld/21375 diff --git a/ld/testsuite/ld-mips-elf/mips-elf.exp b/ld/testsuite/ld-mips-elf/mips-elf.exp index 7e8ef69e358..d4298102910 100644 --- a/ld/testsuite/ld-mips-elf/mips-elf.exp +++ b/ld/testsuite/ld-mips-elf/mips-elf.exp @@ -1437,3 +1437,195 @@ run_dump_test "mips-abiflags-2r" # Test that _gp_disp symbol is not present in symbol tables. run_dump_test_o32 "gp-disp-sym" + +# PR ld/21375 undefined weak PIC references. +proc run_mips_undefweak_test { name abi args } { + global abi_asflags + global abi_ldflags + global irixemul + + set name "PR ld/21375 in $name" + + set pic 0 + set abisuf -noabi + set srcsuf "" + set scrsuf "" + set binsuf "" + set dsosuf "" + set objsuf "" + set rdesuf "" + set asxtra "" + set ldxtra "" + foreach arg $args { + switch -- $arg { + dso { + set pic 1 + set dsosuf .so + append objsuf s + append rdesuf s + append ldxtra " -shared" + } + gc { + set abisuf -noabi + append binsuf g + append objsuf g + append rdesuf g + append ldxtra " --gc-sections" + } + hidden { + if { $pic && [istarget "*-*-*gnu*"] } { set abisuf -abi } + append binsuf h + append objsuf h + append rdesuf h + append asxtra " --defsym hidn=1" + } + internal { + if { $pic && [istarget "*-*-*gnu*"] } { set abisuf -abi } + append binsuf h + append objsuf h + append rdesuf h + append asxtra " --defsym intr=1" + } + local { + append binsuf l + append rdesuf l + append ldxtra " --version-script pr21375.ver" + } + mips16 { + set srcsuf -mips16 + append binsuf m16 + append objsuf m16 + append asxtra " -mips16" + } + pie { + set pic 1 + set dsosuf -pie + append objsuf p + append rdesuf p + append ldxtra " -pie" + } + protected { + if { $pic && [istarget "*-*-*gnu*"] } { set abisuf -abi } + append binsuf h + append objsuf h + append rdesuf h + append asxtra " --defsym prot=1" + } + umips { + append binsuf u + append objsuf u + append asxtra " -mmicromips" + } + version { + append binsuf v + append rdesuf v + append ldxtra " --version-script pr21375v.ver" + } + xgot { + set srcsuf -xgot + set scrsuf -xgot + append binsuf x + append objsuf x + append rdesuf x + } + } + } + switch -- $abi { + n32 { + set srcsuf -n32 + append binsuf -n32 + append objsuf -n32 + append rdesuf -n32 + } + n64 { + set srcsuf -n64 + append binsuf -n64 + append objsuf -n64 + append rdesuf -n64 + } + } + if $irixemul { + set irixsuf -irix + } else { + set irixsuf "" + } + + if { $pic && ![check_shared_lib_support] } { + unsupported "$name" + } else { + run_ld_link_tests [list \ + [list \ + "$name" \ + "$abi_ldflags($abi) -e foo -T pr21375${scrsuf}.ld ${ldxtra}" \ + "" \ + "$abi_asflags($abi) ${asxtra}" \ + [list pr21375${srcsuf}.s] \ + [list \ + [list objdump -d pr21375${objsuf}.dd] \ + [list readelf -A pr21375${rdesuf}.gd] \ + [list readelf --dyn-syms pr21375${rdesuf}${irixsuf}.sd] \ + [list readelf -h pr21375${abisuf}.hd]] \ + "pr21375${binsuf}${dsosuf}"]] + } +} + +if $has_abi(o32) { + run_mips_undefweak_test "SVR4 executable" \ + o32 + run_mips_undefweak_test "SVR4 executable (hidden)" \ + o32 hidden + run_mips_undefweak_test "PIE executable" \ + o32 pie + run_mips_undefweak_test "PIE executable (hidden)" \ + o32 pie hidden + run_mips_undefweak_test "shared library" \ + o32 dso + run_mips_undefweak_test "shared library (hidden)" \ + o32 dso hidden + run_mips_undefweak_test "shared library (hidden, forced local)" \ + o32 dso hidden local + run_mips_undefweak_test "shared library (hidden, versioned)" \ + o32 dso hidden version + run_mips_undefweak_test "shared library (hidden, section GC)" \ + o32 dso hidden gc + run_mips_undefweak_test "shared library (protected)" \ + o32 dso protected + run_mips_undefweak_test "shared library (internal)" \ + o32 dso internal + run_mips_undefweak_test "shared library (large GOT)" \ + o32 dso xgot + run_mips_undefweak_test "shared library (large GOT, hidden)" \ + o32 dso xgot hidden + run_mips_undefweak_test "shared library (MIPS16)" \ + o32 dso mips16 + run_mips_undefweak_test "shared library (MIPS16, hidden)" \ + o32 dso mips16 hidden + run_mips_undefweak_test "shared library (microMIPS)" \ + o32 dso umips + run_mips_undefweak_test "shared library (microMIPS, hidden)" \ + o32 dso umips hidden + run_mips_undefweak_test "shared library (microMIPS, large GOT)" \ + o32 dso umips xgot + run_mips_undefweak_test "shared library (microMIPS, large GOT, hidden)" \ + o32 dso umips xgot hidden +} +if $has_abi(n32) { + run_mips_undefweak_test "shared library (n32)" \ + n32 dso + run_mips_undefweak_test "shared library (n32, hidden)" \ + n32 dso hidden + run_mips_undefweak_test "shared library (n32, microMIPS)" \ + n32 dso umips + run_mips_undefweak_test "shared library (n32, microMIPS, hidden)" \ + n32 dso umips hidden +} +if $has_abi(n64) { + run_mips_undefweak_test "shared library (n64)" \ + n64 dso + run_mips_undefweak_test "shared library (n64, hidden)" \ + n64 dso hidden + run_mips_undefweak_test "shared library (n64, microMIPS)" \ + n64 dso umips + run_mips_undefweak_test "shared library (n64, microMIPS, hidden)" \ + n64 dso umips hidden +} diff --git a/ld/testsuite/ld-mips-elf/pr21375-abi.hd b/ld/testsuite/ld-mips-elf/pr21375-abi.hd new file mode 100644 index 00000000000..7e27fa15f95 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375-abi.hd @@ -0,0 +1,4 @@ +ELF Header: +#... + +ABI Version: +4 +#pass diff --git a/ld/testsuite/ld-mips-elf/pr21375-irix.sd b/ld/testsuite/ld-mips-elf/pr21375-irix.sd new file mode 100644 index 00000000000..996cee9ad83 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375-irix.sd @@ -0,0 +1 @@ +# Empty. diff --git a/ld/testsuite/ld-mips-elf/pr21375-mips16.s b/ld/testsuite/ld-mips-elf/pr21375-mips16.s new file mode 100644 index 00000000000..33b35a38297 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375-mips16.s @@ -0,0 +1,63 @@ + .abicalls + .set noreorder + + .type fun, @function + .weak fun + .type obj, @object + .weak obj + .ifdef prot + .protected fun + .protected obj + .endif + .ifdef hidn + .hidden fun + .hidden obj + .endif + .ifdef intr + .internal fun + .internal obj + .endif + + .section .text.foo, "ax", @progbits + .globl foo + .ent foo +foo: + .frame $sp, 0, $31 + .mask 0x00000000, 0 + .fmask 0x00000000, 0 + li $2, %hi(_gp_disp) + addiu $3, $pc, %lo(_gp_disp) + sll $2, 16 + addu $2, $3 + lw $4, %got(obj)($2) + lw $2, %call16(fun)($2) + jr $2 + move $25,$2 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 + + .section .text.bar, "ax", @progbits + .ent bar +bar: + .frame $sp, 0, $31 + .mask 0x00000000, 0 + .fmask 0x00000000, 0 + li $2, %hi(_gp_disp) + addiu $3, $pc, %lo(_gp_disp) + sll $2, 16 + addu $2, $3 + move $4, $2 + addiu $4, %got(obj) + addiu $2, %call16(fun) + lw $2, 0($2) + lw $4, 0($4) + jr $2 + move $25,$2 + .end bar + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/pr21375-n32.s b/ld/testsuite/ld-mips-elf/pr21375-n32.s new file mode 100644 index 00000000000..e17fab64b77 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375-n32.s @@ -0,0 +1,59 @@ + .abicalls + .set noreorder + + .type obj, @object + .weak obj + .ifdef prot + .protected obj + .endif + .ifdef hidn + .hidden obj + .endif + .ifdef intr + .internal obj + .endif + + .section .text.foo, "ax", @progbits + .globl foo + .ent foo +foo: + .frame $sp, 0, $31 + .mask 0x00000000, 0 + .fmask 0x00000000, 0 + .cplocal $4 + .cpsetup $25, $0, foo + lw $2, %got_page(obj + 4)($4) + lw $3, %got_disp(obj)($4) + addiu $2, %got_ofst(obj + 4) + jr $31 + addiu $3, 4 + .end foo + +# Pad a little so that the microMIPS version aligns the same. + .space 4 + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 + + .section .text.bar, "ax", @progbits + .ent bar +bar: + .frame $sp, 0, $31 + .mask 0x00000000, 0 + .fmask 0x00000000, 0 + .cplocal $4 + .cpsetup $25, $0, bar + lwl $2, %got_page(obj + 4)($4) + lwr $3, %got_disp(obj)($4) + addiu $2, %got_ofst(obj + 4) + jr $31 + addiu $3, 4 + .end bar + +# Pad a little so that the microMIPS version aligns the same. + .space 4 + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/pr21375-n64.s b/ld/testsuite/ld-mips-elf/pr21375-n64.s new file mode 100644 index 00000000000..366d860024f --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375-n64.s @@ -0,0 +1,59 @@ + .abicalls + .set noreorder + + .type obj, @object + .weak obj + .ifdef prot + .protected obj + .endif + .ifdef hidn + .hidden obj + .endif + .ifdef intr + .internal obj + .endif + + .section .text.foo, "ax", @progbits + .globl foo + .ent foo +foo: + .frame $sp, 0, $31 + .mask 0x00000000, 0 + .fmask 0x00000000, 0 + .cplocal $4 + .cpsetup $25, $0, foo + ld $2, %got_page(obj + 4)($4) + ld $3, %got_disp(obj)($4) + daddiu $2, %got_ofst(obj + 4) + jr $31 + daddiu $3, 4 + .end foo + +# Pad a little so that the microMIPS version aligns the same. + .space 4 + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 + + .section .text.bar, "ax", @progbits + .ent bar +bar: + .frame $sp, 0, $31 + .mask 0x00000000, 0 + .fmask 0x00000000, 0 + .cplocal $4 + .cpsetup $25, $0, bar + ldl $2, %got_page(obj + 4)($4) + ldr $3, %got_disp(obj)($4) + daddiu $2, %got_ofst(obj + 4) + jr $31 + daddiu $3, 4 + .end bar + +# Pad a little so that the microMIPS version aligns the same. + .space 4 + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/pr21375-noabi.hd b/ld/testsuite/ld-mips-elf/pr21375-noabi.hd new file mode 100644 index 00000000000..4c1a3b8e908 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375-noabi.hd @@ -0,0 +1,4 @@ +ELF Header: +#... + +ABI Version: +0 +#pass diff --git a/ld/testsuite/ld-mips-elf/pr21375-xgot.ld b/ld/testsuite/ld-mips-elf/pr21375-xgot.ld new file mode 100644 index 00000000000..d63169de0dd --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375-xgot.ld @@ -0,0 +1,20 @@ +SECTIONS +{ + .dynamic : { *(.dynamic) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + /* Align up to account for traditional vs IRIX target differences + with the alignment of dynamic sections. This way GOT addresses + work out the same. */ + .text : ALIGN (512) { *(.text*) } + HIDDEN (_gp = ALIGN (16) + 0x7fff8010); + .got : { *(.got) } + .symtab : { *(.symtab) } + .strtab : { *(.strtab) } + .shstrtab : { *(.shstrtab) } + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-mips-elf/pr21375-xgot.s b/ld/testsuite/ld-mips-elf/pr21375-xgot.s new file mode 100644 index 00000000000..39bfa08ca3a --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375-xgot.s @@ -0,0 +1,62 @@ + .abicalls + .set noreorder + + .type fun, @function + .weak fun + .type obj, @object + .weak obj + .ifdef prot + .protected fun + .protected obj + .endif + .ifdef hidn + .hidden fun + .hidden obj + .endif + .ifdef intr + .internal fun + .internal obj + .endif + + .section .text.foo, "ax", @progbits + .globl foo + .ent foo +foo: + .frame $sp, 0, $31 + .mask 0x00000000, 0 + .fmask 0x00000000, 0 + .cpload $25 + lui $4, %got_hi(obj) + lui $25, %call_hi(fun) + addu $4, $28 + addu $25, $28 + lw $25, %call_lo(fun)($25) + lw $4, %got_lo(obj)($4) + jr $25 + addiu $4, 4 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 + + .section .text.bar, "ax", @progbits + .ent bar +bar: + .frame $sp, 0, $31 + .mask 0x00000000, 0 + .fmask 0x00000000, 0 + .cpload $25 + lui $4, %got_hi(obj) + lui $25, %call_hi(fun) + addu $4, $28 + addu $25, $28 + lwl $25, %call_lo(fun)($25) + lwr $4, %got_lo(obj)($4) + jr $25 + addiu $4, 4 + .end bar + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/pr21375.dd b/ld/testsuite/ld-mips-elf/pr21375.dd new file mode 100644 index 00000000000..056e6f4e2f3 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375.dd @@ -0,0 +1,23 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c0001 lui gp,0x1 + *[0-9a-f]+: 279c8050 addiu gp,gp,-32688 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 8f998018 lw t9,-32744\(gp\) + *[0-9a-f]+: 8f84801c lw a0,-32740\(gp\) + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c0001 lui gp,0x1 + *[0-9a-f]+: 279c8020 addiu gp,gp,-32736 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 8b998018 lwl t9,-32744\(gp\) + *[0-9a-f]+: 9b84801c lwr a0,-32740\(gp\) + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375.gd b/ld/testsuite/ld-mips-elf/pr21375.gd new file mode 100644 index 00000000000..7164476496a --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375.gd @@ -0,0 +1,12 @@ +Static GOT: + Canonical gp value: 00008050 + + Reserved entries: + Address Access Value + 00000060 -32752\(gp\) 00000000 + 00000064 -32748\(gp\) 80000000 + + Local entries: + Address Access Value + 00000068 -32744\(gp\) 00000000 + 0000006c -32740\(gp\) 00000000 diff --git a/ld/testsuite/ld-mips-elf/pr21375.ld b/ld/testsuite/ld-mips-elf/pr21375.ld new file mode 100644 index 00000000000..ecc7d6abe81 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375.ld @@ -0,0 +1,20 @@ +SECTIONS +{ + .dynamic : { *(.dynamic) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + /* Align up to account for traditional vs IRIX target differences + with the alignment of dynamic sections. This way GOT addresses + work out the same. */ + .text : ALIGN (512) { *(.text*) } + HIDDEN (_gp = ALIGN (16) + 0x7ff0); + .got : { *(.got) } + .symtab : { *(.symtab) } + .strtab : { *(.strtab) } + .shstrtab : { *(.shstrtab) } + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-mips-elf/pr21375.s b/ld/testsuite/ld-mips-elf/pr21375.s new file mode 100644 index 00000000000..e79a70ce221 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375.s @@ -0,0 +1,54 @@ + .abicalls + .set noreorder + + .type fun, @function + .weak fun + .type obj, @object + .weak obj + .ifdef prot + .protected fun + .protected obj + .endif + .ifdef hidn + .hidden fun + .hidden obj + .endif + .ifdef intr + .internal fun + .internal obj + .endif + + .section .text.foo, "ax", @progbits + .globl foo + .ent foo +foo: + .frame $sp, 0, $31 + .mask 0x00000000, 0 + .fmask 0x00000000, 0 + .cpload $25 + lw $25, %call16(fun)($28) + lw $4, %got(obj)($28) + jr $25 + addiu $4, 4 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 + + .section .text.bar, "ax", @progbits + .ent bar +bar: + .frame $sp, 0, $31 + .mask 0x00000000, 0 + .fmask 0x00000000, 0 + .cpload $25 + lwl $25, %call16(fun)($28) + lwr $4, %got(obj)($28) + jr $25 + addiu $4, 4 + .end bar + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/pr21375.sd b/ld/testsuite/ld-mips-elf/pr21375.sd new file mode 100644 index 00000000000..996cee9ad83 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375.sd @@ -0,0 +1 @@ +# Empty. diff --git a/ld/testsuite/ld-mips-elf/pr21375.ver b/ld/testsuite/ld-mips-elf/pr21375.ver new file mode 100644 index 00000000000..b6b23651880 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375.ver @@ -0,0 +1 @@ +{ global: foo; local: *; }; diff --git a/ld/testsuite/ld-mips-elf/pr21375h-irix.sd b/ld/testsuite/ld-mips-elf/pr21375h-irix.sd new file mode 100644 index 00000000000..996cee9ad83 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375h-irix.sd @@ -0,0 +1 @@ +# Empty. diff --git a/ld/testsuite/ld-mips-elf/pr21375h.dd b/ld/testsuite/ld-mips-elf/pr21375h.dd new file mode 100644 index 00000000000..4a25dff7e4c --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375h.dd @@ -0,0 +1,23 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c0001 lui gp,0x1 + *[0-9a-f]+: 279c8050 addiu gp,gp,-32688 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 24190000 li t9,0 + *[0-9a-f]+: 24040000 li a0,0 + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c0001 lui gp,0x1 + *[0-9a-f]+: 279c8020 addiu gp,gp,-32736 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 8b998018 lwl t9,-32744\(gp\) + *[0-9a-f]+: 9b848018 lwr a0,-32744\(gp\) + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375h.gd b/ld/testsuite/ld-mips-elf/pr21375h.gd new file mode 100644 index 00000000000..7164476496a --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375h.gd @@ -0,0 +1,12 @@ +Static GOT: + Canonical gp value: 00008050 + + Reserved entries: + Address Access Value + 00000060 -32752\(gp\) 00000000 + 00000064 -32748\(gp\) 80000000 + + Local entries: + Address Access Value + 00000068 -32744\(gp\) 00000000 + 0000006c -32740\(gp\) 00000000 diff --git a/ld/testsuite/ld-mips-elf/pr21375h.sd b/ld/testsuite/ld-mips-elf/pr21375h.sd new file mode 100644 index 00000000000..996cee9ad83 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375h.sd @@ -0,0 +1 @@ +# Empty. diff --git a/ld/testsuite/ld-mips-elf/pr21375p-irix.sd b/ld/testsuite/ld-mips-elf/pr21375p-irix.sd new file mode 100644 index 00000000000..239262b9afd --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375p-irix.sd @@ -0,0 +1,10 @@ +Symbol table '\.dynsym' contains 8 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000 0 SECTION GLOBAL PROTECTED ABS _procedure_table_size + 2: 00000001 0 SECTION GLOBAL DEFAULT ABS _DYNAMIC_LINK + 3: 00000000 0 OBJECT GLOBAL DEFAULT ABS __rld_map + 4: 00000000 0 SECTION GLOBAL PROTECTED PRC\[0xff02\] _procedure_string_table + 5: 00000000 0 SECTION GLOBAL PROTECTED PRC\[0xff02\] _procedure_table + 6: 00000000 0 FUNC WEAK DEFAULT UND fun + 7: 00000000 0 OBJECT WEAK DEFAULT UND obj diff --git a/ld/testsuite/ld-mips-elf/pr21375p.dd b/ld/testsuite/ld-mips-elf/pr21375p.dd new file mode 100644 index 00000000000..056e6f4e2f3 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375p.dd @@ -0,0 +1,23 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c0001 lui gp,0x1 + *[0-9a-f]+: 279c8050 addiu gp,gp,-32688 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 8f998018 lw t9,-32744\(gp\) + *[0-9a-f]+: 8f84801c lw a0,-32740\(gp\) + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c0001 lui gp,0x1 + *[0-9a-f]+: 279c8020 addiu gp,gp,-32736 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 8b998018 lwl t9,-32744\(gp\) + *[0-9a-f]+: 9b84801c lwr a0,-32740\(gp\) + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375p.gd b/ld/testsuite/ld-mips-elf/pr21375p.gd new file mode 100644 index 00000000000..328610429d9 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375p.gd @@ -0,0 +1,12 @@ +Primary GOT: + Canonical gp value: 00008250 + + Reserved entries: + Address Access Initial Purpose + 00000260 -32752\(gp\) 00000000 Lazy resolver + 00000264 -32748\(gp\) 80000000 Module pointer \(GNU extension\) + + Global entries: + Address Access Initial Sym\.Val\. Type Ndx Name + 00000268 -32744\(gp\) 00000000 00000000 FUNC UND fun + 0000026c -32740\(gp\) 00000000 00000000 OBJECT UND obj diff --git a/ld/testsuite/ld-mips-elf/pr21375p.sd b/ld/testsuite/ld-mips-elf/pr21375p.sd new file mode 100644 index 00000000000..9649a7fabda --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375p.sd @@ -0,0 +1,7 @@ +Symbol table '\.dynsym' contains 5 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000001 0 SECTION GLOBAL DEFAULT ABS _DYNAMIC_LINKING + 2: 00000000 0 OBJECT GLOBAL DEFAULT ABS __RLD_MAP + 3: 00000000 0 FUNC WEAK DEFAULT UND fun + 4: 00000000 0 OBJECT WEAK DEFAULT UND obj diff --git a/ld/testsuite/ld-mips-elf/pr21375ph-irix.sd b/ld/testsuite/ld-mips-elf/pr21375ph-irix.sd new file mode 100644 index 00000000000..1bb8531e639 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375ph-irix.sd @@ -0,0 +1,9 @@ +Symbol table '\.dynsym' contains 7 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000 0 SECTION GLOBAL PROTECTED ABS _procedure_table_size + 2: 00000001 0 SECTION GLOBAL DEFAULT ABS _DYNAMIC_LINK + 3: 00000000 0 OBJECT GLOBAL DEFAULT ABS __rld_map + 4: 00000000 0 SECTION GLOBAL PROTECTED PRC\[0xff02\] _procedure_string_table + 5: 00000000 0 SECTION GLOBAL PROTECTED PRC\[0xff02\] _procedure_table + 6: 00000000 0 NOTYPE GLOBAL PROTECTED ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375ph.dd b/ld/testsuite/ld-mips-elf/pr21375ph.dd new file mode 100644 index 00000000000..0fedfe9bf6b --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375ph.dd @@ -0,0 +1,23 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c0001 lui gp,0x1 + *[0-9a-f]+: 279c8050 addiu gp,gp,-32688 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 24190000 li t9,0 + *[0-9a-f]+: 24040000 li a0,0 + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c0001 lui gp,0x1 + *[0-9a-f]+: 279c8020 addiu gp,gp,-32736 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 8b998020 lwl t9,-32736\(gp\) + *[0-9a-f]+: 9b848020 lwr a0,-32736\(gp\) + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375ph.gd b/ld/testsuite/ld-mips-elf/pr21375ph.gd new file mode 100644 index 00000000000..e24217d6f05 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375ph.gd @@ -0,0 +1,16 @@ +Primary GOT: + Canonical gp value: 00008250 + + Reserved entries: + Address Access Initial Purpose + 00000260 -32752\(gp\) 00000000 Lazy resolver + 00000264 -32748\(gp\) 80000000 Module pointer \(GNU extension\) + + Local entries: + Address Access Initial + 00000268 -32744\(gp\) 00000000 + 0000026c -32740\(gp\) 00000000 + + Global entries: + Address Access Initial Sym\.Val\. Type Ndx Name + 00000270 -32736\(gp\) 00000000 00000000 NOTYPE ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375ph.sd b/ld/testsuite/ld-mips-elf/pr21375ph.sd new file mode 100644 index 00000000000..3df56413a1c --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375ph.sd @@ -0,0 +1,6 @@ +Symbol table '\.dynsym' contains 4 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000001 0 SECTION GLOBAL DEFAULT ABS _DYNAMIC_LINKING + 2: 00000000 0 OBJECT GLOBAL DEFAULT ABS __RLD_MAP + 3: 00000000 0 NOTYPE GLOBAL PROTECTED ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375s-irix.sd b/ld/testsuite/ld-mips-elf/pr21375s-irix.sd new file mode 100644 index 00000000000..e578ffc8bfc --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375s-irix.sd @@ -0,0 +1,9 @@ +Symbol table '\.dynsym' contains 7 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000 0 SECTION GLOBAL PROTECTED ABS _procedure_table_size + 2: 00000000 0 SECTION GLOBAL PROTECTED PRC\[0xff02\] _procedure_string_table + 3: 0000020. 2. FUNC GLOBAL DEFAULT PRC\[0xff01\] foo + 4: 00000000 0 SECTION GLOBAL PROTECTED PRC\[0xff02\] _procedure_table + 5: 00000000 0 FUNC WEAK DEFAULT UND fun + 6: 00000000 0 OBJECT WEAK DEFAULT UND obj diff --git a/ld/testsuite/ld-mips-elf/pr21375s-n32-irix.sd b/ld/testsuite/ld-mips-elf/pr21375s-n32-irix.sd new file mode 100644 index 00000000000..1164f3b378d --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375s-n32-irix.sd @@ -0,0 +1,5 @@ +Symbol table '\.dynsym' contains 3 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 0000020. 3. FUNC GLOBAL DEFAULT PRC\[0xff01\] foo + 2: 00000000 0 OBJECT WEAK DEFAULT UND obj diff --git a/ld/testsuite/ld-mips-elf/pr21375s-n32.dd b/ld/testsuite/ld-mips-elf/pr21375s-n32.dd new file mode 100644 index 00000000000..cd55d733794 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375s-n32.dd @@ -0,0 +1,27 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 00800025 move zero,a0 + *[0-9a-f]+: 3c040001 lui a0,0x1 + *[0-9a-f]+: 24848070 addiu a0,a0,-32656 + *[0-9a-f]+: 00992021 addu a0,a0,t9 + *[0-9a-f]+: 8c828018 lw v0,-32744\(a0\) + *[0-9a-f]+: 8c838018 lw v1,-32744\(a0\) + *[0-9a-f]+: 24420004 addiu v0,v0,4 + *[0-9a-f]+: 03e00008 jr ra + *[0-9a-f]+: 24630004 addiu v1,v1,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 00800025 move zero,a0 + *[0-9a-f]+: 3c040001 lui a0,0x1 + *[0-9a-f]+: 24848030 addiu a0,a0,-32720 + *[0-9a-f]+: 00992021 addu a0,a0,t9 + *[0-9a-f]+: 88828018 lwl v0,-32744\(a0\) + *[0-9a-f]+: 98838018 lwr v1,-32744\(a0\) + *[0-9a-f]+: 24420004 addiu v0,v0,4 + *[0-9a-f]+: 03e00008 jr ra + *[0-9a-f]+: 24630004 addiu v1,v1,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375s-n32.gd b/ld/testsuite/ld-mips-elf/pr21375s-n32.gd new file mode 100644 index 00000000000..99182e4c736 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375s-n32.gd @@ -0,0 +1,11 @@ +Primary GOT: + Canonical gp value: 00008270 + + Reserved entries: + Address Access Initial Purpose + 00000280 -32752\(gp\) 00000000 Lazy resolver + 00000284 -32748\(gp\) 80000000 Module pointer \(GNU extension\) + + Global entries: + Address Access Initial Sym\.Val\. Type Ndx Name + 00000288 -32744\(gp\) 00000000 00000000 OBJECT UND obj diff --git a/ld/testsuite/ld-mips-elf/pr21375s-n32.sd b/ld/testsuite/ld-mips-elf/pr21375s-n32.sd new file mode 100644 index 00000000000..cc801d547b6 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375s-n32.sd @@ -0,0 +1,5 @@ +Symbol table '\.dynsym' contains 3 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 0000020. 3. FUNC GLOBAL DEFAULT 5 foo + 2: 00000000 0 OBJECT WEAK DEFAULT UND obj diff --git a/ld/testsuite/ld-mips-elf/pr21375s-n64-irix.sd b/ld/testsuite/ld-mips-elf/pr21375s-n64-irix.sd new file mode 100644 index 00000000000..a7481d8940f --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375s-n64-irix.sd @@ -0,0 +1,5 @@ +Symbol table '\.dynsym' contains 3 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 000000000000020. 3. FUNC GLOBAL DEFAULT PRC\[0xff01\] foo + 2: 0000000000000000 0 OBJECT WEAK DEFAULT UND obj diff --git a/ld/testsuite/ld-mips-elf/pr21375s-n64.dd b/ld/testsuite/ld-mips-elf/pr21375s-n64.dd new file mode 100644 index 00000000000..6b44a74571e --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375s-n64.dd @@ -0,0 +1,27 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 00800025 move zero,a0 + *[0-9a-f]+: 3c040001 lui a0,0x1 + *[0-9a-f]+: 24848070 addiu a0,a0,-32656 + *[0-9a-f]+: 0099202d daddu a0,a0,t9 + *[0-9a-f]+: dc828020 ld v0,-32736\(a0\) + *[0-9a-f]+: dc838020 ld v1,-32736\(a0\) + *[0-9a-f]+: 64420004 daddiu v0,v0,4 + *[0-9a-f]+: 03e00008 jr ra + *[0-9a-f]+: 64630004 daddiu v1,v1,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 00800025 move zero,a0 + *[0-9a-f]+: 3c040001 lui a0,0x1 + *[0-9a-f]+: 24848030 addiu a0,a0,-32720 + *[0-9a-f]+: 0099202d daddu a0,a0,t9 + *[0-9a-f]+: 68828020 ldl v0,-32736\(a0\) + *[0-9a-f]+: 6c838020 ldr v1,-32736\(a0\) + *[0-9a-f]+: 64420004 daddiu v0,v0,4 + *[0-9a-f]+: 03e00008 jr ra + *[0-9a-f]+: 64630004 daddiu v1,v1,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375s-n64.gd b/ld/testsuite/ld-mips-elf/pr21375s-n64.gd new file mode 100644 index 00000000000..6208b768aaa --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375s-n64.gd @@ -0,0 +1,11 @@ +Primary GOT: + Canonical gp value: 0000000000008270 + + Reserved entries: + Address Access Initial Purpose + 0000000000000280 -32752\(gp\) 0000000000000000 Lazy resolver + 0000000000000288 -32744\(gp\) 8000000000000000 Module pointer \(GNU extension\) + + Global entries: + Address Access Initial Sym\.Val\. Type Ndx Name + 0000000000000290 -32736\(gp\) 0000000000000000 0000000000000000 OBJECT UND obj diff --git a/ld/testsuite/ld-mips-elf/pr21375s-n64.sd b/ld/testsuite/ld-mips-elf/pr21375s-n64.sd new file mode 100644 index 00000000000..43c292167c1 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375s-n64.sd @@ -0,0 +1,5 @@ +Symbol table '\.dynsym' contains 3 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 000000000000020. 3. FUNC GLOBAL DEFAULT 5 foo + 2: 0000000000000000 0 OBJECT WEAK DEFAULT UND obj diff --git a/ld/testsuite/ld-mips-elf/pr21375s.dd b/ld/testsuite/ld-mips-elf/pr21375s.dd new file mode 100644 index 00000000000..056e6f4e2f3 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375s.dd @@ -0,0 +1,23 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c0001 lui gp,0x1 + *[0-9a-f]+: 279c8050 addiu gp,gp,-32688 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 8f998018 lw t9,-32744\(gp\) + *[0-9a-f]+: 8f84801c lw a0,-32740\(gp\) + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c0001 lui gp,0x1 + *[0-9a-f]+: 279c8020 addiu gp,gp,-32736 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 8b998018 lwl t9,-32744\(gp\) + *[0-9a-f]+: 9b84801c lwr a0,-32740\(gp\) + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375s.gd b/ld/testsuite/ld-mips-elf/pr21375s.gd new file mode 100644 index 00000000000..733fd04893b --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375s.gd @@ -0,0 +1,12 @@ +Primary GOT: + Canonical gp value: 00008250 + + Reserved entries: + Address Access Initial Purpose + 00000260 -32752\(gp\) 00000000 Lazy resolver + 00000264 -32748\(gp\) 80000000 Module pointer \(GNU extension\) + + Global entries: + Address Access Initial Sym\.Val\. Type Ndx Name + 00000268 -32744\(gp\) 0000000. 0000000. FUNC UND fun + 0000026c -32740\(gp\) 00000000 00000000 OBJECT UND obj diff --git a/ld/testsuite/ld-mips-elf/pr21375s.sd b/ld/testsuite/ld-mips-elf/pr21375s.sd new file mode 100644 index 00000000000..cb45b8d6dae --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375s.sd @@ -0,0 +1,6 @@ +Symbol table '\.dynsym' contains 4 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 0000020. 2. FUNC GLOBAL DEFAULT 5 foo + 2: 00000000 0 FUNC WEAK DEFAULT UND fun + 3: 00000000 0 OBJECT WEAK DEFAULT UND obj diff --git a/ld/testsuite/ld-mips-elf/pr21375sh-irix.sd b/ld/testsuite/ld-mips-elf/pr21375sh-irix.sd new file mode 100644 index 00000000000..efcce02afce --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sh-irix.sd @@ -0,0 +1,8 @@ +Symbol table '\.dynsym' contains 6 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000 0 SECTION GLOBAL PROTECTED ABS _procedure_table_size + 2: 00000000 0 SECTION GLOBAL PROTECTED PRC\[0xff02\] _procedure_string_table + 3: 0000020. 2. FUNC GLOBAL DEFAULT PRC\[0xff01\] foo + 4: 00000000 0 SECTION GLOBAL PROTECTED PRC\[0xff02\] _procedure_table + 5: 00000000 0 NOTYPE GLOBAL PROTECTED ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375sh-n32-irix.sd b/ld/testsuite/ld-mips-elf/pr21375sh-n32-irix.sd new file mode 100644 index 00000000000..9cddb6e979e --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sh-n32-irix.sd @@ -0,0 +1,5 @@ +Symbol table '\.dynsym' contains 3 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 0000020. 3. FUNC GLOBAL DEFAULT PRC\[0xff01\] foo + 2: 00000000 0 NOTYPE GLOBAL PROTECTED ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375sh-n32.dd b/ld/testsuite/ld-mips-elf/pr21375sh-n32.dd new file mode 100644 index 00000000000..ac7207b4e12 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sh-n32.dd @@ -0,0 +1,27 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 00800025 move zero,a0 + *[0-9a-f]+: 3c040001 lui a0,0x1 + *[0-9a-f]+: 24848070 addiu a0,a0,-32656 + *[0-9a-f]+: 00992021 addu a0,a0,t9 + *[0-9a-f]+: 24020000 li v0,0 + *[0-9a-f]+: 24030000 li v1,0 + *[0-9a-f]+: 24420004 addiu v0,v0,4 + *[0-9a-f]+: 03e00008 jr ra + *[0-9a-f]+: 24630004 addiu v1,v1,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 00800025 move zero,a0 + *[0-9a-f]+: 3c040001 lui a0,0x1 + *[0-9a-f]+: 24848030 addiu a0,a0,-32720 + *[0-9a-f]+: 00992021 addu a0,a0,t9 + *[0-9a-f]+: 8882801c lwl v0,-32740\(a0\) + *[0-9a-f]+: 9883801c lwr v1,-32740\(a0\) + *[0-9a-f]+: 24420004 addiu v0,v0,4 + *[0-9a-f]+: 03e00008 jr ra + *[0-9a-f]+: 24630004 addiu v1,v1,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375sh-n32.gd b/ld/testsuite/ld-mips-elf/pr21375sh-n32.gd new file mode 100644 index 00000000000..25abbed6e26 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sh-n32.gd @@ -0,0 +1,15 @@ +Primary GOT: + Canonical gp value: 00008270 + + Reserved entries: + Address Access Initial Purpose + 00000280 -32752\(gp\) 00000000 Lazy resolver + 00000284 -32748\(gp\) 80000000 Module pointer \(GNU extension\) + + Local entries: + Address Access Initial + 00000288 -32744\(gp\) 00000000 + + Global entries: + Address Access Initial Sym\.Val\. Type Ndx Name + 0000028c -32740\(gp\) 00000000 00000000 NOTYPE ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375sh-n32.sd b/ld/testsuite/ld-mips-elf/pr21375sh-n32.sd new file mode 100644 index 00000000000..42134656373 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sh-n32.sd @@ -0,0 +1,5 @@ +Symbol table '\.dynsym' contains 3 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 0000020. 3. FUNC GLOBAL DEFAULT 5 foo + 2: 00000000 0 NOTYPE GLOBAL PROTECTED ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375sh-n64-irix.sd b/ld/testsuite/ld-mips-elf/pr21375sh-n64-irix.sd new file mode 100644 index 00000000000..7eb77321b2c --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sh-n64-irix.sd @@ -0,0 +1,5 @@ +Symbol table '\.dynsym' contains 3 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 000000000000020. 3. FUNC GLOBAL DEFAULT PRC\[0xff01\] foo + 2: 0000000000000000 0 NOTYPE GLOBAL PROTECTED ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375sh-n64.dd b/ld/testsuite/ld-mips-elf/pr21375sh-n64.dd new file mode 100644 index 00000000000..fb76b5a5af8 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sh-n64.dd @@ -0,0 +1,27 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 00800025 move zero,a0 + *[0-9a-f]+: 3c040001 lui a0,0x1 + *[0-9a-f]+: 24848070 addiu a0,a0,-32656 + *[0-9a-f]+: 0099202d daddu a0,a0,t9 + *[0-9a-f]+: 24020000 li v0,0 + *[0-9a-f]+: 24030000 li v1,0 + *[0-9a-f]+: 64420004 daddiu v0,v0,4 + *[0-9a-f]+: 03e00008 jr ra + *[0-9a-f]+: 64630004 daddiu v1,v1,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 00800025 move zero,a0 + *[0-9a-f]+: 3c040001 lui a0,0x1 + *[0-9a-f]+: 24848030 addiu a0,a0,-32720 + *[0-9a-f]+: 0099202d daddu a0,a0,t9 + *[0-9a-f]+: 68828028 ldl v0,-32728\(a0\) + *[0-9a-f]+: 6c838028 ldr v1,-32728\(a0\) + *[0-9a-f]+: 64420004 daddiu v0,v0,4 + *[0-9a-f]+: 03e00008 jr ra + *[0-9a-f]+: 64630004 daddiu v1,v1,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375sh-n64.gd b/ld/testsuite/ld-mips-elf/pr21375sh-n64.gd new file mode 100644 index 00000000000..0287cc75665 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sh-n64.gd @@ -0,0 +1,15 @@ +Primary GOT: + Canonical gp value: 0000000000008270 + + Reserved entries: + Address Access Initial Purpose + 0000000000000280 -32752\(gp\) 0000000000000000 Lazy resolver + 0000000000000288 -32744\(gp\) 8000000000000000 Module pointer \(GNU extension\) + + Local entries: + Address Access Initial + 0000000000000290 -32736\(gp\) 0000000000000000 + + Global entries: + Address Access Initial Sym\.Val\. Type Ndx Name + 0000000000000298 -32728\(gp\) 0000000000000000 0000000000000000 NOTYPE ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375sh-n64.sd b/ld/testsuite/ld-mips-elf/pr21375sh-n64.sd new file mode 100644 index 00000000000..d3f670aa293 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sh-n64.sd @@ -0,0 +1,5 @@ +Symbol table '\.dynsym' contains 3 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 000000000000020. 3. FUNC GLOBAL DEFAULT 5 foo + 2: 0000000000000000 0 NOTYPE GLOBAL PROTECTED ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375sh.dd b/ld/testsuite/ld-mips-elf/pr21375sh.dd new file mode 100644 index 00000000000..0fedfe9bf6b --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sh.dd @@ -0,0 +1,23 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c0001 lui gp,0x1 + *[0-9a-f]+: 279c8050 addiu gp,gp,-32688 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 24190000 li t9,0 + *[0-9a-f]+: 24040000 li a0,0 + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c0001 lui gp,0x1 + *[0-9a-f]+: 279c8020 addiu gp,gp,-32736 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 8b998020 lwl t9,-32736\(gp\) + *[0-9a-f]+: 9b848020 lwr a0,-32736\(gp\) + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375sh.gd b/ld/testsuite/ld-mips-elf/pr21375sh.gd new file mode 100644 index 00000000000..e24217d6f05 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sh.gd @@ -0,0 +1,16 @@ +Primary GOT: + Canonical gp value: 00008250 + + Reserved entries: + Address Access Initial Purpose + 00000260 -32752\(gp\) 00000000 Lazy resolver + 00000264 -32748\(gp\) 80000000 Module pointer \(GNU extension\) + + Local entries: + Address Access Initial + 00000268 -32744\(gp\) 00000000 + 0000026c -32740\(gp\) 00000000 + + Global entries: + Address Access Initial Sym\.Val\. Type Ndx Name + 00000270 -32736\(gp\) 00000000 00000000 NOTYPE ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375sh.sd b/ld/testsuite/ld-mips-elf/pr21375sh.sd new file mode 100644 index 00000000000..6af824f367b --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sh.sd @@ -0,0 +1,5 @@ +Symbol table '\.dynsym' contains 3 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 0000020. 2. FUNC GLOBAL DEFAULT 5 foo + 2: 00000000 0 NOTYPE GLOBAL PROTECTED ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375shg-irix.sd b/ld/testsuite/ld-mips-elf/pr21375shg-irix.sd new file mode 100644 index 00000000000..43841549724 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375shg-irix.sd @@ -0,0 +1,7 @@ +Symbol table '\.dynsym' contains 5 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000 0 SECTION GLOBAL PROTECTED ABS _procedure_table_size + 2: 00000000 0 SECTION GLOBAL PROTECTED PRC\[0xff02\] _procedure_string_table + 3: 00000200 28 FUNC GLOBAL DEFAULT PRC\[0xff01\] foo + 4: 00000000 0 SECTION GLOBAL PROTECTED PRC\[0xff02\] _procedure_table diff --git a/ld/testsuite/ld-mips-elf/pr21375shg.dd b/ld/testsuite/ld-mips-elf/pr21375shg.dd new file mode 100644 index 00000000000..910a7cafd65 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375shg.dd @@ -0,0 +1,13 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c0001 lui gp,0x1 + *[0-9a-f]+: 279c8020 addiu gp,gp,-32736 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 24190000 li t9,0 + *[0-9a-f]+: 24040000 li a0,0 + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375shg.gd b/ld/testsuite/ld-mips-elf/pr21375shg.gd new file mode 100644 index 00000000000..2f516b8111c --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375shg.gd @@ -0,0 +1,12 @@ +Primary GOT: + Canonical gp value: 00008220 + + Reserved entries: + Address Access Initial Purpose + 00000230 -32752\(gp\) 00000000 Lazy resolver + 00000234 -32748\(gp\) 80000000 Module pointer \(GNU extension\) + + Local entries: + Address Access Initial + 00000238 -32744\(gp\) 00000000 + 0000023c -32740\(gp\) 00000000 diff --git a/ld/testsuite/ld-mips-elf/pr21375shg.sd b/ld/testsuite/ld-mips-elf/pr21375shg.sd new file mode 100644 index 00000000000..94f5ee51a42 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375shg.sd @@ -0,0 +1,4 @@ +Symbol table '\.dynsym' contains 2 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000200 28 FUNC GLOBAL DEFAULT 5 foo diff --git a/ld/testsuite/ld-mips-elf/pr21375shl-irix.sd b/ld/testsuite/ld-mips-elf/pr21375shl-irix.sd new file mode 100644 index 00000000000..d954c774f97 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375shl-irix.sd @@ -0,0 +1,5 @@ +Symbol table '\.dynsym' contains 3 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000200 28 FUNC GLOBAL DEFAULT PRC\[0xff01\] foo + 2: 00000000 0 NOTYPE GLOBAL PROTECTED ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375shl.gd b/ld/testsuite/ld-mips-elf/pr21375shl.gd new file mode 100644 index 00000000000..e24217d6f05 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375shl.gd @@ -0,0 +1,16 @@ +Primary GOT: + Canonical gp value: 00008250 + + Reserved entries: + Address Access Initial Purpose + 00000260 -32752\(gp\) 00000000 Lazy resolver + 00000264 -32748\(gp\) 80000000 Module pointer \(GNU extension\) + + Local entries: + Address Access Initial + 00000268 -32744\(gp\) 00000000 + 0000026c -32740\(gp\) 00000000 + + Global entries: + Address Access Initial Sym\.Val\. Type Ndx Name + 00000270 -32736\(gp\) 00000000 00000000 NOTYPE ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375shl.sd b/ld/testsuite/ld-mips-elf/pr21375shl.sd new file mode 100644 index 00000000000..c9f5935ef81 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375shl.sd @@ -0,0 +1,5 @@ +Symbol table '\.dynsym' contains 3 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000200 28 FUNC GLOBAL DEFAULT 5 foo + 2: 00000000 0 NOTYPE GLOBAL PROTECTED ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375shv-irix.sd b/ld/testsuite/ld-mips-elf/pr21375shv-irix.sd new file mode 100644 index 00000000000..42180815149 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375shv-irix.sd @@ -0,0 +1,6 @@ +Symbol table '\.dynsym' contains 4 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000200 28 FUNC GLOBAL DEFAULT PRC\[0xff01\] foo@@PR21375 + 2: 00000000 0 OBJECT GLOBAL DEFAULT ABS PR21375 + 3: 00000000 0 NOTYPE GLOBAL PROTECTED ABS __gnu_absolute_zero@@PR21375 diff --git a/ld/testsuite/ld-mips-elf/pr21375shv.gd b/ld/testsuite/ld-mips-elf/pr21375shv.gd new file mode 100644 index 00000000000..e24217d6f05 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375shv.gd @@ -0,0 +1,16 @@ +Primary GOT: + Canonical gp value: 00008250 + + Reserved entries: + Address Access Initial Purpose + 00000260 -32752\(gp\) 00000000 Lazy resolver + 00000264 -32748\(gp\) 80000000 Module pointer \(GNU extension\) + + Local entries: + Address Access Initial + 00000268 -32744\(gp\) 00000000 + 0000026c -32740\(gp\) 00000000 + + Global entries: + Address Access Initial Sym\.Val\. Type Ndx Name + 00000270 -32736\(gp\) 00000000 00000000 NOTYPE ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375shv.sd b/ld/testsuite/ld-mips-elf/pr21375shv.sd new file mode 100644 index 00000000000..20d244df4ca --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375shv.sd @@ -0,0 +1,6 @@ +Symbol table '\.dynsym' contains 4 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000200 28 FUNC GLOBAL DEFAULT 7 foo@@PR21375 + 2: 00000000 0 OBJECT GLOBAL DEFAULT ABS PR21375 + 3: 00000000 0 NOTYPE GLOBAL PROTECTED ABS __gnu_absolute_zero@@PR21375 diff --git a/ld/testsuite/ld-mips-elf/pr21375sm16.dd b/ld/testsuite/ld-mips-elf/pr21375sm16.dd new file mode 100644 index 00000000000..a79053d7a8f --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sm16.dd @@ -0,0 +1,28 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: f000 6a01 li v0,1 + *[0-9a-f]+: f050 0b0c la v1,ffff8250 <_gp\+0xffff0000> + *[0-9a-f]+: f400 3240 sll v0,16 + *[0-9a-f]+: e269 addu v0,v1 + *[0-9a-f]+: f010 9a9c lw a0,-32740\(v0\) + *[0-9a-f]+: f010 9a58 lw v0,-32744\(v0\) + *[0-9a-f]+: ea00 jr v0 + *[0-9a-f]+: 653a move t9,v0 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: f000 6a01 li v0,1 + *[0-9a-f]+: f010 0b1c la v1,ffff8250 <_gp\+0xffff0000> + *[0-9a-f]+: f400 3240 sll v0,16 + *[0-9a-f]+: e269 addu v0,v1 + *[0-9a-f]+: 6782 move a0,v0 + *[0-9a-f]+: f010 4c1c addiu a0,-32740 + *[0-9a-f]+: f010 4a18 addiu v0,-32744 + *[0-9a-f]+: 9a40 lw v0,0\(v0\) + *[0-9a-f]+: 9c80 lw a0,0\(a0\) + *[0-9a-f]+: ea00 jr v0 + *[0-9a-f]+: 653a move t9,v0 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375sm16h.dd b/ld/testsuite/ld-mips-elf/pr21375sm16h.dd new file mode 100644 index 00000000000..c3f61864a86 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sm16h.dd @@ -0,0 +1,28 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: f000 6a01 li v0,1 + *[0-9a-f]+: f050 0b0c la v1,ffff8250 <_gp\+0xffff0000> + *[0-9a-f]+: f400 3240 sll v0,16 + *[0-9a-f]+: e269 addu v0,v1 + *[0-9a-f]+: f000 6c00 li a0,0 + *[0-9a-f]+: f000 6a00 li v0,0 + *[0-9a-f]+: ea00 jr v0 + *[0-9a-f]+: 653a move t9,v0 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: f000 6a01 li v0,1 + *[0-9a-f]+: f010 0b1c la v1,ffff8250 <_gp\+0xffff0000> + *[0-9a-f]+: f400 3240 sll v0,16 + *[0-9a-f]+: e269 addu v0,v1 + *[0-9a-f]+: 6782 move a0,v0 + *[0-9a-f]+: f030 4c00 addiu a0,-32736 + *[0-9a-f]+: f030 4a00 addiu v0,-32736 + *[0-9a-f]+: 9a40 lw v0,0\(v0\) + *[0-9a-f]+: 9c80 lw a0,0\(a0\) + *[0-9a-f]+: ea00 jr v0 + *[0-9a-f]+: 653a move t9,v0 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375su-n32.dd b/ld/testsuite/ld-mips-elf/pr21375su-n32.dd new file mode 100644 index 00000000000..f8c8bb92bbc --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375su-n32.dd @@ -0,0 +1,29 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 0c04 move zero,a0 + *[0-9a-f]+: 41a4 0001 lui a0,0x1 + *[0-9a-f]+: 3084 806f addiu a0,a0,-32657 + *[0-9a-f]+: 0324 2150 addu a0,a0,t9 + *[0-9a-f]+: fc44 8018 lw v0,-32744\(a0\) + *[0-9a-f]+: fc64 8018 lw v1,-32744\(a0\) + *[0-9a-f]+: 3042 0004 addiu v0,v0,4 + *[0-9a-f]+: 459f jr ra + *[0-9a-f]+: 6db2 addiu v1,v1,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 0c04 move zero,a0 + *[0-9a-f]+: 41a4 0001 lui a0,0x1 + *[0-9a-f]+: 3084 802f addiu a0,a0,-32721 + *[0-9a-f]+: 0324 2150 addu a0,a0,t9 + *[0-9a-f]+: 3024 8018 addiu at,a0,-32744 + *[0-9a-f]+: 6041 0000 lwl v0,0\(at\) + *[0-9a-f]+: 3024 8018 addiu at,a0,-32744 + *[0-9a-f]+: 6061 1000 lwr v1,0\(at\) + *[0-9a-f]+: 3042 0004 addiu v0,v0,4 + *[0-9a-f]+: 459f jr ra + *[0-9a-f]+: 6db2 addiu v1,v1,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375su-n64.dd b/ld/testsuite/ld-mips-elf/pr21375su-n64.dd new file mode 100644 index 00000000000..70ead4345c5 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375su-n64.dd @@ -0,0 +1,29 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 0c04 move zero,a0 + *[0-9a-f]+: 41a4 0001 lui a0,0x1 + *[0-9a-f]+: 3084 806f addiu a0,a0,-32657 + *[0-9a-f]+: 5b24 2150 daddu a0,a0,t9 + *[0-9a-f]+: dc44 8020 ld v0,-32736\(a0\) + *[0-9a-f]+: dc64 8020 ld v1,-32736\(a0\) + *[0-9a-f]+: 5c42 0004 daddiu v0,v0,4 + *[0-9a-f]+: 459f jr ra + *[0-9a-f]+: 5c63 0004 daddiu v1,v1,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 0c04 move zero,a0 + *[0-9a-f]+: 41a4 0001 lui a0,0x1 + *[0-9a-f]+: 3084 802f addiu a0,a0,-32721 + *[0-9a-f]+: 5b24 2150 daddu a0,a0,t9 + *[0-9a-f]+: 5c24 8020 daddiu at,a0,-32736 + *[0-9a-f]+: 6041 4000 ldl v0,0\(at\) + *[0-9a-f]+: 5c24 8020 daddiu at,a0,-32736 + *[0-9a-f]+: 6061 5000 ldr v1,0\(at\) + *[0-9a-f]+: 5c42 0004 daddiu v0,v0,4 + *[0-9a-f]+: 459f jr ra + *[0-9a-f]+: 5c63 0004 daddiu v1,v1,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375su.dd b/ld/testsuite/ld-mips-elf/pr21375su.dd new file mode 100644 index 00000000000..a5cca6eddc4 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375su.dd @@ -0,0 +1,25 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 41bc 0001 lui gp,0x1 + *[0-9a-f]+: 339c 804f addiu gp,gp,-32689 + *[0-9a-f]+: 033c e150 addu gp,gp,t9 + *[0-9a-f]+: ff3c 8018 lw t9,-32744\(gp\) + *[0-9a-f]+: fc9c 801c lw a0,-32740\(gp\) + *[0-9a-f]+: 4599 jr t9 + *[0-9a-f]+: 6e42 addiu a0,a0,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 41bc 0001 lui gp,0x1 + *[0-9a-f]+: 339c 801f addiu gp,gp,-32737 + *[0-9a-f]+: 033c e150 addu gp,gp,t9 + *[0-9a-f]+: 303c 8018 addiu at,gp,-32744 + *[0-9a-f]+: 6321 0000 lwl t9,0\(at\) + *[0-9a-f]+: 303c 801c addiu at,gp,-32740 + *[0-9a-f]+: 6081 1000 lwr a0,0\(at\) + *[0-9a-f]+: 4599 jr t9 + *[0-9a-f]+: 6e42 addiu a0,a0,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375suh-n32.dd b/ld/testsuite/ld-mips-elf/pr21375suh-n32.dd new file mode 100644 index 00000000000..51d64fe3635 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375suh-n32.dd @@ -0,0 +1,29 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 0c04 move zero,a0 + *[0-9a-f]+: 41a4 0001 lui a0,0x1 + *[0-9a-f]+: 3084 806f addiu a0,a0,-32657 + *[0-9a-f]+: 0324 2150 addu a0,a0,t9 + *[0-9a-f]+: 3040 0000 li v0,0 + *[0-9a-f]+: 3060 0000 li v1,0 + *[0-9a-f]+: 3042 0004 addiu v0,v0,4 + *[0-9a-f]+: 459f jr ra + *[0-9a-f]+: 6db2 addiu v1,v1,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 0c04 move zero,a0 + *[0-9a-f]+: 41a4 0001 lui a0,0x1 + *[0-9a-f]+: 3084 802f addiu a0,a0,-32721 + *[0-9a-f]+: 0324 2150 addu a0,a0,t9 + *[0-9a-f]+: 3024 801c addiu at,a0,-32740 + *[0-9a-f]+: 6041 0000 lwl v0,0\(at\) + *[0-9a-f]+: 3024 801c addiu at,a0,-32740 + *[0-9a-f]+: 6061 1000 lwr v1,0\(at\) + *[0-9a-f]+: 3042 0004 addiu v0,v0,4 + *[0-9a-f]+: 459f jr ra + *[0-9a-f]+: 6db2 addiu v1,v1,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375suh-n64.dd b/ld/testsuite/ld-mips-elf/pr21375suh-n64.dd new file mode 100644 index 00000000000..8ef59dce9f5 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375suh-n64.dd @@ -0,0 +1,29 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 0c04 move zero,a0 + *[0-9a-f]+: 41a4 0001 lui a0,0x1 + *[0-9a-f]+: 3084 806f addiu a0,a0,-32657 + *[0-9a-f]+: 5b24 2150 daddu a0,a0,t9 + *[0-9a-f]+: 3040 0000 li v0,0 + *[0-9a-f]+: 3060 0000 li v1,0 + *[0-9a-f]+: 5c42 0004 daddiu v0,v0,4 + *[0-9a-f]+: 459f jr ra + *[0-9a-f]+: 5c63 0004 daddiu v1,v1,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 0c04 move zero,a0 + *[0-9a-f]+: 41a4 0001 lui a0,0x1 + *[0-9a-f]+: 3084 802f addiu a0,a0,-32721 + *[0-9a-f]+: 5b24 2150 daddu a0,a0,t9 + *[0-9a-f]+: 5c24 8028 daddiu at,a0,-32728 + *[0-9a-f]+: 6041 4000 ldl v0,0\(at\) + *[0-9a-f]+: 5c24 8028 daddiu at,a0,-32728 + *[0-9a-f]+: 6061 5000 ldr v1,0\(at\) + *[0-9a-f]+: 5c42 0004 daddiu v0,v0,4 + *[0-9a-f]+: 459f jr ra + *[0-9a-f]+: 5c63 0004 daddiu v1,v1,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375suh.dd b/ld/testsuite/ld-mips-elf/pr21375suh.dd new file mode 100644 index 00000000000..fd91e2db75a --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375suh.dd @@ -0,0 +1,25 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 41bc 0001 lui gp,0x1 + *[0-9a-f]+: 339c 804f addiu gp,gp,-32689 + *[0-9a-f]+: 033c e150 addu gp,gp,t9 + *[0-9a-f]+: 3320 0000 li t9,0 + *[0-9a-f]+: 3080 0000 li a0,0 + *[0-9a-f]+: 4599 jr t9 + *[0-9a-f]+: 6e42 addiu a0,a0,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 41bc 0001 lui gp,0x1 + *[0-9a-f]+: 339c 801f addiu gp,gp,-32737 + *[0-9a-f]+: 033c e150 addu gp,gp,t9 + *[0-9a-f]+: 303c 8020 addiu at,gp,-32736 + *[0-9a-f]+: 6321 0000 lwl t9,0\(at\) + *[0-9a-f]+: 303c 8020 addiu at,gp,-32736 + *[0-9a-f]+: 6081 1000 lwr a0,0\(at\) + *[0-9a-f]+: 4599 jr t9 + *[0-9a-f]+: 6e42 addiu a0,a0,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375sux.dd b/ld/testsuite/ld-mips-elf/pr21375sux.dd new file mode 100644 index 00000000000..35cbf55a662 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sux.dd @@ -0,0 +1,33 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 41bc 8000 lui gp,0x8000 + *[0-9a-f]+: 339c 808f addiu gp,gp,-32625 + *[0-9a-f]+: 033c e150 addu gp,gp,t9 + *[0-9a-f]+: 41a4 8000 lui a0,0x8000 + *[0-9a-f]+: 41b9 8000 lui t9,0x8000 + *[0-9a-f]+: 0384 2150 addu a0,a0,gp + *[0-9a-f]+: 0399 c950 addu t9,t9,gp + *[0-9a-f]+: ff39 7ff8 lw t9,32760\(t9\) + *[0-9a-f]+: fc84 7ffc lw a0,32764\(a0\) + *[0-9a-f]+: 4599 jr t9 + *[0-9a-f]+: 6e42 addiu a0,a0,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 41bc 8000 lui gp,0x8000 + *[0-9a-f]+: 339c 804f addiu gp,gp,-32689 + *[0-9a-f]+: 033c e150 addu gp,gp,t9 + *[0-9a-f]+: 41a4 8000 lui a0,0x8000 + *[0-9a-f]+: 41b9 8000 lui t9,0x8000 + *[0-9a-f]+: 0384 2150 addu a0,a0,gp + *[0-9a-f]+: 0399 c950 addu t9,t9,gp + *[0-9a-f]+: 3039 7ff8 addiu at,t9,32760 + *[0-9a-f]+: 6321 0000 lwl t9,0\(at\) + *[0-9a-f]+: 3024 7ffc addiu at,a0,32764 + *[0-9a-f]+: 6081 1000 lwr a0,0\(at\) + *[0-9a-f]+: 4599 jr t9 + *[0-9a-f]+: 6e42 addiu a0,a0,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375suxh.dd b/ld/testsuite/ld-mips-elf/pr21375suxh.dd new file mode 100644 index 00000000000..7ba303f7481 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375suxh.dd @@ -0,0 +1,33 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 41bc 8000 lui gp,0x8000 + *[0-9a-f]+: 339c 808f addiu gp,gp,-32625 + *[0-9a-f]+: 033c e150 addu gp,gp,t9 + *[0-9a-f]+: 41a4 8001 lui a0,0x8001 + *[0-9a-f]+: 41b9 8001 lui t9,0x8001 + *[0-9a-f]+: 0384 2150 addu a0,a0,gp + *[0-9a-f]+: 0399 c950 addu t9,t9,gp + *[0-9a-f]+: 3320 0000 li t9,0 + *[0-9a-f]+: 3080 0000 li a0,0 + *[0-9a-f]+: 4599 jr t9 + *[0-9a-f]+: 6e42 addiu a0,a0,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 41bc 8000 lui gp,0x8000 + *[0-9a-f]+: 339c 804f addiu gp,gp,-32689 + *[0-9a-f]+: 033c e150 addu gp,gp,t9 + *[0-9a-f]+: 41a4 8001 lui a0,0x8001 + *[0-9a-f]+: 41b9 8001 lui t9,0x8001 + *[0-9a-f]+: 0384 2150 addu a0,a0,gp + *[0-9a-f]+: 0399 c950 addu t9,t9,gp + *[0-9a-f]+: 3039 8000 addiu at,t9,-32768 + *[0-9a-f]+: 6321 0000 lwl t9,0\(at\) + *[0-9a-f]+: 3024 8000 addiu at,a0,-32768 + *[0-9a-f]+: 6081 1000 lwr a0,0\(at\) + *[0-9a-f]+: 4599 jr t9 + *[0-9a-f]+: 6e42 addiu a0,a0,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375sx-irix.sd b/ld/testsuite/ld-mips-elf/pr21375sx-irix.sd new file mode 100644 index 00000000000..8b7553d1233 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sx-irix.sd @@ -0,0 +1,9 @@ +Symbol table '\.dynsym' contains 7 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000 0 SECTION GLOBAL PROTECTED ABS _procedure_table_size + 2: 00000000 0 SECTION GLOBAL PROTECTED PRC\[0xff02\] _procedure_string_table + 3: 0000020. 4. FUNC GLOBAL DEFAULT PRC\[0xff01\] foo + 4: 00000000 0 SECTION GLOBAL PROTECTED PRC\[0xff02\] _procedure_table + 5: 00000000 0 FUNC WEAK DEFAULT UND fun + 6: 00000000 0 OBJECT WEAK DEFAULT UND obj diff --git a/ld/testsuite/ld-mips-elf/pr21375sx.dd b/ld/testsuite/ld-mips-elf/pr21375sx.dd new file mode 100644 index 00000000000..3d2036c6187 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sx.dd @@ -0,0 +1,31 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c8000 lui gp,0x8000 + *[0-9a-f]+: 279c8090 addiu gp,gp,-32624 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 3c048000 lui a0,0x8000 + *[0-9a-f]+: 3c198000 lui t9,0x8000 + *[0-9a-f]+: 009c2021 addu a0,a0,gp + *[0-9a-f]+: 033cc821 addu t9,t9,gp + *[0-9a-f]+: 8f397ff8 lw t9,32760\(t9\) + *[0-9a-f]+: 8c847ffc lw a0,32764\(a0\) + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c8000 lui gp,0x8000 + *[0-9a-f]+: 279c8050 addiu gp,gp,-32688 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 3c048000 lui a0,0x8000 + *[0-9a-f]+: 3c198000 lui t9,0x8000 + *[0-9a-f]+: 009c2021 addu a0,a0,gp + *[0-9a-f]+: 033cc821 addu t9,t9,gp + *[0-9a-f]+: 8b397ff8 lwl t9,32760\(t9\) + *[0-9a-f]+: 98847ffc lwr a0,32764\(a0\) + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375sx.gd b/ld/testsuite/ld-mips-elf/pr21375sx.gd new file mode 100644 index 00000000000..14b17be78f9 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sx.gd @@ -0,0 +1,12 @@ +Primary GOT: + Canonical gp value: 00008270 + + Reserved entries: + Address Access Initial Purpose + 00000280 -32752\(gp\) 00000000 Lazy resolver + 00000284 -32748\(gp\) 80000000 Module pointer \(GNU extension\) + + Global entries: + Address Access Initial Sym\.Val\. Type Ndx Name + 00000288 -32744\(gp\) 0000000. 0000000. FUNC UND fun + 0000028c -32740\(gp\) 00000000 00000000 OBJECT UND obj diff --git a/ld/testsuite/ld-mips-elf/pr21375sx.sd b/ld/testsuite/ld-mips-elf/pr21375sx.sd new file mode 100644 index 00000000000..52573bfbede --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sx.sd @@ -0,0 +1,6 @@ +Symbol table '\.dynsym' contains 4 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 0000020. 4. FUNC GLOBAL DEFAULT 5 foo + 2: 00000000 0 FUNC WEAK DEFAULT UND fun + 3: 00000000 0 OBJECT WEAK DEFAULT UND obj diff --git a/ld/testsuite/ld-mips-elf/pr21375sxh-irix.sd b/ld/testsuite/ld-mips-elf/pr21375sxh-irix.sd new file mode 100644 index 00000000000..a6d2df555ae --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sxh-irix.sd @@ -0,0 +1,8 @@ +Symbol table '\.dynsym' contains 6 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000 0 SECTION GLOBAL PROTECTED ABS _procedure_table_size + 2: 00000000 0 SECTION GLOBAL PROTECTED PRC\[0xff02\] _procedure_string_table + 3: 0000020. 4. FUNC GLOBAL DEFAULT PRC\[0xff01\] foo + 4: 00000000 0 SECTION GLOBAL PROTECTED PRC\[0xff02\] _procedure_table + 5: 00000000 0 NOTYPE GLOBAL PROTECTED ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375sxh.dd b/ld/testsuite/ld-mips-elf/pr21375sxh.dd new file mode 100644 index 00000000000..064189293f9 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sxh.dd @@ -0,0 +1,31 @@ +.*: +file format .*mips.* + +Disassembly of section \.text: + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c8000 lui gp,0x8000 + *[0-9a-f]+: 279c8090 addiu gp,gp,-32624 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 3c048001 lui a0,0x8001 + *[0-9a-f]+: 3c198001 lui t9,0x8001 + *[0-9a-f]+: 009c2021 addu a0,a0,gp + *[0-9a-f]+: 033cc821 addu t9,t9,gp + *[0-9a-f]+: 24190000 li t9,0 + *[0-9a-f]+: 24040000 li a0,0 + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. + +[0-9a-f]+ : + *[0-9a-f]+: 3c1c8000 lui gp,0x8000 + *[0-9a-f]+: 279c8050 addiu gp,gp,-32688 + *[0-9a-f]+: 0399e021 addu gp,gp,t9 + *[0-9a-f]+: 3c048001 lui a0,0x8001 + *[0-9a-f]+: 3c198001 lui t9,0x8001 + *[0-9a-f]+: 009c2021 addu a0,a0,gp + *[0-9a-f]+: 033cc821 addu t9,t9,gp + *[0-9a-f]+: 8b398000 lwl t9,-32768\(t9\) + *[0-9a-f]+: 98848000 lwr a0,-32768\(a0\) + *[0-9a-f]+: 03200008 jr t9 + *[0-9a-f]+: 24840004 addiu a0,a0,4 + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/pr21375sxh.gd b/ld/testsuite/ld-mips-elf/pr21375sxh.gd new file mode 100644 index 00000000000..a3deac790cc --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sxh.gd @@ -0,0 +1,16 @@ +Primary GOT: + Canonical gp value: 00008270 + + Reserved entries: + Address Access Initial Purpose + 00000280 -32752\(gp\) 00000000 Lazy resolver + 00000284 -32748\(gp\) 80000000 Module pointer \(GNU extension\) + + Local entries: + Address Access Initial + 00000288 -32744\(gp\) 00000000 + 0000028c -32740\(gp\) 00000000 + + Global entries: + Address Access Initial Sym\.Val\. Type Ndx Name + 00000290 -32736\(gp\) 00000000 00000000 NOTYPE ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375sxh.sd b/ld/testsuite/ld-mips-elf/pr21375sxh.sd new file mode 100644 index 00000000000..8ec224b2e11 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375sxh.sd @@ -0,0 +1,5 @@ +Symbol table '\.dynsym' contains 3 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 0000020. 4. FUNC GLOBAL DEFAULT 5 foo + 2: 00000000 0 NOTYPE GLOBAL PROTECTED ABS __gnu_absolute_zero diff --git a/ld/testsuite/ld-mips-elf/pr21375v.ver b/ld/testsuite/ld-mips-elf/pr21375v.ver new file mode 100644 index 00000000000..35d1a71b339 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pr21375v.ver @@ -0,0 +1 @@ +PR21375 { global: foo; local: *; };