* ld-cris/got7.s, ld-cris/init.s, ld-cris/pic-gc-72.d,
ld-cris/pic-gc-72.s, ld-cris/pic-gc-73.d, ld-cris/pic-gc-73.s,
ld-cris/tls-dso-x1x2-1.d, ld-cris/tls-dso-xz-1.d,
ld-cris/tls-dtprelm.s, ld-cris/tls-e-20.d, ld-cris/tls-e-20a.d,
ld-cris/tls-e-21.d, ld-cris/tls-e-22.d, ld-cris/tls-e-23.d,
ld-cris/tls-e-66.d, ld-cris/tls-err-20x.d, ld-cris/tls-err-24.d,
ld-cris/tls-err-25.d, ld-cris/tls-err-26.d, ld-cris/tls-err-27.d,
ld-cris/tls-err-28.d, ld-cris/tls-err-29.d, ld-cris/tls-err-31.d,
ld-cris/tls-err-33.d, ld-cris/tls-err-35.d, ld-cris/tls-err-37.d,
ld-cris/tls-err-39.d, ld-cris/tls-err-40.d, ld-cris/tls-err-41.d,
ld-cris/tls-err-43.d, ld-cris/tls-err-44.d, ld-cris/tls-err-45.d,
ld-cris/tls-err-47.d, ld-cris/tls-err-48.d, ld-cris/tls-err-49.d,
ld-cris/tls-err-51.d, ld-cris/tls-err-52.d, ld-cris/tls-err-53.d,
ld-cris/tls-err-55.d, ld-cris/tls-err-55.s, ld-cris/tls-err-56.d,
ld-cris/tls-err-56.s, ld-cris/tls-err-62.d, ld-cris/tls-err-62.s,
ld-cris/tls-err-65.d, ld-cris/tls-err-67.d, ld-cris/tls-gc-68.d,
ld-cris/tls-gc-69.d, ld-cris/tls-gc-70.d, ld-cris/tls-gc-71.d,
ld-cris/tls-gc-71.s, ld-cris/tls-gc-75.d, ld-cris/tls-gc-76.d,
ld-cris/tls-gc-76.s, ld-cris/tls-gd-1.d, ld-cris/tls-gd-1.s,
ld-cris/tls-gd-1h.d, ld-cris/tls-gd-2.d, ld-cris/tls-gd-2.s,
ld-cris/tls-gd-2h.d, ld-cris/tls-gd-3.d, ld-cris/tls-gd-3.s,
ld-cris/tls-gd-3h.d, ld-cris/tls-gdgotrelm.s, ld-cris/tls-global-74.d,
ld-cris/tls-gottprelm.s, ld-cris/tls-hx.s, ld-cris/tls-hx1x2.s,
ld-cris/tls-ie-10.d, ld-cris/tls-ie-10.s, ld-cris/tls-ie-11.d,
ld-cris/tls-ie-11.s, ld-cris/tls-ie-8.d, ld-cris/tls-ie-8.s,
ld-cris/tls-ie-9.d, ld-cris/tls-ie-9.s, ld-cris/tls-ld-4.d,
ld-cris/tls-ld-4.s, ld-cris/tls-ld-5.d, ld-cris/tls-ld-5.s,
ld-cris/tls-ld-6.d, ld-cris/tls-ld-6.s, ld-cris/tls-ld-7.d,
ld-cris/tls-ld-7.s, ld-cris/tls-ldgd-14.d, ld-cris/tls-ldgd-14.s,
ld-cris/tls-ldgd-15.d, ld-cris/tls-ldgd-15.s, ld-cris/tls-ldgde-14.d,
ld-cris/tls-ldgde-15.d, ld-cris/tls-ldgdex-14.d,
ld-cris/tls-ldgdex-15.d, ld-cris/tls-ldgdx-14.d,
ld-cris/tls-ldgdx-15.d, ld-cris/tls-le-12.d, ld-cris/tls-le-12.s,
ld-cris/tls-le-12s.d, ld-cris/tls-le-12s.s, ld-cris/tls-le-13.d,
ld-cris/tls-le-13.s, ld-cris/tls-le-13s.d, ld-cris/tls-le-13s.s,
ld-cris/tls-legd-16.d, ld-cris/tls-legd-16.s, ld-cris/tls-legd-17.d,
ld-cris/tls-legdx-16.d, ld-cris/tls-legdx-17.d, ld-cris/tls-leie-18.d,
ld-cris/tls-leie-19.d, ld-cris/tls-leie-19.s, ld-cris/tls-local-54.d,
ld-cris/tls-local-54.s, ld-cris/tls-local-57.d,
ld-cris/tls-local-57.s, ld-cris/tls-local-58.d,
ld-cris/tls-local-58.s, ld-cris/tls-local-59.d,
ld-cris/tls-local-59.s, ld-cris/tls-local-60.d,
ld-cris/tls-local-61.d, ld-cris/tls-local-63.d,
ld-cris/tls-local-64.d, ld-cris/tls-ok-30.d, ld-cris/tls-ok-32.d,
ld-cris/tls-ok-34.d, ld-cris/tls-ok-36.d, ld-cris/tls-tprelm.s,
ld-cris/tls-und-38.d, ld-cris/tls-und-42.d, ld-cris/tls-und-46.d,
ld-cris/tls-und-50.d, ld-cris/tls-x.s, ld-cris/tls-x1x2.s,
ld-cris/tls-z.s, ld-cris/tls128.s, ld-cris/tls128g.s: New tests.
2008-11-25 12:10:48 +08:00
|
|
|
#source: start1.s
|
|
|
|
#source: tls128.s
|
|
|
|
#source: tls-leie-19.s
|
|
|
|
#source: tls-le-12.s
|
|
|
|
#source: tls-ie-11.s --pic
|
|
|
|
#source: tls-hx1x2.s
|
|
|
|
#source: tls-x.s
|
|
|
|
#source: tls-z.s
|
|
|
|
#as: --no-underscore --em=criself
|
|
|
|
#ld: -m crislinux
|
|
|
|
#objdump: -d -s -h -t -r -p
|
|
|
|
|
|
|
|
# Check that we have proper NPTL/TLS markings and GOT for an
|
|
|
|
# executable with two R_CRIS_32_TPREL and two R_CRIS_32_GOT_TPREL,
|
|
|
|
# four different symbols.
|
|
|
|
|
|
|
|
.*: file format elf32-cris
|
|
|
|
|
|
|
|
Program Header:
|
|
|
|
#...
|
|
|
|
TLS off 0x0+b4 vaddr 0x0+820b4 paddr 0x0+820b4 align 2\*\*2
|
|
|
|
filesz 0x0+90 memsz 0x0+90 flags r--
|
|
|
|
private flags = 0:
|
|
|
|
#...
|
|
|
|
2 .got .*
|
|
|
|
CONTENTS.*
|
|
|
|
SYMBOL TABLE:
|
|
|
|
#...
|
ELF/LD: Avoid producing hidden and internal dynamic symbols
Always turn hidden and internal symbols which have a dynamic index into
local ones. This is required by the the ELF gABI[1]:
"A hidden symbol contained in a relocatable object must be either
removed or converted to STB_LOCAL binding by the link-editor when the
relocatable object is included in an executable file or shared object."
"An internal symbol contained in a relocatable object must be either
removed or converted to STB_LOCAL binding by the link-editor when the
relocatable object is included in an executable file or shared object."
The ELF linker usually respects this requirement, however in the case
where a dynamic symbol has been preallocated due to a reference of the
default export class aka visibility from the object being linked, and
then merged with a hidden or internal symbol definition from within the
same object, then the original export class is carried over to the
output dynamic symbol table, because while merging the generic ELF
linker only converts affected dynamic symbols to local when they are
defined or referenced by the object being linked and a dynamic object
involved in the link both at a time.
The dynamic symbol produced confuses then the dynamic loader at the run
time -- the hidden or internal export class is ignored and the symbol
follows preemption rules as with the default export class.
In the MIPS target it happens when `mips_elf_record_global_got_symbol'
creates a dynamic symbol when a call relocation is encountered.
Additionally if the undefined symbol referred by such a relocation does
specify the intended export class, then a local dynamic symbol is
created instead, which is harmless and allowed, but useless. Normally
no local dynamic symbols are created, except for a single dummy one at
the beginning.
Correct the problem by removing the extra check for a dynamic symbol
being defined or referenced by the object being linked and a dynamic
object involved in the link both at a time. The test cases included
cover the internal and hidden symbol cases, as well as a protected
symbol for a reference, the handling of which is unchanged by this fix.
Both cases described above are covered, that is where an internal or
hidden dynamic symbol is produced and where a local one is.
NB this change affects CRIS results where some symbols in the static
table produced in a final link are now converted from STV_HIDDEN to
STB_LOCAL. This happens whenever the `elf_backend_hide_symbol' handler
is called, so the affected symbols must have been chosen for entering
into the dynamic symbol table, except in these test cases no such symbol
table is produced. In fully linked binaries the static symbol table is
only used for debugging though, so such a change is fine.
References:
[1] "System V Application Binary Interface - DRAFT - 24 April 2001",
The Santa Cruz Operation, Inc., "Symbol Table",
<http://www.sco.com/developers/gabi/2001-04-24/ch4.symtab.html>
bfd/
PR ld/19908
* elflink.c (elf_link_add_object_symbols): Always turn hidden
and internal symbols which have a dynamic index into local
ones.
ld/
PR ld/19908
* testsuite/ld-cris/tls-e-20.d: Adjust for hidden symbol
handling fix.
* testsuite/ld-cris/tls-e-20a.d: Likewise.
* testsuite/ld-cris/tls-e-21.d: Likewise.
* testsuite/ld-cris/tls-e-23.d: Likewise.
* testsuite/ld-cris/tls-e-80.d: Likewise.
* testsuite/ld-cris/tls-gd-3h.d: Likewise.
* testsuite/ld-cris/tls-leie-19.d: Likewise.
* testsuite/ld-mips-elf/export-class-ref-lib.sd: New test.
* testsuite/ld-mips-elf/export-hidden-ref.sd: New test.
* testsuite/ld-mips-elf/export-internal-ref.sd: New test.
* testsuite/ld-mips-elf/export-protected-ref.sd: New test.
* testsuite/ld-mips-elf/export-class-ref-f0.s: New test source.
* testsuite/ld-mips-elf/export-class-ref-f1.s: New test source.
* testsuite/ld-mips-elf/export-class-ref-f2.s: New test source.
* testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.
2016-04-05 22:10:05 +08:00
|
|
|
0+84 l \.tdata 0+4 x2
|
* ld-cris/got7.s, ld-cris/init.s, ld-cris/pic-gc-72.d,
ld-cris/pic-gc-72.s, ld-cris/pic-gc-73.d, ld-cris/pic-gc-73.s,
ld-cris/tls-dso-x1x2-1.d, ld-cris/tls-dso-xz-1.d,
ld-cris/tls-dtprelm.s, ld-cris/tls-e-20.d, ld-cris/tls-e-20a.d,
ld-cris/tls-e-21.d, ld-cris/tls-e-22.d, ld-cris/tls-e-23.d,
ld-cris/tls-e-66.d, ld-cris/tls-err-20x.d, ld-cris/tls-err-24.d,
ld-cris/tls-err-25.d, ld-cris/tls-err-26.d, ld-cris/tls-err-27.d,
ld-cris/tls-err-28.d, ld-cris/tls-err-29.d, ld-cris/tls-err-31.d,
ld-cris/tls-err-33.d, ld-cris/tls-err-35.d, ld-cris/tls-err-37.d,
ld-cris/tls-err-39.d, ld-cris/tls-err-40.d, ld-cris/tls-err-41.d,
ld-cris/tls-err-43.d, ld-cris/tls-err-44.d, ld-cris/tls-err-45.d,
ld-cris/tls-err-47.d, ld-cris/tls-err-48.d, ld-cris/tls-err-49.d,
ld-cris/tls-err-51.d, ld-cris/tls-err-52.d, ld-cris/tls-err-53.d,
ld-cris/tls-err-55.d, ld-cris/tls-err-55.s, ld-cris/tls-err-56.d,
ld-cris/tls-err-56.s, ld-cris/tls-err-62.d, ld-cris/tls-err-62.s,
ld-cris/tls-err-65.d, ld-cris/tls-err-67.d, ld-cris/tls-gc-68.d,
ld-cris/tls-gc-69.d, ld-cris/tls-gc-70.d, ld-cris/tls-gc-71.d,
ld-cris/tls-gc-71.s, ld-cris/tls-gc-75.d, ld-cris/tls-gc-76.d,
ld-cris/tls-gc-76.s, ld-cris/tls-gd-1.d, ld-cris/tls-gd-1.s,
ld-cris/tls-gd-1h.d, ld-cris/tls-gd-2.d, ld-cris/tls-gd-2.s,
ld-cris/tls-gd-2h.d, ld-cris/tls-gd-3.d, ld-cris/tls-gd-3.s,
ld-cris/tls-gd-3h.d, ld-cris/tls-gdgotrelm.s, ld-cris/tls-global-74.d,
ld-cris/tls-gottprelm.s, ld-cris/tls-hx.s, ld-cris/tls-hx1x2.s,
ld-cris/tls-ie-10.d, ld-cris/tls-ie-10.s, ld-cris/tls-ie-11.d,
ld-cris/tls-ie-11.s, ld-cris/tls-ie-8.d, ld-cris/tls-ie-8.s,
ld-cris/tls-ie-9.d, ld-cris/tls-ie-9.s, ld-cris/tls-ld-4.d,
ld-cris/tls-ld-4.s, ld-cris/tls-ld-5.d, ld-cris/tls-ld-5.s,
ld-cris/tls-ld-6.d, ld-cris/tls-ld-6.s, ld-cris/tls-ld-7.d,
ld-cris/tls-ld-7.s, ld-cris/tls-ldgd-14.d, ld-cris/tls-ldgd-14.s,
ld-cris/tls-ldgd-15.d, ld-cris/tls-ldgd-15.s, ld-cris/tls-ldgde-14.d,
ld-cris/tls-ldgde-15.d, ld-cris/tls-ldgdex-14.d,
ld-cris/tls-ldgdex-15.d, ld-cris/tls-ldgdx-14.d,
ld-cris/tls-ldgdx-15.d, ld-cris/tls-le-12.d, ld-cris/tls-le-12.s,
ld-cris/tls-le-12s.d, ld-cris/tls-le-12s.s, ld-cris/tls-le-13.d,
ld-cris/tls-le-13.s, ld-cris/tls-le-13s.d, ld-cris/tls-le-13s.s,
ld-cris/tls-legd-16.d, ld-cris/tls-legd-16.s, ld-cris/tls-legd-17.d,
ld-cris/tls-legdx-16.d, ld-cris/tls-legdx-17.d, ld-cris/tls-leie-18.d,
ld-cris/tls-leie-19.d, ld-cris/tls-leie-19.s, ld-cris/tls-local-54.d,
ld-cris/tls-local-54.s, ld-cris/tls-local-57.d,
ld-cris/tls-local-57.s, ld-cris/tls-local-58.d,
ld-cris/tls-local-58.s, ld-cris/tls-local-59.d,
ld-cris/tls-local-59.s, ld-cris/tls-local-60.d,
ld-cris/tls-local-61.d, ld-cris/tls-local-63.d,
ld-cris/tls-local-64.d, ld-cris/tls-ok-30.d, ld-cris/tls-ok-32.d,
ld-cris/tls-ok-34.d, ld-cris/tls-ok-36.d, ld-cris/tls-tprelm.s,
ld-cris/tls-und-38.d, ld-cris/tls-und-42.d, ld-cris/tls-und-46.d,
ld-cris/tls-und-50.d, ld-cris/tls-x.s, ld-cris/tls-x1x2.s,
ld-cris/tls-z.s, ld-cris/tls128.s, ld-cris/tls128g.s: New tests.
2008-11-25 12:10:48 +08:00
|
|
|
#...
|
ELF/LD: Avoid producing hidden and internal dynamic symbols
Always turn hidden and internal symbols which have a dynamic index into
local ones. This is required by the the ELF gABI[1]:
"A hidden symbol contained in a relocatable object must be either
removed or converted to STB_LOCAL binding by the link-editor when the
relocatable object is included in an executable file or shared object."
"An internal symbol contained in a relocatable object must be either
removed or converted to STB_LOCAL binding by the link-editor when the
relocatable object is included in an executable file or shared object."
The ELF linker usually respects this requirement, however in the case
where a dynamic symbol has been preallocated due to a reference of the
default export class aka visibility from the object being linked, and
then merged with a hidden or internal symbol definition from within the
same object, then the original export class is carried over to the
output dynamic symbol table, because while merging the generic ELF
linker only converts affected dynamic symbols to local when they are
defined or referenced by the object being linked and a dynamic object
involved in the link both at a time.
The dynamic symbol produced confuses then the dynamic loader at the run
time -- the hidden or internal export class is ignored and the symbol
follows preemption rules as with the default export class.
In the MIPS target it happens when `mips_elf_record_global_got_symbol'
creates a dynamic symbol when a call relocation is encountered.
Additionally if the undefined symbol referred by such a relocation does
specify the intended export class, then a local dynamic symbol is
created instead, which is harmless and allowed, but useless. Normally
no local dynamic symbols are created, except for a single dummy one at
the beginning.
Correct the problem by removing the extra check for a dynamic symbol
being defined or referenced by the object being linked and a dynamic
object involved in the link both at a time. The test cases included
cover the internal and hidden symbol cases, as well as a protected
symbol for a reference, the handling of which is unchanged by this fix.
Both cases described above are covered, that is where an internal or
hidden dynamic symbol is produced and where a local one is.
NB this change affects CRIS results where some symbols in the static
table produced in a final link are now converted from STV_HIDDEN to
STB_LOCAL. This happens whenever the `elf_backend_hide_symbol' handler
is called, so the affected symbols must have been chosen for entering
into the dynamic symbol table, except in these test cases no such symbol
table is produced. In fully linked binaries the static symbol table is
only used for debugging though, so such a change is fine.
References:
[1] "System V Application Binary Interface - DRAFT - 24 April 2001",
The Santa Cruz Operation, Inc., "Symbol Table",
<http://www.sco.com/developers/gabi/2001-04-24/ch4.symtab.html>
bfd/
PR ld/19908
* elflink.c (elf_link_add_object_symbols): Always turn hidden
and internal symbols which have a dynamic index into local
ones.
ld/
PR ld/19908
* testsuite/ld-cris/tls-e-20.d: Adjust for hidden symbol
handling fix.
* testsuite/ld-cris/tls-e-20a.d: Likewise.
* testsuite/ld-cris/tls-e-21.d: Likewise.
* testsuite/ld-cris/tls-e-23.d: Likewise.
* testsuite/ld-cris/tls-e-80.d: Likewise.
* testsuite/ld-cris/tls-gd-3h.d: Likewise.
* testsuite/ld-cris/tls-leie-19.d: Likewise.
* testsuite/ld-mips-elf/export-class-ref-lib.sd: New test.
* testsuite/ld-mips-elf/export-hidden-ref.sd: New test.
* testsuite/ld-mips-elf/export-internal-ref.sd: New test.
* testsuite/ld-mips-elf/export-protected-ref.sd: New test.
* testsuite/ld-mips-elf/export-class-ref-f0.s: New test source.
* testsuite/ld-mips-elf/export-class-ref-f1.s: New test source.
* testsuite/ld-mips-elf/export-class-ref-f2.s: New test source.
* testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.
2016-04-05 22:10:05 +08:00
|
|
|
0+80 l \.tdata 0+4 x1
|
* ld-cris/got7.s, ld-cris/init.s, ld-cris/pic-gc-72.d,
ld-cris/pic-gc-72.s, ld-cris/pic-gc-73.d, ld-cris/pic-gc-73.s,
ld-cris/tls-dso-x1x2-1.d, ld-cris/tls-dso-xz-1.d,
ld-cris/tls-dtprelm.s, ld-cris/tls-e-20.d, ld-cris/tls-e-20a.d,
ld-cris/tls-e-21.d, ld-cris/tls-e-22.d, ld-cris/tls-e-23.d,
ld-cris/tls-e-66.d, ld-cris/tls-err-20x.d, ld-cris/tls-err-24.d,
ld-cris/tls-err-25.d, ld-cris/tls-err-26.d, ld-cris/tls-err-27.d,
ld-cris/tls-err-28.d, ld-cris/tls-err-29.d, ld-cris/tls-err-31.d,
ld-cris/tls-err-33.d, ld-cris/tls-err-35.d, ld-cris/tls-err-37.d,
ld-cris/tls-err-39.d, ld-cris/tls-err-40.d, ld-cris/tls-err-41.d,
ld-cris/tls-err-43.d, ld-cris/tls-err-44.d, ld-cris/tls-err-45.d,
ld-cris/tls-err-47.d, ld-cris/tls-err-48.d, ld-cris/tls-err-49.d,
ld-cris/tls-err-51.d, ld-cris/tls-err-52.d, ld-cris/tls-err-53.d,
ld-cris/tls-err-55.d, ld-cris/tls-err-55.s, ld-cris/tls-err-56.d,
ld-cris/tls-err-56.s, ld-cris/tls-err-62.d, ld-cris/tls-err-62.s,
ld-cris/tls-err-65.d, ld-cris/tls-err-67.d, ld-cris/tls-gc-68.d,
ld-cris/tls-gc-69.d, ld-cris/tls-gc-70.d, ld-cris/tls-gc-71.d,
ld-cris/tls-gc-71.s, ld-cris/tls-gc-75.d, ld-cris/tls-gc-76.d,
ld-cris/tls-gc-76.s, ld-cris/tls-gd-1.d, ld-cris/tls-gd-1.s,
ld-cris/tls-gd-1h.d, ld-cris/tls-gd-2.d, ld-cris/tls-gd-2.s,
ld-cris/tls-gd-2h.d, ld-cris/tls-gd-3.d, ld-cris/tls-gd-3.s,
ld-cris/tls-gd-3h.d, ld-cris/tls-gdgotrelm.s, ld-cris/tls-global-74.d,
ld-cris/tls-gottprelm.s, ld-cris/tls-hx.s, ld-cris/tls-hx1x2.s,
ld-cris/tls-ie-10.d, ld-cris/tls-ie-10.s, ld-cris/tls-ie-11.d,
ld-cris/tls-ie-11.s, ld-cris/tls-ie-8.d, ld-cris/tls-ie-8.s,
ld-cris/tls-ie-9.d, ld-cris/tls-ie-9.s, ld-cris/tls-ld-4.d,
ld-cris/tls-ld-4.s, ld-cris/tls-ld-5.d, ld-cris/tls-ld-5.s,
ld-cris/tls-ld-6.d, ld-cris/tls-ld-6.s, ld-cris/tls-ld-7.d,
ld-cris/tls-ld-7.s, ld-cris/tls-ldgd-14.d, ld-cris/tls-ldgd-14.s,
ld-cris/tls-ldgd-15.d, ld-cris/tls-ldgd-15.s, ld-cris/tls-ldgde-14.d,
ld-cris/tls-ldgde-15.d, ld-cris/tls-ldgdex-14.d,
ld-cris/tls-ldgdex-15.d, ld-cris/tls-ldgdx-14.d,
ld-cris/tls-ldgdx-15.d, ld-cris/tls-le-12.d, ld-cris/tls-le-12.s,
ld-cris/tls-le-12s.d, ld-cris/tls-le-12s.s, ld-cris/tls-le-13.d,
ld-cris/tls-le-13.s, ld-cris/tls-le-13s.d, ld-cris/tls-le-13s.s,
ld-cris/tls-legd-16.d, ld-cris/tls-legd-16.s, ld-cris/tls-legd-17.d,
ld-cris/tls-legdx-16.d, ld-cris/tls-legdx-17.d, ld-cris/tls-leie-18.d,
ld-cris/tls-leie-19.d, ld-cris/tls-leie-19.s, ld-cris/tls-local-54.d,
ld-cris/tls-local-54.s, ld-cris/tls-local-57.d,
ld-cris/tls-local-57.s, ld-cris/tls-local-58.d,
ld-cris/tls-local-58.s, ld-cris/tls-local-59.d,
ld-cris/tls-local-59.s, ld-cris/tls-local-60.d,
ld-cris/tls-local-61.d, ld-cris/tls-local-63.d,
ld-cris/tls-local-64.d, ld-cris/tls-ok-30.d, ld-cris/tls-ok-32.d,
ld-cris/tls-ok-34.d, ld-cris/tls-ok-36.d, ld-cris/tls-tprelm.s,
ld-cris/tls-und-38.d, ld-cris/tls-und-42.d, ld-cris/tls-und-46.d,
ld-cris/tls-und-50.d, ld-cris/tls-x.s, ld-cris/tls-x1x2.s,
ld-cris/tls-z.s, ld-cris/tls128.s, ld-cris/tls128g.s: New tests.
2008-11-25 12:10:48 +08:00
|
|
|
#...
|
ELF/LD: Avoid producing hidden and internal dynamic symbols
Always turn hidden and internal symbols which have a dynamic index into
local ones. This is required by the the ELF gABI[1]:
"A hidden symbol contained in a relocatable object must be either
removed or converted to STB_LOCAL binding by the link-editor when the
relocatable object is included in an executable file or shared object."
"An internal symbol contained in a relocatable object must be either
removed or converted to STB_LOCAL binding by the link-editor when the
relocatable object is included in an executable file or shared object."
The ELF linker usually respects this requirement, however in the case
where a dynamic symbol has been preallocated due to a reference of the
default export class aka visibility from the object being linked, and
then merged with a hidden or internal symbol definition from within the
same object, then the original export class is carried over to the
output dynamic symbol table, because while merging the generic ELF
linker only converts affected dynamic symbols to local when they are
defined or referenced by the object being linked and a dynamic object
involved in the link both at a time.
The dynamic symbol produced confuses then the dynamic loader at the run
time -- the hidden or internal export class is ignored and the symbol
follows preemption rules as with the default export class.
In the MIPS target it happens when `mips_elf_record_global_got_symbol'
creates a dynamic symbol when a call relocation is encountered.
Additionally if the undefined symbol referred by such a relocation does
specify the intended export class, then a local dynamic symbol is
created instead, which is harmless and allowed, but useless. Normally
no local dynamic symbols are created, except for a single dummy one at
the beginning.
Correct the problem by removing the extra check for a dynamic symbol
being defined or referenced by the object being linked and a dynamic
object involved in the link both at a time. The test cases included
cover the internal and hidden symbol cases, as well as a protected
symbol for a reference, the handling of which is unchanged by this fix.
Both cases described above are covered, that is where an internal or
hidden dynamic symbol is produced and where a local one is.
NB this change affects CRIS results where some symbols in the static
table produced in a final link are now converted from STV_HIDDEN to
STB_LOCAL. This happens whenever the `elf_backend_hide_symbol' handler
is called, so the affected symbols must have been chosen for entering
into the dynamic symbol table, except in these test cases no such symbol
table is produced. In fully linked binaries the static symbol table is
only used for debugging though, so such a change is fine.
References:
[1] "System V Application Binary Interface - DRAFT - 24 April 2001",
The Santa Cruz Operation, Inc., "Symbol Table",
<http://www.sco.com/developers/gabi/2001-04-24/ch4.symtab.html>
bfd/
PR ld/19908
* elflink.c (elf_link_add_object_symbols): Always turn hidden
and internal symbols which have a dynamic index into local
ones.
ld/
PR ld/19908
* testsuite/ld-cris/tls-e-20.d: Adjust for hidden symbol
handling fix.
* testsuite/ld-cris/tls-e-20a.d: Likewise.
* testsuite/ld-cris/tls-e-21.d: Likewise.
* testsuite/ld-cris/tls-e-23.d: Likewise.
* testsuite/ld-cris/tls-e-80.d: Likewise.
* testsuite/ld-cris/tls-gd-3h.d: Likewise.
* testsuite/ld-cris/tls-leie-19.d: Likewise.
* testsuite/ld-mips-elf/export-class-ref-lib.sd: New test.
* testsuite/ld-mips-elf/export-hidden-ref.sd: New test.
* testsuite/ld-mips-elf/export-internal-ref.sd: New test.
* testsuite/ld-mips-elf/export-protected-ref.sd: New test.
* testsuite/ld-mips-elf/export-class-ref-f0.s: New test source.
* testsuite/ld-mips-elf/export-class-ref-f1.s: New test source.
* testsuite/ld-mips-elf/export-class-ref-f2.s: New test source.
* testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.
2016-04-05 22:10:05 +08:00
|
|
|
0+88 g .tdata 0+4 x
|
* ld-cris/got7.s, ld-cris/init.s, ld-cris/pic-gc-72.d,
ld-cris/pic-gc-72.s, ld-cris/pic-gc-73.d, ld-cris/pic-gc-73.s,
ld-cris/tls-dso-x1x2-1.d, ld-cris/tls-dso-xz-1.d,
ld-cris/tls-dtprelm.s, ld-cris/tls-e-20.d, ld-cris/tls-e-20a.d,
ld-cris/tls-e-21.d, ld-cris/tls-e-22.d, ld-cris/tls-e-23.d,
ld-cris/tls-e-66.d, ld-cris/tls-err-20x.d, ld-cris/tls-err-24.d,
ld-cris/tls-err-25.d, ld-cris/tls-err-26.d, ld-cris/tls-err-27.d,
ld-cris/tls-err-28.d, ld-cris/tls-err-29.d, ld-cris/tls-err-31.d,
ld-cris/tls-err-33.d, ld-cris/tls-err-35.d, ld-cris/tls-err-37.d,
ld-cris/tls-err-39.d, ld-cris/tls-err-40.d, ld-cris/tls-err-41.d,
ld-cris/tls-err-43.d, ld-cris/tls-err-44.d, ld-cris/tls-err-45.d,
ld-cris/tls-err-47.d, ld-cris/tls-err-48.d, ld-cris/tls-err-49.d,
ld-cris/tls-err-51.d, ld-cris/tls-err-52.d, ld-cris/tls-err-53.d,
ld-cris/tls-err-55.d, ld-cris/tls-err-55.s, ld-cris/tls-err-56.d,
ld-cris/tls-err-56.s, ld-cris/tls-err-62.d, ld-cris/tls-err-62.s,
ld-cris/tls-err-65.d, ld-cris/tls-err-67.d, ld-cris/tls-gc-68.d,
ld-cris/tls-gc-69.d, ld-cris/tls-gc-70.d, ld-cris/tls-gc-71.d,
ld-cris/tls-gc-71.s, ld-cris/tls-gc-75.d, ld-cris/tls-gc-76.d,
ld-cris/tls-gc-76.s, ld-cris/tls-gd-1.d, ld-cris/tls-gd-1.s,
ld-cris/tls-gd-1h.d, ld-cris/tls-gd-2.d, ld-cris/tls-gd-2.s,
ld-cris/tls-gd-2h.d, ld-cris/tls-gd-3.d, ld-cris/tls-gd-3.s,
ld-cris/tls-gd-3h.d, ld-cris/tls-gdgotrelm.s, ld-cris/tls-global-74.d,
ld-cris/tls-gottprelm.s, ld-cris/tls-hx.s, ld-cris/tls-hx1x2.s,
ld-cris/tls-ie-10.d, ld-cris/tls-ie-10.s, ld-cris/tls-ie-11.d,
ld-cris/tls-ie-11.s, ld-cris/tls-ie-8.d, ld-cris/tls-ie-8.s,
ld-cris/tls-ie-9.d, ld-cris/tls-ie-9.s, ld-cris/tls-ld-4.d,
ld-cris/tls-ld-4.s, ld-cris/tls-ld-5.d, ld-cris/tls-ld-5.s,
ld-cris/tls-ld-6.d, ld-cris/tls-ld-6.s, ld-cris/tls-ld-7.d,
ld-cris/tls-ld-7.s, ld-cris/tls-ldgd-14.d, ld-cris/tls-ldgd-14.s,
ld-cris/tls-ldgd-15.d, ld-cris/tls-ldgd-15.s, ld-cris/tls-ldgde-14.d,
ld-cris/tls-ldgde-15.d, ld-cris/tls-ldgdex-14.d,
ld-cris/tls-ldgdex-15.d, ld-cris/tls-ldgdx-14.d,
ld-cris/tls-ldgdx-15.d, ld-cris/tls-le-12.d, ld-cris/tls-le-12.s,
ld-cris/tls-le-12s.d, ld-cris/tls-le-12s.s, ld-cris/tls-le-13.d,
ld-cris/tls-le-13.s, ld-cris/tls-le-13s.d, ld-cris/tls-le-13s.s,
ld-cris/tls-legd-16.d, ld-cris/tls-legd-16.s, ld-cris/tls-legd-17.d,
ld-cris/tls-legdx-16.d, ld-cris/tls-legdx-17.d, ld-cris/tls-leie-18.d,
ld-cris/tls-leie-19.d, ld-cris/tls-leie-19.s, ld-cris/tls-local-54.d,
ld-cris/tls-local-54.s, ld-cris/tls-local-57.d,
ld-cris/tls-local-57.s, ld-cris/tls-local-58.d,
ld-cris/tls-local-58.s, ld-cris/tls-local-59.d,
ld-cris/tls-local-59.s, ld-cris/tls-local-60.d,
ld-cris/tls-local-61.d, ld-cris/tls-local-63.d,
ld-cris/tls-local-64.d, ld-cris/tls-ok-30.d, ld-cris/tls-ok-32.d,
ld-cris/tls-ok-34.d, ld-cris/tls-ok-36.d, ld-cris/tls-tprelm.s,
ld-cris/tls-und-38.d, ld-cris/tls-und-42.d, ld-cris/tls-und-46.d,
ld-cris/tls-und-50.d, ld-cris/tls-x.s, ld-cris/tls-x1x2.s,
ld-cris/tls-z.s, ld-cris/tls128.s, ld-cris/tls128g.s: New tests.
2008-11-25 12:10:48 +08:00
|
|
|
#...
|
ELF/LD: Avoid producing hidden and internal dynamic symbols
Always turn hidden and internal symbols which have a dynamic index into
local ones. This is required by the the ELF gABI[1]:
"A hidden symbol contained in a relocatable object must be either
removed or converted to STB_LOCAL binding by the link-editor when the
relocatable object is included in an executable file or shared object."
"An internal symbol contained in a relocatable object must be either
removed or converted to STB_LOCAL binding by the link-editor when the
relocatable object is included in an executable file or shared object."
The ELF linker usually respects this requirement, however in the case
where a dynamic symbol has been preallocated due to a reference of the
default export class aka visibility from the object being linked, and
then merged with a hidden or internal symbol definition from within the
same object, then the original export class is carried over to the
output dynamic symbol table, because while merging the generic ELF
linker only converts affected dynamic symbols to local when they are
defined or referenced by the object being linked and a dynamic object
involved in the link both at a time.
The dynamic symbol produced confuses then the dynamic loader at the run
time -- the hidden or internal export class is ignored and the symbol
follows preemption rules as with the default export class.
In the MIPS target it happens when `mips_elf_record_global_got_symbol'
creates a dynamic symbol when a call relocation is encountered.
Additionally if the undefined symbol referred by such a relocation does
specify the intended export class, then a local dynamic symbol is
created instead, which is harmless and allowed, but useless. Normally
no local dynamic symbols are created, except for a single dummy one at
the beginning.
Correct the problem by removing the extra check for a dynamic symbol
being defined or referenced by the object being linked and a dynamic
object involved in the link both at a time. The test cases included
cover the internal and hidden symbol cases, as well as a protected
symbol for a reference, the handling of which is unchanged by this fix.
Both cases described above are covered, that is where an internal or
hidden dynamic symbol is produced and where a local one is.
NB this change affects CRIS results where some symbols in the static
table produced in a final link are now converted from STV_HIDDEN to
STB_LOCAL. This happens whenever the `elf_backend_hide_symbol' handler
is called, so the affected symbols must have been chosen for entering
into the dynamic symbol table, except in these test cases no such symbol
table is produced. In fully linked binaries the static symbol table is
only used for debugging though, so such a change is fine.
References:
[1] "System V Application Binary Interface - DRAFT - 24 April 2001",
The Santa Cruz Operation, Inc., "Symbol Table",
<http://www.sco.com/developers/gabi/2001-04-24/ch4.symtab.html>
bfd/
PR ld/19908
* elflink.c (elf_link_add_object_symbols): Always turn hidden
and internal symbols which have a dynamic index into local
ones.
ld/
PR ld/19908
* testsuite/ld-cris/tls-e-20.d: Adjust for hidden symbol
handling fix.
* testsuite/ld-cris/tls-e-20a.d: Likewise.
* testsuite/ld-cris/tls-e-21.d: Likewise.
* testsuite/ld-cris/tls-e-23.d: Likewise.
* testsuite/ld-cris/tls-e-80.d: Likewise.
* testsuite/ld-cris/tls-gd-3h.d: Likewise.
* testsuite/ld-cris/tls-leie-19.d: Likewise.
* testsuite/ld-mips-elf/export-class-ref-lib.sd: New test.
* testsuite/ld-mips-elf/export-hidden-ref.sd: New test.
* testsuite/ld-mips-elf/export-internal-ref.sd: New test.
* testsuite/ld-mips-elf/export-protected-ref.sd: New test.
* testsuite/ld-mips-elf/export-class-ref-f0.s: New test source.
* testsuite/ld-mips-elf/export-class-ref-f1.s: New test source.
* testsuite/ld-mips-elf/export-class-ref-f2.s: New test source.
* testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.
2016-04-05 22:10:05 +08:00
|
|
|
0+8c g .tdata 0+4 z
|
* ld-cris/got7.s, ld-cris/init.s, ld-cris/pic-gc-72.d,
ld-cris/pic-gc-72.s, ld-cris/pic-gc-73.d, ld-cris/pic-gc-73.s,
ld-cris/tls-dso-x1x2-1.d, ld-cris/tls-dso-xz-1.d,
ld-cris/tls-dtprelm.s, ld-cris/tls-e-20.d, ld-cris/tls-e-20a.d,
ld-cris/tls-e-21.d, ld-cris/tls-e-22.d, ld-cris/tls-e-23.d,
ld-cris/tls-e-66.d, ld-cris/tls-err-20x.d, ld-cris/tls-err-24.d,
ld-cris/tls-err-25.d, ld-cris/tls-err-26.d, ld-cris/tls-err-27.d,
ld-cris/tls-err-28.d, ld-cris/tls-err-29.d, ld-cris/tls-err-31.d,
ld-cris/tls-err-33.d, ld-cris/tls-err-35.d, ld-cris/tls-err-37.d,
ld-cris/tls-err-39.d, ld-cris/tls-err-40.d, ld-cris/tls-err-41.d,
ld-cris/tls-err-43.d, ld-cris/tls-err-44.d, ld-cris/tls-err-45.d,
ld-cris/tls-err-47.d, ld-cris/tls-err-48.d, ld-cris/tls-err-49.d,
ld-cris/tls-err-51.d, ld-cris/tls-err-52.d, ld-cris/tls-err-53.d,
ld-cris/tls-err-55.d, ld-cris/tls-err-55.s, ld-cris/tls-err-56.d,
ld-cris/tls-err-56.s, ld-cris/tls-err-62.d, ld-cris/tls-err-62.s,
ld-cris/tls-err-65.d, ld-cris/tls-err-67.d, ld-cris/tls-gc-68.d,
ld-cris/tls-gc-69.d, ld-cris/tls-gc-70.d, ld-cris/tls-gc-71.d,
ld-cris/tls-gc-71.s, ld-cris/tls-gc-75.d, ld-cris/tls-gc-76.d,
ld-cris/tls-gc-76.s, ld-cris/tls-gd-1.d, ld-cris/tls-gd-1.s,
ld-cris/tls-gd-1h.d, ld-cris/tls-gd-2.d, ld-cris/tls-gd-2.s,
ld-cris/tls-gd-2h.d, ld-cris/tls-gd-3.d, ld-cris/tls-gd-3.s,
ld-cris/tls-gd-3h.d, ld-cris/tls-gdgotrelm.s, ld-cris/tls-global-74.d,
ld-cris/tls-gottprelm.s, ld-cris/tls-hx.s, ld-cris/tls-hx1x2.s,
ld-cris/tls-ie-10.d, ld-cris/tls-ie-10.s, ld-cris/tls-ie-11.d,
ld-cris/tls-ie-11.s, ld-cris/tls-ie-8.d, ld-cris/tls-ie-8.s,
ld-cris/tls-ie-9.d, ld-cris/tls-ie-9.s, ld-cris/tls-ld-4.d,
ld-cris/tls-ld-4.s, ld-cris/tls-ld-5.d, ld-cris/tls-ld-5.s,
ld-cris/tls-ld-6.d, ld-cris/tls-ld-6.s, ld-cris/tls-ld-7.d,
ld-cris/tls-ld-7.s, ld-cris/tls-ldgd-14.d, ld-cris/tls-ldgd-14.s,
ld-cris/tls-ldgd-15.d, ld-cris/tls-ldgd-15.s, ld-cris/tls-ldgde-14.d,
ld-cris/tls-ldgde-15.d, ld-cris/tls-ldgdex-14.d,
ld-cris/tls-ldgdex-15.d, ld-cris/tls-ldgdx-14.d,
ld-cris/tls-ldgdx-15.d, ld-cris/tls-le-12.d, ld-cris/tls-le-12.s,
ld-cris/tls-le-12s.d, ld-cris/tls-le-12s.s, ld-cris/tls-le-13.d,
ld-cris/tls-le-13.s, ld-cris/tls-le-13s.d, ld-cris/tls-le-13s.s,
ld-cris/tls-legd-16.d, ld-cris/tls-legd-16.s, ld-cris/tls-legd-17.d,
ld-cris/tls-legdx-16.d, ld-cris/tls-legdx-17.d, ld-cris/tls-leie-18.d,
ld-cris/tls-leie-19.d, ld-cris/tls-leie-19.s, ld-cris/tls-local-54.d,
ld-cris/tls-local-54.s, ld-cris/tls-local-57.d,
ld-cris/tls-local-57.s, ld-cris/tls-local-58.d,
ld-cris/tls-local-58.s, ld-cris/tls-local-59.d,
ld-cris/tls-local-59.s, ld-cris/tls-local-60.d,
ld-cris/tls-local-61.d, ld-cris/tls-local-63.d,
ld-cris/tls-local-64.d, ld-cris/tls-ok-30.d, ld-cris/tls-ok-32.d,
ld-cris/tls-ok-34.d, ld-cris/tls-ok-36.d, ld-cris/tls-tprelm.s,
ld-cris/tls-und-38.d, ld-cris/tls-und-42.d, ld-cris/tls-und-46.d,
ld-cris/tls-und-50.d, ld-cris/tls-x.s, ld-cris/tls-x1x2.s,
ld-cris/tls-z.s, ld-cris/tls128.s, ld-cris/tls128g.s: New tests.
2008-11-25 12:10:48 +08:00
|
|
|
#...
|
|
|
|
Contents of section \.text:
|
|
|
|
#...
|
|
|
|
Contents of section \.got:
|
* ld-cris/tls-e-20.d, ld-cris/tls-e-20a.d, ld-cris/tls-e-21.d,
ld-cris/tls-e-23.d, ld-cris/tls-e-66.d, ld-cris/tls-gd-3.d,
ld-cris/tls-gd-3h.d, ld-cris/tls-global-74.d,
ld-cris/tls-ie-8e1.d, ld-cris/tls-ldgde-14.d,
ld-cris/tls-ldgde-15.d, ld-cris/tls-le-12.d, ld-cris/tls-le-13.d,
ld-cris/tls-le-13s.d, ld-cris/tls-legd-16.d,
ld-cris/tls-legd-17.d, ld-cris/tls-legdx-16.d,
ld-cris/tls-legdx-17.d, ld-cris/tls-leie-18.d,
ld-cris/tls-leie-19.d, ld-cris/tls-local-57.d,
ld-cris/tls-local-58.d, ld-cris/tls-local-59.d: Adjust for
relocation value now offset by negative program TLS block size.
* ld-cris/tls-le-12s.d: Ditto. Move 128-byte tls-data to last.
Adjust accordingly.
* ld-cris/tls-le-12s.s: Use movs, not movu, for sign-extended
always-negative relocation.
* ld-cris/tls-tprelm.s: Move filler data to after symbol for
tested relocation.
* ld-cris/tls-ok-36.d: Adjust accordingly.
2009-01-07 11:27:11 +08:00
|
|
|
82144 0+ 0+ 0+ f4ffffff .*
|
|
|
|
82154 f0ffffff .*
|
* ld-cris/got7.s, ld-cris/init.s, ld-cris/pic-gc-72.d,
ld-cris/pic-gc-72.s, ld-cris/pic-gc-73.d, ld-cris/pic-gc-73.s,
ld-cris/tls-dso-x1x2-1.d, ld-cris/tls-dso-xz-1.d,
ld-cris/tls-dtprelm.s, ld-cris/tls-e-20.d, ld-cris/tls-e-20a.d,
ld-cris/tls-e-21.d, ld-cris/tls-e-22.d, ld-cris/tls-e-23.d,
ld-cris/tls-e-66.d, ld-cris/tls-err-20x.d, ld-cris/tls-err-24.d,
ld-cris/tls-err-25.d, ld-cris/tls-err-26.d, ld-cris/tls-err-27.d,
ld-cris/tls-err-28.d, ld-cris/tls-err-29.d, ld-cris/tls-err-31.d,
ld-cris/tls-err-33.d, ld-cris/tls-err-35.d, ld-cris/tls-err-37.d,
ld-cris/tls-err-39.d, ld-cris/tls-err-40.d, ld-cris/tls-err-41.d,
ld-cris/tls-err-43.d, ld-cris/tls-err-44.d, ld-cris/tls-err-45.d,
ld-cris/tls-err-47.d, ld-cris/tls-err-48.d, ld-cris/tls-err-49.d,
ld-cris/tls-err-51.d, ld-cris/tls-err-52.d, ld-cris/tls-err-53.d,
ld-cris/tls-err-55.d, ld-cris/tls-err-55.s, ld-cris/tls-err-56.d,
ld-cris/tls-err-56.s, ld-cris/tls-err-62.d, ld-cris/tls-err-62.s,
ld-cris/tls-err-65.d, ld-cris/tls-err-67.d, ld-cris/tls-gc-68.d,
ld-cris/tls-gc-69.d, ld-cris/tls-gc-70.d, ld-cris/tls-gc-71.d,
ld-cris/tls-gc-71.s, ld-cris/tls-gc-75.d, ld-cris/tls-gc-76.d,
ld-cris/tls-gc-76.s, ld-cris/tls-gd-1.d, ld-cris/tls-gd-1.s,
ld-cris/tls-gd-1h.d, ld-cris/tls-gd-2.d, ld-cris/tls-gd-2.s,
ld-cris/tls-gd-2h.d, ld-cris/tls-gd-3.d, ld-cris/tls-gd-3.s,
ld-cris/tls-gd-3h.d, ld-cris/tls-gdgotrelm.s, ld-cris/tls-global-74.d,
ld-cris/tls-gottprelm.s, ld-cris/tls-hx.s, ld-cris/tls-hx1x2.s,
ld-cris/tls-ie-10.d, ld-cris/tls-ie-10.s, ld-cris/tls-ie-11.d,
ld-cris/tls-ie-11.s, ld-cris/tls-ie-8.d, ld-cris/tls-ie-8.s,
ld-cris/tls-ie-9.d, ld-cris/tls-ie-9.s, ld-cris/tls-ld-4.d,
ld-cris/tls-ld-4.s, ld-cris/tls-ld-5.d, ld-cris/tls-ld-5.s,
ld-cris/tls-ld-6.d, ld-cris/tls-ld-6.s, ld-cris/tls-ld-7.d,
ld-cris/tls-ld-7.s, ld-cris/tls-ldgd-14.d, ld-cris/tls-ldgd-14.s,
ld-cris/tls-ldgd-15.d, ld-cris/tls-ldgd-15.s, ld-cris/tls-ldgde-14.d,
ld-cris/tls-ldgde-15.d, ld-cris/tls-ldgdex-14.d,
ld-cris/tls-ldgdex-15.d, ld-cris/tls-ldgdx-14.d,
ld-cris/tls-ldgdx-15.d, ld-cris/tls-le-12.d, ld-cris/tls-le-12.s,
ld-cris/tls-le-12s.d, ld-cris/tls-le-12s.s, ld-cris/tls-le-13.d,
ld-cris/tls-le-13.s, ld-cris/tls-le-13s.d, ld-cris/tls-le-13s.s,
ld-cris/tls-legd-16.d, ld-cris/tls-legd-16.s, ld-cris/tls-legd-17.d,
ld-cris/tls-legdx-16.d, ld-cris/tls-legdx-17.d, ld-cris/tls-leie-18.d,
ld-cris/tls-leie-19.d, ld-cris/tls-leie-19.s, ld-cris/tls-local-54.d,
ld-cris/tls-local-54.s, ld-cris/tls-local-57.d,
ld-cris/tls-local-57.s, ld-cris/tls-local-58.d,
ld-cris/tls-local-58.s, ld-cris/tls-local-59.d,
ld-cris/tls-local-59.s, ld-cris/tls-local-60.d,
ld-cris/tls-local-61.d, ld-cris/tls-local-63.d,
ld-cris/tls-local-64.d, ld-cris/tls-ok-30.d, ld-cris/tls-ok-32.d,
ld-cris/tls-ok-34.d, ld-cris/tls-ok-36.d, ld-cris/tls-tprelm.s,
ld-cris/tls-und-38.d, ld-cris/tls-und-42.d, ld-cris/tls-und-46.d,
ld-cris/tls-und-50.d, ld-cris/tls-x.s, ld-cris/tls-x1x2.s,
ld-cris/tls-z.s, ld-cris/tls128.s, ld-cris/tls128g.s: New tests.
2008-11-25 12:10:48 +08:00
|
|
|
|
|
|
|
Disassembly of section \.text:
|
|
|
|
|
|
|
|
00080094 <_start>:
|
|
|
|
80094: 41b2 moveq 1,\$r11
|
|
|
|
#...
|
|
|
|
00080098 <tlsfn19>:
|
* ld-cris/tls-e-20.d, ld-cris/tls-e-20a.d, ld-cris/tls-e-21.d,
ld-cris/tls-e-23.d, ld-cris/tls-e-66.d, ld-cris/tls-gd-3.d,
ld-cris/tls-gd-3h.d, ld-cris/tls-global-74.d,
ld-cris/tls-ie-8e1.d, ld-cris/tls-ldgde-14.d,
ld-cris/tls-ldgde-15.d, ld-cris/tls-le-12.d, ld-cris/tls-le-13.d,
ld-cris/tls-le-13s.d, ld-cris/tls-legd-16.d,
ld-cris/tls-legd-17.d, ld-cris/tls-legdx-16.d,
ld-cris/tls-legdx-17.d, ld-cris/tls-leie-18.d,
ld-cris/tls-leie-19.d, ld-cris/tls-local-57.d,
ld-cris/tls-local-58.d, ld-cris/tls-local-59.d: Adjust for
relocation value now offset by negative program TLS block size.
* ld-cris/tls-le-12s.d: Ditto. Move 128-byte tls-data to last.
Adjust accordingly.
* ld-cris/tls-le-12s.s: Use movs, not movu, for sign-extended
always-negative relocation.
* ld-cris/tls-tprelm.s: Move filler data to after symbol for
tested relocation.
* ld-cris/tls-ok-36.d: Adjust accordingly.
2009-01-07 11:27:11 +08:00
|
|
|
80098: 6fae f8ff ffff move.d 0xfffffff8,\$r10
|
* ld-cris/got7.s, ld-cris/init.s, ld-cris/pic-gc-72.d,
ld-cris/pic-gc-72.s, ld-cris/pic-gc-73.d, ld-cris/pic-gc-73.s,
ld-cris/tls-dso-x1x2-1.d, ld-cris/tls-dso-xz-1.d,
ld-cris/tls-dtprelm.s, ld-cris/tls-e-20.d, ld-cris/tls-e-20a.d,
ld-cris/tls-e-21.d, ld-cris/tls-e-22.d, ld-cris/tls-e-23.d,
ld-cris/tls-e-66.d, ld-cris/tls-err-20x.d, ld-cris/tls-err-24.d,
ld-cris/tls-err-25.d, ld-cris/tls-err-26.d, ld-cris/tls-err-27.d,
ld-cris/tls-err-28.d, ld-cris/tls-err-29.d, ld-cris/tls-err-31.d,
ld-cris/tls-err-33.d, ld-cris/tls-err-35.d, ld-cris/tls-err-37.d,
ld-cris/tls-err-39.d, ld-cris/tls-err-40.d, ld-cris/tls-err-41.d,
ld-cris/tls-err-43.d, ld-cris/tls-err-44.d, ld-cris/tls-err-45.d,
ld-cris/tls-err-47.d, ld-cris/tls-err-48.d, ld-cris/tls-err-49.d,
ld-cris/tls-err-51.d, ld-cris/tls-err-52.d, ld-cris/tls-err-53.d,
ld-cris/tls-err-55.d, ld-cris/tls-err-55.s, ld-cris/tls-err-56.d,
ld-cris/tls-err-56.s, ld-cris/tls-err-62.d, ld-cris/tls-err-62.s,
ld-cris/tls-err-65.d, ld-cris/tls-err-67.d, ld-cris/tls-gc-68.d,
ld-cris/tls-gc-69.d, ld-cris/tls-gc-70.d, ld-cris/tls-gc-71.d,
ld-cris/tls-gc-71.s, ld-cris/tls-gc-75.d, ld-cris/tls-gc-76.d,
ld-cris/tls-gc-76.s, ld-cris/tls-gd-1.d, ld-cris/tls-gd-1.s,
ld-cris/tls-gd-1h.d, ld-cris/tls-gd-2.d, ld-cris/tls-gd-2.s,
ld-cris/tls-gd-2h.d, ld-cris/tls-gd-3.d, ld-cris/tls-gd-3.s,
ld-cris/tls-gd-3h.d, ld-cris/tls-gdgotrelm.s, ld-cris/tls-global-74.d,
ld-cris/tls-gottprelm.s, ld-cris/tls-hx.s, ld-cris/tls-hx1x2.s,
ld-cris/tls-ie-10.d, ld-cris/tls-ie-10.s, ld-cris/tls-ie-11.d,
ld-cris/tls-ie-11.s, ld-cris/tls-ie-8.d, ld-cris/tls-ie-8.s,
ld-cris/tls-ie-9.d, ld-cris/tls-ie-9.s, ld-cris/tls-ld-4.d,
ld-cris/tls-ld-4.s, ld-cris/tls-ld-5.d, ld-cris/tls-ld-5.s,
ld-cris/tls-ld-6.d, ld-cris/tls-ld-6.s, ld-cris/tls-ld-7.d,
ld-cris/tls-ld-7.s, ld-cris/tls-ldgd-14.d, ld-cris/tls-ldgd-14.s,
ld-cris/tls-ldgd-15.d, ld-cris/tls-ldgd-15.s, ld-cris/tls-ldgde-14.d,
ld-cris/tls-ldgde-15.d, ld-cris/tls-ldgdex-14.d,
ld-cris/tls-ldgdex-15.d, ld-cris/tls-ldgdx-14.d,
ld-cris/tls-ldgdx-15.d, ld-cris/tls-le-12.d, ld-cris/tls-le-12.s,
ld-cris/tls-le-12s.d, ld-cris/tls-le-12s.s, ld-cris/tls-le-13.d,
ld-cris/tls-le-13.s, ld-cris/tls-le-13s.d, ld-cris/tls-le-13s.s,
ld-cris/tls-legd-16.d, ld-cris/tls-legd-16.s, ld-cris/tls-legd-17.d,
ld-cris/tls-legdx-16.d, ld-cris/tls-legdx-17.d, ld-cris/tls-leie-18.d,
ld-cris/tls-leie-19.d, ld-cris/tls-leie-19.s, ld-cris/tls-local-54.d,
ld-cris/tls-local-54.s, ld-cris/tls-local-57.d,
ld-cris/tls-local-57.s, ld-cris/tls-local-58.d,
ld-cris/tls-local-58.s, ld-cris/tls-local-59.d,
ld-cris/tls-local-59.s, ld-cris/tls-local-60.d,
ld-cris/tls-local-61.d, ld-cris/tls-local-63.d,
ld-cris/tls-local-64.d, ld-cris/tls-ok-30.d, ld-cris/tls-ok-32.d,
ld-cris/tls-ok-34.d, ld-cris/tls-ok-36.d, ld-cris/tls-tprelm.s,
ld-cris/tls-und-38.d, ld-cris/tls-und-42.d, ld-cris/tls-und-46.d,
ld-cris/tls-und-50.d, ld-cris/tls-x.s, ld-cris/tls-x1x2.s,
ld-cris/tls-z.s, ld-cris/tls128.s, ld-cris/tls128g.s: New tests.
2008-11-25 12:10:48 +08:00
|
|
|
#...
|
|
|
|
|
|
|
|
000800a0 <tlsfn12>:
|
* ld-cris/tls-e-20.d, ld-cris/tls-e-20a.d, ld-cris/tls-e-21.d,
ld-cris/tls-e-23.d, ld-cris/tls-e-66.d, ld-cris/tls-gd-3.d,
ld-cris/tls-gd-3h.d, ld-cris/tls-global-74.d,
ld-cris/tls-ie-8e1.d, ld-cris/tls-ldgde-14.d,
ld-cris/tls-ldgde-15.d, ld-cris/tls-le-12.d, ld-cris/tls-le-13.d,
ld-cris/tls-le-13s.d, ld-cris/tls-legd-16.d,
ld-cris/tls-legd-17.d, ld-cris/tls-legdx-16.d,
ld-cris/tls-legdx-17.d, ld-cris/tls-leie-18.d,
ld-cris/tls-leie-19.d, ld-cris/tls-local-57.d,
ld-cris/tls-local-58.d, ld-cris/tls-local-59.d: Adjust for
relocation value now offset by negative program TLS block size.
* ld-cris/tls-le-12s.d: Ditto. Move 128-byte tls-data to last.
Adjust accordingly.
* ld-cris/tls-le-12s.s: Use movs, not movu, for sign-extended
always-negative relocation.
* ld-cris/tls-tprelm.s: Move filler data to after symbol for
tested relocation.
* ld-cris/tls-ok-36.d: Adjust accordingly.
2009-01-07 11:27:11 +08:00
|
|
|
800a0: 6fae fcff ffff move.d 0xfffffffc,\$r10
|
* ld-cris/got7.s, ld-cris/init.s, ld-cris/pic-gc-72.d,
ld-cris/pic-gc-72.s, ld-cris/pic-gc-73.d, ld-cris/pic-gc-73.s,
ld-cris/tls-dso-x1x2-1.d, ld-cris/tls-dso-xz-1.d,
ld-cris/tls-dtprelm.s, ld-cris/tls-e-20.d, ld-cris/tls-e-20a.d,
ld-cris/tls-e-21.d, ld-cris/tls-e-22.d, ld-cris/tls-e-23.d,
ld-cris/tls-e-66.d, ld-cris/tls-err-20x.d, ld-cris/tls-err-24.d,
ld-cris/tls-err-25.d, ld-cris/tls-err-26.d, ld-cris/tls-err-27.d,
ld-cris/tls-err-28.d, ld-cris/tls-err-29.d, ld-cris/tls-err-31.d,
ld-cris/tls-err-33.d, ld-cris/tls-err-35.d, ld-cris/tls-err-37.d,
ld-cris/tls-err-39.d, ld-cris/tls-err-40.d, ld-cris/tls-err-41.d,
ld-cris/tls-err-43.d, ld-cris/tls-err-44.d, ld-cris/tls-err-45.d,
ld-cris/tls-err-47.d, ld-cris/tls-err-48.d, ld-cris/tls-err-49.d,
ld-cris/tls-err-51.d, ld-cris/tls-err-52.d, ld-cris/tls-err-53.d,
ld-cris/tls-err-55.d, ld-cris/tls-err-55.s, ld-cris/tls-err-56.d,
ld-cris/tls-err-56.s, ld-cris/tls-err-62.d, ld-cris/tls-err-62.s,
ld-cris/tls-err-65.d, ld-cris/tls-err-67.d, ld-cris/tls-gc-68.d,
ld-cris/tls-gc-69.d, ld-cris/tls-gc-70.d, ld-cris/tls-gc-71.d,
ld-cris/tls-gc-71.s, ld-cris/tls-gc-75.d, ld-cris/tls-gc-76.d,
ld-cris/tls-gc-76.s, ld-cris/tls-gd-1.d, ld-cris/tls-gd-1.s,
ld-cris/tls-gd-1h.d, ld-cris/tls-gd-2.d, ld-cris/tls-gd-2.s,
ld-cris/tls-gd-2h.d, ld-cris/tls-gd-3.d, ld-cris/tls-gd-3.s,
ld-cris/tls-gd-3h.d, ld-cris/tls-gdgotrelm.s, ld-cris/tls-global-74.d,
ld-cris/tls-gottprelm.s, ld-cris/tls-hx.s, ld-cris/tls-hx1x2.s,
ld-cris/tls-ie-10.d, ld-cris/tls-ie-10.s, ld-cris/tls-ie-11.d,
ld-cris/tls-ie-11.s, ld-cris/tls-ie-8.d, ld-cris/tls-ie-8.s,
ld-cris/tls-ie-9.d, ld-cris/tls-ie-9.s, ld-cris/tls-ld-4.d,
ld-cris/tls-ld-4.s, ld-cris/tls-ld-5.d, ld-cris/tls-ld-5.s,
ld-cris/tls-ld-6.d, ld-cris/tls-ld-6.s, ld-cris/tls-ld-7.d,
ld-cris/tls-ld-7.s, ld-cris/tls-ldgd-14.d, ld-cris/tls-ldgd-14.s,
ld-cris/tls-ldgd-15.d, ld-cris/tls-ldgd-15.s, ld-cris/tls-ldgde-14.d,
ld-cris/tls-ldgde-15.d, ld-cris/tls-ldgdex-14.d,
ld-cris/tls-ldgdex-15.d, ld-cris/tls-ldgdx-14.d,
ld-cris/tls-ldgdx-15.d, ld-cris/tls-le-12.d, ld-cris/tls-le-12.s,
ld-cris/tls-le-12s.d, ld-cris/tls-le-12s.s, ld-cris/tls-le-13.d,
ld-cris/tls-le-13.s, ld-cris/tls-le-13s.d, ld-cris/tls-le-13s.s,
ld-cris/tls-legd-16.d, ld-cris/tls-legd-16.s, ld-cris/tls-legd-17.d,
ld-cris/tls-legdx-16.d, ld-cris/tls-legdx-17.d, ld-cris/tls-leie-18.d,
ld-cris/tls-leie-19.d, ld-cris/tls-leie-19.s, ld-cris/tls-local-54.d,
ld-cris/tls-local-54.s, ld-cris/tls-local-57.d,
ld-cris/tls-local-57.s, ld-cris/tls-local-58.d,
ld-cris/tls-local-58.s, ld-cris/tls-local-59.d,
ld-cris/tls-local-59.s, ld-cris/tls-local-60.d,
ld-cris/tls-local-61.d, ld-cris/tls-local-63.d,
ld-cris/tls-local-64.d, ld-cris/tls-ok-30.d, ld-cris/tls-ok-32.d,
ld-cris/tls-ok-34.d, ld-cris/tls-ok-36.d, ld-cris/tls-tprelm.s,
ld-cris/tls-und-38.d, ld-cris/tls-und-42.d, ld-cris/tls-und-46.d,
ld-cris/tls-und-50.d, ld-cris/tls-x.s, ld-cris/tls-x1x2.s,
ld-cris/tls-z.s, ld-cris/tls128.s, ld-cris/tls128g.s: New tests.
2008-11-25 12:10:48 +08:00
|
|
|
#...
|
|
|
|
|
|
|
|
000800a8 <tlsdsofn>:
|
|
|
|
800a8: 6fae 1000 0000 move.d 10 <tls128\+0x10>,\$r10
|
|
|
|
800ae: 6fbe 0c00 0000 move.d c <tls128\+0xc>,\$r11
|