* 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:
Daniel Jacobowitz 2005-03-02 21:22:57 +00:00
parent 128b3d8643
commit f4e584bd00
29 changed files with 1641 additions and 1 deletions

View File

@ -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

View 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) }
}

View File

@ -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
}

View 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) }
}

View 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

View 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)

View 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

View 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

View 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

View 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

View 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 ....

View 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

View 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>:
...

View 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 ................

View 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>:
...

View 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 ............

View 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

View 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>:
...

View 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 ............

View 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>:
...

View 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 ................

View 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

View File

@ -0,0 +1,3 @@
VER_1 {
local: *;
};

View 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 ....

View 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 ....

View 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,.*
...

View 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 ....

View 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

View File

@ -0,0 +1,3 @@
VER_1 {
global: *;
};