* ld-mips-elf/tlsbin-o32.s, ld-mips-elf/mips-dyn.ld,
ld-mips-elf/tlslib-o32.got, ld-mips-elf/tlslib-o32.d, ld-mips-elf/tlslib-o32.s, ld-mips-elf/mips-lib.ld, ld-mips-elf/tlsbin-o32.got, ld-mips-elf/tlsdyn-o32.d, ld-mips-elf/tlsdyn-o32.got, ld-mips-elf/tlsbin-o32.d, ld-mips-elf/tlsdyn-o32.s, ld-mips-elf/tls-multi-got-1.got, ld-mips-elf/tls-multi-got-1-1.s, ld-mips-elf/tls-multi-got-1.d, ld-mips-elf/tls-multi-got-1.r, ld-mips-elf/tls-multi-got-1-2.s, ld-mips-elf/tlslib-o32-ver.got, ld-mips-elf/tlslib.ver, ld-mips-elf/tlslib-o32-hidden.got, ld-mips-elf/tlslib-hidden.ver, ld-mips-elf/tlsdyn-o32-1.d, ld-mips-elf/tlsdyn-o32-3.got, ld-mips-elf/tlsdyn-o32-2.d, ld-mips-elf/tlsdyn-o32-2.s, ld-mips-elf/tlsdyn-o32-3.d, ld-mips-elf/tlsdyn-o32-1.got, ld-mips-elf/tlsdyn-o32-2.got: New files. * ld-mips-elf/mips-elf.exp: Run the new tests.
This commit is contained in:
parent
128b3d8643
commit
f4e584bd00
29 changed files with 1641 additions and 1 deletions
|
@ -1,3 +1,21 @@
|
|||
2005-03-02 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* ld-mips-elf/tlsbin-o32.s, ld-mips-elf/mips-dyn.ld,
|
||||
ld-mips-elf/tlslib-o32.got, ld-mips-elf/tlslib-o32.d,
|
||||
ld-mips-elf/tlslib-o32.s, ld-mips-elf/mips-lib.ld,
|
||||
ld-mips-elf/tlsbin-o32.got, ld-mips-elf/tlsdyn-o32.d,
|
||||
ld-mips-elf/tlsdyn-o32.got, ld-mips-elf/tlsbin-o32.d,
|
||||
ld-mips-elf/tlsdyn-o32.s, ld-mips-elf/tls-multi-got-1.got,
|
||||
ld-mips-elf/tls-multi-got-1-1.s, ld-mips-elf/tls-multi-got-1.d,
|
||||
ld-mips-elf/tls-multi-got-1.r, ld-mips-elf/tls-multi-got-1-2.s,
|
||||
ld-mips-elf/tlslib-o32-ver.got, ld-mips-elf/tlslib.ver,
|
||||
ld-mips-elf/tlslib-o32-hidden.got, ld-mips-elf/tlslib-hidden.ver,
|
||||
ld-mips-elf/tlsdyn-o32-1.d, ld-mips-elf/tlsdyn-o32-3.got,
|
||||
ld-mips-elf/tlsdyn-o32-2.d, ld-mips-elf/tlsdyn-o32-2.s,
|
||||
ld-mips-elf/tlsdyn-o32-3.d, ld-mips-elf/tlsdyn-o32-1.got,
|
||||
ld-mips-elf/tlsdyn-o32-2.got: New files.
|
||||
* ld-mips-elf/mips-elf.exp: Run the new tests.
|
||||
|
||||
2005-03-01 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* ld-d10v/default_layout.d: Adjust expected offsets to allow for
|
||||
|
|
223
ld/testsuite/ld-mips-elf/mips-dyn.ld
Normal file
223
ld/testsuite/ld-mips-elf/mips-dyn.ld
Normal file
|
@ -0,0 +1,223 @@
|
|||
/* Script for -z combreloc: combine and sort reloc sections */
|
||||
OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips",
|
||||
"elf32-tradlittlemips")
|
||||
OUTPUT_ARCH(mips)
|
||||
ENTRY(__start)
|
||||
SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
|
||||
/* Do we need any of these for elf?
|
||||
__DYNAMIC = 0; */
|
||||
SECTIONS
|
||||
{
|
||||
/* Read-only sections, merged into text segment: */
|
||||
PROVIDE (__executable_start = 0x0400000); . = 0x0400000 + SIZEOF_HEADERS;
|
||||
.interp : { *(.interp) }
|
||||
.reginfo : { *(.reginfo) }
|
||||
.dynamic : { *(.dynamic) }
|
||||
.hash : { *(.hash) }
|
||||
.dynsym : { *(.dynsym) }
|
||||
.dynstr : { *(.dynstr) }
|
||||
.gnu.version : { *(.gnu.version) }
|
||||
.gnu.version_d : { *(.gnu.version_d) }
|
||||
.gnu.version_r : { *(.gnu.version_r) }
|
||||
.rel.dyn :
|
||||
{
|
||||
*(.rel.init)
|
||||
*(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
|
||||
*(.rel.fini)
|
||||
*(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
|
||||
*(.rel.data.rel.ro*)
|
||||
*(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
|
||||
*(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
|
||||
*(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
|
||||
*(.rel.ctors)
|
||||
*(.rel.dtors)
|
||||
*(.rel.got)
|
||||
*(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*)
|
||||
*(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*)
|
||||
*(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*)
|
||||
*(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*)
|
||||
*(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
|
||||
}
|
||||
.rela.dyn :
|
||||
{
|
||||
*(.rela.init)
|
||||
*(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
|
||||
*(.rela.fini)
|
||||
*(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
|
||||
*(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
|
||||
*(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
|
||||
*(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
|
||||
*(.rela.ctors)
|
||||
*(.rela.dtors)
|
||||
*(.rela.got)
|
||||
*(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
|
||||
*(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
|
||||
*(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
|
||||
*(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
|
||||
*(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
|
||||
}
|
||||
.rel.plt : { *(.rel.plt) }
|
||||
.rela.plt : { *(.rela.plt) }
|
||||
.init :
|
||||
{
|
||||
KEEP (*(.init))
|
||||
} =0
|
||||
.plt : { *(.plt) }
|
||||
.text :
|
||||
{
|
||||
_ftext = . ;
|
||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
||||
KEEP (*(.text.*personality*))
|
||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
||||
*(.gnu.warning)
|
||||
*(.mips16.fn.*) *(.mips16.call.*)
|
||||
} =0
|
||||
.fini :
|
||||
{
|
||||
KEEP (*(.fini))
|
||||
} =0
|
||||
PROVIDE (__etext = .);
|
||||
PROVIDE (_etext = .);
|
||||
PROVIDE (etext = .);
|
||||
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
|
||||
.rodata1 : { *(.rodata1) }
|
||||
.sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) }
|
||||
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
|
||||
.eh_frame_hdr : { *(.eh_frame_hdr) }
|
||||
.eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) }
|
||||
.gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }
|
||||
/* Adjust the address for the data segment. We want to adjust up to
|
||||
the same address within the page on the next page up. */
|
||||
. = 0x10000000;
|
||||
/* Exception handling */
|
||||
.eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) }
|
||||
.gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }
|
||||
/* Thread Local Storage sections */
|
||||
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
||||
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
||||
/* Ensure the __preinit_array_start label is properly aligned. We
|
||||
could instead move the label definition inside the section, but
|
||||
the linker would then create the section even if it turns out to
|
||||
be empty, which isn't pretty. */
|
||||
. = ALIGN(32 / 8);
|
||||
PROVIDE (__preinit_array_start = .);
|
||||
.preinit_array : { KEEP (*(.preinit_array)) }
|
||||
PROVIDE (__preinit_array_end = .);
|
||||
PROVIDE (__init_array_start = .);
|
||||
.init_array : { KEEP (*(.init_array)) }
|
||||
PROVIDE (__init_array_end = .);
|
||||
PROVIDE (__fini_array_start = .);
|
||||
.fini_array : { KEEP (*(.fini_array)) }
|
||||
PROVIDE (__fini_array_end = .);
|
||||
.ctors :
|
||||
{
|
||||
/* gcc uses crtbegin.o to find the start of
|
||||
the constructors, so we make sure it is
|
||||
first. Because this is a wildcard, it
|
||||
doesn't matter if the user does not
|
||||
actually link against crtbegin.o; the
|
||||
linker won't look for a file to match a
|
||||
wildcard. The wildcard also means that it
|
||||
doesn't matter which directory crtbegin.o
|
||||
is in. */
|
||||
KEEP (*crtbegin*.o(.ctors))
|
||||
/* We don't want to include the .ctor section from
|
||||
from the crtend.o file until after the sorted ctors.
|
||||
The .ctor section from the crtend file contains the
|
||||
end of ctors marker and it must be last */
|
||||
KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
|
||||
KEEP (*(SORT(.ctors.*)))
|
||||
KEEP (*(.ctors))
|
||||
}
|
||||
.dtors :
|
||||
{
|
||||
KEEP (*crtbegin*.o(.dtors))
|
||||
KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
|
||||
KEEP (*(SORT(.dtors.*)))
|
||||
KEEP (*(.dtors))
|
||||
}
|
||||
.jcr : { KEEP (*(.jcr)) }
|
||||
.data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }
|
||||
.data :
|
||||
{
|
||||
_fdata = . ;
|
||||
*(.data .data.* .gnu.linkonce.d.*)
|
||||
KEEP (*(.gnu.linkonce.d.*personality*))
|
||||
SORT(CONSTRUCTORS)
|
||||
}
|
||||
.data1 : { *(.data1) }
|
||||
_gp = ALIGN(16) + 0x7ff0;
|
||||
.got : { *(.got.plt) *(.got) }
|
||||
/* We want the small data sections together, so single-instruction offsets
|
||||
can access them all, and initialized data all before uninitialized, so
|
||||
we can shorten the on-disk segment size. */
|
||||
.sdata :
|
||||
{
|
||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
||||
}
|
||||
.lit8 : { *(.lit8) }
|
||||
.lit4 : { *(.lit4) }
|
||||
_edata = .;
|
||||
PROVIDE (edata = .);
|
||||
__bss_start = .;
|
||||
_fbss = .;
|
||||
.sbss :
|
||||
{
|
||||
PROVIDE (__sbss_start = .);
|
||||
PROVIDE (___sbss_start = .);
|
||||
*(.dynsbss)
|
||||
*(.sbss .sbss.* .gnu.linkonce.sb.*)
|
||||
*(.scommon)
|
||||
PROVIDE (__sbss_end = .);
|
||||
PROVIDE (___sbss_end = .);
|
||||
}
|
||||
.bss :
|
||||
{
|
||||
*(.dynbss)
|
||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
||||
*(COMMON)
|
||||
/* Align here to ensure that the .bss section occupies space up to
|
||||
_end. Align after .bss to ensure correct alignment even if the
|
||||
.bss section disappears because there are no input sections. */
|
||||
. = ALIGN(32 / 8);
|
||||
}
|
||||
. = ALIGN(32 / 8);
|
||||
_end = .;
|
||||
PROVIDE (end = .);
|
||||
/* Stabs debugging sections. */
|
||||
.stab 0 : { *(.stab) }
|
||||
.stabstr 0 : { *(.stabstr) }
|
||||
.stab.excl 0 : { *(.stab.excl) }
|
||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||
.stab.index 0 : { *(.stab.index) }
|
||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||
.comment 0 : { *(.comment) }
|
||||
/* DWARF debug sections.
|
||||
Symbols in the DWARF debugging sections are relative to the beginning
|
||||
of the section so we begin them at 0. */
|
||||
/* DWARF 1 */
|
||||
.debug 0 : { *(.debug) }
|
||||
.line 0 : { *(.line) }
|
||||
/* GNU DWARF 1 extensions */
|
||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
||||
/* DWARF 1.1 and DWARF 2 */
|
||||
.debug_aranges 0 : { *(.debug_aranges) }
|
||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
||||
/* DWARF 2 */
|
||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
||||
.debug_line 0 : { *(.debug_line) }
|
||||
.debug_frame 0 : { *(.debug_frame) }
|
||||
.debug_str 0 : { *(.debug_str) }
|
||||
.debug_loc 0 : { *(.debug_loc) }
|
||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
||||
/* SGI/MIPS DWARF 2 extensions */
|
||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
||||
.debug_typenames 0 : { *(.debug_typenames) }
|
||||
.debug_varnames 0 : { *(.debug_varnames) }
|
||||
.gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
|
||||
.gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
|
||||
/DISCARD/ : { *(.note.GNU-stack) }
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
# Expect script for MIPS ELF linker tests
|
||||
# Copyright 2002, 2003 Free Software Foundation, Inc.
|
||||
# Copyright 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -99,3 +99,67 @@ run_dump_test "mips16-hilo"
|
|||
if {$has_newabi} {
|
||||
run_dump_test "mips16-hilo-n32"
|
||||
}
|
||||
|
||||
# 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"}
|
||||
}
|
||||
|
||||
if {[istarget mips*-*-linux*]} {
|
||||
run_ld_link_tests $mips_tls_tests
|
||||
}
|
||||
|
||||
|
|
218
ld/testsuite/ld-mips-elf/mips-lib.ld
Normal file
218
ld/testsuite/ld-mips-elf/mips-lib.ld
Normal file
|
@ -0,0 +1,218 @@
|
|||
/* Script for --shared -z combreloc: shared library, combine & sort relocs */
|
||||
OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips",
|
||||
"elf32-tradlittlemips")
|
||||
OUTPUT_ARCH(mips)
|
||||
ENTRY(__start)
|
||||
SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
|
||||
/* Do we need any of these for elf?
|
||||
__DYNAMIC = 0; */
|
||||
SECTIONS
|
||||
{
|
||||
/* Read-only sections, merged into text segment: */
|
||||
. = 0 + SIZEOF_HEADERS;
|
||||
.reginfo : { *(.reginfo) }
|
||||
.dynamic : { *(.dynamic) }
|
||||
.hash : { *(.hash) }
|
||||
.dynsym : { *(.dynsym) }
|
||||
.dynstr : { *(.dynstr) }
|
||||
.gnu.version : { *(.gnu.version) }
|
||||
.gnu.version_d : { *(.gnu.version_d) }
|
||||
.gnu.version_r : { *(.gnu.version_r) }
|
||||
.rel.dyn :
|
||||
{
|
||||
*(.rel.init)
|
||||
*(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
|
||||
*(.rel.fini)
|
||||
*(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
|
||||
*(.rel.data.rel.ro*)
|
||||
*(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
|
||||
*(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
|
||||
*(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
|
||||
*(.rel.ctors)
|
||||
*(.rel.dtors)
|
||||
*(.rel.got)
|
||||
*(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*)
|
||||
*(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*)
|
||||
*(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*)
|
||||
*(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*)
|
||||
*(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
|
||||
}
|
||||
.rela.dyn :
|
||||
{
|
||||
*(.rela.init)
|
||||
*(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
|
||||
*(.rela.fini)
|
||||
*(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
|
||||
*(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
|
||||
*(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
|
||||
*(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
|
||||
*(.rela.ctors)
|
||||
*(.rela.dtors)
|
||||
*(.rela.got)
|
||||
*(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
|
||||
*(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
|
||||
*(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
|
||||
*(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
|
||||
*(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
|
||||
}
|
||||
.rel.plt : { *(.rel.plt) }
|
||||
.rela.plt : { *(.rela.plt) }
|
||||
.init :
|
||||
{
|
||||
KEEP (*(.init))
|
||||
} =0
|
||||
.plt : { *(.plt) }
|
||||
.text :
|
||||
{
|
||||
_ftext = . ;
|
||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
||||
KEEP (*(.text.*personality*))
|
||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
||||
*(.gnu.warning)
|
||||
*(.mips16.fn.*) *(.mips16.call.*)
|
||||
} =0
|
||||
.fini :
|
||||
{
|
||||
KEEP (*(.fini))
|
||||
} =0
|
||||
PROVIDE (__etext = .);
|
||||
PROVIDE (_etext = .);
|
||||
PROVIDE (etext = .);
|
||||
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
|
||||
.rodata1 : { *(.rodata1) }
|
||||
.eh_frame_hdr : { *(.eh_frame_hdr) }
|
||||
.eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) }
|
||||
.gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }
|
||||
/* Adjust the address for the data segment. We want to adjust up to
|
||||
the same address within the page on the next page up. */
|
||||
. = ALIGN (0x40000) - ((0x40000 - .) & (0x40000 - 1)); . = DATA_SEGMENT_ALIGN (0x40000, 0x1000);
|
||||
/* Exception handling */
|
||||
.eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) }
|
||||
.gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }
|
||||
/* Thread Local Storage sections */
|
||||
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
||||
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
||||
/* Ensure the __preinit_array_start label is properly aligned. We
|
||||
could instead move the label definition inside the section, but
|
||||
the linker would then create the section even if it turns out to
|
||||
be empty, which isn't pretty. */
|
||||
. = ALIGN(32 / 8);
|
||||
.preinit_array : { KEEP (*(.preinit_array)) }
|
||||
.init_array : { KEEP (*(.init_array)) }
|
||||
.fini_array : { KEEP (*(.fini_array)) }
|
||||
.ctors :
|
||||
{
|
||||
/* gcc uses crtbegin.o to find the start of
|
||||
the constructors, so we make sure it is
|
||||
first. Because this is a wildcard, it
|
||||
doesn't matter if the user does not
|
||||
actually link against crtbegin.o; the
|
||||
linker won't look for a file to match a
|
||||
wildcard. The wildcard also means that it
|
||||
doesn't matter which directory crtbegin.o
|
||||
is in. */
|
||||
KEEP (*crtbegin*.o(.ctors))
|
||||
/* We don't want to include the .ctor section from
|
||||
from the crtend.o file until after the sorted ctors.
|
||||
The .ctor section from the crtend file contains the
|
||||
end of ctors marker and it must be last */
|
||||
KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
|
||||
KEEP (*(SORT(.ctors.*)))
|
||||
KEEP (*(.ctors))
|
||||
}
|
||||
.dtors :
|
||||
{
|
||||
KEEP (*crtbegin*.o(.dtors))
|
||||
KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
|
||||
KEEP (*(SORT(.dtors.*)))
|
||||
KEEP (*(.dtors))
|
||||
}
|
||||
.jcr : { KEEP (*(.jcr)) }
|
||||
.data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }
|
||||
. = DATA_SEGMENT_RELRO_END (0, .);
|
||||
.data :
|
||||
{
|
||||
_fdata = . ;
|
||||
*(.data .data.* .gnu.linkonce.d.*)
|
||||
KEEP (*(.gnu.linkonce.d.*personality*))
|
||||
SORT(CONSTRUCTORS)
|
||||
}
|
||||
.data1 : { *(.data1) }
|
||||
_gp = ALIGN(16) + 0x7ff0;
|
||||
.got : { *(.got.plt) *(.got) }
|
||||
.sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) }
|
||||
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
|
||||
/* We want the small data sections together, so single-instruction offsets
|
||||
can access them all, and initialized data all before uninitialized, so
|
||||
we can shorten the on-disk segment size. */
|
||||
.sdata :
|
||||
{
|
||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
||||
}
|
||||
.lit8 : { *(.lit8) }
|
||||
.lit4 : { *(.lit4) }
|
||||
_edata = .;
|
||||
PROVIDE (edata = .);
|
||||
__bss_start = .;
|
||||
_fbss = .;
|
||||
.sbss :
|
||||
{
|
||||
PROVIDE (__sbss_start = .);
|
||||
PROVIDE (___sbss_start = .);
|
||||
*(.dynsbss)
|
||||
*(.sbss .sbss.* .gnu.linkonce.sb.*)
|
||||
*(.scommon)
|
||||
PROVIDE (__sbss_end = .);
|
||||
PROVIDE (___sbss_end = .);
|
||||
}
|
||||
.bss :
|
||||
{
|
||||
*(.dynbss)
|
||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
||||
*(COMMON)
|
||||
/* Align here to ensure that the .bss section occupies space up to
|
||||
_end. Align after .bss to ensure correct alignment even if the
|
||||
.bss section disappears because there are no input sections. */
|
||||
. = ALIGN(32 / 8);
|
||||
}
|
||||
. = ALIGN(32 / 8);
|
||||
_end = .;
|
||||
PROVIDE (end = .);
|
||||
. = DATA_SEGMENT_END (.);
|
||||
/* Stabs debugging sections. */
|
||||
.stab 0 : { *(.stab) }
|
||||
.stabstr 0 : { *(.stabstr) }
|
||||
.stab.excl 0 : { *(.stab.excl) }
|
||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||
.stab.index 0 : { *(.stab.index) }
|
||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||
.comment 0 : { *(.comment) }
|
||||
/* DWARF debug sections.
|
||||
Symbols in the DWARF debugging sections are relative to the beginning
|
||||
of the section so we begin them at 0. */
|
||||
/* DWARF 1 */
|
||||
.debug 0 : { *(.debug) }
|
||||
.line 0 : { *(.line) }
|
||||
/* GNU DWARF 1 extensions */
|
||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
||||
/* DWARF 1.1 and DWARF 2 */
|
||||
.debug_aranges 0 : { *(.debug_aranges) }
|
||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
||||
/* DWARF 2 */
|
||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
||||
.debug_line 0 : { *(.debug_line) }
|
||||
.debug_frame 0 : { *(.debug_frame) }
|
||||
.debug_str 0 : { *(.debug_str) }
|
||||
.debug_loc 0 : { *(.debug_loc) }
|
||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
||||
/* SGI/MIPS DWARF 2 extensions */
|
||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
||||
.debug_typenames 0 : { *(.debug_typenames) }
|
||||
.debug_varnames 0 : { *(.debug_varnames) }
|
||||
.gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
|
||||
.gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
|
||||
/DISCARD/ : { *(.note.GNU-stack) }
|
||||
}
|
39
ld/testsuite/ld-mips-elf/tls-multi-got-1-1.s
Normal file
39
ld/testsuite/ld-mips-elf/tls-multi-got-1-1.s
Normal file
|
@ -0,0 +1,39 @@
|
|||
.macro one_sym count
|
||||
.globl sym_1_\count
|
||||
sym_1_\count:
|
||||
la $2, sym_1_\count
|
||||
.endm
|
||||
|
||||
.irp thou,0,1,2,3,4,5,6,7,8,9
|
||||
.irp hund,0,1,2,3,4,5,6,7,8,9
|
||||
.irp tens,0,1,2,3,4,5,6,7,8,9
|
||||
.irp ones,0,1,2,3,4,5,6,7,8,9
|
||||
one_sym \thou\hund\tens\ones
|
||||
.endr
|
||||
.endr
|
||||
.endr
|
||||
.endr
|
||||
|
||||
tls_bits_1:
|
||||
addiu $4,$28,%tlsgd(tlsvar_gd)
|
||||
addiu $4,$28,%tlsldm(tlsvar_ld)
|
||||
addiu $4,$2,%gottprel(tlsvar_ie)
|
||||
|
||||
.section .tbss,"awT",@nobits
|
||||
.align 2
|
||||
.global tlsvar_gd
|
||||
.type tlsvar_gd,@object
|
||||
.size tlsvar_gd,4
|
||||
tlsvar_gd:
|
||||
.space 4
|
||||
.global tlsvar_ie
|
||||
.type tlsvar_ie,@object
|
||||
.size tlsvar_ie,4
|
||||
tlsvar_ie:
|
||||
.space 4
|
||||
.global tlsvar_ld
|
||||
.hidden tlsvar_ld
|
||||
.type tlsvar_ld,@object
|
||||
.size tlsvar_ld,4
|
||||
tlsvar_ld:
|
||||
.word 1
|
20
ld/testsuite/ld-mips-elf/tls-multi-got-1-2.s
Normal file
20
ld/testsuite/ld-mips-elf/tls-multi-got-1-2.s
Normal file
|
@ -0,0 +1,20 @@
|
|||
.macro one_sym count
|
||||
.globl sym_2_\count
|
||||
sym_2_\count:
|
||||
la $2, sym_2_\count
|
||||
.endm
|
||||
|
||||
.irp thou,0,1,2,3,4,5,6,7,8,9
|
||||
.irp hund,0,1,2,3,4,5,6,7,8,9
|
||||
.irp tens,0,1,2,3,4,5,6,7,8,9
|
||||
.irp ones,0,1,2,3,4,5,6,7,8,9
|
||||
one_sym \thou\hund\tens\ones
|
||||
.endr
|
||||
.endr
|
||||
.endr
|
||||
.endr
|
||||
|
||||
tls_bits_2:
|
||||
addiu $4,$28,%tlsgd(tlsvar_gd)
|
||||
addiu $4,$28,%tlsldm(tlsvar_ld)
|
||||
addiu $4,$2,%gottprel(tlsvar_ie)
|
20
ld/testsuite/ld-mips-elf/tls-multi-got-1.d
Normal file
20
ld/testsuite/ld-mips-elf/tls-multi-got-1.d
Normal file
|
@ -0,0 +1,20 @@
|
|||
|
||||
.*: file format elf32-tradbigmips
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
#...
|
||||
[0-9a-f]+ <tls_bits_1>:
|
||||
[0-9a-f]+: 27841c90 addiu a0,gp,7312
|
||||
[0-9a-f]+: 27841c84 addiu a0,gp,7300
|
||||
[0-9a-f]+: 24441c8c addiu a0,v0,7308
|
||||
[0-9a-f]+: 00000000 nop
|
||||
|
||||
[0-9a-f]+ <sym_2_0000>:
|
||||
#...
|
||||
[0-9a-f]+ <tls_bits_2>:
|
||||
[0-9a-f]+: 27841c90 addiu a0,gp,7312
|
||||
[0-9a-f]+: 27841c84 addiu a0,gp,7300
|
||||
[0-9a-f]+: 24441c8c addiu a0,v0,7308
|
||||
[0-9a-f]+: 00000000 nop
|
||||
#pass
|
58
ld/testsuite/ld-mips-elf/tls-multi-got-1.got
Normal file
58
ld/testsuite/ld-mips-elf/tls-multi-got-1.got
Normal file
|
@ -0,0 +1,58 @@
|
|||
|
||||
.*: file format elf32-tradbigmips
|
||||
|
||||
DYNAMIC RELOCATION RECORDS
|
||||
OFFSET TYPE VALUE
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00149630 R_MIPS_TLS_DTPMOD32 \*ABS\*
|
||||
0013f9a8 R_MIPS_TLS_DTPMOD32 \*ABS\*
|
||||
0014963c R_MIPS_TLS_DTPMOD32 tlsvar_gd
|
||||
00149640 R_MIPS_TLS_DTPREL32 tlsvar_gd
|
||||
0013f9b4 R_MIPS_TLS_DTPMOD32 tlsvar_gd
|
||||
0013f9b8 R_MIPS_TLS_DTPREL32 tlsvar_gd
|
||||
00149638 R_MIPS_TLS_TPREL32 tlsvar_ie
|
||||
0013f9b0 R_MIPS_TLS_TPREL32 tlsvar_ie
|
||||
0013602c R_MIPS_REL32 sym_2_8355
|
||||
#...
|
||||
00142d4c R_MIPS_REL32 sym_1_0945
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
|
||||
|
||||
Contents of section .got:
|
||||
122480 00000000 80000000 00000000 00000000 ................
|
||||
122490 00000000 00000000 00000000 00000000 ................
|
||||
1224a0 00000000 00000000 00000000 00000000 ................
|
||||
1224b0 00000000 000e0aac 000d35f4 000d35e4 ..........5...5.
|
||||
#...
|
||||
13f990 00000000 00000000 00000000 00000000 ................
|
||||
13f9a0 00000000 00000000 00000000 00000000 ................
|
||||
13f9b0 00000000 00000000 00000000 00000000 ................
|
||||
13f9c0 80000000 00000000 00000000 00000000 ................
|
||||
#...
|
||||
149600 00000000 00000000 00000000 00000000 ................
|
||||
149610 00000000 00000000 00000000 00000000 ................
|
||||
149620 00000000 00000000 00000000 00000000 ................
|
||||
149630 00000000 00000000 00000000 00000000 ................
|
||||
149640 00000000 ....
|
||||
#pass
|
61
ld/testsuite/ld-mips-elf/tls-multi-got-1.r
Normal file
61
ld/testsuite/ld-mips-elf/tls-multi-got-1.r
Normal file
|
@ -0,0 +1,61 @@
|
|||
|
||||
Dynamic section at offset 0xec contains 19 entries:
|
||||
Tag Type Name/Value
|
||||
0x00000004 \(HASH\) 0x1ac
|
||||
0x00000005 \(STRTAB\) 0x71e08
|
||||
0x00000006 \(SYMTAB\) 0x23ae8
|
||||
0x0000000a \(STRSZ\) 220100 \(bytes\)
|
||||
0x0000000b \(SYMENT\) 16 \(bytes\)
|
||||
0x00000015 \(DEBUG\) 0x0
|
||||
0x00000003 \(PLTGOT\) 0x122480
|
||||
0x00000011 \(REL\) 0xa79cc
|
||||
0x00000012 \(RELSZ\) 160072 \(bytes\)
|
||||
0x00000013 \(RELENT\) 8 \(bytes\)
|
||||
0x70000001 \(MIPS_RLD_VERSION\) 1
|
||||
0x70000005 \(MIPS_FLAGS\) NOTPOT
|
||||
0x70000006 \(MIPS_BASE_ADDRESS\) 0
|
||||
0x7000000a \(MIPS_LOCAL_GOTNO\) 13
|
||||
0x70000011 \(MIPS_SYMTABNO\) 20018
|
||||
0x70000012 \(MIPS_UNREFEXTNO\) 15
|
||||
0x70000013 \(MIPS_GOTSYM\) 0x12
|
||||
0x0000001e \(FLAGS\) STATIC_TLS
|
||||
0x00000000 \(NULL\) 0x0
|
||||
|
||||
Relocation section '\.rel\.dyn' at offset 0x[0-9a-f]+ contains 20031 entries:
|
||||
Offset Info Type Sym.Value Sym. Name
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00149630 00000026 R_MIPS_TLS_DTPMOD
|
||||
0013f9a8 00000026 R_MIPS_TLS_DTPMOD
|
||||
0014963c 00000a26 R_MIPS_TLS_DTPMOD 00000000 tlsvar_gd
|
||||
00149640 00000a27 R_MIPS_TLS_DTPREL 00000000 tlsvar_gd
|
||||
0013f9b4 00000a26 R_MIPS_TLS_DTPMOD 00000000 tlsvar_gd
|
||||
0013f9b8 00000a27 R_MIPS_TLS_DTPREL 00000000 tlsvar_gd
|
||||
00149638 0000102f R_MIPS_TLS_TPREL3 00000004 tlsvar_ie
|
||||
0013f9b0 0000102f R_MIPS_TLS_TPREL3 00000004 tlsvar_ie
|
||||
0013602c 00001203 R_MIPS_REL32 000e0aac sym_2_8355
|
||||
0014250c 00001303 R_MIPS_REL32 000d35f4 sym_1_4745
|
||||
#...
|
||||
00136a10 004e3003 R_MIPS_REL32 000da990 sym_2_2140
|
||||
00142d4c 004e3103 R_MIPS_REL32 000cfa94 sym_1_0945
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
||||
00000000 00000000 R_MIPS_NONE
|
43
ld/testsuite/ld-mips-elf/tlsbin-o32.d
Normal file
43
ld/testsuite/ld-mips-elf/tlsbin-o32.d
Normal file
|
@ -0,0 +1,43 @@
|
|||
.*: file format elf32-tradbigmips
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
004000d0 <__start>:
|
||||
4000d0: 3c1c0fc0 lui gp,0xfc0
|
||||
4000d4: 279c7f30 addiu gp,gp,32560
|
||||
4000d8: 0399e021 addu gp,gp,t9
|
||||
4000dc: 27bdfff0 addiu sp,sp,-16
|
||||
4000e0: afbe0008 sw s8,8\(sp\)
|
||||
4000e4: 03a0f021 move s8,sp
|
||||
4000e8: afbc0000 sw gp,0\(sp\)
|
||||
4000ec: 8f99802c lw t9,-32724\(gp\)
|
||||
4000f0: 2784803c addiu a0,gp,-32708
|
||||
4000f4: 0320f809 jalr t9
|
||||
4000f8: 00000000 nop
|
||||
4000fc: 8fdc0000 lw gp,0\(s8\)
|
||||
400100: 00000000 nop
|
||||
400104: 8f99802c lw t9,-32724\(gp\)
|
||||
400108: 27848034 addiu a0,gp,-32716
|
||||
40010c: 0320f809 jalr t9
|
||||
400110: 00000000 nop
|
||||
400114: 8fdc0000 lw gp,0\(s8\)
|
||||
400118: 00401021 move v0,v0
|
||||
40011c: 3c030000 lui v1,0x0
|
||||
400120: 24638000 addiu v1,v1,-32768
|
||||
400124: 00621821 addu v1,v1,v0
|
||||
400128: 7c02283b rdhwr v0,\$5
|
||||
40012c: 8f838030 lw v1,-32720\(gp\)
|
||||
400130: 00000000 nop
|
||||
400134: 00621821 addu v1,v1,v0
|
||||
400138: 7c02283b rdhwr v0,\$5
|
||||
40013c: 3c030000 lui v1,0x0
|
||||
400140: 24639004 addiu v1,v1,-28668
|
||||
400144: 00621821 addu v1,v1,v0
|
||||
400148: 03c0e821 move sp,s8
|
||||
40014c: 8fbe0008 lw s8,8\(sp\)
|
||||
400150: 03e00008 jr ra
|
||||
400154: 27bd0010 addiu sp,sp,16
|
||||
|
||||
00400158 <__tls_get_addr>:
|
||||
400158: 03e00008 jr ra
|
||||
40015c: 00000000 nop
|
8
ld/testsuite/ld-mips-elf/tlsbin-o32.got
Normal file
8
ld/testsuite/ld-mips-elf/tlsbin-o32.got
Normal file
|
@ -0,0 +1,8 @@
|
|||
|
||||
.*: file format elf32-tradbigmips
|
||||
|
||||
Contents of section .got:
|
||||
10000010 00000000 80000000 00000000 00000000 ................
|
||||
10000020 00000000 00000000 00000000 00400158 .............@.X
|
||||
10000030 ffff900c 00000001 00000000 00000001 ................
|
||||
10000040 ffff8008 ....
|
89
ld/testsuite/ld-mips-elf/tlsbin-o32.s
Normal file
89
ld/testsuite/ld-mips-elf/tlsbin-o32.s
Normal file
|
@ -0,0 +1,89 @@
|
|||
.file 1 "tlsbin-o32.s"
|
||||
.abicalls
|
||||
.text
|
||||
.align 2
|
||||
.globl __start
|
||||
.ent __start
|
||||
.type __start,@function
|
||||
__start:
|
||||
.frame $fp,16,$31
|
||||
.mask 0x40000000,-8
|
||||
.fmask 0x00000000,0
|
||||
.set noreorder
|
||||
.cpload $25
|
||||
.set reorder
|
||||
addiu $sp,$sp,-16
|
||||
sw $fp,8($sp)
|
||||
move $fp,$sp
|
||||
.cprestore 0
|
||||
|
||||
# General Dynamic
|
||||
lw $25,%call16(__tls_get_addr)($28)
|
||||
addiu $4,$28,%tlsgd(tlsvar_gd)
|
||||
jal $25
|
||||
|
||||
# Local Dynamic
|
||||
lw $25,%call16(__tls_get_addr)($28)
|
||||
addiu $4,$28,%tlsldm(tlsvar_ld)
|
||||
jal $25
|
||||
|
||||
move $2,$2 # Arbitrary instructions
|
||||
|
||||
lui $3,%dtprel_hi(tlsvar_ld)
|
||||
addiu $3,$3,%dtprel_lo(tlsvar_ld)
|
||||
addu $3,$3,$2
|
||||
|
||||
# Initial Exec
|
||||
.set push
|
||||
.set mips32r2
|
||||
rdhwr $2, $5
|
||||
.set pop
|
||||
lw $3,%gottprel(tlsvar_ie)($28)
|
||||
addu $3,$3,$2
|
||||
|
||||
# Local Exec
|
||||
.set push
|
||||
.set mips32r2
|
||||
rdhwr $2, $5
|
||||
.set pop
|
||||
lui $3,%tprel_hi(tlsvar_le)
|
||||
addiu $3,$3,%tprel_lo(tlsvar_le)
|
||||
addu $3,$3,$2
|
||||
|
||||
move $sp,$fp
|
||||
lw $fp,8($sp)
|
||||
addiu $sp,$sp,16
|
||||
j $31
|
||||
.end __start
|
||||
|
||||
.globl __tls_get_addr
|
||||
__tls_get_addr:
|
||||
j $31
|
||||
|
||||
.section .tbss,"awT",@nobits
|
||||
.align 2
|
||||
.global tlsvar_gd
|
||||
.type tlsvar_gd,@object
|
||||
.size tlsvar_gd,4
|
||||
tlsvar_gd:
|
||||
.space 4
|
||||
.global tlsvar_ie
|
||||
.type tlsvar_ie,@object
|
||||
.size tlsvar_ie,4
|
||||
tlsvar_ie:
|
||||
.space 4
|
||||
|
||||
.section .tdata,"awT"
|
||||
.align 2
|
||||
.global tlsvar_ld
|
||||
.hidden tlsvar_ld
|
||||
.type tlsvar_ld,@object
|
||||
.size tlsvar_ld,4
|
||||
tlsvar_ld:
|
||||
.word 1
|
||||
.global tlsvar_le
|
||||
.hidden tlsvar_le
|
||||
.type tlsvar_le,@object
|
||||
.size tlsvar_le,4
|
||||
tlsvar_le:
|
||||
.word 1
|
104
ld/testsuite/ld-mips-elf/tlsdyn-o32-1.d
Normal file
104
ld/testsuite/ld-mips-elf/tlsdyn-o32-1.d
Normal file
|
@ -0,0 +1,104 @@
|
|||
|
||||
.*: file format elf32-tradbigmips
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
.* <__start>:
|
||||
.*: 3c1c0fc0 lui gp,0xfc0
|
||||
.*: 279c7b60 addiu gp,gp,31584
|
||||
.*: 0399e021 addu gp,gp,t9
|
||||
.*: 27bdfff0 addiu sp,sp,-16
|
||||
.*: afbe0008 sw s8,8\(sp\)
|
||||
.*: 03a0f021 move s8,sp
|
||||
.*: afbc0000 sw gp,0\(sp\)
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848044 addiu a0,gp,-32700
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00000000 nop
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848038 addiu a0,gp,-32712
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00000000 nop
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848030 addiu a0,gp,-32720
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00401021 move v0,v0
|
||||
.*: 3c030000 lui v1,0x0
|
||||
.*: 24638000 addiu v1,v1,-32768
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 7c02283b rdhwr v0,\$5
|
||||
.*: 8f83804c lw v1,-32692\(gp\)
|
||||
.*: 00000000 nop
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 8f838040 lw v1,-32704\(gp\)
|
||||
.*: 00000000 nop
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 7c02283b rdhwr v0,\$5
|
||||
.*: 3c030000 lui v1,0x0
|
||||
.*: 24639004 addiu v1,v1,-28668
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 03c0e821 move sp,s8
|
||||
.*: 8fbe0008 lw s8,8\(sp\)
|
||||
.*: 03e00008 jr ra
|
||||
.*: 27bd0010 addiu sp,sp,16
|
||||
|
||||
.* <__tls_get_addr>:
|
||||
.*: 03e00008 jr ra
|
||||
.*: 00000000 nop
|
||||
...
|
||||
|
||||
.* <other>:
|
||||
.*: 3c1c0fc0 lui gp,0xfc0
|
||||
.*: 279c7aa0 addiu gp,gp,31392
|
||||
.*: 0399e021 addu gp,gp,t9
|
||||
.*: 27bdfff0 addiu sp,sp,-16
|
||||
.*: afbe0008 sw s8,8\(sp\)
|
||||
.*: 03a0f021 move s8,sp
|
||||
.*: afbc0000 sw gp,0\(sp\)
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848044 addiu a0,gp,-32700
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00000000 nop
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848038 addiu a0,gp,-32712
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00000000 nop
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848030 addiu a0,gp,-32720
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00401021 move v0,v0
|
||||
.*: 3c030000 lui v1,0x0
|
||||
.*: 24638000 addiu v1,v1,-32768
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 7c02283b rdhwr v0,\$5
|
||||
.*: 8f83804c lw v1,-32692\(gp\)
|
||||
.*: 00000000 nop
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 8f838040 lw v1,-32704\(gp\)
|
||||
.*: 00000000 nop
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 7c02283b rdhwr v0,\$5
|
||||
.*: 3c030000 lui v1,0x0
|
||||
.*: 24639004 addiu v1,v1,-28668
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 03c0e821 move sp,s8
|
||||
.*: 8fbe0008 lw s8,8\(sp\)
|
||||
.*: 03e00008 jr ra
|
||||
.*: 27bd0010 addiu sp,sp,16
|
||||
.*: 00000000 nop
|
||||
Disassembly of section .MIPS.stubs:
|
||||
|
||||
.* <.MIPS.stubs>:
|
||||
...
|
19
ld/testsuite/ld-mips-elf/tlsdyn-o32-1.got
Normal file
19
ld/testsuite/ld-mips-elf/tlsdyn-o32-1.got
Normal file
|
@ -0,0 +1,19 @@
|
|||
|
||||
.*: file format elf32-tradbigmips
|
||||
|
||||
DYNAMIC RELOCATION RECORDS
|
||||
OFFSET TYPE VALUE
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
10000054 R_MIPS_TLS_DTPMOD32 tlsbin_gd
|
||||
10000058 R_MIPS_TLS_DTPREL32 tlsbin_gd
|
||||
10000048 R_MIPS_TLS_DTPMOD32 tlsvar_gd
|
||||
1000004c R_MIPS_TLS_DTPREL32 tlsvar_gd
|
||||
10000050 R_MIPS_TLS_TPREL32 tlsvar_ie
|
||||
1000005c R_MIPS_TLS_TPREL32 tlsbin_ie
|
||||
|
||||
|
||||
Contents of section .got:
|
||||
10000020 00000000 80000000 00000000 00000000 ................
|
||||
10000030 00000000 00000000 00000000 0040055c .............@..
|
||||
10000040 00000001 00000000 00000000 00000000 ................
|
||||
10000050 00000000 00000000 00000000 00000000 ................
|
104
ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d
Normal file
104
ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d
Normal file
|
@ -0,0 +1,104 @@
|
|||
|
||||
.*: file format elf32-tradbigmips
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
.* <__start>:
|
||||
.*: 3c1c0fc0 lui gp,0xfc0
|
||||
.*: 279c7b60 addiu gp,gp,31584
|
||||
.*: 0399e021 addu gp,gp,t9
|
||||
.*: 27bdfff0 addiu sp,sp,-16
|
||||
.*: afbe0008 sw s8,8\(sp\)
|
||||
.*: 03a0f021 move s8,sp
|
||||
.*: afbc0000 sw gp,0\(sp\)
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848044 addiu a0,gp,-32700
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00000000 nop
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848038 addiu a0,gp,-32712
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00000000 nop
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848030 addiu a0,gp,-32720
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00401021 move v0,v0
|
||||
.*: 3c030000 lui v1,0x0
|
||||
.*: 24638000 addiu v1,v1,-32768
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 7c02283b rdhwr v0,\$5
|
||||
.*: 8f83804c lw v1,-32692\(gp\)
|
||||
.*: 00000000 nop
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 8f838040 lw v1,-32704\(gp\)
|
||||
.*: 00000000 nop
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 7c02283b rdhwr v0,\$5
|
||||
.*: 3c030000 lui v1,0x0
|
||||
.*: 24639004 addiu v1,v1,-28668
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 03c0e821 move sp,s8
|
||||
.*: 8fbe0008 lw s8,8\(sp\)
|
||||
.*: 03e00008 jr ra
|
||||
.*: 27bd0010 addiu sp,sp,16
|
||||
|
||||
.* <__tls_get_addr>:
|
||||
.*: 03e00008 jr ra
|
||||
.*: 00000000 nop
|
||||
...
|
||||
|
||||
.* <other>:
|
||||
.*: 3c1c0fc0 lui gp,0xfc0
|
||||
.*: 279c7aa0 addiu gp,gp,31392
|
||||
.*: 0399e021 addu gp,gp,t9
|
||||
.*: 27bdfff0 addiu sp,sp,-16
|
||||
.*: afbe0008 sw s8,8\(sp\)
|
||||
.*: 03a0f021 move s8,sp
|
||||
.*: afbc0000 sw gp,0\(sp\)
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848044 addiu a0,gp,-32700
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00000000 nop
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848038 addiu a0,gp,-32712
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00000000 nop
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848030 addiu a0,gp,-32720
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00401021 move v0,v0
|
||||
.*: 3c030000 lui v1,0x0
|
||||
.*: 24638000 addiu v1,v1,-32768
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 7c02283b rdhwr v0,\$5
|
||||
.*: 8f83804c lw v1,-32692\(gp\)
|
||||
.*: 00000000 nop
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 8f838040 lw v1,-32704\(gp\)
|
||||
.*: 00000000 nop
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 7c02283b rdhwr v0,\$5
|
||||
.*: 3c030000 lui v1,0x0
|
||||
.*: 24639004 addiu v1,v1,-28668
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 03c0e821 move sp,s8
|
||||
.*: 8fbe0008 lw s8,8\(sp\)
|
||||
.*: 03e00008 jr ra
|
||||
.*: 27bd0010 addiu sp,sp,16
|
||||
.*: 00000000 nop
|
||||
Disassembly of section .MIPS.stubs:
|
||||
|
||||
.* <.MIPS.stubs>:
|
||||
...
|
20
ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got
Normal file
20
ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got
Normal file
|
@ -0,0 +1,20 @@
|
|||
|
||||
.*: file format elf32-tradbigmips
|
||||
|
||||
DYNAMIC RELOCATION RECORDS
|
||||
OFFSET TYPE VALUE
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
10000054 R_MIPS_TLS_DTPMOD32 tlsbin_gd
|
||||
10000058 R_MIPS_TLS_DTPREL32 tlsbin_gd
|
||||
10000048 R_MIPS_TLS_DTPMOD32 tlsvar_gd
|
||||
1000004c R_MIPS_TLS_DTPREL32 tlsvar_gd
|
||||
10000050 R_MIPS_TLS_TPREL32 tlsvar_ie
|
||||
1000005c R_MIPS_TLS_TPREL32 tlsbin_ie
|
||||
|
||||
|
||||
Contents of section .got:
|
||||
10000020 00000000 80000000 00000000 00000000 ................
|
||||
10000030 00000000 00000000 00000000 0040055c .............@..
|
||||
10000040 00000001 00000000 00000000 00000000 ................
|
||||
10000050 00000000 00000000 00000000 00000000 ................
|
||||
10000060 00000000 00000000 00000000 ............
|
64
ld/testsuite/ld-mips-elf/tlsdyn-o32-2.s
Normal file
64
ld/testsuite/ld-mips-elf/tlsdyn-o32-2.s
Normal file
|
@ -0,0 +1,64 @@
|
|||
.file 1 "tlsbin-o32.s"
|
||||
.abicalls
|
||||
.text
|
||||
.align 2
|
||||
.globl other
|
||||
.ent other
|
||||
.type other,@function
|
||||
other:
|
||||
.frame $fp,16,$31
|
||||
.mask 0x40000000,-8
|
||||
.fmask 0x00000000,0
|
||||
.set noreorder
|
||||
.cpload $25
|
||||
.set reorder
|
||||
addiu $sp,$sp,-16
|
||||
sw $fp,8($sp)
|
||||
move $fp,$sp
|
||||
.cprestore 0
|
||||
|
||||
# General Dynamic
|
||||
lw $25,%call16(__tls_get_addr)($28)
|
||||
addiu $4,$28,%tlsgd(tlsbin_gd)
|
||||
jal $25
|
||||
|
||||
lw $25,%call16(__tls_get_addr)($28)
|
||||
addiu $4,$28,%tlsgd(tlsvar_gd)
|
||||
jal $25
|
||||
|
||||
# Local Dynamic
|
||||
lw $25,%call16(__tls_get_addr)($28)
|
||||
addiu $4,$28,%tlsldm(tlsbin_ld)
|
||||
jal $25
|
||||
|
||||
move $2,$2 # Arbitrary instructions
|
||||
|
||||
lui $3,%dtprel_hi(tlsbin_ld)
|
||||
addiu $3,$3,%dtprel_lo(tlsbin_ld)
|
||||
addu $3,$3,$2
|
||||
|
||||
# Initial Exec
|
||||
.set push
|
||||
.set mips32r2
|
||||
rdhwr $2, $5
|
||||
.set pop
|
||||
lw $3,%gottprel(tlsbin_ie)($28)
|
||||
addu $3,$3,$2
|
||||
|
||||
lw $3,%gottprel(tlsvar_ie)($28)
|
||||
addu $3,$3,$2
|
||||
|
||||
# Local Exec
|
||||
.set push
|
||||
.set mips32r2
|
||||
rdhwr $2, $5
|
||||
.set pop
|
||||
lui $3,%tprel_hi(tlsbin_le)
|
||||
addiu $3,$3,%tprel_lo(tlsbin_le)
|
||||
addu $3,$3,$2
|
||||
|
||||
move $sp,$fp
|
||||
lw $fp,8($sp)
|
||||
addiu $sp,$sp,16
|
||||
j $31
|
||||
.end other
|
104
ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d
Normal file
104
ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d
Normal file
|
@ -0,0 +1,104 @@
|
|||
|
||||
.*: file format elf32-tradbigmips
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
.* <other>:
|
||||
.*: 3c1c0fc0 lui gp,0xfc0
|
||||
.*: 279c7b60 addiu gp,gp,31584
|
||||
.*: 0399e021 addu gp,gp,t9
|
||||
.*: 27bdfff0 addiu sp,sp,-16
|
||||
.*: afbe0008 sw s8,8\(sp\)
|
||||
.*: 03a0f021 move s8,sp
|
||||
.*: afbc0000 sw gp,0\(sp\)
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848044 addiu a0,gp,-32700
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00000000 nop
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848038 addiu a0,gp,-32712
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00000000 nop
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848030 addiu a0,gp,-32720
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00401021 move v0,v0
|
||||
.*: 3c030000 lui v1,0x0
|
||||
.*: 24638000 addiu v1,v1,-32768
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 7c02283b rdhwr v0,\$5
|
||||
.*: 8f83804c lw v1,-32692\(gp\)
|
||||
.*: 00000000 nop
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 8f838040 lw v1,-32704\(gp\)
|
||||
.*: 00000000 nop
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 7c02283b rdhwr v0,\$5
|
||||
.*: 3c030000 lui v1,0x0
|
||||
.*: 24639004 addiu v1,v1,-28668
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 03c0e821 move sp,s8
|
||||
.*: 8fbe0008 lw s8,8\(sp\)
|
||||
.*: 03e00008 jr ra
|
||||
.*: 27bd0010 addiu sp,sp,16
|
||||
.*: 00000000 nop
|
||||
|
||||
.* <__start>:
|
||||
.*: 3c1c0fc0 lui gp,0xfc0
|
||||
.*: 279c7ab0 addiu gp,gp,31408
|
||||
.*: 0399e021 addu gp,gp,t9
|
||||
.*: 27bdfff0 addiu sp,sp,-16
|
||||
.*: afbe0008 sw s8,8\(sp\)
|
||||
.*: 03a0f021 move s8,sp
|
||||
.*: afbc0000 sw gp,0\(sp\)
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848044 addiu a0,gp,-32700
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00000000 nop
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848038 addiu a0,gp,-32712
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00000000 nop
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848030 addiu a0,gp,-32720
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00401021 move v0,v0
|
||||
.*: 3c030000 lui v1,0x0
|
||||
.*: 24638000 addiu v1,v1,-32768
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 7c02283b rdhwr v0,\$5
|
||||
.*: 8f83804c lw v1,-32692\(gp\)
|
||||
.*: 00000000 nop
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 8f838040 lw v1,-32704\(gp\)
|
||||
.*: 00000000 nop
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 7c02283b rdhwr v0,\$5
|
||||
.*: 3c030000 lui v1,0x0
|
||||
.*: 24639004 addiu v1,v1,-28668
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 03c0e821 move sp,s8
|
||||
.*: 8fbe0008 lw s8,8\(sp\)
|
||||
.*: 03e00008 jr ra
|
||||
.*: 27bd0010 addiu sp,sp,16
|
||||
|
||||
.* <__tls_get_addr>:
|
||||
.*: 03e00008 jr ra
|
||||
.*: 00000000 nop
|
||||
...
|
||||
Disassembly of section .MIPS.stubs:
|
||||
|
||||
.* <.MIPS.stubs>:
|
||||
...
|
20
ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got
Normal file
20
ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got
Normal file
|
@ -0,0 +1,20 @@
|
|||
|
||||
.*: file format elf32-tradbigmips
|
||||
|
||||
DYNAMIC RELOCATION RECORDS
|
||||
OFFSET TYPE VALUE
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
10000054 R_MIPS_TLS_DTPMOD32 tlsbin_gd
|
||||
10000058 R_MIPS_TLS_DTPREL32 tlsbin_gd
|
||||
10000048 R_MIPS_TLS_DTPMOD32 tlsvar_gd
|
||||
1000004c R_MIPS_TLS_DTPREL32 tlsvar_gd
|
||||
10000050 R_MIPS_TLS_TPREL32 tlsvar_ie
|
||||
1000005c R_MIPS_TLS_TPREL32 tlsbin_ie
|
||||
|
||||
|
||||
Contents of section .got:
|
||||
10000020 00000000 80000000 00000000 00000000 ................
|
||||
10000030 00000000 00000000 00000000 0040060c .............@..
|
||||
10000040 00000001 00000000 00000000 00000000 ................
|
||||
10000050 00000000 00000000 00000000 00000000 ................
|
||||
10000060 00000000 00000000 00000000 ............
|
58
ld/testsuite/ld-mips-elf/tlsdyn-o32.d
Normal file
58
ld/testsuite/ld-mips-elf/tlsdyn-o32.d
Normal file
|
@ -0,0 +1,58 @@
|
|||
|
||||
.*: file format elf32-tradbigmips
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
.* <__start>:
|
||||
.*: 3c1c0fc0 lui gp,0xfc0
|
||||
.*: 279c7b50 addiu gp,gp,31568
|
||||
.*: 0399e021 addu gp,gp,t9
|
||||
.*: 27bdfff0 addiu sp,sp,-16
|
||||
.*: afbe0008 sw s8,8\(sp\)
|
||||
.*: 03a0f021 move s8,sp
|
||||
.*: afbc0000 sw gp,0\(sp\)
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848038 addiu a0,gp,-32712
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00000000 nop
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848048 addiu a0,gp,-32696
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00000000 nop
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848030 addiu a0,gp,-32720
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00401021 move v0,v0
|
||||
.*: 3c030000 lui v1,0x0
|
||||
.*: 24638000 addiu v1,v1,-32768
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 7c02283b rdhwr v0,\$5
|
||||
.*: 8f838044 lw v1,-32700\(gp\)
|
||||
.*: 00000000 nop
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 8f838040 lw v1,-32704\(gp\)
|
||||
.*: 00000000 nop
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 7c02283b rdhwr v0,\$5
|
||||
.*: 3c030000 lui v1,0x0
|
||||
.*: 24639004 addiu v1,v1,-28668
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 03c0e821 move sp,s8
|
||||
.*: 8fbe0008 lw s8,8\(sp\)
|
||||
.*: 03e00008 jr ra
|
||||
.*: 27bd0010 addiu sp,sp,16
|
||||
|
||||
.* <__tls_get_addr>:
|
||||
.*: 03e00008 jr ra
|
||||
.*: 00000000 nop
|
||||
...
|
||||
Disassembly of section .MIPS.stubs:
|
||||
|
||||
.* <.MIPS.stubs>:
|
||||
...
|
19
ld/testsuite/ld-mips-elf/tlsdyn-o32.got
Normal file
19
ld/testsuite/ld-mips-elf/tlsdyn-o32.got
Normal file
|
@ -0,0 +1,19 @@
|
|||
|
||||
tmpdir/tls-dynamic-o32: file format elf32-tradbigmips
|
||||
|
||||
DYNAMIC RELOCATION RECORDS
|
||||
OFFSET TYPE VALUE
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
10000048 R_MIPS_TLS_DTPMOD32 tlsbin_gd
|
||||
1000004c R_MIPS_TLS_DTPREL32 tlsbin_gd
|
||||
10000058 R_MIPS_TLS_DTPMOD32 tlsvar_gd
|
||||
1000005c R_MIPS_TLS_DTPREL32 tlsvar_gd
|
||||
10000054 R_MIPS_TLS_TPREL32 tlsbin_ie
|
||||
10000050 R_MIPS_TLS_TPREL32 tlsvar_ie
|
||||
|
||||
|
||||
Contents of section .got:
|
||||
10000020 00000000 80000000 00000000 00000000 ................
|
||||
10000030 00000000 00000000 00000000 0040056c ................
|
||||
10000040 00000001 00000000 00000000 00000000 ................
|
||||
10000050 00000000 00000000 00000000 00000000 ................
|
96
ld/testsuite/ld-mips-elf/tlsdyn-o32.s
Normal file
96
ld/testsuite/ld-mips-elf/tlsdyn-o32.s
Normal file
|
@ -0,0 +1,96 @@
|
|||
.file 1 "tlsbin-o32.s"
|
||||
.abicalls
|
||||
.text
|
||||
.align 2
|
||||
.globl __start
|
||||
.ent __start
|
||||
.type __start,@function
|
||||
__start:
|
||||
.frame $fp,16,$31
|
||||
.mask 0x40000000,-8
|
||||
.fmask 0x00000000,0
|
||||
.set noreorder
|
||||
.cpload $25
|
||||
.set reorder
|
||||
addiu $sp,$sp,-16
|
||||
sw $fp,8($sp)
|
||||
move $fp,$sp
|
||||
.cprestore 0
|
||||
|
||||
# General Dynamic
|
||||
lw $25,%call16(__tls_get_addr)($28)
|
||||
addiu $4,$28,%tlsgd(tlsbin_gd)
|
||||
jal $25
|
||||
|
||||
lw $25,%call16(__tls_get_addr)($28)
|
||||
addiu $4,$28,%tlsgd(tlsvar_gd)
|
||||
jal $25
|
||||
|
||||
# Local Dynamic
|
||||
lw $25,%call16(__tls_get_addr)($28)
|
||||
addiu $4,$28,%tlsldm(tlsbin_ld)
|
||||
jal $25
|
||||
|
||||
move $2,$2 # Arbitrary instructions
|
||||
|
||||
lui $3,%dtprel_hi(tlsbin_ld)
|
||||
addiu $3,$3,%dtprel_lo(tlsbin_ld)
|
||||
addu $3,$3,$2
|
||||
|
||||
# Initial Exec
|
||||
.set push
|
||||
.set mips32r2
|
||||
rdhwr $2, $5
|
||||
.set pop
|
||||
lw $3,%gottprel(tlsbin_ie)($28)
|
||||
addu $3,$3,$2
|
||||
|
||||
lw $3,%gottprel(tlsvar_ie)($28)
|
||||
addu $3,$3,$2
|
||||
|
||||
# Local Exec
|
||||
.set push
|
||||
.set mips32r2
|
||||
rdhwr $2, $5
|
||||
.set pop
|
||||
lui $3,%tprel_hi(tlsbin_le)
|
||||
addiu $3,$3,%tprel_lo(tlsbin_le)
|
||||
addu $3,$3,$2
|
||||
|
||||
move $sp,$fp
|
||||
lw $fp,8($sp)
|
||||
addiu $sp,$sp,16
|
||||
j $31
|
||||
.end __start
|
||||
|
||||
.globl __tls_get_addr
|
||||
__tls_get_addr:
|
||||
j $31
|
||||
|
||||
.section .tbss,"awT",@nobits
|
||||
.align 2
|
||||
.global tlsbin_gd
|
||||
.type tlsbin_gd,@object
|
||||
.size tlsbin_gd,4
|
||||
tlsbin_gd:
|
||||
.space 4
|
||||
.global tlsbin_ie
|
||||
.type tlsbin_ie,@object
|
||||
.size tlsbin_ie,4
|
||||
tlsbin_ie:
|
||||
.space 4
|
||||
|
||||
.section .tdata,"awT"
|
||||
.align 2
|
||||
.global tlsbin_ld
|
||||
.hidden tlsbin_ld
|
||||
.type tlsbin_ld,@object
|
||||
.size tlsbin_ld,4
|
||||
tlsbin_ld:
|
||||
.word 1
|
||||
.global tlsbin_le
|
||||
.hidden tlsbin_le
|
||||
.type tlsbin_le,@object
|
||||
.size tlsbin_le,4
|
||||
tlsbin_le:
|
||||
.word 1
|
3
ld/testsuite/ld-mips-elf/tlslib-hidden.ver
Normal file
3
ld/testsuite/ld-mips-elf/tlslib-hidden.ver
Normal file
|
@ -0,0 +1,3 @@
|
|||
VER_1 {
|
||||
local: *;
|
||||
};
|
16
ld/testsuite/ld-mips-elf/tlslib-o32-hidden.got
Normal file
16
ld/testsuite/ld-mips-elf/tlslib-o32-hidden.got
Normal file
|
@ -0,0 +1,16 @@
|
|||
|
||||
.*: file format elf32-tradbigmips
|
||||
|
||||
DYNAMIC RELOCATION RECORDS
|
||||
OFFSET TYPE VALUE
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
0004043c R_MIPS_TLS_DTPMOD32 \*ABS\*
|
||||
00040434 R_MIPS_TLS_DTPMOD32 \*ABS\*
|
||||
00040430 R_MIPS_TLS_TPREL32 \*ABS\*
|
||||
|
||||
|
||||
Contents of section .got:
|
||||
40410 00000000 80000000 00000000 00000000 ................
|
||||
40420 00000000 00000000 00000000 000003e0 ................
|
||||
40430 00000008 00000000 00000000 00000000 ................
|
||||
40440 ffff8004 ....
|
17
ld/testsuite/ld-mips-elf/tlslib-o32-ver.got
Normal file
17
ld/testsuite/ld-mips-elf/tlslib-o32-ver.got
Normal file
|
@ -0,0 +1,17 @@
|
|||
|
||||
.*: file format elf32-tradbigmips
|
||||
|
||||
DYNAMIC RELOCATION RECORDS
|
||||
OFFSET TYPE VALUE
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
000405e4 R_MIPS_TLS_DTPMOD32 \*ABS\*
|
||||
000405ec R_MIPS_TLS_DTPMOD32 tlsvar_gd
|
||||
000405f0 R_MIPS_TLS_DTPREL32 tlsvar_gd
|
||||
000405e0 R_MIPS_TLS_TPREL32 tlsvar_ie
|
||||
|
||||
|
||||
Contents of section .got:
|
||||
405c0 00000000 80000000 00000000 00000000 ................
|
||||
405d0 00000000 00000000 00000000 00000590 ................
|
||||
405e0 00000000 00000000 00000000 00000000 ................
|
||||
405f0 00000000 ....
|
45
ld/testsuite/ld-mips-elf/tlslib-o32.d
Normal file
45
ld/testsuite/ld-mips-elf/tlslib-o32.d
Normal file
|
@ -0,0 +1,45 @@
|
|||
|
||||
.*: file format elf32-tradbigmips
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
.* <fn>:
|
||||
.*: 3c1c0005 lui gp,0x5
|
||||
.*: 279c80a0 addiu gp,gp,-32608
|
||||
.*: 0399e021 addu gp,gp,t9
|
||||
.*: 27bdfff0 addiu sp,sp,-16
|
||||
.*: afbe0008 sw s8,8\(sp\)
|
||||
.*: 03a0f021 move s8,sp
|
||||
.*: afbc0000 sw gp,0\(sp\)
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 2784803c addiu a0,gp,-32708
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00000000 nop
|
||||
.*: 8f99802c lw t9,-32724\(gp\)
|
||||
.*: 27848034 addiu a0,gp,-32716
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 00000000 nop
|
||||
.*: 8fdc0000 lw gp,0\(s8\)
|
||||
.*: 00401021 move v0,v0
|
||||
.*: 3c030000 lui v1,0x0
|
||||
.*: 24638000 addiu v1,v1,-32768
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 7c02283b rdhwr v0,\$5
|
||||
.*: 8f838030 lw v1,-32720\(gp\)
|
||||
.*: 00000000 nop
|
||||
.*: 00621821 addu v1,v1,v0
|
||||
.*: 03c0e821 move sp,s8
|
||||
.*: 8fbe0008 lw s8,8\(sp\)
|
||||
.*: 03e00008 jr ra
|
||||
.*: 27bd0010 addiu sp,sp,16
|
||||
...
|
||||
Disassembly of section .MIPS.stubs:
|
||||
|
||||
.* <.MIPS.stubs>:
|
||||
.*: 8f998010 lw t9,-32752\(gp\)
|
||||
.*: 03e07821 move t7,ra
|
||||
.*: 0320f809 jalr t9
|
||||
.*: 241800.* li t8,.*
|
||||
...
|
17
ld/testsuite/ld-mips-elf/tlslib-o32.got
Normal file
17
ld/testsuite/ld-mips-elf/tlslib-o32.got
Normal file
|
@ -0,0 +1,17 @@
|
|||
|
||||
tmpdir/tlslib-o32.so: file format elf32-tradbigmips
|
||||
|
||||
DYNAMIC RELOCATION RECORDS
|
||||
OFFSET TYPE VALUE
|
||||
00000000 R_MIPS_NONE \*ABS\*
|
||||
00040534 R_MIPS_TLS_DTPMOD32 \*ABS\*
|
||||
0004053c R_MIPS_TLS_DTPMOD32 tlsvar_gd
|
||||
00040540 R_MIPS_TLS_DTPREL32 tlsvar_gd
|
||||
00040530 R_MIPS_TLS_TPREL32 tlsvar_ie
|
||||
|
||||
|
||||
Contents of section .got:
|
||||
40510 00000000 80000000 00000000 00000000 ................
|
||||
40520 00000000 00000000 00000000 000004e0 ................
|
||||
40530 00000000 00000000 00000000 00000000 ................
|
||||
40540 00000000 ....
|
70
ld/testsuite/ld-mips-elf/tlslib-o32.s
Normal file
70
ld/testsuite/ld-mips-elf/tlslib-o32.s
Normal file
|
@ -0,0 +1,70 @@
|
|||
.file 1 "tlslib-o32.s"
|
||||
.abicalls
|
||||
.text
|
||||
.align 2
|
||||
.globl fn
|
||||
.ent fn
|
||||
.type fn,@function
|
||||
fn:
|
||||
.frame $fp,16,$31
|
||||
.mask 0x40000000,-8
|
||||
.fmask 0x00000000,0
|
||||
.set noreorder
|
||||
.cpload $25
|
||||
.set reorder
|
||||
addiu $sp,$sp,-16
|
||||
sw $fp,8($sp)
|
||||
move $fp,$sp
|
||||
.cprestore 0
|
||||
|
||||
# General Dynamic
|
||||
lw $25,%call16(__tls_get_addr)($28)
|
||||
addiu $4,$28,%tlsgd(tlsvar_gd)
|
||||
jal $25
|
||||
|
||||
# Local Dynamic
|
||||
lw $25,%call16(__tls_get_addr)($28)
|
||||
addiu $4,$28,%tlsldm(tlsvar_ld)
|
||||
jal $25
|
||||
|
||||
move $2,$2 # Arbitrary instructions
|
||||
|
||||
lui $3,%dtprel_hi(tlsvar_ld)
|
||||
addiu $3,$3,%dtprel_lo(tlsvar_ld)
|
||||
addu $3,$3,$2
|
||||
|
||||
# Initial Exec
|
||||
.set push
|
||||
.set mips32r2
|
||||
rdhwr $2, $5
|
||||
.set pop
|
||||
lw $3,%gottprel(tlsvar_ie)($28)
|
||||
addu $3,$3,$2
|
||||
|
||||
move $sp,$fp
|
||||
lw $fp,8($sp)
|
||||
addiu $sp,$sp,16
|
||||
j $31
|
||||
.end fn
|
||||
|
||||
.section .tbss,"awT",@nobits
|
||||
.align 2
|
||||
.global tlsvar_gd
|
||||
.type tlsvar_gd,@object
|
||||
.size tlsvar_gd,4
|
||||
tlsvar_gd:
|
||||
.space 4
|
||||
.global tlsvar_ie
|
||||
.type tlsvar_ie,@object
|
||||
.size tlsvar_ie,4
|
||||
tlsvar_ie:
|
||||
.space 4
|
||||
|
||||
.section .tdata,"awT"
|
||||
.align 2
|
||||
.global tlsvar_ld
|
||||
.hidden tlsvar_ld
|
||||
.type tlsvar_ld,@object
|
||||
.size tlsvar_ld,4
|
||||
tlsvar_ld:
|
||||
.word 1
|
3
ld/testsuite/ld-mips-elf/tlslib.ver
Normal file
3
ld/testsuite/ld-mips-elf/tlslib.ver
Normal file
|
@ -0,0 +1,3 @@
|
|||
VER_1 {
|
||||
global: *;
|
||||
};
|
Loading…
Add table
Reference in a new issue