include/elf/
* tic6x.h (R_C6000_JUMP_SPLOT, R_C6000_EHTYPE, R_C6000_PCR_H16, R_C6000_PCR_L16): New relocs. (SHN_TIC6X_SCOMMON): Define. bfd/ * elf32-tic6x.h (struct elf32_tic6x_params): New. (elf32_tic6x_setup): Declare. * elf32-tic6x.c: Include <limits.h>. (ELF_DYNAMIC_LINKER, DEFAULT_STACK_SIZE, PLT_ENTRY_SIZE): Define. (struct elf32_tic6x_link_hash_table, struct elf32_link_hash_entry): New structures. (elf32_tic6x_link_hash_table, is_tic6x_elf): New macros. (tic6x_elf_scom_section, tic6x_elf_scom_symbol, tic6x_elf_scom_symbol_ptr): New static variables. (elf32_tic6x_howto_table, elf32_tic6x_howto_table_rel, elf32_tic6x_reloc_map): Add R_C6000_JUMP_SLOT, R_C6000_EHTYPE, R_C6000_PCR_H16 and R_C6000_PCR_L16. (elf32_tic6x_link_hash_newfunc, elf32_tic6x_link_hash_table_create, elf32_tic6x_link_hash_table_free, elf32_tic6x_setup, elf32_tic6x_using_dsbt, elf32_tic6x_install_rela, elf32_tic6x_create_dynamic_sections, elf32_tic6x_make_got_dynreloc, elf32_tic6x_finish_dynamic_symbol, elf32_tic6x_gc_sweep_hook, elf32_tic6x_adjust_dynamic_symbol): New static functions. (elf32_tic6x_relocate_section): For R_C6000_PCR_S21, convert branches to weak symbols as required by the ABI. Handle GOT and DSBT_INDEX relocs, and copy relocs to the output file as needed when generating DSBT output. (elf32_tic6x_check_relocs, elf32_tic6x_add_symbol_hook, elf32_tic6x_symbol_processing, elf32_tic6x_section_from_bfd_section, elf32_tic6x_allocate_dynrelocs, elf32_tic6x_size_dynamic_sections, elf32_tic6x_always_size_sections, elf32_tic6x_modify_program_headers, elf32_tic6x_finish_dynamic_sections, elf32_tic6x_plt_sym_val, elf32_tic6x_copy_private_data, elf32_tic6x_link_omit_section_dynsym): New static functions. (ELF_MAXPAGESIZE): Define to 0x1000. (bfd_elf32_bfd_copy_private_bfd_data, bfd_elf32_bfd_link_hash_table_create, bfd_elf32_bfd_link_hash_table_free, elf_backend_can_refcount, elf_backend_want_got_plt, elf_backend_want_dynbss, elf_backend_plt_readonly, elf_backend_got_header_size, elf_backend_gc_sweep_hook, elf_backend_modify_program_headers, elf_backend_create_dynamic_sections, elf_backend_adjust_dynamic_symbol, elf_backend_check_relocs, elf_backend_add_symbol_hook, elf_backend_symbol_processing, elf_backend_link_output_symbol_hook, elf_backend_section_from_bfd_section, elf_backend_finish_dynamic_symbol, elf_backend_always_size_sections, elf32_tic6x_size_dynamic_sections, elf_backend_finish_dynamic_sections, elf_backend_omit_section_dynsym, elf_backend_plt_sym_val): Define. * bfd/reloc.c (BFD_RELOC_C6000_JUMP_SLOT, BFD_RELOC_C6000_EHTYPE, BFD_RELOC_C6000_PCR_H16, BFD_RELOC_C6000_PCR_S16): Add. * bfd/bfd-in2.h: Regenerate. * bfd/libbfd.h: Regenerate. * config.bfd: Accept tic6x-*-* instead of tic6x-*-elf. gas/ * config/tc-tic6x.c (sbss_section, scom_section, scom_symbol): New static variables. (md_begin): Initialize them. (s_tic6x_scomm): New static function. (md_pseudo_table): Add "scomm". (tc_gen_reloc): Really undo all adjustments made by bfd_install_relocation. * doc/c-tic6x.texi: Document the .scomm directive. gas/testsuite/ * gas/tic6x/scomm-directive-1.s: New test. * gas/tic6x/scomm-directive-1.d: New test. * gas/tic6x/scomm-directive-2.s: New test. * gas/tic6x/scomm-directive-2.d: New test. * gas/tic6x/scomm-directive-3.s: New test. * gas/tic6x/scomm-directive-3.d: New test. * gas/tic6x/scomm-directive-4.s: New test. * gas/tic6x/scomm-directive-4.d: New test. * gas/tic6x/scomm-directive-5.s: New test. * gas/tic6x/scomm-directive-5.d: New test. * gas/tic6x/scomm-directive-6.s: New test. * gas/tic6x/scomm-directive-6.d: New test. * gas/tic6x/scomm-directive-7.s: New test. * gas/tic6x/scomm-directive-7.d: New test. * gas/tic6x/scomm-directive-8.s: New test. * gas/tic6x/scomm-directive-8.d: New test. ld/ * emulparams/elf32_tic6x_le.sh (BIG_OUTPUT_FORMAT, EXTRA_EM_FILE, GENERATE_SHLIB_SCRIPT): New defines. (TEXT_START_ADDR): Define differently depending on target. (.got): Redefine to include "*(.dsbt)". (SDATA_START_SYMBOLS): Remove, replace with (OTHER_GOT_SYMBOLS): New. (OTHER_BSS_SECTIONS): Define only for ELF targets. * emultempl/tic6xdsbt.em: New file. * gen-doc.texi: Set C6X. * ld.texinfo: Likewise. (Options specific to C6X uClinux targets): New section. binutils/ * readelf.c (get_symbol_index_type): Handle SCOM for TIC6X. (dump_relocations): Likewise. binutils/testsuite/ * lib/binutils-common.exp (is_elf_format): Accept tic6x*-*-uclinux*. ld/testsuite/ * ld-scripts/crossref.exp: Add CFLAGS for tic6x*-*-*. * ld-elf/sec-to-seg.exp: Remove tic6x from list of targets defining pagesize to 1. * ld-tic6x/tic6x.exp: Add support for DSBT shared library/executable linking tests. * ld-tic6x/dsbt.ld: New linker script. * ld-tic6x/dsbt-be.ld: New linker script. * ld-tic6x/dsbt-overflow.ld: New linker script. * ld-tic6x/dsbt-inrange.ld: New linker script. * ld-tic6x/shlib-1.s: New test. * ld-tic6x/shlib-2.s: New test. * ld-tic6x/shlib-app-1r.s: New test. * ld-tic6x/shlib-app-1.s: New test. * ld-tic6x/shlib-1.sd: New test. * ld-tic6x/shlib-1.dd: New test. * ld-tic6x/shlib-app-1.rd: New test. * ld-tic6x/shlib-app-1rb.rd: New test. * ld-tic6x/shlib-app-1.sd: New test. * ld-tic6x/static-app-1rb.od: New test. * ld-tic6x/shlib-app-1.dd: New test. * ld-tic6x/shlib-app-1rb.sd: New test. * ld-tic6x/static-app-1b.od: New test. * ld-tic6x/static-app-1r.od: New test. * ld-tic6x/shlib-1rb.rd: New test. * ld-tic6x/shlib-app-1rb.dd: New test. * ld-tic6x/shlib-1rb.sd: New test. * ld-tic6x/shlib-1rb.dd: New test. * ld-tic6x/shlib-app-1b.od: New test. * ld-tic6x/tic6x.exp: New test. * ld-tic6x/static-app-1rb.rd: New test. * ld-tic6x/shlib-app-1r.od: New test. * ld-tic6x/static-app-1.od: New test. * ld-tic6x/static-app-1b.rd: New test. * ld-tic6x/static-app-1r.rd: New test. * ld-tic6x/static-app-1rb.sd: New test. * ld-tic6x/static-app-1b.sd: New test. * ld-tic6x/static-app-1rb.dd: New test. * ld-tic6x/static-app-1r.sd: New test. * ld-tic6x/static-app-1b.dd: New test. * ld-tic6x/shlib-1b.rd: New test. * ld-tic6x/static-app-1r.dd: New test. * ld-tic6x/shlib-app-1b.rd: New test. * ld-tic6x/shlib-1r.rd: New test. * ld-tic6x/shlib-app-1r.rd: New test. * ld-tic6x/shlib-1b.sd: New test. * ld-tic6x/static-app-1.rd: New test. * ld-tic6x/shlib-app-1b.sd: New test. * ld-tic6x/shlib-1r.sd: New test. * ld-tic6x/shlib-1b.dd: New test. * ld-tic6x/shlib-app-1r.sd: New test. * ld-tic6x/shlib-app-1b.dd: New test. * ld-tic6x/shlib-1r.dd: New test. * ld-tic6x/static-app-1.sd: New test. * ld-tic6x/shlib-app-1r.dd: New test. * ld-tic6x/static-app-1.dd: New test. * ld-tic6x/shlib-noindex.rd: New test. * ld-tic6x/shlib-noindex.dd: New test. * ld-tic6x/shlib-noindex.sd: New test. * ld-tic6x/got-reloc-local-1.s: New test. * ld-tic6x/got-reloc-local-2.s: New test. * ld-tic6x/got-reloc-local-r.d: New test. * ld-tic6x/got-reloc-global.s: New test. * ld-tic6x/got-reloc-global-addend-1.d: New test. * ld-tic6x/got-reloc-global-addend-1.s: New test. * ld-tic6x/got-reloc-global-addend-2.d: New test. * ld-tic6x/got-reloc-inrange.d: New test. * ld-tic6x/got-reloc-overflow.d: New test. * ld-tic6x/got-reloc-global-addend-2.s: New test. * ld-tic6x/dsbt-index-error.d: New test. * ld-tic6x/dsbt-index.d: New test. * ld-tic6x/dsbt-index.s: New test. * ld-tic6x/shlib-app-1.od: New test. * ld-tic6x/shlib-app-1rb.od: New test. * ld-tic6x/shlib-1.rd: New test. * ld-tic6x/weak.d: New test. * ld-tic6x/weak-be.d: New test. * ld-tic6x/weak.s: New test. * ld-tic6x/weak-data.d: New test. * ld-tic6x/common.d: New test. * ld-tic6x/common.ld: New test. * ld-tic6x/common.s: New test.
This commit is contained in:
parent
53dd76d35f
commit
ac14530735
@ -1,3 +1,55 @@
|
||||
2011-03-31 Bernd Schmidt <bernds@codesourcery.com>
|
||||
|
||||
* elf32-tic6x.h (struct elf32_tic6x_params): New.
|
||||
(elf32_tic6x_setup): Declare.
|
||||
* elf32-tic6x.c: Include <limits.h>.
|
||||
(ELF_DYNAMIC_LINKER, DEFAULT_STACK_SIZE, PLT_ENTRY_SIZE): Define.
|
||||
(struct elf32_tic6x_link_hash_table, struct elf32_link_hash_entry):
|
||||
New structures.
|
||||
(elf32_tic6x_link_hash_table, is_tic6x_elf): New macros.
|
||||
(tic6x_elf_scom_section, tic6x_elf_scom_symbol,
|
||||
tic6x_elf_scom_symbol_ptr): New static variables.
|
||||
(elf32_tic6x_howto_table, elf32_tic6x_howto_table_rel,
|
||||
elf32_tic6x_reloc_map): Add R_C6000_JUMP_SLOT, R_C6000_EHTYPE,
|
||||
R_C6000_PCR_H16 and R_C6000_PCR_L16.
|
||||
(elf32_tic6x_link_hash_newfunc, elf32_tic6x_link_hash_table_create,
|
||||
elf32_tic6x_link_hash_table_free, elf32_tic6x_setup,
|
||||
elf32_tic6x_using_dsbt, elf32_tic6x_install_rela,
|
||||
elf32_tic6x_create_dynamic_sections, elf32_tic6x_make_got_dynreloc,
|
||||
elf32_tic6x_finish_dynamic_symbol, elf32_tic6x_gc_sweep_hook,
|
||||
elf32_tic6x_adjust_dynamic_symbol): New static functions.
|
||||
(elf32_tic6x_relocate_section): For R_C6000_PCR_S21, convert branches
|
||||
to weak symbols as required by the ABI.
|
||||
Handle GOT and DSBT_INDEX relocs, and copy relocs to the output file
|
||||
as needed when generating DSBT output.
|
||||
(elf32_tic6x_check_relocs, elf32_tic6x_add_symbol_hook,
|
||||
elf32_tic6x_symbol_processing, elf32_tic6x_section_from_bfd_section,
|
||||
elf32_tic6x_allocate_dynrelocs, elf32_tic6x_size_dynamic_sections,
|
||||
elf32_tic6x_always_size_sections, elf32_tic6x_modify_program_headers,
|
||||
elf32_tic6x_finish_dynamic_sections, elf32_tic6x_plt_sym_val,
|
||||
elf32_tic6x_copy_private_data, elf32_tic6x_link_omit_section_dynsym):
|
||||
New static functions.
|
||||
(ELF_MAXPAGESIZE): Define to 0x1000.
|
||||
(bfd_elf32_bfd_copy_private_bfd_data,
|
||||
bfd_elf32_bfd_link_hash_table_create,
|
||||
bfd_elf32_bfd_link_hash_table_free, elf_backend_can_refcount,
|
||||
elf_backend_want_got_plt, elf_backend_want_dynbss,
|
||||
elf_backend_plt_readonly, elf_backend_got_header_size,
|
||||
elf_backend_gc_sweep_hook, elf_backend_modify_program_headers,
|
||||
elf_backend_create_dynamic_sections, elf_backend_adjust_dynamic_symbol,
|
||||
elf_backend_check_relocs, elf_backend_add_symbol_hook,
|
||||
elf_backend_symbol_processing, elf_backend_link_output_symbol_hook,
|
||||
elf_backend_section_from_bfd_section,
|
||||
elf_backend_finish_dynamic_symbol, elf_backend_always_size_sections,
|
||||
elf32_tic6x_size_dynamic_sections, elf_backend_finish_dynamic_sections,
|
||||
elf_backend_omit_section_dynsym, elf_backend_plt_sym_val): Define.
|
||||
|
||||
* bfd/reloc.c (BFD_RELOC_C6000_JUMP_SLOT, BFD_RELOC_C6000_EHTYPE,
|
||||
BFD_RELOC_C6000_PCR_H16, BFD_RELOC_C6000_PCR_S16): Add.
|
||||
* bfd/bfd-in2.h: Regenerate.
|
||||
* bfd/libbfd.h: Regenerate.
|
||||
* config.bfd: Accept tic6x-*-* instead of tic6x-*-elf.
|
||||
|
||||
2011-03-31 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* coffcode.h (coff_slurp_symbol_table): Silently discard C_NULL
|
||||
|
@ -3774,6 +3774,10 @@ the opcode. */
|
||||
BFD_RELOC_C6000_DSBT_INDEX,
|
||||
BFD_RELOC_C6000_PREL31,
|
||||
BFD_RELOC_C6000_COPY,
|
||||
BFD_RELOC_C6000_JUMP_SLOT,
|
||||
BFD_RELOC_C6000_EHTYPE,
|
||||
BFD_RELOC_C6000_PCR_H16,
|
||||
BFD_RELOC_C6000_PCR_L16,
|
||||
BFD_RELOC_C6000_ALIGN,
|
||||
BFD_RELOC_C6000_FPHEAD,
|
||||
BFD_RELOC_C6000_NOCMP,
|
||||
|
@ -1505,7 +1505,7 @@ case "${targ}" in
|
||||
;;
|
||||
#endif
|
||||
|
||||
tic6x-*-elf)
|
||||
tic6x-*-*)
|
||||
targ_defvec=bfd_elf32_tic6x_le_vec
|
||||
targ_selvecs=bfd_elf32_tic6x_be_vec
|
||||
;;
|
||||
|
1920
bfd/elf32-tic6x.c
1920
bfd/elf32-tic6x.c
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
/* 32-bit ELF support for TI C6X
|
||||
Copyright 2010
|
||||
Copyright 2010, 2011
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@ -24,3 +24,12 @@ extern int elf32_tic6x_merge_arch_attributes (int, int);
|
||||
/* This function is provided for use from the assembler. */
|
||||
|
||||
extern void elf32_tic6x_set_use_rela_p (bfd *, bfd_boolean);
|
||||
|
||||
struct elf32_tic6x_params
|
||||
{
|
||||
int dsbt_index;
|
||||
int dsbt_size;
|
||||
};
|
||||
|
||||
extern void elf32_tic6x_setup (struct bfd_link_info *,
|
||||
struct elf32_tic6x_params *);
|
||||
|
@ -1705,6 +1705,10 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
|
||||
"BFD_RELOC_C6000_DSBT_INDEX",
|
||||
"BFD_RELOC_C6000_PREL31",
|
||||
"BFD_RELOC_C6000_COPY",
|
||||
"BFD_RELOC_C6000_JUMP_SLOT",
|
||||
"BFD_RELOC_C6000_EHTYPE",
|
||||
"BFD_RELOC_C6000_PCR_H16",
|
||||
"BFD_RELOC_C6000_PCR_L16",
|
||||
"BFD_RELOC_C6000_ALIGN",
|
||||
"BFD_RELOC_C6000_FPHEAD",
|
||||
"BFD_RELOC_C6000_NOCMP",
|
||||
|
10
bfd/reloc.c
10
bfd/reloc.c
@ -1,6 +1,6 @@
|
||||
/* BFD support for handling relocation entries.
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
||||
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
Free Software Foundation, Inc.
|
||||
Written by Cygnus Support.
|
||||
|
||||
@ -3934,6 +3934,14 @@ ENUMX
|
||||
BFD_RELOC_C6000_PREL31
|
||||
ENUMX
|
||||
BFD_RELOC_C6000_COPY
|
||||
ENUMX
|
||||
BFD_RELOC_C6000_JUMP_SLOT
|
||||
ENUMX
|
||||
BFD_RELOC_C6000_EHTYPE
|
||||
ENUMX
|
||||
BFD_RELOC_C6000_PCR_H16
|
||||
ENUMX
|
||||
BFD_RELOC_C6000_PCR_L16
|
||||
ENUMX
|
||||
BFD_RELOC_C6000_ALIGN
|
||||
ENUMX
|
||||
|
@ -1,3 +1,8 @@
|
||||
2011-03-31 Bernd Schmidt <bernds@codesourcery.com>
|
||||
|
||||
* readelf.c (get_symbol_index_type): Handle SCOM for TIC6X.
|
||||
(dump_relocations): Likewise.
|
||||
|
||||
2011-03-31 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* readelf.c (get_ia64_vms_note_type): New function.
|
||||
|
@ -1304,8 +1304,10 @@ dump_relocations (FILE * file,
|
||||
sec_name = "ABS";
|
||||
else if (psym->st_shndx == SHN_COMMON)
|
||||
sec_name = "COMMON";
|
||||
else if (elf_header.e_machine == EM_MIPS
|
||||
&& psym->st_shndx == SHN_MIPS_SCOMMON)
|
||||
else if ((elf_header.e_machine == EM_MIPS
|
||||
&& psym->st_shndx == SHN_MIPS_SCOMMON)
|
||||
|| (elf_header.e_machine == EM_TI_C6000
|
||||
&& psym->st_shndx == SHN_TIC6X_SCOMMON))
|
||||
sec_name = "SCOMMON";
|
||||
else if (elf_header.e_machine == EM_MIPS
|
||||
&& psym->st_shndx == SHN_MIPS_SUNDEFINED)
|
||||
@ -8482,8 +8484,10 @@ get_symbol_index_type (unsigned int type)
|
||||
|| elf_header.e_machine == EM_L1OM)
|
||||
&& type == SHN_X86_64_LCOMMON)
|
||||
return "LARGE_COM";
|
||||
else if (type == SHN_MIPS_SCOMMON
|
||||
&& elf_header.e_machine == EM_MIPS)
|
||||
else if ((type == SHN_MIPS_SCOMMON
|
||||
&& elf_header.e_machine == EM_MIPS)
|
||||
|| (type == SHN_TIC6X_SCOMMON
|
||||
&& elf_header.e_machine == EM_TI_C6000))
|
||||
return "SCOM";
|
||||
else if (type == SHN_MIPS_SUNDEFINED
|
||||
&& elf_header.e_machine == EM_MIPS)
|
||||
|
@ -1,3 +1,7 @@
|
||||
2011-03-31 Bernd Schmidt <bernds@codesourcery.com>
|
||||
|
||||
* lib/binutils-common.exp (is_elf_format): Accept tic6x*-*-uclinux*.
|
||||
|
||||
2011-01-03 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
* lib/binutils-common.exp (regexp_diff): Use "==" instead of "eq".
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright 1993, 1994, 1995, 1996, 1997, 2000, 2001, 2003, 2004, 2006, 2007,
|
||||
# 2009, 2010 Free Software Foundation, Inc.
|
||||
# 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of the GNU Binutils.
|
||||
#
|
||||
@ -33,6 +33,7 @@ proc is_elf_format {} {
|
||||
&& ![istarget frv-*-uclinux*]
|
||||
&& ![istarget bfin-*-uclinux]
|
||||
&& ![istarget sh*-*-uclinux*]
|
||||
&& ![istarget tic6x*-*-uclinux*]
|
||||
&& ![istarget *-*-irix5*]
|
||||
&& ![istarget *-*-irix6*]
|
||||
&& ![istarget *-*-netbsd*]
|
||||
|
@ -1,3 +1,14 @@
|
||||
2011-03-31 Bernd Schmidt <bernds@codesourcery.com>
|
||||
|
||||
* config/tc-tic6x.c (sbss_section, scom_section, scom_symbol): New
|
||||
static variables.
|
||||
(md_begin): Initialize them.
|
||||
(s_tic6x_scomm): New static function.
|
||||
(md_pseudo_table): Add "scomm".
|
||||
(tc_gen_reloc): Really undo all adjustments made by
|
||||
bfd_install_relocation.
|
||||
* doc/c-tic6x.texi: Document the .scomm directive.
|
||||
|
||||
2011-03-31 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* dwarf2dbg.c (DWARF2_VERSION): Define.
|
||||
|
@ -34,6 +34,11 @@
|
||||
#define TRUNC(X) ((valueT) (X) & 0xffffffffU)
|
||||
#define SEXT(X) ((TRUNC (X) ^ 0x80000000U) - 0x80000000U)
|
||||
|
||||
/* Stuff for .scomm symbols. */
|
||||
static segT sbss_section;
|
||||
static asection scom_section;
|
||||
static asymbol scom_symbol;
|
||||
|
||||
const char comment_chars[] = ";";
|
||||
const char line_comment_chars[] = "#*;";
|
||||
const char line_separator_chars[] = "@";
|
||||
@ -349,6 +354,138 @@ s_tic6x_nocmp (int ignored ATTRIBUTE_UNUSED)
|
||||
demand_empty_rest_of_line ();
|
||||
}
|
||||
|
||||
/* .scomm pseudo-op handler.
|
||||
|
||||
This is a new pseudo-op to handle putting objects in .scommon.
|
||||
By doing this the linker won't need to do any work,
|
||||
and more importantly it removes the implicit -G arg necessary to
|
||||
correctly link the object file. */
|
||||
|
||||
static void
|
||||
s_tic6x_scomm (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
char *name;
|
||||
char c;
|
||||
char *p;
|
||||
offsetT size;
|
||||
symbolS *symbolP;
|
||||
offsetT align;
|
||||
int align2;
|
||||
|
||||
name = input_line_pointer;
|
||||
c = get_symbol_end ();
|
||||
|
||||
/* Just after name is now '\0'. */
|
||||
p = input_line_pointer;
|
||||
*p = c;
|
||||
SKIP_WHITESPACE ();
|
||||
if (*input_line_pointer != ',')
|
||||
{
|
||||
as_bad (_("expected comma after symbol name"));
|
||||
ignore_rest_of_line ();
|
||||
return;
|
||||
}
|
||||
|
||||
/* Skip ','. */
|
||||
input_line_pointer++;
|
||||
if ((size = get_absolute_expression ()) < 0)
|
||||
{
|
||||
/* xgettext:c-format */
|
||||
as_warn (_("invalid length for .scomm directive"));
|
||||
ignore_rest_of_line ();
|
||||
return;
|
||||
}
|
||||
|
||||
/* The third argument to .scomm is the alignment. */
|
||||
if (*input_line_pointer != ',')
|
||||
align = 8;
|
||||
else
|
||||
{
|
||||
++input_line_pointer;
|
||||
align = get_absolute_expression ();
|
||||
if (align <= 0)
|
||||
{
|
||||
as_warn (_("alignment is not a positive number"));
|
||||
align = 8;
|
||||
}
|
||||
}
|
||||
|
||||
/* Convert to a power of 2 alignment. */
|
||||
if (align)
|
||||
{
|
||||
for (align2 = 0; (align & 1) == 0; align >>= 1, ++align2)
|
||||
continue;
|
||||
if (align != 1)
|
||||
{
|
||||
as_bad (_("alignment is not a power of 2"));
|
||||
ignore_rest_of_line ();
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
align2 = 0;
|
||||
|
||||
*p = 0;
|
||||
symbolP = symbol_find_or_make (name);
|
||||
*p = c;
|
||||
|
||||
if (S_IS_DEFINED (symbolP))
|
||||
{
|
||||
/* xgettext:c-format */
|
||||
as_bad (_("attempt to re-define symbol `%s'"),
|
||||
S_GET_NAME (symbolP));
|
||||
ignore_rest_of_line ();
|
||||
return;
|
||||
}
|
||||
|
||||
if (S_GET_VALUE (symbolP) && S_GET_VALUE (symbolP) != (valueT) size)
|
||||
{
|
||||
/* xgettext:c-format */
|
||||
as_bad (_("attempt to redefine `%s' with a different length"),
|
||||
S_GET_NAME (symbolP));
|
||||
|
||||
ignore_rest_of_line ();
|
||||
return;
|
||||
}
|
||||
|
||||
if (symbol_get_obj (symbolP)->local)
|
||||
{
|
||||
segT old_sec = now_seg;
|
||||
int old_subsec = now_subseg;
|
||||
char *pfrag;
|
||||
|
||||
record_alignment (sbss_section, align2);
|
||||
subseg_set (sbss_section, 0);
|
||||
|
||||
if (align2)
|
||||
frag_align (align2, 0, 0);
|
||||
|
||||
if (S_GET_SEGMENT (symbolP) == sbss_section)
|
||||
symbol_get_frag (symbolP)->fr_symbol = 0;
|
||||
|
||||
symbol_set_frag (symbolP, frag_now);
|
||||
|
||||
pfrag = frag_var (rs_org, 1, 1, (relax_substateT) 0, symbolP, size,
|
||||
(char *) 0);
|
||||
*pfrag = 0;
|
||||
S_SET_SIZE (symbolP, size);
|
||||
S_SET_SEGMENT (symbolP, sbss_section);
|
||||
S_CLEAR_EXTERNAL (symbolP);
|
||||
subseg_set (old_sec, old_subsec);
|
||||
}
|
||||
else
|
||||
{
|
||||
S_SET_VALUE (symbolP, (valueT) size);
|
||||
S_SET_ALIGN (symbolP, 1 << align2);
|
||||
S_SET_EXTERNAL (symbolP);
|
||||
S_SET_SEGMENT (symbolP, &scom_section);
|
||||
}
|
||||
|
||||
symbol_get_bfdsym (symbolP)->flags |= BSF_OBJECT;
|
||||
|
||||
demand_empty_rest_of_line ();
|
||||
}
|
||||
|
||||
/* Track for each attribute whether it has been set explicitly (and so
|
||||
should not have a default value set by the assembler). */
|
||||
static bfd_boolean tic6x_attributes_set_explicitly[NUM_KNOWN_OBJ_ATTRIBUTES];
|
||||
@ -396,6 +533,7 @@ const pseudo_typeS md_pseudo_table[] =
|
||||
{ "arch", s_tic6x_arch, 0 },
|
||||
{ "c6xabi_attribute", s_tic6x_c6xabi_attribute, 0 },
|
||||
{ "nocmp", s_tic6x_nocmp, 0 },
|
||||
{ "scomm", s_tic6x_scomm, 0 },
|
||||
{ "word", cons, 4 },
|
||||
{ 0, 0, 0 }
|
||||
};
|
||||
@ -411,6 +549,9 @@ void
|
||||
md_begin (void)
|
||||
{
|
||||
tic6x_opcode_id id;
|
||||
flagword applicable;
|
||||
segT seg;
|
||||
subsegT subseg;
|
||||
|
||||
bfd_set_arch_mach (stdoutput, TARGET_ARCH, 0);
|
||||
|
||||
@ -427,6 +568,32 @@ md_begin (void)
|
||||
!= NULL)
|
||||
as_fatal ("%s", _(errmsg));
|
||||
}
|
||||
|
||||
/* Save the current subseg so we can restore it [it's the default one and
|
||||
we don't want the initial section to be .sbss]. */
|
||||
seg = now_seg;
|
||||
subseg = now_subseg;
|
||||
|
||||
/* The sbss section is for local .scomm symbols. */
|
||||
sbss_section = subseg_new (".bss", 0);
|
||||
seg_info (sbss_section)->bss = 1;
|
||||
|
||||
/* This is copied from perform_an_assembly_pass. */
|
||||
applicable = bfd_applicable_section_flags (stdoutput);
|
||||
bfd_set_section_flags (stdoutput, sbss_section, applicable & SEC_ALLOC);
|
||||
|
||||
subseg_set (seg, subseg);
|
||||
|
||||
/* We must construct a fake section similar to bfd_com_section
|
||||
but with the name .scommon. */
|
||||
scom_section = bfd_com_section;
|
||||
scom_section.name = ".scommon";
|
||||
scom_section.output_section = & scom_section;
|
||||
scom_section.symbol = & scom_symbol;
|
||||
scom_section.symbol_ptr_ptr = & scom_section.symbol;
|
||||
scom_symbol = * bfd_com_section.symbol;
|
||||
scom_symbol.name = ".scommon";
|
||||
scom_symbol.section = & scom_section;
|
||||
}
|
||||
|
||||
/* Whether the current line being parsed had the "||" parallel bars. */
|
||||
@ -4029,11 +4196,13 @@ arelent *
|
||||
tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
|
||||
{
|
||||
arelent *reloc;
|
||||
asymbol *symbol;
|
||||
bfd_reloc_code_real_type r_type;
|
||||
|
||||
reloc = xmalloc (sizeof (arelent));
|
||||
reloc->sym_ptr_ptr = xmalloc (sizeof (asymbol *));
|
||||
*reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
|
||||
symbol = symbol_get_bfdsym (fixp->fx_addsy);
|
||||
*reloc->sym_ptr_ptr = symbol;
|
||||
reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
|
||||
reloc->addend = (tic6x_generate_rela ? fixp->fx_offset : 0);
|
||||
r_type = fixp->fx_r_type;
|
||||
@ -4049,7 +4218,11 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
|
||||
|
||||
/* Correct for adjustments bfd_install_relocation will make. */
|
||||
if (reloc->howto->pcrel_offset && reloc->howto->partial_inplace)
|
||||
reloc->addend += reloc->address;
|
||||
{
|
||||
reloc->addend += reloc->address;
|
||||
if (!bfd_is_com_section (symbol))
|
||||
reloc->addend -= symbol->value;
|
||||
}
|
||||
|
||||
return reloc;
|
||||
}
|
||||
|
@ -151,4 +151,10 @@ The @var{tag} is either an attribute number or one of
|
||||
Disallow use of C64x+ compact instructions in the current text
|
||||
section.
|
||||
|
||||
@cindex @code{.scomm} directive, TIC6X
|
||||
@item .scomm @var{symbol}, @var{size}, @var{align}
|
||||
Like @code{.comm}, creating a common symbol @var{symbol} with size @var{size}
|
||||
and alignment @var{align}, but unlike when using @code{.comm}, this symbol
|
||||
will be placed into the small BSS section by the linker.
|
||||
|
||||
@end table
|
||||
|
@ -1,3 +1,22 @@
|
||||
2011-03-31 Bernd Schmidt <bernds@codesourcery.com>
|
||||
|
||||
* gas/tic6x/scomm-directive-1.s: New test.
|
||||
* gas/tic6x/scomm-directive-1.d: New test.
|
||||
* gas/tic6x/scomm-directive-2.s: New test.
|
||||
* gas/tic6x/scomm-directive-2.d: New test.
|
||||
* gas/tic6x/scomm-directive-3.s: New test.
|
||||
* gas/tic6x/scomm-directive-3.d: New test.
|
||||
* gas/tic6x/scomm-directive-4.s: New test.
|
||||
* gas/tic6x/scomm-directive-4.d: New test.
|
||||
* gas/tic6x/scomm-directive-5.s: New test.
|
||||
* gas/tic6x/scomm-directive-5.d: New test.
|
||||
* gas/tic6x/scomm-directive-6.s: New test.
|
||||
* gas/tic6x/scomm-directive-6.d: New test.
|
||||
* gas/tic6x/scomm-directive-7.s: New test.
|
||||
* gas/tic6x/scomm-directive-7.d: New test.
|
||||
* gas/tic6x/scomm-directive-8.s: New test.
|
||||
* gas/tic6x/scomm-directive-8.d: New test.
|
||||
|
||||
2011-03-29 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* gas/i386/ilp32/quad.d: Add tests for multiple operands.
|
||||
|
4
gas/testsuite/gas/tic6x/scomm-directive-1.d
Normal file
4
gas/testsuite/gas/tic6x/scomm-directive-1.d
Normal file
@ -0,0 +1,4 @@
|
||||
#name: C6X .scomm directive 1
|
||||
#as:
|
||||
#source: scomm-directive-1.s
|
||||
#error: alignment is not a power of 2
|
2
gas/testsuite/gas/tic6x/scomm-directive-1.s
Normal file
2
gas/testsuite/gas/tic6x/scomm-directive-1.s
Normal file
@ -0,0 +1,2 @@
|
||||
.comm x,4,4
|
||||
.scomm y,4,5
|
5
gas/testsuite/gas/tic6x/scomm-directive-2.d
Normal file
5
gas/testsuite/gas/tic6x/scomm-directive-2.d
Normal file
@ -0,0 +1,5 @@
|
||||
#name: C6X .scomm directive 2
|
||||
#as:
|
||||
#source: scomm-directive-2.s
|
||||
#error: attempt to re-define symbol
|
||||
|
2
gas/testsuite/gas/tic6x/scomm-directive-2.s
Normal file
2
gas/testsuite/gas/tic6x/scomm-directive-2.s
Normal file
@ -0,0 +1,2 @@
|
||||
.scomm x,4,4
|
||||
.scomm x,8,4
|
4
gas/testsuite/gas/tic6x/scomm-directive-3.d
Normal file
4
gas/testsuite/gas/tic6x/scomm-directive-3.d
Normal file
@ -0,0 +1,4 @@
|
||||
#name: C6X .scomm directive 3
|
||||
#as:
|
||||
#source: scomm-directive-3.s
|
||||
#error: attempt to re-define symbol
|
2
gas/testsuite/gas/tic6x/scomm-directive-3.s
Normal file
2
gas/testsuite/gas/tic6x/scomm-directive-3.s
Normal file
@ -0,0 +1,2 @@
|
||||
.comm x,8,4
|
||||
.scomm x,8,4
|
37
gas/testsuite/gas/tic6x/scomm-directive-4.d
Normal file
37
gas/testsuite/gas/tic6x/scomm-directive-4.d
Normal file
@ -0,0 +1,37 @@
|
||||
#name: C6X .scomm directive 4
|
||||
#as:
|
||||
#source: scomm-directive-4.s
|
||||
#readelf: -Ss
|
||||
|
||||
There are 8 section headers, starting at offset 0x88:
|
||||
|
||||
Section Headers:
|
||||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.text PROGBITS 00000000 000034 000000 00 AX 0 0 1
|
||||
\[ 2\] \.data PROGBITS 00000000 000034 000000 00 WA 0 0 1
|
||||
\[ 3\] \.bss NOBITS 00000000 000034 000000 00 WA 0 0 1
|
||||
\[ 4\] \.c6xabi\.attribute C6000_ATTRIBUTE 00000000 000034 000013 00 0 0 1
|
||||
\[ 5\] \.shstrtab STRTAB 00000000 000047 00003f 00 0 0 1
|
||||
\[ 6\] \.symtab SYMTAB 00000000 0001c8 0000d0 10 7 5 4
|
||||
\[ 7\] \.strtab STRTAB 00000000 000298 00001d 00 0 0 1
|
||||
Key to Flags:
|
||||
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
|
||||
I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\)
|
||||
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
|
||||
|
||||
Symbol table '\.symtab' contains 13 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 00000000 0 SECTION LOCAL DEFAULT 1
|
||||
2: 00000000 0 SECTION LOCAL DEFAULT 2
|
||||
3: 00000000 0 SECTION LOCAL DEFAULT 3
|
||||
4: 00000000 0 SECTION LOCAL DEFAULT 4
|
||||
5: 00000004 4 OBJECT GLOBAL DEFAULT COM x4a
|
||||
6: 00000004 4 OBJECT GLOBAL DEFAULT SCOM y4a
|
||||
7: 00000002 4 OBJECT GLOBAL DEFAULT COM x4b
|
||||
8: 00000002 4 OBJECT GLOBAL DEFAULT SCOM y4b
|
||||
9: 00000004 2 OBJECT GLOBAL DEFAULT COM x2
|
||||
10: 00000004 2 OBJECT GLOBAL DEFAULT SCOM y2
|
||||
11: 00000004 1 OBJECT GLOBAL DEFAULT COM x1
|
||||
12: 00000004 1 OBJECT GLOBAL DEFAULT SCOM y1
|
8
gas/testsuite/gas/tic6x/scomm-directive-4.s
Normal file
8
gas/testsuite/gas/tic6x/scomm-directive-4.s
Normal file
@ -0,0 +1,8 @@
|
||||
.comm x4a,4,4
|
||||
.scomm y4a,4,4
|
||||
.comm x4b,4,2
|
||||
.scomm y4b,4,2
|
||||
.comm x2,2,4
|
||||
.scomm y2,2,4
|
||||
.comm x1,1,4
|
||||
.scomm y1,1,4
|
4
gas/testsuite/gas/tic6x/scomm-directive-5.d
Normal file
4
gas/testsuite/gas/tic6x/scomm-directive-5.d
Normal file
@ -0,0 +1,4 @@
|
||||
#name: C6X .scomm directive 5
|
||||
#as:
|
||||
#source: scomm-directive-5.s
|
||||
#error: expected comma after symbol name
|
1
gas/testsuite/gas/tic6x/scomm-directive-5.s
Normal file
1
gas/testsuite/gas/tic6x/scomm-directive-5.s
Normal file
@ -0,0 +1 @@
|
||||
.scomm x
|
4
gas/testsuite/gas/tic6x/scomm-directive-6.d
Normal file
4
gas/testsuite/gas/tic6x/scomm-directive-6.d
Normal file
@ -0,0 +1,4 @@
|
||||
#name: C6X .scomm directive 6
|
||||
#as:
|
||||
#source: scomm-directive-6.s
|
||||
#error: bad or irreducible absolute expression
|
1
gas/testsuite/gas/tic6x/scomm-directive-6.s
Normal file
1
gas/testsuite/gas/tic6x/scomm-directive-6.s
Normal file
@ -0,0 +1 @@
|
||||
.scomm x,fish
|
4
gas/testsuite/gas/tic6x/scomm-directive-7.d
Normal file
4
gas/testsuite/gas/tic6x/scomm-directive-7.d
Normal file
@ -0,0 +1,4 @@
|
||||
#name: C6X .scomm directive 7
|
||||
#as:
|
||||
#source: scomm-directive-7.s
|
||||
#warning: alignment is not a positive number
|
1
gas/testsuite/gas/tic6x/scomm-directive-7.s
Normal file
1
gas/testsuite/gas/tic6x/scomm-directive-7.s
Normal file
@ -0,0 +1 @@
|
||||
.scomm x,8,-4
|
4
gas/testsuite/gas/tic6x/scomm-directive-8.d
Normal file
4
gas/testsuite/gas/tic6x/scomm-directive-8.d
Normal file
@ -0,0 +1,4 @@
|
||||
#name: C6X .scomm directive 8
|
||||
#as:
|
||||
#source: scomm-directive-8.s
|
||||
#warning: invalid length for .scomm directive
|
1
gas/testsuite/gas/tic6x/scomm-directive-8.s
Normal file
1
gas/testsuite/gas/tic6x/scomm-directive-8.s
Normal file
@ -0,0 +1 @@
|
||||
.scomm x,-8,4
|
@ -1,3 +1,9 @@
|
||||
2011-03-31 Bernd Schmidt <bernds@codesourcery.com>
|
||||
|
||||
* tic6x.h (R_C6000_JUMP_SPLOT, R_C6000_EHTYPE,
|
||||
R_C6000_PCR_H16, R_C6000_PCR_L16): New relocs.
|
||||
(SHN_TIC6X_SCOMMON): Define.
|
||||
|
||||
2011-03-24 Mark Wielaard <mjw@redhat.com>
|
||||
|
||||
* dwarf2.h (dwarf_form): Remove deprecated DW_FORM_sig8 define.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* TI C6X ELF support for BFD.
|
||||
Copyright 2010
|
||||
Copyright 2010, 2011
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@ -53,6 +53,10 @@ START_RELOC_NUMBERS (elf_tic6x_reloc_type)
|
||||
RELOC_NUMBER (R_C6000_DSBT_INDEX, 24)
|
||||
RELOC_NUMBER (R_C6000_PREL31, 25)
|
||||
RELOC_NUMBER (R_C6000_COPY, 26)
|
||||
RELOC_NUMBER (R_C6000_JUMP_SLOT, 27)
|
||||
RELOC_NUMBER (R_C6000_EHTYPE, 28)
|
||||
RELOC_NUMBER (R_C6000_PCR_H16, 29)
|
||||
RELOC_NUMBER (R_C6000_PCR_L16, 30)
|
||||
RELOC_NUMBER (R_C6000_ALIGN, 253)
|
||||
RELOC_NUMBER (R_C6000_FPHEAD, 254)
|
||||
RELOC_NUMBER (R_C6000_NOCMP, 255)
|
||||
@ -89,6 +93,13 @@ END_RELOC_NUMBERS (R_TIC6X_max)
|
||||
/* Extended program header attributes. */
|
||||
#define SHT_TI_PHATTRS 0x7F000004
|
||||
|
||||
/* Processor specific section indices. These sections do not actually
|
||||
exist. Symbols with a st_shndx field corresponding to one of these
|
||||
values have a special meaning. */
|
||||
|
||||
/* Small data area common symbol. */
|
||||
#define SHN_TIC6X_SCOMMON SHN_LORESERVE
|
||||
|
||||
/* Processor-specific segment types. */
|
||||
|
||||
/* Extended Segment Attributes. */
|
||||
|
14
ld/ChangeLog
14
ld/ChangeLog
@ -1,3 +1,17 @@
|
||||
2011-03-31 Bernd Schmidt <bernds@codesourcery.com>
|
||||
|
||||
* emulparams/elf32_tic6x_le.sh (BIG_OUTPUT_FORMAT, EXTRA_EM_FILE,
|
||||
GENERATE_SHLIB_SCRIPT): New defines.
|
||||
(TEXT_START_ADDR): Define differently depending on target.
|
||||
(.got): Redefine to include "*(.dsbt)".
|
||||
(SDATA_START_SYMBOLS): Remove, replace with
|
||||
(OTHER_GOT_SYMBOLS): New.
|
||||
(OTHER_BSS_SECTIONS): Define only for ELF targets.
|
||||
* emultempl/tic6xdsbt.em: New file.
|
||||
* gen-doc.texi: Set C6X.
|
||||
* ld.texinfo: Likewise.
|
||||
(Options specific to C6X uClinux targets): New section.
|
||||
|
||||
2011-03-29 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR ld/12613
|
||||
|
@ -1,14 +1,29 @@
|
||||
SCRIPT_NAME=elf
|
||||
TEMPLATE_NAME=elf32
|
||||
OUTPUT_FORMAT="elf32-tic6x-le"
|
||||
BIG_OUTPUT_FORMAT="elf32-tic6x-be"
|
||||
EXTRA_EM_FILE=tic6xdsbt
|
||||
GENERATE_SHLIB_SCRIPT=yes
|
||||
# This address is an arbitrary value expected to be suitable for
|
||||
# semihosting simulator use, but not on hardware where it is expected
|
||||
# to be overridden.
|
||||
TEXT_START_ADDR=0x8000
|
||||
case ${target} in
|
||||
*-elf)
|
||||
TEXT_START_ADDR=0x8000
|
||||
;;
|
||||
*-uclinux)
|
||||
TEXT_START_ADDR=0x0
|
||||
GOT="
|
||||
.got ${RELOCATING-0} : {
|
||||
*(.dsbt)
|
||||
*(.got.plt) *(.igot.plt) *(.got) *(.igot)
|
||||
}"
|
||||
;;
|
||||
esac
|
||||
MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
|
||||
ARCH=tic6x
|
||||
EXECUTABLE_SYMBOLS="EXTERN (__c6xabi_DSBT_BASE);"
|
||||
SDATA_START_SYMBOLS="PROVIDE_HIDDEN (__c6xabi_DSBT_BASE = .);"
|
||||
OTHER_GOT_SYMBOLS="PROVIDE_HIDDEN (__c6xabi_DSBT_BASE = .);"
|
||||
# ".bss" is near (small) BSS, ".far" is far (normal) BSS, ".const" is
|
||||
# far read-only data, ".rodata" is near read-only data. ".neardata"
|
||||
# is near (small) data, ".fardata" is (along with .data) far data.
|
||||
@ -24,7 +39,9 @@ OTHER_READWRITE_SECTIONS=".fardata ${RELOCATING-0} : { *(.fardata${RELOCATING+ .
|
||||
OTHER_READWRITE_RELOC_SECTIONS="
|
||||
.rel.fardata ${RELOCATING-0} : { *(.rel.fardata${RELOCATING+ .rel.fardata.*}) }
|
||||
.rela.fardata ${RELOCATING-0} : { *(.rela.fardata${RELOCATING+ .rela.fardata.*}) }"
|
||||
OTHER_BSS_SECTIONS="
|
||||
case ${target} in
|
||||
*-elf)
|
||||
OTHER_BSS_SECTIONS="
|
||||
.heap :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
@ -37,4 +54,6 @@ OTHER_BSS_SECTIONS="
|
||||
. += 0x100000;
|
||||
_STACK_START = .;
|
||||
}"
|
||||
;;
|
||||
esac
|
||||
ATTRS_SECTIONS='.c6xabi.attributes 0 : { KEEP (*(.c6xabi.attributes)) KEEP (*(.gnu.attributes)) }'
|
||||
|
105
ld/emultempl/tic6xdsbt.em
Normal file
105
ld/emultempl/tic6xdsbt.em
Normal file
@ -0,0 +1,105 @@
|
||||
# This shell script emits a C file. -*- C -*-
|
||||
# Copyright 2011 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of the GNU Binutils.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
# MA 02110-1301, USA.
|
||||
#
|
||||
|
||||
# This file is sourced from elf32.em, and defines extra C6X DSBT specific
|
||||
# features.
|
||||
#
|
||||
fragment <<EOF
|
||||
#include "ldctor.h"
|
||||
#include "elf32-tic6x.h"
|
||||
|
||||
static struct elf32_tic6x_params params =
|
||||
{
|
||||
0, 64
|
||||
};
|
||||
|
||||
static int
|
||||
is_tic6x_target (void)
|
||||
{
|
||||
extern const bfd_target bfd_elf32_tic6x_le_vec;
|
||||
extern const bfd_target bfd_elf32_tic6x_be_vec;
|
||||
|
||||
return (link_info.output_bfd->xvec == &bfd_elf32_tic6x_le_vec
|
||||
|| link_info.output_bfd->xvec == &bfd_elf32_tic6x_be_vec);
|
||||
}
|
||||
|
||||
/* Pass params to backend. */
|
||||
|
||||
static void
|
||||
tic6x_after_open (void)
|
||||
{
|
||||
if (is_tic6x_target ())
|
||||
{
|
||||
if (params.dsbt_index >= params.dsbt_size)
|
||||
{
|
||||
einfo (_("%P%F: invalid --dsbt-index %d, outside DSBT size.\n"),
|
||||
params.dsbt_index);
|
||||
}
|
||||
elf32_tic6x_setup (&link_info, ¶ms);
|
||||
}
|
||||
|
||||
gld${EMULATION_NAME}_after_open ();
|
||||
}
|
||||
EOF
|
||||
|
||||
# This code gets inserted into the generic elf32.sc linker script
|
||||
# and allows us to define our own command line switches.
|
||||
PARSE_AND_LIST_PROLOGUE='
|
||||
#define OPTION_DSBT_INDEX 300
|
||||
#define OPTION_DSBT_SIZE 301
|
||||
'
|
||||
|
||||
PARSE_AND_LIST_LONGOPTS='
|
||||
{"dsbt-index", required_argument, NULL, OPTION_DSBT_INDEX},
|
||||
{"dsbt-size", required_argument, NULL, OPTION_DSBT_SIZE},
|
||||
'
|
||||
|
||||
PARSE_AND_LIST_OPTIONS='
|
||||
fprintf (file, _(" --dsbt-index <index>\n"));
|
||||
fprintf (file, _("\t\t\tUse this as the DSBT index for the output object\n"));
|
||||
fprintf (file, _(" --dsbt-size <index>\n"));
|
||||
fprintf (file, _("\t\t\tUse this as the number of entries in the DSBT table\n"));
|
||||
'
|
||||
|
||||
PARSE_AND_LIST_ARGS_CASES='
|
||||
case OPTION_DSBT_INDEX:
|
||||
{
|
||||
char *end;
|
||||
params.dsbt_index = strtol (optarg, &end, 0);
|
||||
if (*end == 0
|
||||
&& params.dsbt_index >= 0 && params.dsbt_index < 0x7fff)
|
||||
break;
|
||||
einfo (_("%P%F: invalid --dsbt-index %s\n"), optarg);
|
||||
}
|
||||
break;
|
||||
case OPTION_DSBT_SIZE:
|
||||
{
|
||||
char *end;
|
||||
params.dsbt_size = strtol (optarg, &end, 0);
|
||||
if (*end == 0
|
||||
&& params.dsbt_size >= 0 && params.dsbt_size < 0x7fff)
|
||||
break;
|
||||
einfo (_("%P%F: invalid --dsbt-size %s\n"), optarg);
|
||||
}
|
||||
break;
|
||||
'
|
||||
|
||||
LDEMUL_AFTER_OPEN=tic6x_after_open
|
@ -4,6 +4,7 @@
|
||||
|
||||
@c 2. Specific target machines
|
||||
@set ARM
|
||||
@set C6X
|
||||
@set H8300
|
||||
@set HPPA
|
||||
@set I960
|
||||
|
@ -22,6 +22,7 @@
|
||||
@set UsesEnvVars
|
||||
@set GENERIC
|
||||
@set ARM
|
||||
@set C6X
|
||||
@set H8300
|
||||
@set HPPA
|
||||
@set I960
|
||||
@ -2612,6 +2613,35 @@ The image is Terminal Server aware.
|
||||
|
||||
@c man end
|
||||
|
||||
@ifset C6X
|
||||
@subsection Options specific to C6X uClinux targets
|
||||
|
||||
@c man begin OPTIONS
|
||||
|
||||
The C6X uClinux target uses a binary format called DSBT to support shared
|
||||
libraries. Each shared library in the system needs to have a unique index;
|
||||
all executables use an index of 0.
|
||||
|
||||
@table @gcctabopt
|
||||
|
||||
@kindex --dsbt-size
|
||||
@item --dsbt-size @var{size}
|
||||
This option sets the number of entires in the DSBT of the current executable
|
||||
or shared library to @var{size}. The default is to create a table with 64
|
||||
entries.
|
||||
|
||||
@kindex --dsbt-index
|
||||
@item --dsbt-index @var{index}
|
||||
This option sets the DSBT index of the current executable or shared library
|
||||
to @var{index}. The default is 0, which is appropriate for generating
|
||||
executables. If a shared library is generated with a DSBT index of 0, the
|
||||
@code{R_C6000_DSBT_INDEX} relocs are copied into the output file.
|
||||
|
||||
@end table
|
||||
|
||||
@c man end
|
||||
@end ifset
|
||||
|
||||
@ifset M68HC11
|
||||
@subsection Options specific to Motorola 68HC11 and 68HC12 targets
|
||||
|
||||
|
@ -1,3 +1,87 @@
|
||||
2011-03-31 Bernd Schmidt <bernds@codesourcery.com>
|
||||
|
||||
* ld-scripts/crossref.exp: Add CFLAGS for tic6x*-*-*.
|
||||
* ld-elf/sec-to-seg.exp: Remove tic6x from list of targets defining
|
||||
pagesize to 1.
|
||||
* ld-tic6x/tic6x.exp: Add support for DSBT shared library/executable
|
||||
linking tests.
|
||||
* ld-tic6x/dsbt.ld: New linker script.
|
||||
* ld-tic6x/dsbt-be.ld: New linker script.
|
||||
* ld-tic6x/dsbt-overflow.ld: New linker script.
|
||||
* ld-tic6x/dsbt-inrange.ld: New linker script.
|
||||
* ld-tic6x/shlib-1.s: New test.
|
||||
* ld-tic6x/shlib-2.s: New test.
|
||||
* ld-tic6x/shlib-app-1r.s: New test.
|
||||
* ld-tic6x/shlib-app-1.s: New test.
|
||||
* ld-tic6x/shlib-1.sd: New test.
|
||||
* ld-tic6x/shlib-1.dd: New test.
|
||||
* ld-tic6x/shlib-app-1.rd: New test.
|
||||
* ld-tic6x/shlib-app-1rb.rd: New test.
|
||||
* ld-tic6x/shlib-app-1.sd: New test.
|
||||
* ld-tic6x/static-app-1rb.od: New test.
|
||||
* ld-tic6x/shlib-app-1.dd: New test.
|
||||
* ld-tic6x/shlib-app-1rb.sd: New test.
|
||||
* ld-tic6x/static-app-1b.od: New test.
|
||||
* ld-tic6x/static-app-1r.od: New test.
|
||||
* ld-tic6x/shlib-1rb.rd: New test.
|
||||
* ld-tic6x/shlib-app-1rb.dd: New test.
|
||||
* ld-tic6x/shlib-1rb.sd: New test.
|
||||
* ld-tic6x/shlib-1rb.dd: New test.
|
||||
* ld-tic6x/shlib-app-1b.od: New test.
|
||||
* ld-tic6x/tic6x.exp: New test.
|
||||
* ld-tic6x/static-app-1rb.rd: New test.
|
||||
* ld-tic6x/shlib-app-1r.od: New test.
|
||||
* ld-tic6x/static-app-1.od: New test.
|
||||
* ld-tic6x/static-app-1b.rd: New test.
|
||||
* ld-tic6x/static-app-1r.rd: New test.
|
||||
* ld-tic6x/static-app-1rb.sd: New test.
|
||||
* ld-tic6x/static-app-1b.sd: New test.
|
||||
* ld-tic6x/static-app-1rb.dd: New test.
|
||||
* ld-tic6x/static-app-1r.sd: New test.
|
||||
* ld-tic6x/static-app-1b.dd: New test.
|
||||
* ld-tic6x/shlib-1b.rd: New test.
|
||||
* ld-tic6x/static-app-1r.dd: New test.
|
||||
* ld-tic6x/shlib-app-1b.rd: New test.
|
||||
* ld-tic6x/shlib-1r.rd: New test.
|
||||
* ld-tic6x/shlib-app-1r.rd: New test.
|
||||
* ld-tic6x/shlib-1b.sd: New test.
|
||||
* ld-tic6x/static-app-1.rd: New test.
|
||||
* ld-tic6x/shlib-app-1b.sd: New test.
|
||||
* ld-tic6x/shlib-1r.sd: New test.
|
||||
* ld-tic6x/shlib-1b.dd: New test.
|
||||
* ld-tic6x/shlib-app-1r.sd: New test.
|
||||
* ld-tic6x/shlib-app-1b.dd: New test.
|
||||
* ld-tic6x/shlib-1r.dd: New test.
|
||||
* ld-tic6x/static-app-1.sd: New test.
|
||||
* ld-tic6x/shlib-app-1r.dd: New test.
|
||||
* ld-tic6x/static-app-1.dd: New test.
|
||||
* ld-tic6x/shlib-noindex.rd: New test.
|
||||
* ld-tic6x/shlib-noindex.dd: New test.
|
||||
* ld-tic6x/shlib-noindex.sd: New test.
|
||||
* ld-tic6x/got-reloc-local-1.s: New test.
|
||||
* ld-tic6x/got-reloc-local-2.s: New test.
|
||||
* ld-tic6x/got-reloc-local-r.d: New test.
|
||||
* ld-tic6x/got-reloc-global.s: New test.
|
||||
* ld-tic6x/got-reloc-global-addend-1.d: New test.
|
||||
* ld-tic6x/got-reloc-global-addend-1.s: New test.
|
||||
* ld-tic6x/got-reloc-global-addend-2.d: New test.
|
||||
* ld-tic6x/got-reloc-inrange.d: New test.
|
||||
* ld-tic6x/got-reloc-overflow.d: New test.
|
||||
* ld-tic6x/got-reloc-global-addend-2.s: New test.
|
||||
* ld-tic6x/dsbt-index-error.d: New test.
|
||||
* ld-tic6x/dsbt-index.d: New test.
|
||||
* ld-tic6x/dsbt-index.s: New test.
|
||||
* ld-tic6x/shlib-app-1.od: New test.
|
||||
* ld-tic6x/shlib-app-1rb.od: New test.
|
||||
* ld-tic6x/shlib-1.rd: New test.
|
||||
* ld-tic6x/weak.d: New test.
|
||||
* ld-tic6x/weak-be.d: New test.
|
||||
* ld-tic6x/weak.s: New test.
|
||||
* ld-tic6x/weak-data.d: New test.
|
||||
* ld-tic6x/common.d: New test.
|
||||
* ld-tic6x/common.ld: New test.
|
||||
* ld-tic6x/common.s: New test.
|
||||
|
||||
2011-03-30 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* ld-elf/elf.exp: Force 32-bit start address for alpha.
|
||||
|
@ -87,7 +87,6 @@ if { [istarget avr-*-*]
|
||||
|| [istarget moxie-*-*]
|
||||
|| [istarget msp430-*-*]
|
||||
|| [istarget mt-*-*]
|
||||
|| [istarget tic6x-*-*]
|
||||
} {
|
||||
set B_test_same_seg 0
|
||||
} else {
|
||||
|
@ -51,6 +51,12 @@ if [istarget mep*-*-elf] {
|
||||
set CFLAGS "-mtiny=0"
|
||||
}
|
||||
|
||||
# The .dsbt section and __c6xabi_DSBT_BASE are not defined in our test
|
||||
# linker scripts.
|
||||
if [istarget tic6x*-*-*] {
|
||||
set CFLAGS "-mno-dsbt -msdata=none"
|
||||
}
|
||||
|
||||
if { ![ld_compile $CC "$srcdir/$subdir/cross1.c" tmpdir/cross1.o] \
|
||||
|| ![ld_compile $CC "$srcdir/$subdir/cross2.c" tmpdir/cross2.o] } {
|
||||
unresolved $test1
|
||||
|
28
ld/testsuite/ld-tic6x/common.d
Normal file
28
ld/testsuite/ld-tic6x/common.d
Normal file
@ -0,0 +1,28 @@
|
||||
#name: C6X common symbols
|
||||
#as: -mlittle-endian
|
||||
#ld: -melf32_tic6x_le -Tcommon.ld
|
||||
#source: common.s
|
||||
#readelf: -Ss
|
||||
|
||||
There are 6 section headers, starting at offset 0x7c:
|
||||
|
||||
Section Headers:
|
||||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.far NOBITS 00000080 000080 000008 00 WA 0 0 4
|
||||
\[ 2\] \.bss NOBITS 00000100 000080 000004 00 WA 0 0 4
|
||||
\[ 3\] \.shstrtab STRTAB 00000000 000054 000025 00 0 0 1
|
||||
\[ 4\] \.symtab SYMTAB 00000000 00016c 000050 10 5 3 4
|
||||
\[ 5\] \.strtab STRTAB 00000000 0001bc 000005 00 0 0 1
|
||||
Key to Flags:
|
||||
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
|
||||
I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\)
|
||||
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
|
||||
|
||||
Symbol table '\.symtab' contains 5 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 00000080 0 SECTION LOCAL DEFAULT 1
|
||||
2: 00000100 0 SECTION LOCAL DEFAULT 2
|
||||
3: 00000100 4 OBJECT GLOBAL DEFAULT 2 x
|
||||
4: 00000080 8 OBJECT GLOBAL DEFAULT 1 y
|
11
ld/testsuite/ld-tic6x/common.ld
Normal file
11
ld/testsuite/ld-tic6x/common.ld
Normal file
@ -0,0 +1,11 @@
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x80;
|
||||
.far : { *(.far) *(COMMON) }
|
||||
. = 0x100;
|
||||
.bss : { *(.scommon) }
|
||||
|
||||
. = 0x10000000;
|
||||
.text : { *(.text*) }
|
||||
/DISCARD/ : { *(*) }
|
||||
}
|
2
ld/testsuite/ld-tic6x/common.s
Normal file
2
ld/testsuite/ld-tic6x/common.s
Normal file
@ -0,0 +1,2 @@
|
||||
.scomm x,4,4
|
||||
.comm y,8,4
|
67
ld/testsuite/ld-tic6x/dsbt-be.ld
Normal file
67
ld/testsuite/ld-tic6x/dsbt-be.ld
Normal file
@ -0,0 +1,67 @@
|
||||
OUTPUT_FORMAT("elf32-tic6x-be", "elf32-tic6x-be",
|
||||
"elf32-tic6x-be")
|
||||
EXTERN (__c6xabi_DSBT_BASE);
|
||||
SECTIONS
|
||||
{
|
||||
PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0)); . = SEGMENT_START("text-segment", 0x0) + SIZEOF_HEADERS;
|
||||
. = 0x8000;
|
||||
.hash : { *(.hash) }
|
||||
.gnu.hash : { *(.gnu.hash) }
|
||||
.dynsym : { *(.dynsym) }
|
||||
.dynstr : { *(.dynstr) }
|
||||
.gnu.version : { *(.gnu.version) }
|
||||
.gnu.version_d : { *(.gnu.version_d) }
|
||||
.gnu.version_r : { *(.gnu.version_r) }
|
||||
.rel.init : { *(.rel.init) }
|
||||
.rela.init : { *(.rela.init) }
|
||||
.rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
|
||||
.rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
|
||||
.rel.fini : { *(.rel.fini) }
|
||||
.rela.fini : { *(.rela.fini) }
|
||||
.rel.const : { *(.rel.const .rel.const.* .rel.gnu.linkonce.r.*) }
|
||||
.rela.const : { *(.rela.const .rela.const.* .rela.gnu.linkonce.r.*) }
|
||||
.rel.rodata : { *(.rel.rodata .rel.rodata.*) }
|
||||
.rela.rodata : { *(.rela.rodata .rela.rodata.*) }
|
||||
.rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
|
||||
.rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
|
||||
.rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
|
||||
.rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
|
||||
.rel.fardata : { *(.rel.fardata .rel.fardata.*) }
|
||||
.rela.fardata : { *(.rela.fardata .rela.fardata.*) }
|
||||
.rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
|
||||
.rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
|
||||
.rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
|
||||
.rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
|
||||
.rel.ctors : { *(.rel.ctors) }
|
||||
.rela.ctors : { *(.rela.ctors) }
|
||||
.rel.dtors : { *(.rel.dtors) }
|
||||
.rela.dtors : { *(.rela.dtors) }
|
||||
.rel.got : { *(.rel.got) }
|
||||
.rela.got : { *(.rela.got) }
|
||||
.rel.neardata : { *(.rel.neardata .rel.neardata.* .rel.gnu.linkonce.s.*) }
|
||||
.rela.neardata : { *(.rela.neardata .rela.neardata.* .rela.gnu.linkonce.s.*) }
|
||||
.rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.sb.*) }
|
||||
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.sb.*) }
|
||||
.rel.neardata2 : { *(.rel.neardata2 .rel.neardata2.* .rel.gnu.linkonce.s2.*) }
|
||||
.rela.neardata2 : { *(.rela.neardata2 .rela.neardata2.* .rela.gnu.linkonce.s2.*) }
|
||||
.rel.bss2 : { *(.rel.bss2 .rel.bss2.* .rel.gnu.linkonce.sb2.*) }
|
||||
.rela.bss2 : { *(.rela.bss2 .rela.bss2.* .rela.gnu.linkonce.sb2.*) }
|
||||
.rel.far : { *(.rel.far .rel.far.* .rel.gnu.linkonce.b.*) }
|
||||
.rela.far : { *(.rela.far .rela.far.* .rela.gnu.linkonce.b.*) }
|
||||
.data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
|
||||
.dynamic : { *(.dynamic) }
|
||||
.data : { *(.data*) }
|
||||
. = 0x10000000;
|
||||
.rel.plt : { *(.rel.plt) }
|
||||
.rela.plt : { *(.rela.plt) }
|
||||
.plt : { *(.plt) }
|
||||
.text : { *(.text*) }
|
||||
PROVIDE_HIDDEN (__c6xabi_DSBT_BASE = .);
|
||||
.got : { *(.dsbt) *(.got.plt) *(.igot.plt) *(.got) *(.igot) }
|
||||
.neardata : { *(.neardata .neardata.* .gnu.linkonce.s.*) }
|
||||
.rodata : { *(.rodata .rodata.*) }
|
||||
.bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.sb.*) *(.scommon) }
|
||||
.far : { *(.dynfar) *(.far .far.* .gnu.linkonce.b.*) *(COMMON) }
|
||||
.c6xabi.attributes 0 : { KEEP (*(.c6xabi.attributes)) KEEP (*(.gnu.attributes)) }
|
||||
/DISCARD/ : { *(*) }
|
||||
}
|
5
ld/testsuite/ld-tic6x/dsbt-index-error.d
Normal file
5
ld/testsuite/ld-tic6x/dsbt-index-error.d
Normal file
@ -0,0 +1,5 @@
|
||||
#name: C6X invalid DSBT_INDEX
|
||||
#as: -mlittle-endian
|
||||
#ld: -melf32_tic6x_le -Tsbr.ld --dsbt-index 5 --dsbt-size 3
|
||||
#source: dsbt-index.s
|
||||
#error: .*invalid --dsbt-index 5, outside DSBT size.*
|
14
ld/testsuite/ld-tic6x/dsbt-index.d
Normal file
14
ld/testsuite/ld-tic6x/dsbt-index.d
Normal file
@ -0,0 +1,14 @@
|
||||
#name: C6X DSBT_INDEX reloc
|
||||
#as: -mlittle-endian
|
||||
#ld: -melf32_tic6x_le -Tsbr.ld --dsbt-index 5
|
||||
#source: dsbt-index.s
|
||||
#objdump: -dr
|
||||
|
||||
.*: *file format elf32-tic6x-le
|
||||
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
10000000 <[^>]*>:
|
||||
10000000:[ \t]+0700056e[ \t]+ldw \.D2T2 \*\+b14\(20\),b14
|
||||
[ \t]*\.\.\.
|
3
ld/testsuite/ld-tic6x/dsbt-index.s
Normal file
3
ld/testsuite/ld-tic6x/dsbt-index.s
Normal file
@ -0,0 +1,3 @@
|
||||
.text
|
||||
.nocmp
|
||||
ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14
|
68
ld/testsuite/ld-tic6x/dsbt-inrange.ld
Normal file
68
ld/testsuite/ld-tic6x/dsbt-inrange.ld
Normal file
@ -0,0 +1,68 @@
|
||||
EXTERN (__c6xabi_DSBT_BASE);
|
||||
SECTIONS
|
||||
{
|
||||
PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0)); . = SEGMENT_START("text-segment", 0x0) + SIZEOF_HEADERS;
|
||||
. = 0x8000;
|
||||
.hash : { *(.hash) }
|
||||
.gnu.hash : { *(.gnu.hash) }
|
||||
.dynsym : { *(.dynsym) }
|
||||
.dynstr : { *(.dynstr) }
|
||||
.gnu.version : { *(.gnu.version) }
|
||||
.gnu.version_d : { *(.gnu.version_d) }
|
||||
.gnu.version_r : { *(.gnu.version_r) }
|
||||
.rel.init : { *(.rel.init) }
|
||||
.rela.init : { *(.rela.init) }
|
||||
.rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
|
||||
.rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
|
||||
.rel.fini : { *(.rel.fini) }
|
||||
.rela.fini : { *(.rela.fini) }
|
||||
.rel.const : { *(.rel.const .rel.const.* .rel.gnu.linkonce.r.*) }
|
||||
.rela.const : { *(.rela.const .rela.const.* .rela.gnu.linkonce.r.*) }
|
||||
.rel.rodata : { *(.rel.rodata .rel.rodata.*) }
|
||||
.rela.rodata : { *(.rela.rodata .rela.rodata.*) }
|
||||
.rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
|
||||
.rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
|
||||
.rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
|
||||
.rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
|
||||
.rel.fardata : { *(.rel.fardata .rel.fardata.*) }
|
||||
.rela.fardata : { *(.rela.fardata .rela.fardata.*) }
|
||||
.rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
|
||||
.rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
|
||||
.rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
|
||||
.rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
|
||||
.rel.ctors : { *(.rel.ctors) }
|
||||
.rela.ctors : { *(.rela.ctors) }
|
||||
.rel.dtors : { *(.rel.dtors) }
|
||||
.rela.dtors : { *(.rela.dtors) }
|
||||
.rel.got : { *(.rel.got) }
|
||||
.rela.got : { *(.rela.got) }
|
||||
.rel.neardata : { *(.rel.neardata .rel.neardata.* .rel.gnu.linkonce.s.*) }
|
||||
.rela.neardata : { *(.rela.neardata .rela.neardata.* .rela.gnu.linkonce.s.*) }
|
||||
.rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.sb.*) }
|
||||
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.sb.*) }
|
||||
.rel.neardata2 : { *(.rel.neardata2 .rel.neardata2.* .rel.gnu.linkonce.s2.*) }
|
||||
.rela.neardata2 : { *(.rela.neardata2 .rela.neardata2.* .rela.gnu.linkonce.s2.*) }
|
||||
.rel.bss2 : { *(.rel.bss2 .rel.bss2.* .rel.gnu.linkonce.sb2.*) }
|
||||
.rela.bss2 : { *(.rela.bss2 .rela.bss2.* .rela.gnu.linkonce.sb2.*) }
|
||||
.rel.far : { *(.rel.far .rel.far.* .rel.gnu.linkonce.b.*) }
|
||||
.rela.far : { *(.rela.far .rela.far.* .rela.gnu.linkonce.b.*) }
|
||||
.data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
|
||||
.dynamic : { *(.dynamic) }
|
||||
.data : { *(.data*) }
|
||||
. = 0x10000000;
|
||||
.rel.plt : { *(.rel.plt) }
|
||||
.rela.plt : { *(.rela.plt) }
|
||||
.plt : { *(.plt) }
|
||||
.text : { *(.text*) }
|
||||
. = 0x20000000;
|
||||
PROVIDE_HIDDEN (__c6xabi_DSBT_BASE = .);
|
||||
.dsbt : { *(.dsbt) }
|
||||
. = 0x2001fff4;
|
||||
.got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) }
|
||||
.neardata : { *(.neardata .neardata.* .gnu.linkonce.s.*) }
|
||||
.rodata : { *(.rodata .rodata.*) }
|
||||
.bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.sb.*) *(.scommon) }
|
||||
.far : { *(.dynfar) *(.far .far.* .gnu.linkonce.b.*) *(COMMON) }
|
||||
.c6xabi.attributes 0 : { KEEP (*(.c6xabi.attributes)) KEEP (*(.gnu.attributes)) }
|
||||
/DISCARD/ : { *(*) }
|
||||
}
|
68
ld/testsuite/ld-tic6x/dsbt-overflow.ld
Normal file
68
ld/testsuite/ld-tic6x/dsbt-overflow.ld
Normal file
@ -0,0 +1,68 @@
|
||||
EXTERN (__c6xabi_DSBT_BASE);
|
||||
SECTIONS
|
||||
{
|
||||
PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0)); . = SEGMENT_START("text-segment", 0x0) + SIZEOF_HEADERS;
|
||||
. = 0x8000;
|
||||
.hash : { *(.hash) }
|
||||
.gnu.hash : { *(.gnu.hash) }
|
||||
.dynsym : { *(.dynsym) }
|
||||
.dynstr : { *(.dynstr) }
|
||||
.gnu.version : { *(.gnu.version) }
|
||||
.gnu.version_d : { *(.gnu.version_d) }
|
||||
.gnu.version_r : { *(.gnu.version_r) }
|
||||
.rel.init : { *(.rel.init) }
|
||||
.rela.init : { *(.rela.init) }
|
||||
.rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
|
||||
.rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
|
||||
.rel.fini : { *(.rel.fini) }
|
||||
.rela.fini : { *(.rela.fini) }
|
||||
.rel.const : { *(.rel.const .rel.const.* .rel.gnu.linkonce.r.*) }
|
||||
.rela.const : { *(.rela.const .rela.const.* .rela.gnu.linkonce.r.*) }
|
||||
.rel.rodata : { *(.rel.rodata .rel.rodata.*) }
|
||||
.rela.rodata : { *(.rela.rodata .rela.rodata.*) }
|
||||
.rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
|
||||
.rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
|
||||
.rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
|
||||
.rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
|
||||
.rel.fardata : { *(.rel.fardata .rel.fardata.*) }
|
||||
.rela.fardata : { *(.rela.fardata .rela.fardata.*) }
|
||||
.rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
|
||||
.rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
|
||||
.rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
|
||||
.rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
|
||||
.rel.ctors : { *(.rel.ctors) }
|
||||
.rela.ctors : { *(.rela.ctors) }
|
||||
.rel.dtors : { *(.rel.dtors) }
|
||||
.rela.dtors : { *(.rela.dtors) }
|
||||
.rel.got : { *(.rel.got) }
|
||||
.rela.got : { *(.rela.got) }
|
||||
.rel.neardata : { *(.rel.neardata .rel.neardata.* .rel.gnu.linkonce.s.*) }
|
||||
.rela.neardata : { *(.rela.neardata .rela.neardata.* .rela.gnu.linkonce.s.*) }
|
||||
.rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.sb.*) }
|
||||
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.sb.*) }
|
||||
.rel.neardata2 : { *(.rel.neardata2 .rel.neardata2.* .rel.gnu.linkonce.s2.*) }
|
||||
.rela.neardata2 : { *(.rela.neardata2 .rela.neardata2.* .rela.gnu.linkonce.s2.*) }
|
||||
.rel.bss2 : { *(.rel.bss2 .rel.bss2.* .rel.gnu.linkonce.sb2.*) }
|
||||
.rela.bss2 : { *(.rela.bss2 .rela.bss2.* .rela.gnu.linkonce.sb2.*) }
|
||||
.rel.far : { *(.rel.far .rel.far.* .rel.gnu.linkonce.b.*) }
|
||||
.rela.far : { *(.rela.far .rela.far.* .rela.gnu.linkonce.b.*) }
|
||||
.data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
|
||||
.dynamic : { *(.dynamic) }
|
||||
.data : { *(.data*) }
|
||||
. = 0x10000000;
|
||||
.rel.plt : { *(.rel.plt) }
|
||||
.rela.plt : { *(.rela.plt) }
|
||||
.plt : { *(.plt) }
|
||||
.text : { *(.text*) }
|
||||
. = 0x20000000;
|
||||
PROVIDE_HIDDEN (__c6xabi_DSBT_BASE = .);
|
||||
.dsbt : { *(.dsbt) }
|
||||
. = 0x2001fff8;
|
||||
.got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) }
|
||||
.neardata : { *(.neardata .neardata.* .gnu.linkonce.s.*) }
|
||||
.rodata : { *(.rodata .rodata.*) }
|
||||
.bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.sb.*) *(.scommon) }
|
||||
.far : { *(.dynfar) *(.far .far.* .gnu.linkonce.b.*) *(COMMON) }
|
||||
.c6xabi.attributes 0 : { KEEP (*(.c6xabi.attributes)) KEEP (*(.gnu.attributes)) }
|
||||
/DISCARD/ : { *(*) }
|
||||
}
|
65
ld/testsuite/ld-tic6x/dsbt.ld
Normal file
65
ld/testsuite/ld-tic6x/dsbt.ld
Normal file
@ -0,0 +1,65 @@
|
||||
EXTERN (__c6xabi_DSBT_BASE);
|
||||
SECTIONS
|
||||
{
|
||||
PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0)); . = SEGMENT_START("text-segment", 0x0) + SIZEOF_HEADERS;
|
||||
. = 0x8000;
|
||||
.hash : { *(.hash) }
|
||||
.gnu.hash : { *(.gnu.hash) }
|
||||
.dynsym : { *(.dynsym) }
|
||||
.dynstr : { *(.dynstr) }
|
||||
.gnu.version : { *(.gnu.version) }
|
||||
.gnu.version_d : { *(.gnu.version_d) }
|
||||
.gnu.version_r : { *(.gnu.version_r) }
|
||||
.rel.init : { *(.rel.init) }
|
||||
.rela.init : { *(.rela.init) }
|
||||
.rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
|
||||
.rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
|
||||
.rel.fini : { *(.rel.fini) }
|
||||
.rela.fini : { *(.rela.fini) }
|
||||
.rel.const : { *(.rel.const .rel.const.* .rel.gnu.linkonce.r.*) }
|
||||
.rela.const : { *(.rela.const .rela.const.* .rela.gnu.linkonce.r.*) }
|
||||
.rel.rodata : { *(.rel.rodata .rel.rodata.*) }
|
||||
.rela.rodata : { *(.rela.rodata .rela.rodata.*) }
|
||||
.rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
|
||||
.rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
|
||||
.rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
|
||||
.rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
|
||||
.rel.fardata : { *(.rel.fardata .rel.fardata.*) }
|
||||
.rela.fardata : { *(.rela.fardata .rela.fardata.*) }
|
||||
.rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
|
||||
.rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
|
||||
.rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
|
||||
.rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
|
||||
.rel.ctors : { *(.rel.ctors) }
|
||||
.rela.ctors : { *(.rela.ctors) }
|
||||
.rel.dtors : { *(.rel.dtors) }
|
||||
.rela.dtors : { *(.rela.dtors) }
|
||||
.rel.got : { *(.rel.got) }
|
||||
.rela.got : { *(.rela.got) }
|
||||
.rel.neardata : { *(.rel.neardata .rel.neardata.* .rel.gnu.linkonce.s.*) }
|
||||
.rela.neardata : { *(.rela.neardata .rela.neardata.* .rela.gnu.linkonce.s.*) }
|
||||
.rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.sb.*) }
|
||||
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.sb.*) }
|
||||
.rel.neardata2 : { *(.rel.neardata2 .rel.neardata2.* .rel.gnu.linkonce.s2.*) }
|
||||
.rela.neardata2 : { *(.rela.neardata2 .rela.neardata2.* .rela.gnu.linkonce.s2.*) }
|
||||
.rel.bss2 : { *(.rel.bss2 .rel.bss2.* .rel.gnu.linkonce.sb2.*) }
|
||||
.rela.bss2 : { *(.rela.bss2 .rela.bss2.* .rela.gnu.linkonce.sb2.*) }
|
||||
.rel.far : { *(.rel.far .rel.far.* .rel.gnu.linkonce.b.*) }
|
||||
.rela.far : { *(.rela.far .rela.far.* .rela.gnu.linkonce.b.*) }
|
||||
.data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
|
||||
.dynamic : { *(.dynamic) }
|
||||
.data : { *(.data*) }
|
||||
. = 0x10000000;
|
||||
.rel.plt : { *(.rel.plt) }
|
||||
.rela.plt : { *(.rela.plt) }
|
||||
.plt : { *(.plt) }
|
||||
.text : { *(.text*) }
|
||||
PROVIDE_HIDDEN (__c6xabi_DSBT_BASE = .);
|
||||
.got : { *(.dsbt) *(.got.plt) *(.igot.plt) *(.got) *(.igot) }
|
||||
.neardata : { *(.neardata .neardata.* .gnu.linkonce.s.*) }
|
||||
.rodata : { *(.rodata .rodata.*) }
|
||||
.bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.sb.*) *(.scommon) }
|
||||
.far : { *(.dynfar) *(.far .far.* .gnu.linkonce.b.*) *(COMMON) }
|
||||
.c6xabi.attributes 0 : { KEEP (*(.c6xabi.attributes)) KEEP (*(.gnu.attributes)) }
|
||||
/DISCARD/ : { *(*) }
|
||||
}
|
5
ld/testsuite/ld-tic6x/got-reloc-global-addend-1.d
Normal file
5
ld/testsuite/ld-tic6x/got-reloc-global-addend-1.d
Normal file
@ -0,0 +1,5 @@
|
||||
#name: C6X GOT relocations, addend
|
||||
#as: -mlittle-endian -mdsbt
|
||||
#ld: -melf32_tic6x_le -Tdsbt.ld --dsbt-index 4 -shared
|
||||
#source: got-reloc-global-addend-1.s
|
||||
#error: .*relocation R_C6000_SBR_GOT_U15_W with non-zero addend 4.*
|
11
ld/testsuite/ld-tic6x/got-reloc-global-addend-1.s
Normal file
11
ld/testsuite/ld-tic6x/got-reloc-global-addend-1.s
Normal file
@ -0,0 +1,11 @@
|
||||
.text
|
||||
.nocmp
|
||||
ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14
|
||||
ldw .d2t1 *+B14($GOT(a)+4), A1
|
||||
|
||||
.global a
|
||||
.section .neardata,"aw",@progbits
|
||||
.align 2
|
||||
.type a, @object
|
||||
.size a, 4
|
||||
a:
|
5
ld/testsuite/ld-tic6x/got-reloc-global-addend-2.d
Normal file
5
ld/testsuite/ld-tic6x/got-reloc-global-addend-2.d
Normal file
@ -0,0 +1,5 @@
|
||||
#name: C6X GOT relocations, addend
|
||||
#as: -mlittle-endian -mdsbt
|
||||
#ld: -melf32_tic6x_le -Tdsbt.ld --dsbt-index 4 -shared
|
||||
#source: got-reloc-global-addend-2.s
|
||||
#error: .*relocation R_C6000_SBR_GOT_L16_W with non-zero addend 4.*
|
11
ld/testsuite/ld-tic6x/got-reloc-global-addend-2.s
Normal file
11
ld/testsuite/ld-tic6x/got-reloc-global-addend-2.s
Normal file
@ -0,0 +1,11 @@
|
||||
.text
|
||||
.nocmp
|
||||
ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14
|
||||
mvkl .s1 $DPR_GOT(a)+4, A1
|
||||
|
||||
.global a
|
||||
.section .neardata,"aw",@progbits
|
||||
.align 2
|
||||
.type a, @object
|
||||
.size a, 4
|
||||
a:
|
11
ld/testsuite/ld-tic6x/got-reloc-global.s
Normal file
11
ld/testsuite/ld-tic6x/got-reloc-global.s
Normal file
@ -0,0 +1,11 @@
|
||||
.text
|
||||
.nocmp
|
||||
ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14
|
||||
ldw .d2t1 *+B14($GOT(a)), A1
|
||||
|
||||
.global a
|
||||
.section .neardata,"aw",@progbits
|
||||
.align 2
|
||||
.type a, @object
|
||||
.size a, 4
|
||||
a:
|
15
ld/testsuite/ld-tic6x/got-reloc-inrange.d
Normal file
15
ld/testsuite/ld-tic6x/got-reloc-inrange.d
Normal file
@ -0,0 +1,15 @@
|
||||
#name: C6X GOT relocations, no overflow
|
||||
#as: -mlittle-endian -mdsbt
|
||||
#ld: -melf32_tic6x_le -Tdsbt-inrange.ld --dsbt-index 4 -shared
|
||||
#source: got-reloc-global.s
|
||||
#objdump: -dr
|
||||
|
||||
.*: *file format elf32-tic6x-le
|
||||
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
10000000 <[^>]*>:
|
||||
10000000:[ \t]+0700046e[ \t]+ldw \.D2T2 \*\+b14\(16\),b14
|
||||
10000004:[ \t]+00ffff6c[ \t]+ldw \.D2T1 \*\+b14\(131068\),a1
|
||||
[ \t]+...
|
8
ld/testsuite/ld-tic6x/got-reloc-local-1.s
Normal file
8
ld/testsuite/ld-tic6x/got-reloc-local-1.s
Normal file
@ -0,0 +1,8 @@
|
||||
.text
|
||||
.nocmp
|
||||
ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14
|
||||
ldw .d2t1 *+B14($GOT(a)), A1
|
||||
|
||||
.data
|
||||
a:
|
||||
.word 0
|
8
ld/testsuite/ld-tic6x/got-reloc-local-2.s
Normal file
8
ld/testsuite/ld-tic6x/got-reloc-local-2.s
Normal file
@ -0,0 +1,8 @@
|
||||
.text
|
||||
.nocmp
|
||||
ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14
|
||||
ldw .d2t1 *+B14($GOT(b)), A1
|
||||
|
||||
.data
|
||||
b:
|
||||
.word 0
|
23
ld/testsuite/ld-tic6x/got-reloc-local-r.d
Normal file
23
ld/testsuite/ld-tic6x/got-reloc-local-r.d
Normal file
@ -0,0 +1,23 @@
|
||||
#name: C6X GOT relocations, local symbols, -r
|
||||
#as: -mlittle-endian
|
||||
#ld: -r -melf32_tic6x_le
|
||||
#source: got-reloc-local-1.s
|
||||
#source: got-reloc-local-2.s
|
||||
#objdump: -dr
|
||||
|
||||
.*: *file format elf32-tic6x-le
|
||||
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
00000000 <\.text>:
|
||||
[ ]*0:[ ]*0700006e[ ]*ldw \.D2T2 \*\+b14\(0\),b14
|
||||
[ ]*0:[ ]*R_C6000_DSBT_INDEX __c6xabi_DSBT_BASE
|
||||
[ ]*4:[ ]*0080006c[ ]*ldw \.D2T1 \*\+b14\(0\),a1
|
||||
[ ]*4:[ ]*R_C6000_SBR_GOT_U15_W a
|
||||
\.\.\.
|
||||
[ ]*20:[ ]*0700006e[ ]*ldw \.D2T2 \*\+b14\(0\),b14
|
||||
[ ]*20: R_C6000_DSBT_INDEX __c6xabi_DSBT_BASE
|
||||
[ ]*24:[ ]*0080006c[ ]*ldw \.D2T1 \*\+b14\(0\),a1
|
||||
[ ]*24:[ ]*R_C6000_SBR_GOT_U15_W b
|
||||
\.\.\.
|
5
ld/testsuite/ld-tic6x/got-reloc-overflow.d
Normal file
5
ld/testsuite/ld-tic6x/got-reloc-overflow.d
Normal file
@ -0,0 +1,5 @@
|
||||
#name: C6X GOT relocations, overflow
|
||||
#as: -mlittle-endian -mdsbt
|
||||
#ld: -melf32_tic6x_le -Tdsbt-overflow.ld --dsbt-index 4 -shared
|
||||
#source: got-reloc-global.s
|
||||
#error: .*relocation truncated to fit: R_C6000_SBR_GOT_U15_W.*
|
67
ld/testsuite/ld-tic6x/shlib-1.dd
Normal file
67
ld/testsuite/ld-tic6x/shlib-1.dd
Normal file
@ -0,0 +1,67 @@
|
||||
|
||||
tmpdir/libtest\.so: file format elf32-tic6x-le
|
||||
|
||||
|
||||
Disassembly of section \.plt:
|
||||
|
||||
10000020 <sub0@plt-0x18>:
|
||||
10000020:[ \t]*0100036e[ \t]*ldw \.D2T2 \*\+b14\(12\),b2
|
||||
10000024:[ \t]*0080046e[ \t]*ldw \.D2T2 \*\+b14\(16\),b1
|
||||
10000028:[ \t]*00004000[ \t]*nop 3
|
||||
1000002c:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
10000030:[ \t]*00008000[ \t]*nop 5
|
||||
10000034:[ \t]*00000000[ \t]*nop 1
|
||||
|
||||
10000038 <sub0@plt>:
|
||||
10000038:[ \t]*0100056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b2
|
||||
1000003c:[ \t]*0000002a[ \t]*mvk \.S2 0,b0
|
||||
10000040:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0
|
||||
10000044:[ \t]*00002000[ \t]*nop 2
|
||||
10000048:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
1000004c:[ \t]*00008000[ \t]*nop 5
|
||||
|
||||
10000050 <sub@plt>:
|
||||
10000050:[ \t]*0100066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b2
|
||||
10000054:[ \t]*0000062a[ \t]*mvk \.S2 12,b0
|
||||
10000058:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0
|
||||
1000005c:[ \t]*00002000[ \t]*nop 2
|
||||
10000060:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
10000064:[ \t]*00008000[ \t]*nop 5
|
||||
\.\.\.
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
10000080 <sub1>:
|
||||
10000080:[ \t]*000c0362[ \t]*b \.S2 b3
|
||||
10000084:[ \t]*00008000[ \t]*nop 5
|
||||
|
||||
10000088 <sub0>:
|
||||
10000088:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15
|
||||
1000008c:[ \t]*01bc62f6[ \t]*stw \.D2T2 b3,\*\+b15\(12\)
|
||||
10000090:[ \t]*073c82f6[ \t]*stw \.D2T2 b14,\*\+b15\(16\)
|
||||
10000094:[ \t]*0700026e[ \t]*ldw \.D2T2 \*\+b14\(8\),b14
|
||||
10000098:[ \t]*0ffffa12[ \t]*b \.S2 10000050 <sub@plt>
|
||||
1000009c:[ \t]*0ffff712[ \t]*b \.S2 10000038 <sub0@plt>
|
||||
100000a0:[ \t]*0ffffc12[ \t]*b \.S2 10000080 <sub1>
|
||||
100000a4:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3
|
||||
100000a8:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14
|
||||
100000ac:[ \t]*07800852[ \t]*addk \.S2 16,b15
|
||||
100000b0:[ \t]*00004000[ \t]*nop 3
|
||||
100000b4:[ \t]*000c0362[ \t]*b \.S2 b3
|
||||
100000b8:[ \t]*00008000[ \t]*nop 5
|
||||
100000bc:[ \t]*00000000[ \t]*nop 1
|
||||
|
||||
100000c0 <sub>:
|
||||
100000c0:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15
|
||||
100000c4:[ \t]*023c62f4[ \t]*stw \.D2T1 a4,\*\+b15\(12\)
|
||||
100000c8:[ \t]*003c62e4[ \t]*ldw \.D2T1 \*\+b15\(12\),a0
|
||||
100000cc:[ \t]*00006000[ \t]*nop 4
|
||||
100000d0:[ \t]*00014940[ \t]*add \.D1 a0,10,a0
|
||||
100000d4:[ \t]*020008f0[ \t]*or \.D1 0,a0,a4
|
||||
100000d8:[ \t]*07be0942[ \t]*add \.D2 b15,16,b15
|
||||
100000dc:[ \t]*000c0362[ \t]*b \.S2 b3
|
||||
100000e0:[ \t]*0300096e[ \t]*ldw \.D2T2 \*\+b14\(36\),b6
|
||||
100000e4:[ \t]*0380076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b7
|
||||
100000e8:[ \t]*0400086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b8
|
||||
100000ec:[ \t]*04800c6e[ \t]*ldw \.D2T2 \*\+b14\(48\),b9
|
||||
\.\.\.
|
123
ld/testsuite/ld-tic6x/shlib-1.rd
Normal file
123
ld/testsuite/ld-tic6x/shlib-1.rd
Normal file
@ -0,0 +1,123 @@
|
||||
There are 17 section headers, starting at offset 0x21c4:
|
||||
|
||||
Section Headers:
|
||||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 000048 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 6 4
|
||||
\[ 3\] \.dynstr STRTAB 00008118 001118 000025 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 00008140 001140 000024 0c A 2 10 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008164 001164 000018 0c A 2 11 4
|
||||
\[ 6\] \.dynamic DYNAMIC 0000817c 00117c 0000a8 08 WA 3 0 4
|
||||
\[ 7\] \.rela\.plt RELA 10000000 002000 000018 0c A 2 8 4
|
||||
\[ 8\] \.plt PROGBITS 10000020 002020 000060 18 AX 0 0 32
|
||||
\[ 9\] \.text PROGBITS 10000080 002080 000080 00 AX 0 0 32
|
||||
\[10\] \.got PROGBITS 10000100 002100 000028 00 WA 0 0 4
|
||||
\[11\] \.neardata PROGBITS 10000128 002128 000008 00 WA 0 0 4
|
||||
\[12\] \.bss NOBITS 10000130 002130 000004 00 WA 0 0 4
|
||||
\[13\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 002130 000019 00 0 0 1
|
||||
\[14\] \.shstrtab STRTAB 00000000 002149 00007b 00 0 0 1
|
||||
\[15\] \.symtab SYMTAB 00000000 00246c 0001a0 10 16 19 4
|
||||
\[16\] \.strtab STRTAB 00000000 00260c 000059 00 0 0 1
|
||||
Key to Flags:
|
||||
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
|
||||
I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\)
|
||||
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
|
||||
|
||||
Elf file type is DYN \(Shared object file\)
|
||||
Entry point 0x10000080
|
||||
There are 4 program headers, starting at offset 52
|
||||
|
||||
Program Headers:
|
||||
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
|
||||
LOAD 0x001000 0x00008000 0x00008000 0x00224 0x00224 RW 0x1000
|
||||
LOAD 0x002000 0x10000000 0x10000000 0x00130 0x00134 RWE 0x1000
|
||||
DYNAMIC 0x00117c 0x0000817c 0x0000817c 0x000a8 0x000a8 RW 0x4
|
||||
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
|
||||
|
||||
Section to Segment mapping:
|
||||
Segment Sections\.\.\.
|
||||
00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.dynamic
|
||||
01 \.rela\.plt \.plt \.text \.got \.neardata \.bss
|
||||
02 \.dynamic
|
||||
03
|
||||
|
||||
Dynamic section at offset 0x117c contains 16 entries:
|
||||
Tag Type Name/Value
|
||||
0x00000004 \(HASH\) 0x8000
|
||||
0x00000005 \(STRTAB\) 0x8118
|
||||
0x00000006 \(SYMTAB\) 0x8048
|
||||
0x0000000a \(STRSZ\) 37 \(bytes\)
|
||||
0x0000000b \(SYMENT\) 16 \(bytes\)
|
||||
0x70000000 \(C6000_DSBT_BASE\) 0x10000100
|
||||
0x70000001 \(C6000_DSBT_SIZE\) 0x3
|
||||
0x70000003 \(C6000_DSBT_INDEX\) 0x2
|
||||
0x00000003 \(PLTGOT\) 0x1000010c
|
||||
0x00000002 \(PLTRELSZ\) 24 \(bytes\)
|
||||
0x00000014 \(PLTREL\) RELA
|
||||
0x00000017 \(JMPREL\) 0x10000000
|
||||
0x00000007 \(RELA\) 0x8140
|
||||
0x00000008 \(RELASZ\) 84 \(bytes\)
|
||||
0x00000009 \(RELAENT\) 12 \(bytes\)
|
||||
0x00000000 \(NULL\) 0x0
|
||||
|
||||
Relocation section '\.rela\.got' at offset 0x1140 contains 3 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
10000120 00000501 R_C6000_ABS32 10000130 \.bss \+ 0
|
||||
1000011c 00000701 R_C6000_ABS32 00000000 b \+ 0
|
||||
10000124 00000b01 R_C6000_ABS32 10000128 a \+ 0
|
||||
|
||||
Relocation section '\.rela\.neardata' at offset 0x1164 contains 2 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
10000128 00000a01 R_C6000_ABS32 10000088 sub0 \+ 0
|
||||
1000012c 00000801 R_C6000_ABS32 00000000 g1 \+ 0
|
||||
|
||||
Relocation section '\.rela\.plt' at offset 0x2000 contains 2 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
10000114 00000a1b R_C6000_JUMP_SLOT 10000088 sub0 \+ 0
|
||||
10000118 00000c1b R_C6000_JUMP_SLOT 100000c0 sub \+ 0
|
||||
|
||||
Symbol table '\.dynsym' contains 13 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 10000020 0 SECTION LOCAL DEFAULT 8
|
||||
2: 10000080 0 SECTION LOCAL DEFAULT 9
|
||||
3: 10000100 0 SECTION LOCAL DEFAULT 10
|
||||
4: 10000128 0 SECTION LOCAL DEFAULT 11
|
||||
5: 10000130 0 SECTION LOCAL DEFAULT 12
|
||||
6: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
7: 00000000 0 NOTYPE WEAK DEFAULT UND b
|
||||
8: 00000000 0 NOTYPE WEAK DEFAULT UND g1
|
||||
9: 1000012c 4 OBJECT GLOBAL DEFAULT 11 g2
|
||||
10: 10000088 52 FUNC GLOBAL DEFAULT 9 sub0
|
||||
11: 10000128 4 OBJECT GLOBAL DEFAULT 11 a
|
||||
12: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub
|
||||
|
||||
Symbol table '\.symtab' contains 26 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 00008000 0 SECTION LOCAL DEFAULT 1
|
||||
2: 00008048 0 SECTION LOCAL DEFAULT 2
|
||||
3: 00008118 0 SECTION LOCAL DEFAULT 3
|
||||
4: 00008140 0 SECTION LOCAL DEFAULT 4
|
||||
5: 00008164 0 SECTION LOCAL DEFAULT 5
|
||||
6: 0000817c 0 SECTION LOCAL DEFAULT 6
|
||||
7: 10000000 0 SECTION LOCAL DEFAULT 7
|
||||
8: 10000020 0 SECTION LOCAL DEFAULT 8
|
||||
9: 10000080 0 SECTION LOCAL DEFAULT 9
|
||||
10: 10000100 0 SECTION LOCAL DEFAULT 10
|
||||
11: 10000128 0 SECTION LOCAL DEFAULT 11
|
||||
12: 10000130 0 SECTION LOCAL DEFAULT 12
|
||||
13: 00000000 0 SECTION LOCAL DEFAULT 13
|
||||
14: 10000080 0 FUNC LOCAL HIDDEN 9 sub1
|
||||
15: 0000817c 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC
|
||||
16: 10000130 4 OBJECT LOCAL DEFAULT 12 c
|
||||
17: 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
|
||||
18: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
19: 00000000 0 NOTYPE WEAK DEFAULT UND b
|
||||
20: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize
|
||||
21: 00000000 0 NOTYPE WEAK DEFAULT UND g1
|
||||
22: 1000012c 4 OBJECT GLOBAL DEFAULT 11 g2
|
||||
23: 10000088 52 FUNC GLOBAL DEFAULT 9 sub0
|
||||
24: 10000128 4 OBJECT GLOBAL DEFAULT 11 a
|
||||
25: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub
|
44
ld/testsuite/ld-tic6x/shlib-1.s
Normal file
44
ld/testsuite/ld-tic6x/shlib-1.s
Normal file
@ -0,0 +1,44 @@
|
||||
.text
|
||||
.nocmp
|
||||
.align 2
|
||||
.hidden sub1
|
||||
.type sub1, @function
|
||||
sub1:
|
||||
ret .s2 B3
|
||||
nop 5
|
||||
|
||||
.global sub0
|
||||
.type sub0, @function
|
||||
sub0:
|
||||
sub .d2 B15, 16, B15
|
||||
stw .d2t2 B3, *+B15(12)
|
||||
stw .d2t2 B14, *+B15(16)
|
||||
ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14
|
||||
call .s2 (sub)
|
||||
call .s2 (sub0)
|
||||
call .s2 (sub1)
|
||||
.L2:
|
||||
ldw .d2t2 *+B15(12), B3
|
||||
ldw .d2t2 *+B15(16), B14
|
||||
addk .s2 16, B15
|
||||
nop 3
|
||||
ret .s2 B3
|
||||
nop 5
|
||||
.size sub0, .-sub0
|
||||
|
||||
.global a
|
||||
.section .neardata,"aw",@progbits
|
||||
.align 2
|
||||
.type a, @object
|
||||
.size a, 4
|
||||
a:
|
||||
.long sub0
|
||||
.weak g1
|
||||
.global g2
|
||||
.type g2, @object
|
||||
.size g2, 4
|
||||
g2:
|
||||
.long g1
|
||||
|
||||
.hidden c
|
||||
.scomm c,4,4
|
7
ld/testsuite/ld-tic6x/shlib-1.sd
Normal file
7
ld/testsuite/ld-tic6x/shlib-1.sd
Normal file
@ -0,0 +1,7 @@
|
||||
|
||||
tmpdir/libtest\.so: file format elf32-tic6x-le
|
||||
|
||||
Contents of section \.got:
|
||||
[ \t]*10000100 00000000 00000000 00000000 00000000 .*
|
||||
[ \t]*10000110 00000000 20000010 20000010 00000000 .*
|
||||
[ \t]*10000120 30010010 00000000 .*
|
67
ld/testsuite/ld-tic6x/shlib-1b.dd
Normal file
67
ld/testsuite/ld-tic6x/shlib-1b.dd
Normal file
@ -0,0 +1,67 @@
|
||||
|
||||
tmpdir/libtestb\.so: file format elf32-tic6x-be
|
||||
|
||||
|
||||
Disassembly of section \.plt:
|
||||
|
||||
10000020 <sub0@plt-0x18>:
|
||||
10000020:[ \t]*0100036e[ \t]*ldw \.D2T2 \*\+b14\(12\),b2
|
||||
10000024:[ \t]*0080046e[ \t]*ldw \.D2T2 \*\+b14\(16\),b1
|
||||
10000028:[ \t]*00004000[ \t]*nop 3
|
||||
1000002c:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
10000030:[ \t]*00008000[ \t]*nop 5
|
||||
10000034:[ \t]*00000000[ \t]*nop 1
|
||||
|
||||
10000038 <sub0@plt>:
|
||||
10000038:[ \t]*0100056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b2
|
||||
1000003c:[ \t]*0000002a[ \t]*mvk \.S2 0,b0
|
||||
10000040:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0
|
||||
10000044:[ \t]*00002000[ \t]*nop 2
|
||||
10000048:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
1000004c:[ \t]*00008000[ \t]*nop 5
|
||||
|
||||
10000050 <sub@plt>:
|
||||
10000050:[ \t]*0100066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b2
|
||||
10000054:[ \t]*0000062a[ \t]*mvk \.S2 12,b0
|
||||
10000058:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0
|
||||
1000005c:[ \t]*00002000[ \t]*nop 2
|
||||
10000060:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
10000064:[ \t]*00008000[ \t]*nop 5
|
||||
\.\.\.
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
10000080 <sub1>:
|
||||
10000080:[ \t]*000c0362[ \t]*b \.S2 b3
|
||||
10000084:[ \t]*00008000[ \t]*nop 5
|
||||
|
||||
10000088 <sub0>:
|
||||
10000088:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15
|
||||
1000008c:[ \t]*01bc62f6[ \t]*stw \.D2T2 b3,\*\+b15\(12\)
|
||||
10000090:[ \t]*073c82f6[ \t]*stw \.D2T2 b14,\*\+b15\(16\)
|
||||
10000094:[ \t]*0700026e[ \t]*ldw \.D2T2 \*\+b14\(8\),b14
|
||||
10000098:[ \t]*0ffffa12[ \t]*b \.S2 10000050 <sub@plt>
|
||||
1000009c:[ \t]*0ffff712[ \t]*b \.S2 10000038 <sub0@plt>
|
||||
100000a0:[ \t]*0ffffc12[ \t]*b \.S2 10000080 <sub1>
|
||||
100000a4:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3
|
||||
100000a8:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14
|
||||
100000ac:[ \t]*07800852[ \t]*addk \.S2 16,b15
|
||||
100000b0:[ \t]*00004000[ \t]*nop 3
|
||||
100000b4:[ \t]*000c0362[ \t]*b \.S2 b3
|
||||
100000b8:[ \t]*00008000[ \t]*nop 5
|
||||
100000bc:[ \t]*00000000[ \t]*nop 1
|
||||
|
||||
100000c0 <sub>:
|
||||
100000c0:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15
|
||||
100000c4:[ \t]*023c62f4[ \t]*stw \.D2T1 a4,\*\+b15\(12\)
|
||||
100000c8:[ \t]*003c62e4[ \t]*ldw \.D2T1 \*\+b15\(12\),a0
|
||||
100000cc:[ \t]*00006000[ \t]*nop 4
|
||||
100000d0:[ \t]*00014940[ \t]*add \.D1 a0,10,a0
|
||||
100000d4:[ \t]*020008f0[ \t]*or \.D1 0,a0,a4
|
||||
100000d8:[ \t]*07be0942[ \t]*add \.D2 b15,16,b15
|
||||
100000dc:[ \t]*000c0362[ \t]*b \.S2 b3
|
||||
100000e0:[ \t]*0300096e[ \t]*ldw \.D2T2 \*\+b14\(36\),b6
|
||||
100000e4:[ \t]*0380076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b7
|
||||
100000e8:[ \t]*0400086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b8
|
||||
100000ec:[ \t]*04800c6e[ \t]*ldw \.D2T2 \*\+b14\(48\),b9
|
||||
\.\.\.
|
123
ld/testsuite/ld-tic6x/shlib-1b.rd
Normal file
123
ld/testsuite/ld-tic6x/shlib-1b.rd
Normal file
@ -0,0 +1,123 @@
|
||||
There are 17 section headers, starting at offset 0x21c4:
|
||||
|
||||
Section Headers:
|
||||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 000048 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 6 4
|
||||
\[ 3\] \.dynstr STRTAB 00008118 001118 000025 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 00008140 001140 000024 0c A 2 10 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008164 001164 000018 0c A 2 11 4
|
||||
\[ 6\] \.dynamic DYNAMIC 0000817c 00117c 0000a8 08 WA 3 0 4
|
||||
\[ 7\] \.rela\.plt RELA 10000000 002000 000018 0c A 2 8 4
|
||||
\[ 8\] \.plt PROGBITS 10000020 002020 000060 18 AX 0 0 32
|
||||
\[ 9\] \.text PROGBITS 10000080 002080 000080 00 AX 0 0 32
|
||||
\[10\] \.got PROGBITS 10000100 002100 000028 00 WA 0 0 4
|
||||
\[11\] \.neardata PROGBITS 10000128 002128 000008 00 WA 0 0 4
|
||||
\[12\] \.bss NOBITS 10000130 002130 000004 00 WA 0 0 4
|
||||
\[13\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 002130 000019 00 0 0 1
|
||||
\[14\] \.shstrtab STRTAB 00000000 002149 00007b 00 0 0 1
|
||||
\[15\] \.symtab SYMTAB 00000000 00246c 0001a0 10 16 19 4
|
||||
\[16\] \.strtab STRTAB 00000000 00260c 000059 00 0 0 1
|
||||
Key to Flags:
|
||||
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
|
||||
I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\)
|
||||
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
|
||||
|
||||
Elf file type is DYN \(Shared object file\)
|
||||
Entry point 0x10000080
|
||||
There are 4 program headers, starting at offset 52
|
||||
|
||||
Program Headers:
|
||||
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
|
||||
LOAD 0x001000 0x00008000 0x00008000 0x00224 0x00224 RW 0x1000
|
||||
LOAD 0x002000 0x10000000 0x10000000 0x00130 0x00134 RWE 0x1000
|
||||
DYNAMIC 0x00117c 0x0000817c 0x0000817c 0x000a8 0x000a8 RW 0x4
|
||||
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
|
||||
|
||||
Section to Segment mapping:
|
||||
Segment Sections\.\.\.
|
||||
00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.dynamic
|
||||
01 \.rela\.plt \.plt \.text \.got \.neardata \.bss
|
||||
02 \.dynamic
|
||||
03
|
||||
|
||||
Dynamic section at offset 0x117c contains 16 entries:
|
||||
Tag Type Name/Value
|
||||
0x00000004 \(HASH\) 0x8000
|
||||
0x00000005 \(STRTAB\) 0x8118
|
||||
0x00000006 \(SYMTAB\) 0x8048
|
||||
0x0000000a \(STRSZ\) 37 \(bytes\)
|
||||
0x0000000b \(SYMENT\) 16 \(bytes\)
|
||||
0x70000000 \(C6000_DSBT_BASE\) 0x10000100
|
||||
0x70000001 \(C6000_DSBT_SIZE\) 0x3
|
||||
0x70000003 \(C6000_DSBT_INDEX\) 0x2
|
||||
0x00000003 \(PLTGOT\) 0x1000010c
|
||||
0x00000002 \(PLTRELSZ\) 24 \(bytes\)
|
||||
0x00000014 \(PLTREL\) RELA
|
||||
0x00000017 \(JMPREL\) 0x10000000
|
||||
0x00000007 \(RELA\) 0x8140
|
||||
0x00000008 \(RELASZ\) 84 \(bytes\)
|
||||
0x00000009 \(RELAENT\) 12 \(bytes\)
|
||||
0x00000000 \(NULL\) 0x0
|
||||
|
||||
Relocation section '\.rela\.got' at offset 0x1140 contains 3 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
10000120 00000501 R_C6000_ABS32 10000130 \.bss \+ 0
|
||||
1000011c 00000701 R_C6000_ABS32 00000000 b \+ 0
|
||||
10000124 00000b01 R_C6000_ABS32 10000128 a \+ 0
|
||||
|
||||
Relocation section '\.rela\.neardata' at offset 0x1164 contains 2 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
10000128 00000a01 R_C6000_ABS32 10000088 sub0 \+ 0
|
||||
1000012c 00000801 R_C6000_ABS32 00000000 g1 \+ 0
|
||||
|
||||
Relocation section '\.rela\.plt' at offset 0x2000 contains 2 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
10000114 00000a1b R_C6000_JUMP_SLOT 10000088 sub0 \+ 0
|
||||
10000118 00000c1b R_C6000_JUMP_SLOT 100000c0 sub \+ 0
|
||||
|
||||
Symbol table '\.dynsym' contains 13 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 10000020 0 SECTION LOCAL DEFAULT 8
|
||||
2: 10000080 0 SECTION LOCAL DEFAULT 9
|
||||
3: 10000100 0 SECTION LOCAL DEFAULT 10
|
||||
4: 10000128 0 SECTION LOCAL DEFAULT 11
|
||||
5: 10000130 0 SECTION LOCAL DEFAULT 12
|
||||
6: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
7: 00000000 0 NOTYPE WEAK DEFAULT UND b
|
||||
8: 00000000 0 NOTYPE WEAK DEFAULT UND g1
|
||||
9: 1000012c 4 OBJECT GLOBAL DEFAULT 11 g2
|
||||
10: 10000088 52 FUNC GLOBAL DEFAULT 9 sub0
|
||||
11: 10000128 4 OBJECT GLOBAL DEFAULT 11 a
|
||||
12: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub
|
||||
|
||||
Symbol table '\.symtab' contains 26 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 00008000 0 SECTION LOCAL DEFAULT 1
|
||||
2: 00008048 0 SECTION LOCAL DEFAULT 2
|
||||
3: 00008118 0 SECTION LOCAL DEFAULT 3
|
||||
4: 00008140 0 SECTION LOCAL DEFAULT 4
|
||||
5: 00008164 0 SECTION LOCAL DEFAULT 5
|
||||
6: 0000817c 0 SECTION LOCAL DEFAULT 6
|
||||
7: 10000000 0 SECTION LOCAL DEFAULT 7
|
||||
8: 10000020 0 SECTION LOCAL DEFAULT 8
|
||||
9: 10000080 0 SECTION LOCAL DEFAULT 9
|
||||
10: 10000100 0 SECTION LOCAL DEFAULT 10
|
||||
11: 10000128 0 SECTION LOCAL DEFAULT 11
|
||||
12: 10000130 0 SECTION LOCAL DEFAULT 12
|
||||
13: 00000000 0 SECTION LOCAL DEFAULT 13
|
||||
14: 10000080 0 FUNC LOCAL HIDDEN 9 sub1
|
||||
15: 0000817c 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC
|
||||
16: 10000130 4 OBJECT LOCAL DEFAULT 12 c
|
||||
17: 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
|
||||
18: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
19: 00000000 0 NOTYPE WEAK DEFAULT UND b
|
||||
20: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize
|
||||
21: 00000000 0 NOTYPE WEAK DEFAULT UND g1
|
||||
22: 1000012c 4 OBJECT GLOBAL DEFAULT 11 g2
|
||||
23: 10000088 52 FUNC GLOBAL DEFAULT 9 sub0
|
||||
24: 10000128 4 OBJECT GLOBAL DEFAULT 11 a
|
||||
25: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub
|
7
ld/testsuite/ld-tic6x/shlib-1b.sd
Normal file
7
ld/testsuite/ld-tic6x/shlib-1b.sd
Normal file
@ -0,0 +1,7 @@
|
||||
|
||||
tmpdir/libtestb\.so: file format elf32-tic6x-be
|
||||
|
||||
Contents of section \.got:
|
||||
[ \t]*10000100 00000000 00000000 00000000 00000000 .*
|
||||
[ \t]*10000110 00000000 10000020 10000020 00000000 .*
|
||||
[ \t]*10000120 10000130 00000000 .*
|
67
ld/testsuite/ld-tic6x/shlib-1r.dd
Normal file
67
ld/testsuite/ld-tic6x/shlib-1r.dd
Normal file
@ -0,0 +1,67 @@
|
||||
|
||||
tmpdir/libtestr\.so: file format elf32-tic6x-le
|
||||
|
||||
|
||||
Disassembly of section \.plt:
|
||||
|
||||
10000020 <sub0@plt-0x18>:
|
||||
10000020:[ \t]*0100036e[ \t]*ldw \.D2T2 \*\+b14\(12\),b2
|
||||
10000024:[ \t]*0080046e[ \t]*ldw \.D2T2 \*\+b14\(16\),b1
|
||||
10000028:[ \t]*00004000[ \t]*nop 3
|
||||
1000002c:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
10000030:[ \t]*00008000[ \t]*nop 5
|
||||
10000034:[ \t]*00000000[ \t]*nop 1
|
||||
|
||||
10000038 <sub0@plt>:
|
||||
10000038:[ \t]*0100056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b2
|
||||
1000003c:[ \t]*0000002a[ \t]*mvk \.S2 0,b0
|
||||
10000040:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0
|
||||
10000044:[ \t]*00002000[ \t]*nop 2
|
||||
10000048:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
1000004c:[ \t]*00008000[ \t]*nop 5
|
||||
|
||||
10000050 <sub@plt>:
|
||||
10000050:[ \t]*0100066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b2
|
||||
10000054:[ \t]*0000062a[ \t]*mvk \.S2 12,b0
|
||||
10000058:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0
|
||||
1000005c:[ \t]*00002000[ \t]*nop 2
|
||||
10000060:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
10000064:[ \t]*00008000[ \t]*nop 5
|
||||
\.\.\.
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
10000080 <sub1>:
|
||||
10000080:[ \t]*000c0362[ \t]*b \.S2 b3
|
||||
10000084:[ \t]*00008000[ \t]*nop 5
|
||||
|
||||
10000088 <sub0>:
|
||||
10000088:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15
|
||||
1000008c:[ \t]*01bc62f6[ \t]*stw \.D2T2 b3,\*\+b15\(12\)
|
||||
10000090:[ \t]*073c82f6[ \t]*stw \.D2T2 b14,\*\+b15\(16\)
|
||||
10000094:[ \t]*0700026e[ \t]*ldw \.D2T2 \*\+b14\(8\),b14
|
||||
10000098:[ \t]*0ffffa12[ \t]*b \.S2 10000050 <sub@plt>
|
||||
1000009c:[ \t]*0ffff712[ \t]*b \.S2 10000038 <sub0@plt>
|
||||
100000a0:[ \t]*0ffffc12[ \t]*b \.S2 10000080 <sub1>
|
||||
100000a4:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3
|
||||
100000a8:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14
|
||||
100000ac:[ \t]*07800852[ \t]*addk \.S2 16,b15
|
||||
100000b0:[ \t]*00004000[ \t]*nop 3
|
||||
100000b4:[ \t]*000c0362[ \t]*b \.S2 b3
|
||||
100000b8:[ \t]*00008000[ \t]*nop 5
|
||||
100000bc:[ \t]*00000000[ \t]*nop 1
|
||||
|
||||
100000c0 <sub>:
|
||||
100000c0:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15
|
||||
100000c4:[ \t]*023c62f4[ \t]*stw \.D2T1 a4,\*\+b15\(12\)
|
||||
100000c8:[ \t]*003c62e4[ \t]*ldw \.D2T1 \*\+b15\(12\),a0
|
||||
100000cc:[ \t]*00006000[ \t]*nop 4
|
||||
100000d0:[ \t]*00014940[ \t]*add \.D1 a0,10,a0
|
||||
100000d4:[ \t]*020008f0[ \t]*or \.D1 0,a0,a4
|
||||
100000d8:[ \t]*07be0942[ \t]*add \.D2 b15,16,b15
|
||||
100000dc:[ \t]*000c0362[ \t]*b \.S2 b3
|
||||
100000e0:[ \t]*0300096e[ \t]*ldw \.D2T2 \*\+b14\(36\),b6
|
||||
100000e4:[ \t]*0380076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b7
|
||||
100000e8:[ \t]*0400086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b8
|
||||
100000ec:[ \t]*04800c6e[ \t]*ldw \.D2T2 \*\+b14\(48\),b9
|
||||
\.\.\.
|
123
ld/testsuite/ld-tic6x/shlib-1r.rd
Normal file
123
ld/testsuite/ld-tic6x/shlib-1r.rd
Normal file
@ -0,0 +1,123 @@
|
||||
There are 17 section headers, starting at offset 0x21c4:
|
||||
|
||||
Section Headers:
|
||||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 000048 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 6 4
|
||||
\[ 3\] \.dynstr STRTAB 00008118 001118 000025 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 00008140 001140 000024 0c A 2 10 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008164 001164 000018 0c A 2 11 4
|
||||
\[ 6\] \.dynamic DYNAMIC 0000817c 00117c 0000a8 08 WA 3 0 4
|
||||
\[ 7\] \.rela\.plt RELA 10000000 002000 000018 0c A 2 8 4
|
||||
\[ 8\] \.plt PROGBITS 10000020 002020 000060 18 AX 0 0 32
|
||||
\[ 9\] \.text PROGBITS 10000080 002080 000080 00 AX 0 0 32
|
||||
\[10\] \.got PROGBITS 10000100 002100 000028 00 WA 0 0 4
|
||||
\[11\] \.neardata PROGBITS 10000128 002128 000008 00 WA 0 0 4
|
||||
\[12\] \.bss NOBITS 10000130 002130 000004 00 WA 0 0 4
|
||||
\[13\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 002130 000019 00 0 0 1
|
||||
\[14\] \.shstrtab STRTAB 00000000 002149 00007b 00 0 0 1
|
||||
\[15\] \.symtab SYMTAB 00000000 00246c 0001a0 10 16 19 4
|
||||
\[16\] \.strtab STRTAB 00000000 00260c 000059 00 0 0 1
|
||||
Key to Flags:
|
||||
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
|
||||
I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\)
|
||||
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
|
||||
|
||||
Elf file type is DYN \(Shared object file\)
|
||||
Entry point 0x10000080
|
||||
There are 4 program headers, starting at offset 52
|
||||
|
||||
Program Headers:
|
||||
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
|
||||
LOAD 0x001000 0x00008000 0x00008000 0x00224 0x00224 RW 0x1000
|
||||
LOAD 0x002000 0x10000000 0x10000000 0x00130 0x00134 RWE 0x1000
|
||||
DYNAMIC 0x00117c 0x0000817c 0x0000817c 0x000a8 0x000a8 RW 0x4
|
||||
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
|
||||
|
||||
Section to Segment mapping:
|
||||
Segment Sections\.\.\.
|
||||
00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.dynamic
|
||||
01 \.rela\.plt \.plt \.text \.got \.neardata \.bss
|
||||
02 \.dynamic
|
||||
03
|
||||
|
||||
Dynamic section at offset 0x117c contains 16 entries:
|
||||
Tag Type Name/Value
|
||||
0x00000004 \(HASH\) 0x8000
|
||||
0x00000005 \(STRTAB\) 0x8118
|
||||
0x00000006 \(SYMTAB\) 0x8048
|
||||
0x0000000a \(STRSZ\) 37 \(bytes\)
|
||||
0x0000000b \(SYMENT\) 16 \(bytes\)
|
||||
0x70000000 \(C6000_DSBT_BASE\) 0x10000100
|
||||
0x70000001 \(C6000_DSBT_SIZE\) 0x3
|
||||
0x70000003 \(C6000_DSBT_INDEX\) 0x2
|
||||
0x00000003 \(PLTGOT\) 0x1000010c
|
||||
0x00000002 \(PLTRELSZ\) 24 \(bytes\)
|
||||
0x00000014 \(PLTREL\) RELA
|
||||
0x00000017 \(JMPREL\) 0x10000000
|
||||
0x00000007 \(RELA\) 0x8140
|
||||
0x00000008 \(RELASZ\) 84 \(bytes\)
|
||||
0x00000009 \(RELAENT\) 12 \(bytes\)
|
||||
0x00000000 \(NULL\) 0x0
|
||||
|
||||
Relocation section '\.rela\.got' at offset 0x1140 contains 3 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
10000120 00000501 R_C6000_ABS32 10000130 \.bss \+ 0
|
||||
1000011c 00000701 R_C6000_ABS32 00000000 b \+ 0
|
||||
10000124 00000b01 R_C6000_ABS32 10000128 a \+ 0
|
||||
|
||||
Relocation section '\.rela\.neardata' at offset 0x1164 contains 2 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
10000128 00000a01 R_C6000_ABS32 10000088 sub0 \+ 0
|
||||
1000012c 00000801 R_C6000_ABS32 00000000 g1 \+ 0
|
||||
|
||||
Relocation section '\.rela\.plt' at offset 0x2000 contains 2 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
10000114 00000a1b R_C6000_JUMP_SLOT 10000088 sub0 \+ 0
|
||||
10000118 00000c1b R_C6000_JUMP_SLOT 100000c0 sub \+ 0
|
||||
|
||||
Symbol table '\.dynsym' contains 13 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 10000020 0 SECTION LOCAL DEFAULT 8
|
||||
2: 10000080 0 SECTION LOCAL DEFAULT 9
|
||||
3: 10000100 0 SECTION LOCAL DEFAULT 10
|
||||
4: 10000128 0 SECTION LOCAL DEFAULT 11
|
||||
5: 10000130 0 SECTION LOCAL DEFAULT 12
|
||||
6: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
7: 00000000 0 NOTYPE WEAK DEFAULT UND b
|
||||
8: 00000000 0 NOTYPE WEAK DEFAULT UND g1
|
||||
9: 1000012c 4 OBJECT GLOBAL DEFAULT 11 g2
|
||||
10: 10000088 52 FUNC GLOBAL DEFAULT 9 sub0
|
||||
11: 10000128 4 OBJECT GLOBAL DEFAULT 11 a
|
||||
12: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub
|
||||
|
||||
Symbol table '\.symtab' contains 26 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 00008000 0 SECTION LOCAL DEFAULT 1
|
||||
2: 00008048 0 SECTION LOCAL DEFAULT 2
|
||||
3: 00008118 0 SECTION LOCAL DEFAULT 3
|
||||
4: 00008140 0 SECTION LOCAL DEFAULT 4
|
||||
5: 00008164 0 SECTION LOCAL DEFAULT 5
|
||||
6: 0000817c 0 SECTION LOCAL DEFAULT 6
|
||||
7: 10000000 0 SECTION LOCAL DEFAULT 7
|
||||
8: 10000020 0 SECTION LOCAL DEFAULT 8
|
||||
9: 10000080 0 SECTION LOCAL DEFAULT 9
|
||||
10: 10000100 0 SECTION LOCAL DEFAULT 10
|
||||
11: 10000128 0 SECTION LOCAL DEFAULT 11
|
||||
12: 10000130 0 SECTION LOCAL DEFAULT 12
|
||||
13: 00000000 0 SECTION LOCAL DEFAULT 13
|
||||
14: 10000080 0 FUNC LOCAL HIDDEN 9 sub1
|
||||
15: 0000817c 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC
|
||||
16: 10000130 4 OBJECT LOCAL DEFAULT 12 c
|
||||
17: 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
|
||||
18: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
19: 00000000 0 NOTYPE WEAK DEFAULT UND b
|
||||
20: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize
|
||||
21: 00000000 0 NOTYPE WEAK DEFAULT UND g1
|
||||
22: 1000012c 4 OBJECT GLOBAL DEFAULT 11 g2
|
||||
23: 10000088 52 FUNC GLOBAL DEFAULT 9 sub0
|
||||
24: 10000128 4 OBJECT GLOBAL DEFAULT 11 a
|
||||
25: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub
|
7
ld/testsuite/ld-tic6x/shlib-1r.sd
Normal file
7
ld/testsuite/ld-tic6x/shlib-1r.sd
Normal file
@ -0,0 +1,7 @@
|
||||
|
||||
tmpdir/libtestr\.so: file format elf32-tic6x-le
|
||||
|
||||
Contents of section \.got:
|
||||
[ \t]*10000100 00000000 00000000 00000000 00000000 .*
|
||||
[ \t]*10000110 00000000 20000010 20000010 00000000 .*
|
||||
[ \t]*10000120 30010010 00000000 .*
|
67
ld/testsuite/ld-tic6x/shlib-1rb.dd
Normal file
67
ld/testsuite/ld-tic6x/shlib-1rb.dd
Normal file
@ -0,0 +1,67 @@
|
||||
|
||||
tmpdir/libtestrb\.so: file format elf32-tic6x-be
|
||||
|
||||
|
||||
Disassembly of section \.plt:
|
||||
|
||||
10000020 <sub0@plt-0x18>:
|
||||
10000020:[ \t]*0100036e[ \t]*ldw \.D2T2 \*\+b14\(12\),b2
|
||||
10000024:[ \t]*0080046e[ \t]*ldw \.D2T2 \*\+b14\(16\),b1
|
||||
10000028:[ \t]*00004000[ \t]*nop 3
|
||||
1000002c:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
10000030:[ \t]*00008000[ \t]*nop 5
|
||||
10000034:[ \t]*00000000[ \t]*nop 1
|
||||
|
||||
10000038 <sub0@plt>:
|
||||
10000038:[ \t]*0100056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b2
|
||||
1000003c:[ \t]*0000002a[ \t]*mvk \.S2 0,b0
|
||||
10000040:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0
|
||||
10000044:[ \t]*00002000[ \t]*nop 2
|
||||
10000048:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
1000004c:[ \t]*00008000[ \t]*nop 5
|
||||
|
||||
10000050 <sub@plt>:
|
||||
10000050:[ \t]*0100066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b2
|
||||
10000054:[ \t]*0000062a[ \t]*mvk \.S2 12,b0
|
||||
10000058:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0
|
||||
1000005c:[ \t]*00002000[ \t]*nop 2
|
||||
10000060:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
10000064:[ \t]*00008000[ \t]*nop 5
|
||||
\.\.\.
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
10000080 <sub1>:
|
||||
10000080:[ \t]*000c0362[ \t]*b \.S2 b3
|
||||
10000084:[ \t]*00008000[ \t]*nop 5
|
||||
|
||||
10000088 <sub0>:
|
||||
10000088:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15
|
||||
1000008c:[ \t]*01bc62f6[ \t]*stw \.D2T2 b3,\*\+b15\(12\)
|
||||
10000090:[ \t]*073c82f6[ \t]*stw \.D2T2 b14,\*\+b15\(16\)
|
||||
10000094:[ \t]*0700026e[ \t]*ldw \.D2T2 \*\+b14\(8\),b14
|
||||
10000098:[ \t]*0ffffa12[ \t]*b \.S2 10000050 <sub@plt>
|
||||
1000009c:[ \t]*0ffff712[ \t]*b \.S2 10000038 <sub0@plt>
|
||||
100000a0:[ \t]*0ffffc12[ \t]*b \.S2 10000080 <sub1>
|
||||
100000a4:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3
|
||||
100000a8:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14
|
||||
100000ac:[ \t]*07800852[ \t]*addk \.S2 16,b15
|
||||
100000b0:[ \t]*00004000[ \t]*nop 3
|
||||
100000b4:[ \t]*000c0362[ \t]*b \.S2 b3
|
||||
100000b8:[ \t]*00008000[ \t]*nop 5
|
||||
100000bc:[ \t]*00000000[ \t]*nop 1
|
||||
|
||||
100000c0 <sub>:
|
||||
100000c0:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15
|
||||
100000c4:[ \t]*023c62f4[ \t]*stw \.D2T1 a4,\*\+b15\(12\)
|
||||
100000c8:[ \t]*003c62e4[ \t]*ldw \.D2T1 \*\+b15\(12\),a0
|
||||
100000cc:[ \t]*00006000[ \t]*nop 4
|
||||
100000d0:[ \t]*00014940[ \t]*add \.D1 a0,10,a0
|
||||
100000d4:[ \t]*020008f0[ \t]*or \.D1 0,a0,a4
|
||||
100000d8:[ \t]*07be0942[ \t]*add \.D2 b15,16,b15
|
||||
100000dc:[ \t]*000c0362[ \t]*b \.S2 b3
|
||||
100000e0:[ \t]*0300096e[ \t]*ldw \.D2T2 \*\+b14\(36\),b6
|
||||
100000e4:[ \t]*0380076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b7
|
||||
100000e8:[ \t]*0400086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b8
|
||||
100000ec:[ \t]*04800c6e[ \t]*ldw \.D2T2 \*\+b14\(48\),b9
|
||||
\.\.\.
|
123
ld/testsuite/ld-tic6x/shlib-1rb.rd
Normal file
123
ld/testsuite/ld-tic6x/shlib-1rb.rd
Normal file
@ -0,0 +1,123 @@
|
||||
There are 17 section headers, starting at offset 0x21c4:
|
||||
|
||||
Section Headers:
|
||||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 000048 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 6 4
|
||||
\[ 3\] \.dynstr STRTAB 00008118 001118 000025 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 00008140 001140 000024 0c A 2 10 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008164 001164 000018 0c A 2 11 4
|
||||
\[ 6\] \.dynamic DYNAMIC 0000817c 00117c 0000a8 08 WA 3 0 4
|
||||
\[ 7\] \.rela\.plt RELA 10000000 002000 000018 0c A 2 8 4
|
||||
\[ 8\] \.plt PROGBITS 10000020 002020 000060 18 AX 0 0 32
|
||||
\[ 9\] \.text PROGBITS 10000080 002080 000080 00 AX 0 0 32
|
||||
\[10\] \.got PROGBITS 10000100 002100 000028 00 WA 0 0 4
|
||||
\[11\] \.neardata PROGBITS 10000128 002128 000008 00 WA 0 0 4
|
||||
\[12\] \.bss NOBITS 10000130 002130 000004 00 WA 0 0 4
|
||||
\[13\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 002130 000019 00 0 0 1
|
||||
\[14\] \.shstrtab STRTAB 00000000 002149 00007b 00 0 0 1
|
||||
\[15\] \.symtab SYMTAB 00000000 00246c 0001a0 10 16 19 4
|
||||
\[16\] \.strtab STRTAB 00000000 00260c 000059 00 0 0 1
|
||||
Key to Flags:
|
||||
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
|
||||
I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\)
|
||||
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
|
||||
|
||||
Elf file type is DYN \(Shared object file\)
|
||||
Entry point 0x10000080
|
||||
There are 4 program headers, starting at offset 52
|
||||
|
||||
Program Headers:
|
||||
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
|
||||
LOAD 0x001000 0x00008000 0x00008000 0x00224 0x00224 RW 0x1000
|
||||
LOAD 0x002000 0x10000000 0x10000000 0x00130 0x00134 RWE 0x1000
|
||||
DYNAMIC 0x00117c 0x0000817c 0x0000817c 0x000a8 0x000a8 RW 0x4
|
||||
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
|
||||
|
||||
Section to Segment mapping:
|
||||
Segment Sections\.\.\.
|
||||
00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.dynamic
|
||||
01 \.rela\.plt \.plt \.text \.got \.neardata \.bss
|
||||
02 \.dynamic
|
||||
03
|
||||
|
||||
Dynamic section at offset 0x117c contains 16 entries:
|
||||
Tag Type Name/Value
|
||||
0x00000004 \(HASH\) 0x8000
|
||||
0x00000005 \(STRTAB\) 0x8118
|
||||
0x00000006 \(SYMTAB\) 0x8048
|
||||
0x0000000a \(STRSZ\) 37 \(bytes\)
|
||||
0x0000000b \(SYMENT\) 16 \(bytes\)
|
||||
0x70000000 \(C6000_DSBT_BASE\) 0x10000100
|
||||
0x70000001 \(C6000_DSBT_SIZE\) 0x3
|
||||
0x70000003 \(C6000_DSBT_INDEX\) 0x2
|
||||
0x00000003 \(PLTGOT\) 0x1000010c
|
||||
0x00000002 \(PLTRELSZ\) 24 \(bytes\)
|
||||
0x00000014 \(PLTREL\) RELA
|
||||
0x00000017 \(JMPREL\) 0x10000000
|
||||
0x00000007 \(RELA\) 0x8140
|
||||
0x00000008 \(RELASZ\) 84 \(bytes\)
|
||||
0x00000009 \(RELAENT\) 12 \(bytes\)
|
||||
0x00000000 \(NULL\) 0x0
|
||||
|
||||
Relocation section '\.rela\.got' at offset 0x1140 contains 3 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
10000120 00000501 R_C6000_ABS32 10000130 \.bss \+ 0
|
||||
1000011c 00000701 R_C6000_ABS32 00000000 b \+ 0
|
||||
10000124 00000b01 R_C6000_ABS32 10000128 a \+ 0
|
||||
|
||||
Relocation section '\.rela\.neardata' at offset 0x1164 contains 2 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
10000128 00000a01 R_C6000_ABS32 10000088 sub0 \+ 0
|
||||
1000012c 00000801 R_C6000_ABS32 00000000 g1 \+ 0
|
||||
|
||||
Relocation section '\.rela\.plt' at offset 0x2000 contains 2 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
10000114 00000a1b R_C6000_JUMP_SLOT 10000088 sub0 \+ 0
|
||||
10000118 00000c1b R_C6000_JUMP_SLOT 100000c0 sub \+ 0
|
||||
|
||||
Symbol table '\.dynsym' contains 13 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 10000020 0 SECTION LOCAL DEFAULT 8
|
||||
2: 10000080 0 SECTION LOCAL DEFAULT 9
|
||||
3: 10000100 0 SECTION LOCAL DEFAULT 10
|
||||
4: 10000128 0 SECTION LOCAL DEFAULT 11
|
||||
5: 10000130 0 SECTION LOCAL DEFAULT 12
|
||||
6: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
7: 00000000 0 NOTYPE WEAK DEFAULT UND b
|
||||
8: 00000000 0 NOTYPE WEAK DEFAULT UND g1
|
||||
9: 1000012c 4 OBJECT GLOBAL DEFAULT 11 g2
|
||||
10: 10000088 52 FUNC GLOBAL DEFAULT 9 sub0
|
||||
11: 10000128 4 OBJECT GLOBAL DEFAULT 11 a
|
||||
12: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub
|
||||
|
||||
Symbol table '\.symtab' contains 26 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 00008000 0 SECTION LOCAL DEFAULT 1
|
||||
2: 00008048 0 SECTION LOCAL DEFAULT 2
|
||||
3: 00008118 0 SECTION LOCAL DEFAULT 3
|
||||
4: 00008140 0 SECTION LOCAL DEFAULT 4
|
||||
5: 00008164 0 SECTION LOCAL DEFAULT 5
|
||||
6: 0000817c 0 SECTION LOCAL DEFAULT 6
|
||||
7: 10000000 0 SECTION LOCAL DEFAULT 7
|
||||
8: 10000020 0 SECTION LOCAL DEFAULT 8
|
||||
9: 10000080 0 SECTION LOCAL DEFAULT 9
|
||||
10: 10000100 0 SECTION LOCAL DEFAULT 10
|
||||
11: 10000128 0 SECTION LOCAL DEFAULT 11
|
||||
12: 10000130 0 SECTION LOCAL DEFAULT 12
|
||||
13: 00000000 0 SECTION LOCAL DEFAULT 13
|
||||
14: 10000080 0 FUNC LOCAL HIDDEN 9 sub1
|
||||
15: 0000817c 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC
|
||||
16: 10000130 4 OBJECT LOCAL DEFAULT 12 c
|
||||
17: 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
|
||||
18: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
19: 00000000 0 NOTYPE WEAK DEFAULT UND b
|
||||
20: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize
|
||||
21: 00000000 0 NOTYPE WEAK DEFAULT UND g1
|
||||
22: 1000012c 4 OBJECT GLOBAL DEFAULT 11 g2
|
||||
23: 10000088 52 FUNC GLOBAL DEFAULT 9 sub0
|
||||
24: 10000128 4 OBJECT GLOBAL DEFAULT 11 a
|
||||
25: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub
|
7
ld/testsuite/ld-tic6x/shlib-1rb.sd
Normal file
7
ld/testsuite/ld-tic6x/shlib-1rb.sd
Normal file
@ -0,0 +1,7 @@
|
||||
|
||||
tmpdir/libtestrb\.so: file format elf32-tic6x-be
|
||||
|
||||
Contents of section \.got:
|
||||
[ \t]*10000100 00000000 00000000 00000000 00000000 .*
|
||||
[ \t]*10000110 00000000 10000020 10000020 00000000 .*
|
||||
[ \t]*10000120 10000130 00000000 .*
|
23
ld/testsuite/ld-tic6x/shlib-2.s
Normal file
23
ld/testsuite/ld-tic6x/shlib-2.s
Normal file
@ -0,0 +1,23 @@
|
||||
.weak a
|
||||
.weak b
|
||||
|
||||
.text
|
||||
.nocmp
|
||||
.align 2
|
||||
.global sub
|
||||
.type sub, @function
|
||||
sub:
|
||||
sub .d2 B15, 16, B15
|
||||
stw .d2t1 A4, *+B15(12)
|
||||
ldw .d2t1 *+B15(12), A0
|
||||
nop 4
|
||||
add .d1 A0, 10, A0
|
||||
mv .d1 A0, A4
|
||||
add .d2 B15, 16, B15
|
||||
ret .s2 B3
|
||||
ldw .d2t2 *+B14($GOT(a)), B6
|
||||
ldw .d2t2 *+B14($GOT(b)), B7
|
||||
ldw .d2t2 *+B14($GOT(c)), B8
|
||||
ldw .d2t2 *+B14(c), B9
|
||||
nop 1
|
||||
.size sub, .-sub
|
40
ld/testsuite/ld-tic6x/shlib-app-1.dd
Normal file
40
ld/testsuite/ld-tic6x/shlib-app-1.dd
Normal file
@ -0,0 +1,40 @@
|
||||
|
||||
tmpdir/shlib-dynapp-1: file format elf32-tic6x-le
|
||||
|
||||
|
||||
Disassembly of section \.plt:
|
||||
|
||||
10000020 <sub0@plt-0x18>:
|
||||
10000020:[ \t]*0100036e[ \t]*ldw \.D2T2 \*\+b14\(12\),b2
|
||||
10000024:[ \t]*0080046e[ \t]*ldw \.D2T2 \*\+b14\(16\),b1
|
||||
10000028:[ \t]*00004000[ \t]*nop 3
|
||||
1000002c:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
10000030:[ \t]*00008000[ \t]*nop 5
|
||||
10000034:[ \t]*00000000[ \t]*nop 1
|
||||
|
||||
10000038 <sub0@plt>:
|
||||
10000038:[ \t]*0100056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b2
|
||||
1000003c:[ \t]*0000002a[ \t]*mvk \.S2 0,b0
|
||||
10000040:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0
|
||||
10000044:[ \t]*00002000[ \t]*nop 2
|
||||
10000048:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
1000004c:[ \t]*00008000[ \t]*nop 5
|
||||
[ \t]*\.\.\.
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
10000060 <fish>:
|
||||
10000060:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14
|
||||
10000064:[ \t]*1ffffb12[ \t]*callp \.S2 10000038 <sub0@plt>,b3
|
||||
10000068:[ \t]*0ffffb12[ \t]*b \.S2 10000038 <sub0@plt>
|
||||
1000006c:[ \t]*10000012[ \t]*callp \.S2 10000060 <fish>,b3
|
||||
10000070:[ \t]*00000012[ \t]*b \.S2 10000060 <fish>
|
||||
10000074:[ \t]*02000b6e[ \t]*ldw \.D2T2 \*\+b14\(44\),b4
|
||||
10000078:[ \t]*0280086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b5
|
||||
1000007c:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6
|
||||
10000080:[ \t]*0300066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b6
|
||||
10000084:[ \t]*020003a8[ \t]*mvk \.S1 7,a4
|
||||
10000088:[ \t]*02000068[ \t]*mvkh \.S1 0,a4
|
||||
1000008c:[ \t]*02800328[ \t]*mvk \.S1 6,a5
|
||||
10000090:[ \t]*02800068[ \t]*mvkh \.S1 0,a5
|
||||
[ \t]*\.\.\.
|
13
ld/testsuite/ld-tic6x/shlib-app-1.od
Normal file
13
ld/testsuite/ld-tic6x/shlib-app-1.od
Normal file
@ -0,0 +1,13 @@
|
||||
|
||||
tmpdir/shlib-dynapp-1: file format elf32-tic6x-le
|
||||
|
||||
DYNAMIC RELOCATION RECORDS
|
||||
OFFSET TYPE VALUE
|
||||
100000b8 R_C6000_ABS32 b
|
||||
100000bc R_C6000_ABS32 a
|
||||
100000c4 R_C6000_ABS32 g1
|
||||
100000c8 R_C6000_ABS32 g2
|
||||
100000cc R_C6000_COPY a
|
||||
100000b4 R_C6000_JUMP_SLOT sub0
|
||||
|
||||
|
127
ld/testsuite/ld-tic6x/shlib-app-1.rd
Normal file
127
ld/testsuite/ld-tic6x/shlib-app-1.rd
Normal file
@ -0,0 +1,127 @@
|
||||
There are 18 section headers, starting at offset 0x2168:
|
||||
|
||||
Section Headers:
|
||||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 000044 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008044 001044 0000c0 10 A 3 6 4
|
||||
\[ 3\] \.dynstr STRTAB 00008104 001104 000035 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 0000813c 00113c 000018 0c A 2 11 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008154 001154 000018 0c A 2 12 4
|
||||
\[ 6\] \.rela\.bss RELA 0000816c 00116c 00000c 0c A 2 13 4
|
||||
\[ 7\] \.dynamic DYNAMIC 00008178 001178 0000b8 08 WA 3 0 4
|
||||
\[ 8\] \.rela\.plt RELA 10000000 002000 00000c 0c A 2 9 4
|
||||
\[ 9\] \.plt PROGBITS 10000020 002020 000040 18 AX 0 0 32
|
||||
\[10\] \.text PROGBITS 10000060 002060 000040 00 AX 0 0 32
|
||||
\[11\] \.got PROGBITS 100000a0 0020a0 000020 00 WA 0 0 4
|
||||
\[12\] \.neardata PROGBITS 100000c0 0020c0 00000c 00 WA 0 0 4
|
||||
\[13\] \.bss NOBITS 100000cc 0020cc 000004 00 WA 0 0 4
|
||||
\[14\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 0020cc 000019 00 0 0 1
|
||||
\[15\] \.shstrtab STRTAB 00000000 0020e5 000080 00 0 0 1
|
||||
\[16\] \.symtab SYMTAB 00000000 002438 0001a0 10 17 20 4
|
||||
\[17\] \.strtab STRTAB 00000000 0025d8 000055 00 0 0 1
|
||||
Key to Flags:
|
||||
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
|
||||
I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\)
|
||||
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
|
||||
|
||||
Elf file type is EXEC \(Executable file\)
|
||||
Entry point 0x10000060
|
||||
There are 4 program headers, starting at offset 52
|
||||
|
||||
Program Headers:
|
||||
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
|
||||
LOAD 0x001000 0x00008000 0x00008000 0x00230 0x00230 RW 0x1000
|
||||
LOAD 0x002000 0x10000000 0x10000000 0x000cc 0x000d0 RWE 0x1000
|
||||
DYNAMIC 0x001178 0x00008178 0x00008178 0x000b8 0x000b8 RW 0x4
|
||||
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
|
||||
|
||||
Section to Segment mapping:
|
||||
Segment Sections\.\.\.
|
||||
00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.rela\.bss \.dynamic
|
||||
01 \.rela\.plt \.plt \.text \.got \.neardata \.bss
|
||||
02 \.dynamic
|
||||
03
|
||||
|
||||
Dynamic section at offset 0x1178 contains 18 entries:
|
||||
Tag Type Name/Value
|
||||
0x00000001 \(NEEDED\) Shared library: \[tmpdir/libtest\.so\]
|
||||
0x00000004 \(HASH\) 0x8000
|
||||
0x00000005 \(STRTAB\) 0x8104
|
||||
0x00000006 \(SYMTAB\) 0x8044
|
||||
0x0000000a \(STRSZ\) 53 \(bytes\)
|
||||
0x0000000b \(SYMENT\) 16 \(bytes\)
|
||||
0x00000015 \(DEBUG\) 0x0
|
||||
0x70000000 \(C6000_DSBT_BASE\) 0x100000a0
|
||||
0x70000001 \(C6000_DSBT_SIZE\) 0x3
|
||||
0x70000003 \(C6000_DSBT_INDEX\) 0x0
|
||||
0x00000003 \(PLTGOT\) 0x100000ac
|
||||
0x00000002 \(PLTRELSZ\) 12 \(bytes\)
|
||||
0x00000014 \(PLTREL\) RELA
|
||||
0x00000017 \(JMPREL\) 0x10000000
|
||||
0x00000007 \(RELA\) 0x813c
|
||||
0x00000008 \(RELASZ\) 72 \(bytes\)
|
||||
0x00000009 \(RELAENT\) 12 \(bytes\)
|
||||
0x00000000 \(NULL\) 0x0
|
||||
|
||||
Relocation section '\.rela\.got' at offset 0x113c contains 2 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
100000b8 00000701 R_C6000_ABS32 100000c0 b \+ 0
|
||||
100000bc 00000b01 R_C6000_ABS32 100000cc a \+ 0
|
||||
|
||||
Relocation section '\.rela\.neardata' at offset 0x1154 contains 2 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
100000c4 00000801 R_C6000_ABS32 00000000 g1 \+ 0
|
||||
100000c8 00000901 R_C6000_ABS32 00000000 g2 \+ 0
|
||||
|
||||
Relocation section '\.rela\.bss' at offset 0x116c contains 1 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
100000cc 00000b1a R_C6000_COPY 100000cc a \+ 0
|
||||
|
||||
Relocation section '\.rela\.plt' at offset 0x2000 contains 1 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
100000b4 00000a1b R_C6000_JUMP_SLOT 00000000 sub0 \+ 0
|
||||
|
||||
Symbol table '\.dynsym' contains 12 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 10000020 0 SECTION LOCAL DEFAULT 9
|
||||
2: 10000060 0 SECTION LOCAL DEFAULT 10
|
||||
3: 100000a0 0 SECTION LOCAL DEFAULT 11
|
||||
4: 100000c0 0 SECTION LOCAL DEFAULT 12
|
||||
5: 100000cc 0 SECTION LOCAL DEFAULT 13
|
||||
6: 100000a0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
7: 100000c0 4 OBJECT GLOBAL DEFAULT 12 b
|
||||
8: 00000000 0 NOTYPE WEAK DEFAULT UND g1
|
||||
9: 00000000 0 OBJECT WEAK DEFAULT UND g2
|
||||
10: 00000000 0 FUNC GLOBAL DEFAULT UND sub0
|
||||
11: 100000cc 4 OBJECT GLOBAL DEFAULT 13 a
|
||||
|
||||
Symbol table '\.symtab' contains 26 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 00008000 0 SECTION LOCAL DEFAULT 1
|
||||
2: 00008044 0 SECTION LOCAL DEFAULT 2
|
||||
3: 00008104 0 SECTION LOCAL DEFAULT 3
|
||||
4: 0000813c 0 SECTION LOCAL DEFAULT 4
|
||||
5: 00008154 0 SECTION LOCAL DEFAULT 5
|
||||
6: 0000816c 0 SECTION LOCAL DEFAULT 6
|
||||
7: 00008178 0 SECTION LOCAL DEFAULT 7
|
||||
8: 10000000 0 SECTION LOCAL DEFAULT 8
|
||||
9: 10000020 0 SECTION LOCAL DEFAULT 9
|
||||
10: 10000060 0 SECTION LOCAL DEFAULT 10
|
||||
11: 100000a0 0 SECTION LOCAL DEFAULT 11
|
||||
12: 100000c0 0 SECTION LOCAL DEFAULT 12
|
||||
13: 100000cc 0 SECTION LOCAL DEFAULT 13
|
||||
14: 00000000 0 SECTION LOCAL DEFAULT 14
|
||||
15: 10000060 0 NOTYPE LOCAL DEFAULT 10 fish
|
||||
16: 100000c4 8 OBJECT LOCAL DEFAULT 12 w
|
||||
17: 00008178 0 OBJECT LOCAL DEFAULT 7 _DYNAMIC
|
||||
18: 100000ac 0 OBJECT LOCAL DEFAULT 11 _GLOBAL_OFFSET_TABLE_
|
||||
19: 100000a0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
20: 100000c0 4 OBJECT GLOBAL DEFAULT 12 b
|
||||
21: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize
|
||||
22: 00000000 0 NOTYPE WEAK DEFAULT UND g1
|
||||
23: 00000000 0 OBJECT WEAK DEFAULT UND g2
|
||||
24: 00000000 0 FUNC GLOBAL DEFAULT UND sub0
|
||||
25: 100000cc 4 OBJECT GLOBAL DEFAULT 13 a
|
31
ld/testsuite/ld-tic6x/shlib-app-1.s
Normal file
31
ld/testsuite/ld-tic6x/shlib-app-1.s
Normal file
@ -0,0 +1,31 @@
|
||||
.global a
|
||||
.text
|
||||
.nocmp
|
||||
fish:
|
||||
ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14
|
||||
callp .s2 sub0, B3
|
||||
b .s2 sub0
|
||||
callp .s2 fish, B3
|
||||
b .s2 fish
|
||||
ldw .d2t2 *+B14(a), B4
|
||||
ldw .d2t2 *+B14(b), B5
|
||||
ldw .d2t2 *+B14($GOT(a)), B6
|
||||
ldw .d2t2 *+B14($GOT(b)), B6
|
||||
mvkl .s1 $DPR_GOT(a), A4
|
||||
mvkh .s1 $DPR_GOT(a), A4
|
||||
mvkl .s1 $DPR_GOT(b), A5
|
||||
mvkh .s1 $DPR_GOT(b), A5
|
||||
.global b
|
||||
.section .neardata,"aw",@progbits
|
||||
.align 2
|
||||
.type b, @object
|
||||
.size b, 4
|
||||
b:
|
||||
.long 0x12345678
|
||||
.weak g1
|
||||
.weak g2
|
||||
.type w, @object
|
||||
.size w, 8
|
||||
w:
|
||||
.long g1
|
||||
.long g2
|
6
ld/testsuite/ld-tic6x/shlib-app-1.sd
Normal file
6
ld/testsuite/ld-tic6x/shlib-app-1.sd
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
tmpdir/shlib-dynapp-1: file format elf32-tic6x-le
|
||||
|
||||
Contents of section \.got:
|
||||
[ \t]*100000a0 00000000 00000000 00000000 00000000 .*
|
||||
[ \t]*100000b0 00000000 20000010 00000000 00000000 .*
|
40
ld/testsuite/ld-tic6x/shlib-app-1b.dd
Normal file
40
ld/testsuite/ld-tic6x/shlib-app-1b.dd
Normal file
@ -0,0 +1,40 @@
|
||||
|
||||
tmpdir/shlib-dynapp-1b: file format elf32-tic6x-be
|
||||
|
||||
|
||||
Disassembly of section \.plt:
|
||||
|
||||
10000020 <sub0@plt-0x18>:
|
||||
10000020:[ \t]*0100036e[ \t]*ldw \.D2T2 \*\+b14\(12\),b2
|
||||
10000024:[ \t]*0080046e[ \t]*ldw \.D2T2 \*\+b14\(16\),b1
|
||||
10000028:[ \t]*00004000[ \t]*nop 3
|
||||
1000002c:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
10000030:[ \t]*00008000[ \t]*nop 5
|
||||
10000034:[ \t]*00000000[ \t]*nop 1
|
||||
|
||||
10000038 <sub0@plt>:
|
||||
10000038:[ \t]*0100056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b2
|
||||
1000003c:[ \t]*0000002a[ \t]*mvk \.S2 0,b0
|
||||
10000040:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0
|
||||
10000044:[ \t]*00002000[ \t]*nop 2
|
||||
10000048:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
1000004c:[ \t]*00008000[ \t]*nop 5
|
||||
[ \t]*\.\.\.
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
10000060 <fish>:
|
||||
10000060:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14
|
||||
10000064:[ \t]*1ffffb12[ \t]*callp \.S2 10000038 <sub0@plt>,b3
|
||||
10000068:[ \t]*0ffffb12[ \t]*b \.S2 10000038 <sub0@plt>
|
||||
1000006c:[ \t]*10000012[ \t]*callp \.S2 10000060 <fish>,b3
|
||||
10000070:[ \t]*00000012[ \t]*b \.S2 10000060 <fish>
|
||||
10000074:[ \t]*02000b6e[ \t]*ldw \.D2T2 \*\+b14\(44\),b4
|
||||
10000078:[ \t]*0280086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b5
|
||||
1000007c:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6
|
||||
10000080:[ \t]*0300066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b6
|
||||
10000084:[ \t]*020003a8[ \t]*mvk \.S1 7,a4
|
||||
10000088:[ \t]*02000068[ \t]*mvkh \.S1 0,a4
|
||||
1000008c:[ \t]*02800328[ \t]*mvk \.S1 6,a5
|
||||
10000090:[ \t]*02800068[ \t]*mvkh \.S1 0,a5
|
||||
[ \t]*\.\.\.
|
13
ld/testsuite/ld-tic6x/shlib-app-1b.od
Normal file
13
ld/testsuite/ld-tic6x/shlib-app-1b.od
Normal file
@ -0,0 +1,13 @@
|
||||
|
||||
tmpdir/shlib-dynapp-1b: file format elf32-tic6x-be
|
||||
|
||||
DYNAMIC RELOCATION RECORDS
|
||||
OFFSET TYPE VALUE
|
||||
100000b8 R_C6000_ABS32 b
|
||||
100000bc R_C6000_ABS32 a
|
||||
100000c4 R_C6000_ABS32 g1
|
||||
100000c8 R_C6000_ABS32 g2
|
||||
100000cc R_C6000_COPY a
|
||||
100000b4 R_C6000_JUMP_SLOT sub0
|
||||
|
||||
|
127
ld/testsuite/ld-tic6x/shlib-app-1b.rd
Normal file
127
ld/testsuite/ld-tic6x/shlib-app-1b.rd
Normal file
@ -0,0 +1,127 @@
|
||||
There are 18 section headers, starting at offset 0x2168:
|
||||
|
||||
Section Headers:
|
||||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 000044 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008044 001044 0000c0 10 A 3 6 4
|
||||
\[ 3\] \.dynstr STRTAB 00008104 001104 000036 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 0000813c 00113c 000018 0c A 2 11 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008154 001154 000018 0c A 2 12 4
|
||||
\[ 6\] \.rela\.bss RELA 0000816c 00116c 00000c 0c A 2 13 4
|
||||
\[ 7\] \.dynamic DYNAMIC 00008178 001178 0000b8 08 WA 3 0 4
|
||||
\[ 8\] \.rela\.plt RELA 10000000 002000 00000c 0c A 2 9 4
|
||||
\[ 9\] \.plt PROGBITS 10000020 002020 000040 18 AX 0 0 32
|
||||
\[10\] \.text PROGBITS 10000060 002060 000040 00 AX 0 0 32
|
||||
\[11\] \.got PROGBITS 100000a0 0020a0 000020 00 WA 0 0 4
|
||||
\[12\] \.neardata PROGBITS 100000c0 0020c0 00000c 00 WA 0 0 4
|
||||
\[13\] \.bss NOBITS 100000cc 0020cc 000004 00 WA 0 0 4
|
||||
\[14\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 0020cc 000019 00 0 0 1
|
||||
\[15\] \.shstrtab STRTAB 00000000 0020e5 000080 00 0 0 1
|
||||
\[16\] \.symtab SYMTAB 00000000 002438 0001a0 10 17 20 4
|
||||
\[17\] \.strtab STRTAB 00000000 0025d8 000055 00 0 0 1
|
||||
Key to Flags:
|
||||
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
|
||||
I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\)
|
||||
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
|
||||
|
||||
Elf file type is EXEC \(Executable file\)
|
||||
Entry point 0x10000060
|
||||
There are 4 program headers, starting at offset 52
|
||||
|
||||
Program Headers:
|
||||
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
|
||||
LOAD 0x001000 0x00008000 0x00008000 0x00230 0x00230 RW 0x1000
|
||||
LOAD 0x002000 0x10000000 0x10000000 0x000cc 0x000d0 RWE 0x1000
|
||||
DYNAMIC 0x001178 0x00008178 0x00008178 0x000b8 0x000b8 RW 0x4
|
||||
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
|
||||
|
||||
Section to Segment mapping:
|
||||
Segment Sections\.\.\.
|
||||
00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.rela\.bss \.dynamic
|
||||
01 \.rela\.plt \.plt \.text \.got \.neardata \.bss
|
||||
02 \.dynamic
|
||||
03
|
||||
|
||||
Dynamic section at offset 0x1178 contains 18 entries:
|
||||
Tag Type Name/Value
|
||||
0x00000001 \(NEEDED\) Shared library: \[tmpdir/libtestb\.so\]
|
||||
0x00000004 \(HASH\) 0x8000
|
||||
0x00000005 \(STRTAB\) 0x8104
|
||||
0x00000006 \(SYMTAB\) 0x8044
|
||||
0x0000000a \(STRSZ\) 54 \(bytes\)
|
||||
0x0000000b \(SYMENT\) 16 \(bytes\)
|
||||
0x00000015 \(DEBUG\) 0x0
|
||||
0x70000000 \(C6000_DSBT_BASE\) 0x100000a0
|
||||
0x70000001 \(C6000_DSBT_SIZE\) 0x3
|
||||
0x70000003 \(C6000_DSBT_INDEX\) 0x0
|
||||
0x00000003 \(PLTGOT\) 0x100000ac
|
||||
0x00000002 \(PLTRELSZ\) 12 \(bytes\)
|
||||
0x00000014 \(PLTREL\) RELA
|
||||
0x00000017 \(JMPREL\) 0x10000000
|
||||
0x00000007 \(RELA\) 0x813c
|
||||
0x00000008 \(RELASZ\) 72 \(bytes\)
|
||||
0x00000009 \(RELAENT\) 12 \(bytes\)
|
||||
0x00000000 \(NULL\) 0x0
|
||||
|
||||
Relocation section '\.rela\.got' at offset 0x113c contains 2 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
100000b8 00000701 R_C6000_ABS32 100000c0 b \+ 0
|
||||
100000bc 00000b01 R_C6000_ABS32 100000cc a \+ 0
|
||||
|
||||
Relocation section '\.rela\.neardata' at offset 0x1154 contains 2 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
100000c4 00000801 R_C6000_ABS32 00000000 g1 \+ 0
|
||||
100000c8 00000901 R_C6000_ABS32 00000000 g2 \+ 0
|
||||
|
||||
Relocation section '\.rela\.bss' at offset 0x116c contains 1 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
100000cc 00000b1a R_C6000_COPY 100000cc a \+ 0
|
||||
|
||||
Relocation section '\.rela\.plt' at offset 0x2000 contains 1 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
100000b4 00000a1b R_C6000_JUMP_SLOT 00000000 sub0 \+ 0
|
||||
|
||||
Symbol table '\.dynsym' contains 12 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 10000020 0 SECTION LOCAL DEFAULT 9
|
||||
2: 10000060 0 SECTION LOCAL DEFAULT 10
|
||||
3: 100000a0 0 SECTION LOCAL DEFAULT 11
|
||||
4: 100000c0 0 SECTION LOCAL DEFAULT 12
|
||||
5: 100000cc 0 SECTION LOCAL DEFAULT 13
|
||||
6: 100000a0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
7: 100000c0 4 OBJECT GLOBAL DEFAULT 12 b
|
||||
8: 00000000 0 NOTYPE WEAK DEFAULT UND g1
|
||||
9: 00000000 0 OBJECT WEAK DEFAULT UND g2
|
||||
10: 00000000 0 FUNC GLOBAL DEFAULT UND sub0
|
||||
11: 100000cc 4 OBJECT GLOBAL DEFAULT 13 a
|
||||
|
||||
Symbol table '\.symtab' contains 26 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 00008000 0 SECTION LOCAL DEFAULT 1
|
||||
2: 00008044 0 SECTION LOCAL DEFAULT 2
|
||||
3: 00008104 0 SECTION LOCAL DEFAULT 3
|
||||
4: 0000813c 0 SECTION LOCAL DEFAULT 4
|
||||
5: 00008154 0 SECTION LOCAL DEFAULT 5
|
||||
6: 0000816c 0 SECTION LOCAL DEFAULT 6
|
||||
7: 00008178 0 SECTION LOCAL DEFAULT 7
|
||||
8: 10000000 0 SECTION LOCAL DEFAULT 8
|
||||
9: 10000020 0 SECTION LOCAL DEFAULT 9
|
||||
10: 10000060 0 SECTION LOCAL DEFAULT 10
|
||||
11: 100000a0 0 SECTION LOCAL DEFAULT 11
|
||||
12: 100000c0 0 SECTION LOCAL DEFAULT 12
|
||||
13: 100000cc 0 SECTION LOCAL DEFAULT 13
|
||||
14: 00000000 0 SECTION LOCAL DEFAULT 14
|
||||
15: 10000060 0 NOTYPE LOCAL DEFAULT 10 fish
|
||||
16: 100000c4 8 OBJECT LOCAL DEFAULT 12 w
|
||||
17: 00008178 0 OBJECT LOCAL DEFAULT 7 _DYNAMIC
|
||||
18: 100000ac 0 OBJECT LOCAL DEFAULT 11 _GLOBAL_OFFSET_TABLE_
|
||||
19: 100000a0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
20: 100000c0 4 OBJECT GLOBAL DEFAULT 12 b
|
||||
21: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize
|
||||
22: 00000000 0 NOTYPE WEAK DEFAULT UND g1
|
||||
23: 00000000 0 OBJECT WEAK DEFAULT UND g2
|
||||
24: 00000000 0 FUNC GLOBAL DEFAULT UND sub0
|
||||
25: 100000cc 4 OBJECT GLOBAL DEFAULT 13 a
|
6
ld/testsuite/ld-tic6x/shlib-app-1b.sd
Normal file
6
ld/testsuite/ld-tic6x/shlib-app-1b.sd
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
tmpdir/shlib-dynapp-1b: file format elf32-tic6x-be
|
||||
|
||||
Contents of section \.got:
|
||||
[ \t]*100000a0 00000000 00000000 00000000 00000000 .*
|
||||
[ \t]*100000b0 00000000 10000020 00000000 00000000 .*
|
36
ld/testsuite/ld-tic6x/shlib-app-1r.dd
Normal file
36
ld/testsuite/ld-tic6x/shlib-app-1r.dd
Normal file
@ -0,0 +1,36 @@
|
||||
|
||||
tmpdir/shlib-dynapp-1r: file format elf32-tic6x-le
|
||||
|
||||
|
||||
Disassembly of section \.plt:
|
||||
|
||||
10000020 <sub0@plt-0x18>:
|
||||
10000020:[ \t]*0100036e[ \t]*ldw \.D2T2 \*\+b14\(12\),b2
|
||||
10000024:[ \t]*0080046e[ \t]*ldw \.D2T2 \*\+b14\(16\),b1
|
||||
10000028:[ \t]*00004000[ \t]*nop 3
|
||||
1000002c:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
10000030:[ \t]*00008000[ \t]*nop 5
|
||||
10000034:[ \t]*00000000[ \t]*nop 1
|
||||
|
||||
10000038 <sub0@plt>:
|
||||
10000038:[ \t]*0100056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b2
|
||||
1000003c:[ \t]*0000002a[ \t]*mvk \.S2 0,b0
|
||||
10000040:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0
|
||||
10000044:[ \t]*00002000[ \t]*nop 2
|
||||
10000048:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
1000004c:[ \t]*00008000[ \t]*nop 5
|
||||
[ \t]*\.\.\.
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
10000060 <fish>:
|
||||
10000060:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14
|
||||
10000064:[ \t]*1ffffb12[ \t]*callp \.S2 10000038 <sub0@plt>,b3
|
||||
10000068:[ \t]*0ffffb12[ \t]*b \.S2 10000038 <sub0@plt>
|
||||
1000006c:[ \t]*10000012[ \t]*callp \.S2 10000060 <fish>,b3
|
||||
10000070:[ \t]*00000012[ \t]*b \.S2 10000060 <fish>
|
||||
10000074:[ \t]*0200096e[ \t]*ldw \.D2T2 \*\+b14\(36\),b4
|
||||
10000078:[ \t]*0280086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b5
|
||||
1000007c:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6
|
||||
10000080:[ \t]*0300066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b6
|
||||
[ \t]*\.\.\.
|
11
ld/testsuite/ld-tic6x/shlib-app-1r.od
Normal file
11
ld/testsuite/ld-tic6x/shlib-app-1r.od
Normal file
@ -0,0 +1,11 @@
|
||||
|
||||
tmpdir/shlib-dynapp-1r: file format elf32-tic6x-le
|
||||
|
||||
DYNAMIC RELOCATION RECORDS
|
||||
OFFSET TYPE VALUE
|
||||
100000b8 R_C6000_ABS32 b
|
||||
100000bc R_C6000_ABS32 a
|
||||
100000c4 R_C6000_COPY a
|
||||
100000b4 R_C6000_JUMP_SLOT sub0
|
||||
|
||||
|
115
ld/testsuite/ld-tic6x/shlib-app-1r.rd
Normal file
115
ld/testsuite/ld-tic6x/shlib-app-1r.rd
Normal file
@ -0,0 +1,115 @@
|
||||
There are 17 section headers, starting at offset 0x2158:
|
||||
|
||||
Section Headers:
|
||||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 00003c 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 6 4
|
||||
\[ 3\] \.dynstr STRTAB 000080dc 0010dc 000030 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 0000810c 00110c 000018 0c A 2 10 4
|
||||
\[ 5\] \.rela\.bss RELA 00008124 001124 00000c 0c A 2 12 4
|
||||
\[ 6\] \.dynamic DYNAMIC 00008130 001130 0000b8 08 WA 3 0 4
|
||||
\[ 7\] \.rela\.plt RELA 10000000 002000 00000c 0c A 2 8 4
|
||||
\[ 8\] \.plt PROGBITS 10000020 002020 000040 18 AX 0 0 32
|
||||
\[ 9\] \.text PROGBITS 10000060 002060 000040 00 AX 0 0 32
|
||||
\[10\] \.got PROGBITS 100000a0 0020a0 000020 00 WA 0 0 4
|
||||
\[11\] \.neardata PROGBITS 100000c0 0020c0 000004 00 WA 0 0 4
|
||||
\[12\] \.bss NOBITS 100000c4 0020c4 000004 00 WA 0 0 4
|
||||
\[13\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 0020c4 000019 00 0 0 1
|
||||
\[14\] \.shstrtab STRTAB 00000000 0020dd 00007b 00 0 0 1
|
||||
\[15\] \.symtab SYMTAB 00000000 002400 000160 10 16 18 4
|
||||
\[16\] \.strtab STRTAB 00000000 002560 00004d 00 0 0 1
|
||||
Key to Flags:
|
||||
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
|
||||
I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\)
|
||||
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
|
||||
|
||||
Elf file type is EXEC \(Executable file\)
|
||||
Entry point 0x10000060
|
||||
There are 4 program headers, starting at offset 52
|
||||
|
||||
Program Headers:
|
||||
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
|
||||
LOAD 0x001000 0x00008000 0x00008000 0x001e8 0x001e8 RW 0x1000
|
||||
LOAD 0x002000 0x10000000 0x10000000 0x000c4 0x000c8 RWE 0x1000
|
||||
DYNAMIC 0x001130 0x00008130 0x00008130 0x000b8 0x000b8 RW 0x4
|
||||
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
|
||||
|
||||
Section to Segment mapping:
|
||||
Segment Sections\.\.\.
|
||||
00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.bss \.dynamic
|
||||
01 \.rela\.plt \.plt \.text \.got \.neardata \.bss
|
||||
02 \.dynamic
|
||||
03
|
||||
|
||||
Dynamic section at offset 0x1130 contains 18 entries:
|
||||
Tag Type Name/Value
|
||||
0x00000001 \(NEEDED\) Shared library: \[tmpdir/libtestr\.so\]
|
||||
0x00000004 \(HASH\) 0x8000
|
||||
0x00000005 \(STRTAB\) 0x80dc
|
||||
0x00000006 \(SYMTAB\) 0x803c
|
||||
0x0000000a \(STRSZ\) 48 \(bytes\)
|
||||
0x0000000b \(SYMENT\) 16 \(bytes\)
|
||||
0x00000015 \(DEBUG\) 0x0
|
||||
0x70000000 \(C6000_DSBT_BASE\) 0x100000a0
|
||||
0x70000001 \(C6000_DSBT_SIZE\) 0x3
|
||||
0x70000003 \(C6000_DSBT_INDEX\) 0x0
|
||||
0x00000003 \(PLTGOT\) 0x100000ac
|
||||
0x00000002 \(PLTRELSZ\) 12 \(bytes\)
|
||||
0x00000014 \(PLTREL\) RELA
|
||||
0x00000017 \(JMPREL\) 0x10000000
|
||||
0x00000007 \(RELA\) 0x810c
|
||||
0x00000008 \(RELASZ\) 48 \(bytes\)
|
||||
0x00000009 \(RELAENT\) 12 \(bytes\)
|
||||
0x00000000 \(NULL\) 0x0
|
||||
|
||||
Relocation section '\.rela\.got' at offset 0x110c contains 2 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
100000b8 00000701 R_C6000_ABS32 100000c0 b \+ 0
|
||||
100000bc 00000901 R_C6000_ABS32 100000c4 a \+ 0
|
||||
|
||||
Relocation section '\.rela\.bss' at offset 0x1124 contains 1 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
100000c4 0000091a R_C6000_COPY 100000c4 a \+ 0
|
||||
|
||||
Relocation section '\.rela\.plt' at offset 0x2000 contains 1 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
100000b4 0000081b R_C6000_JUMP_SLOT 00000000 sub0 \+ 0
|
||||
|
||||
Symbol table '\.dynsym' contains 10 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 10000020 0 SECTION LOCAL DEFAULT 8
|
||||
2: 10000060 0 SECTION LOCAL DEFAULT 9
|
||||
3: 100000a0 0 SECTION LOCAL DEFAULT 10
|
||||
4: 100000c0 0 SECTION LOCAL DEFAULT 11
|
||||
5: 100000c4 0 SECTION LOCAL DEFAULT 12
|
||||
6: 100000a0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
7: 100000c0 4 OBJECT GLOBAL DEFAULT 11 b
|
||||
8: 00000000 0 FUNC GLOBAL DEFAULT UND sub0
|
||||
9: 100000c4 4 OBJECT GLOBAL DEFAULT 12 a
|
||||
|
||||
Symbol table '\.symtab' contains 22 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 00008000 0 SECTION LOCAL DEFAULT 1
|
||||
2: 0000803c 0 SECTION LOCAL DEFAULT 2
|
||||
3: 000080dc 0 SECTION LOCAL DEFAULT 3
|
||||
4: 0000810c 0 SECTION LOCAL DEFAULT 4
|
||||
5: 00008124 0 SECTION LOCAL DEFAULT 5
|
||||
6: 00008130 0 SECTION LOCAL DEFAULT 6
|
||||
7: 10000000 0 SECTION LOCAL DEFAULT 7
|
||||
8: 10000020 0 SECTION LOCAL DEFAULT 8
|
||||
9: 10000060 0 SECTION LOCAL DEFAULT 9
|
||||
10: 100000a0 0 SECTION LOCAL DEFAULT 10
|
||||
11: 100000c0 0 SECTION LOCAL DEFAULT 11
|
||||
12: 100000c4 0 SECTION LOCAL DEFAULT 12
|
||||
13: 00000000 0 SECTION LOCAL DEFAULT 13
|
||||
14: 10000060 0 NOTYPE LOCAL DEFAULT 9 fish
|
||||
15: 00008130 0 OBJECT LOCAL DEFAULT 6 _DYNAMIC
|
||||
16: 100000ac 0 OBJECT LOCAL DEFAULT 10 _GLOBAL_OFFSET_TABLE_
|
||||
17: 100000a0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
18: 100000c0 4 OBJECT GLOBAL DEFAULT 11 b
|
||||
19: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize
|
||||
20: 00000000 0 FUNC GLOBAL DEFAULT UND sub0
|
||||
21: 100000c4 4 OBJECT GLOBAL DEFAULT 12 a
|
19
ld/testsuite/ld-tic6x/shlib-app-1r.s
Normal file
19
ld/testsuite/ld-tic6x/shlib-app-1r.s
Normal file
@ -0,0 +1,19 @@
|
||||
.global a
|
||||
.text
|
||||
fish:
|
||||
ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14
|
||||
callp .s2 sub0, B3
|
||||
b .s2 sub0
|
||||
callp .s2 fish, B3
|
||||
b .s2 fish
|
||||
ldw .d2t2 *+B14(a), B4
|
||||
ldw .d2t2 *+B14(b), B5
|
||||
ldw .d2t2 *+B14($GOT(a)), B6
|
||||
ldw .d2t2 *+B14($GOT(b)), B6
|
||||
.global b
|
||||
.section .neardata,"aw",@progbits
|
||||
.align 2
|
||||
.type b, @object
|
||||
.size b, 4
|
||||
b:
|
||||
.long 0x12345678
|
6
ld/testsuite/ld-tic6x/shlib-app-1r.sd
Normal file
6
ld/testsuite/ld-tic6x/shlib-app-1r.sd
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
tmpdir/shlib-dynapp-1r: file format elf32-tic6x-le
|
||||
|
||||
Contents of section \.got:
|
||||
[ \t]*100000a0 00000000 00000000 00000000 00000000 .*
|
||||
[ \t]*100000b0 00000000 20000010 00000000 00000000 .*
|
36
ld/testsuite/ld-tic6x/shlib-app-1rb.dd
Normal file
36
ld/testsuite/ld-tic6x/shlib-app-1rb.dd
Normal file
@ -0,0 +1,36 @@
|
||||
|
||||
tmpdir/shlib-dynapp-1rb: file format elf32-tic6x-be
|
||||
|
||||
|
||||
Disassembly of section \.plt:
|
||||
|
||||
10000020 <sub0@plt-0x18>:
|
||||
10000020:[ \t]*0100036e[ \t]*ldw \.D2T2 \*\+b14\(12\),b2
|
||||
10000024:[ \t]*0080046e[ \t]*ldw \.D2T2 \*\+b14\(16\),b1
|
||||
10000028:[ \t]*00004000[ \t]*nop 3
|
||||
1000002c:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
10000030:[ \t]*00008000[ \t]*nop 5
|
||||
10000034:[ \t]*00000000[ \t]*nop 1
|
||||
|
||||
10000038 <sub0@plt>:
|
||||
10000038:[ \t]*0100056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b2
|
||||
1000003c:[ \t]*0000002a[ \t]*mvk \.S2 0,b0
|
||||
10000040:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0
|
||||
10000044:[ \t]*00002000[ \t]*nop 2
|
||||
10000048:[ \t]*00080362[ \t]*b \.S2 b2
|
||||
1000004c:[ \t]*00008000[ \t]*nop 5
|
||||
[ \t]*\.\.\.
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
10000060 <fish>:
|
||||
10000060:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14
|
||||
10000064:[ \t]*1ffffb12[ \t]*callp \.S2 10000038 <sub0@plt>,b3
|
||||
10000068:[ \t]*0ffffb12[ \t]*b \.S2 10000038 <sub0@plt>
|
||||
1000006c:[ \t]*10000012[ \t]*callp \.S2 10000060 <fish>,b3
|
||||
10000070:[ \t]*00000012[ \t]*b \.S2 10000060 <fish>
|
||||
10000074:[ \t]*0200096e[ \t]*ldw \.D2T2 \*\+b14\(36\),b4
|
||||
10000078:[ \t]*0280086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b5
|
||||
1000007c:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6
|
||||
10000080:[ \t]*0300066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b6
|
||||
[ \t]*\.\.\.
|
11
ld/testsuite/ld-tic6x/shlib-app-1rb.od
Normal file
11
ld/testsuite/ld-tic6x/shlib-app-1rb.od
Normal file
@ -0,0 +1,11 @@
|
||||
|
||||
tmpdir/shlib-dynapp-1rb: file format elf32-tic6x-be
|
||||
|
||||
DYNAMIC RELOCATION RECORDS
|
||||
OFFSET TYPE VALUE
|
||||
100000b8 R_C6000_ABS32 b
|
||||
100000bc R_C6000_ABS32 a
|
||||
100000c4 R_C6000_COPY a
|
||||
100000b4 R_C6000_JUMP_SLOT sub0
|
||||
|
||||
|
115
ld/testsuite/ld-tic6x/shlib-app-1rb.rd
Normal file
115
ld/testsuite/ld-tic6x/shlib-app-1rb.rd
Normal file
@ -0,0 +1,115 @@
|
||||
There are 17 section headers, starting at offset 0x2158:
|
||||
|
||||
Section Headers:
|
||||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 00003c 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 6 4
|
||||
\[ 3\] \.dynstr STRTAB 000080dc 0010dc 000031 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 00008110 001110 000018 0c A 2 10 4
|
||||
\[ 5\] \.rela\.bss RELA 00008128 001128 00000c 0c A 2 12 4
|
||||
\[ 6\] \.dynamic DYNAMIC 00008134 001134 0000b8 08 WA 3 0 4
|
||||
\[ 7\] \.rela\.plt RELA 10000000 002000 00000c 0c A 2 8 4
|
||||
\[ 8\] \.plt PROGBITS 10000020 002020 000040 18 AX 0 0 32
|
||||
\[ 9\] \.text PROGBITS 10000060 002060 000040 00 AX 0 0 32
|
||||
\[10\] \.got PROGBITS 100000a0 0020a0 000020 00 WA 0 0 4
|
||||
\[11\] \.neardata PROGBITS 100000c0 0020c0 000004 00 WA 0 0 4
|
||||
\[12\] \.bss NOBITS 100000c4 0020c4 000004 00 WA 0 0 4
|
||||
\[13\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 0020c4 000019 00 0 0 1
|
||||
\[14\] \.shstrtab STRTAB 00000000 0020dd 00007b 00 0 0 1
|
||||
\[15\] \.symtab SYMTAB 00000000 002400 000160 10 16 18 4
|
||||
\[16\] \.strtab STRTAB 00000000 002560 00004d 00 0 0 1
|
||||
Key to Flags:
|
||||
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
|
||||
I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\)
|
||||
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
|
||||
|
||||
Elf file type is EXEC \(Executable file\)
|
||||
Entry point 0x10000060
|
||||
There are 4 program headers, starting at offset 52
|
||||
|
||||
Program Headers:
|
||||
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
|
||||
LOAD 0x001000 0x00008000 0x00008000 0x001ec 0x001ec RW 0x1000
|
||||
LOAD 0x002000 0x10000000 0x10000000 0x000c4 0x000c8 RWE 0x1000
|
||||
DYNAMIC 0x001134 0x00008134 0x00008134 0x000b8 0x000b8 RW 0x4
|
||||
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
|
||||
|
||||
Section to Segment mapping:
|
||||
Segment Sections\.\.\.
|
||||
00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.bss \.dynamic
|
||||
01 \.rela\.plt \.plt \.text \.got \.neardata \.bss
|
||||
02 \.dynamic
|
||||
03
|
||||
|
||||
Dynamic section at offset 0x1134 contains 18 entries:
|
||||
Tag Type Name/Value
|
||||
0x00000001 \(NEEDED\) Shared library: \[tmpdir/libtestrb\.so\]
|
||||
0x00000004 \(HASH\) 0x8000
|
||||
0x00000005 \(STRTAB\) 0x80dc
|
||||
0x00000006 \(SYMTAB\) 0x803c
|
||||
0x0000000a \(STRSZ\) 49 \(bytes\)
|
||||
0x0000000b \(SYMENT\) 16 \(bytes\)
|
||||
0x00000015 \(DEBUG\) 0x0
|
||||
0x70000000 \(C6000_DSBT_BASE\) 0x100000a0
|
||||
0x70000001 \(C6000_DSBT_SIZE\) 0x3
|
||||
0x70000003 \(C6000_DSBT_INDEX\) 0x0
|
||||
0x00000003 \(PLTGOT\) 0x100000ac
|
||||
0x00000002 \(PLTRELSZ\) 12 \(bytes\)
|
||||
0x00000014 \(PLTREL\) RELA
|
||||
0x00000017 \(JMPREL\) 0x10000000
|
||||
0x00000007 \(RELA\) 0x8110
|
||||
0x00000008 \(RELASZ\) 48 \(bytes\)
|
||||
0x00000009 \(RELAENT\) 12 \(bytes\)
|
||||
0x00000000 \(NULL\) 0x0
|
||||
|
||||
Relocation section '\.rela\.got' at offset 0x1110 contains 2 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
100000b8 00000701 R_C6000_ABS32 100000c0 b \+ 0
|
||||
100000bc 00000901 R_C6000_ABS32 100000c4 a \+ 0
|
||||
|
||||
Relocation section '\.rela\.bss' at offset 0x1128 contains 1 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
100000c4 0000091a R_C6000_COPY 100000c4 a \+ 0
|
||||
|
||||
Relocation section '\.rela\.plt' at offset 0x2000 contains 1 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
100000b4 0000081b R_C6000_JUMP_SLOT 00000000 sub0 \+ 0
|
||||
|
||||
Symbol table '\.dynsym' contains 10 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 10000020 0 SECTION LOCAL DEFAULT 8
|
||||
2: 10000060 0 SECTION LOCAL DEFAULT 9
|
||||
3: 100000a0 0 SECTION LOCAL DEFAULT 10
|
||||
4: 100000c0 0 SECTION LOCAL DEFAULT 11
|
||||
5: 100000c4 0 SECTION LOCAL DEFAULT 12
|
||||
6: 100000a0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
7: 100000c0 4 OBJECT GLOBAL DEFAULT 11 b
|
||||
8: 00000000 0 FUNC GLOBAL DEFAULT UND sub0
|
||||
9: 100000c4 4 OBJECT GLOBAL DEFAULT 12 a
|
||||
|
||||
Symbol table '\.symtab' contains 22 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 00008000 0 SECTION LOCAL DEFAULT 1
|
||||
2: 0000803c 0 SECTION LOCAL DEFAULT 2
|
||||
3: 000080dc 0 SECTION LOCAL DEFAULT 3
|
||||
4: 00008110 0 SECTION LOCAL DEFAULT 4
|
||||
5: 00008128 0 SECTION LOCAL DEFAULT 5
|
||||
6: 00008134 0 SECTION LOCAL DEFAULT 6
|
||||
7: 10000000 0 SECTION LOCAL DEFAULT 7
|
||||
8: 10000020 0 SECTION LOCAL DEFAULT 8
|
||||
9: 10000060 0 SECTION LOCAL DEFAULT 9
|
||||
10: 100000a0 0 SECTION LOCAL DEFAULT 10
|
||||
11: 100000c0 0 SECTION LOCAL DEFAULT 11
|
||||
12: 100000c4 0 SECTION LOCAL DEFAULT 12
|
||||
13: 00000000 0 SECTION LOCAL DEFAULT 13
|
||||
14: 10000060 0 NOTYPE LOCAL DEFAULT 9 fish
|
||||
15: 00008134 0 OBJECT LOCAL DEFAULT 6 _DYNAMIC
|
||||
16: 100000ac 0 OBJECT LOCAL DEFAULT 10 _GLOBAL_OFFSET_TABLE_
|
||||
17: 100000a0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
18: 100000c0 4 OBJECT GLOBAL DEFAULT 11 b
|
||||
19: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize
|
||||
20: 00000000 0 FUNC GLOBAL DEFAULT UND sub0
|
||||
21: 100000c4 4 OBJECT GLOBAL DEFAULT 12 a
|
6
ld/testsuite/ld-tic6x/shlib-app-1rb.sd
Normal file
6
ld/testsuite/ld-tic6x/shlib-app-1rb.sd
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
tmpdir/shlib-dynapp-1rb: file format elf32-tic6x-be
|
||||
|
||||
Contents of section \.got:
|
||||
[ \t]*100000a0 00000000 00000000 00000000 00000000 .*
|
||||
[ \t]*100000b0 00000000 10000020 00000000 00000000 .*
|
67
ld/testsuite/ld-tic6x/shlib-noindex.dd
Normal file
67
ld/testsuite/ld-tic6x/shlib-noindex.dd
Normal file
@ -0,0 +1,67 @@
|
||||
|
||||
tmpdir/libtestn\.so: file format elf32-tic6x-le
|
||||
|
||||
|
||||
Disassembly of section \.plt:
|
||||
|
||||
10000020 <sub0@plt-0x18>:
|
||||
10000020: 0100036e ldw \.D2T2 \*\+b14\(12\),b2
|
||||
10000024: 0080046e ldw \.D2T2 \*\+b14\(16\),b1
|
||||
10000028: 00004000 nop 3
|
||||
1000002c: 00080362 b \.S2 b2
|
||||
10000030: 00008000 nop 5
|
||||
10000034: 00000000 nop 1
|
||||
|
||||
10000038 <sub0@plt>:
|
||||
10000038: 0100056e ldw \.D2T2 \*\+b14\(20\),b2
|
||||
1000003c: 0000002a mvk \.S2 0,b0
|
||||
10000040: 0000006a mvkh \.S2 0,b0
|
||||
10000044: 00002000 nop 2
|
||||
10000048: 00080362 b \.S2 b2
|
||||
1000004c: 00008000 nop 5
|
||||
|
||||
10000050 <sub@plt>:
|
||||
10000050: 0100066e ldw \.D2T2 \*\+b14\(24\),b2
|
||||
10000054: 0000062a mvk \.S2 12,b0
|
||||
10000058: 0000006a mvkh \.S2 0,b0
|
||||
1000005c: 00002000 nop 2
|
||||
10000060: 00080362 b \.S2 b2
|
||||
10000064: 00008000 nop 5
|
||||
\.\.\.
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
10000080 <sub1>:
|
||||
10000080: 000c0362 b \.S2 b3
|
||||
10000084: 00008000 nop 5
|
||||
|
||||
10000088 <sub0>:
|
||||
10000088: 07be09c2 sub \.D2 b15,16,b15
|
||||
1000008c: 01bc62f6 stw \.D2T2 b3,\*\+b15\(12\)
|
||||
10000090: 073c82f6 stw \.D2T2 b14,\*\+b15\(16\)
|
||||
10000094: 0700006e ldw \.D2T2 \*\+b14\(0\),b14
|
||||
10000098: 0ffffa12 b \.S2 10000050 <sub@plt>
|
||||
1000009c: 0ffff712 b \.S2 10000038 <sub0@plt>
|
||||
100000a0: 0ffffc12 b \.S2 10000080 <sub1>
|
||||
100000a4: 01bc62e6 ldw \.D2T2 \*\+b15\(12\),b3
|
||||
100000a8: 073c82e6 ldw \.D2T2 \*\+b15\(16\),b14
|
||||
100000ac: 07800852 addk \.S2 16,b15
|
||||
100000b0: 00004000 nop 3
|
||||
100000b4: 000c0362 b \.S2 b3
|
||||
100000b8: 00008000 nop 5
|
||||
100000bc: 00000000 nop 1
|
||||
|
||||
100000c0 <sub>:
|
||||
100000c0: 07be09c2 sub \.D2 b15,16,b15
|
||||
100000c4: 023c62f4 stw \.D2T1 a4,\*\+b15\(12\)
|
||||
100000c8: 003c62e4 ldw \.D2T1 \*\+b15\(12\),a0
|
||||
100000cc: 00006000 nop 4
|
||||
100000d0: 00014940 add \.D1 a0,10,a0
|
||||
100000d4: 020008f0 or \.D1 0,a0,a4
|
||||
100000d8: 07be0942 add \.D2 b15,16,b15
|
||||
100000dc: 000c0362 b \.S2 b3
|
||||
100000e0: 0300096e ldw \.D2T2 \*\+b14\(36\),b6
|
||||
100000e4: 0380076e ldw \.D2T2 \*\+b14\(28\),b7
|
||||
100000e8: 0400086e ldw \.D2T2 \*\+b14\(32\),b8
|
||||
100000ec: 04800c6e ldw \.D2T2 \*\+b14\(48\),b9
|
||||
\.\.\.
|
130
ld/testsuite/ld-tic6x/shlib-noindex.rd
Normal file
130
ld/testsuite/ld-tic6x/shlib-noindex.rd
Normal file
@ -0,0 +1,130 @@
|
||||
There are 18 section headers, starting at offset 0x21cc:
|
||||
|
||||
Section Headers:
|
||||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 000048 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 6 4
|
||||
\[ 3\] \.dynstr STRTAB 00008118 001118 000025 00 A 0 0 1
|
||||
\[ 4\] \.rela\.text RELA 00008140 001140 00000c 0c A 2 10 4
|
||||
\[ 5\] \.rela\.got RELA 0000814c 00114c 000024 0c A 2 11 4
|
||||
\[ 6\] \.rela\.neardata RELA 00008170 001170 000018 0c A 2 12 4
|
||||
\[ 7\] \.dynamic DYNAMIC 00008188 001188 0000b0 08 WA 3 0 4
|
||||
\[ 8\] \.rela\.plt RELA 10000000 002000 000018 0c A 2 9 4
|
||||
\[ 9\] \.plt PROGBITS 10000020 002020 000060 18 AX 0 0 32
|
||||
\[10\] \.text PROGBITS 10000080 002080 000080 00 AX 0 0 32
|
||||
\[11\] \.got PROGBITS 10000100 002100 000028 00 WA 0 0 4
|
||||
\[12\] \.neardata PROGBITS 10000128 002128 000008 00 WA 0 0 4
|
||||
\[13\] \.bss NOBITS 10000130 002130 000004 00 WA 0 0 4
|
||||
\[14\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 002130 000019 00 0 0 1
|
||||
\[15\] \.shstrtab STRTAB 00000000 002149 000080 00 0 0 1
|
||||
\[16\] \.symtab SYMTAB 00000000 00249c 0001b0 10 17 20 4
|
||||
\[17\] \.strtab STRTAB 00000000 00264c 000059 00 0 0 1
|
||||
Key to Flags:
|
||||
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
|
||||
I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\)
|
||||
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
|
||||
|
||||
Elf file type is DYN \(Shared object file\)
|
||||
Entry point 0x10000080
|
||||
There are 4 program headers, starting at offset 52
|
||||
|
||||
Program Headers:
|
||||
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
|
||||
LOAD 0x001000 0x00008000 0x00008000 0x00238 0x00238 RW 0x1000
|
||||
LOAD 0x002000 0x10000000 0x10000000 0x00130 0x00134 RWE 0x1000
|
||||
DYNAMIC 0x001188 0x00008188 0x00008188 0x000b0 0x000b0 RW 0x4
|
||||
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
|
||||
|
||||
Section to Segment mapping:
|
||||
Segment Sections\.\.\.
|
||||
00 \.hash \.dynsym \.dynstr \.rela\.text \.rela\.got \.rela\.neardata \.dynamic
|
||||
01 \.rela\.plt \.plt \.text \.got \.neardata \.bss
|
||||
02 \.dynamic
|
||||
03
|
||||
|
||||
Dynamic section at offset 0x1188 contains 17 entries:
|
||||
Tag Type Name/Value
|
||||
0x00000004 \(HASH\) 0x8000
|
||||
0x00000005 \(STRTAB\) 0x8118
|
||||
0x00000006 \(SYMTAB\) 0x8048
|
||||
0x0000000a \(STRSZ\) 37 \(bytes\)
|
||||
0x0000000b \(SYMENT\) 16 \(bytes\)
|
||||
0x70000000 \(C6000_DSBT_BASE\) 0x10000100
|
||||
0x70000001 \(C6000_DSBT_SIZE\) 0x3
|
||||
0x70000003 \(C6000_DSBT_INDEX\) 0x0
|
||||
0x00000003 \(PLTGOT\) 0x1000010c
|
||||
0x00000002 \(PLTRELSZ\) 24 \(bytes\)
|
||||
0x00000014 \(PLTREL\) RELA
|
||||
0x00000017 \(JMPREL\) 0x10000000
|
||||
0x00000007 \(RELA\) 0x8140
|
||||
0x00000008 \(RELASZ\) 96 \(bytes\)
|
||||
0x00000009 \(RELAENT\) 12 \(bytes\)
|
||||
0x00000016 \(TEXTREL\) 0x0
|
||||
0x00000000 \(NULL\) 0x0
|
||||
|
||||
Relocation section '\.rela\.text' at offset 0x1140 contains 1 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
10000094 00000618 R_C6000_DSBT_INDEX 10000100 __c6xabi_DSBT_BASE \+ 0
|
||||
|
||||
Relocation section '\.rela\.got' at offset 0x114c contains 3 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
10000120 00000501 R_C6000_ABS32 10000130 \.bss \+ 0
|
||||
1000011c 00000701 R_C6000_ABS32 00000000 b \+ 0
|
||||
10000124 00000b01 R_C6000_ABS32 10000128 a \+ 0
|
||||
|
||||
Relocation section '\.rela\.neardata' at offset 0x1170 contains 2 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
10000128 00000a01 R_C6000_ABS32 10000088 sub0 \+ 0
|
||||
1000012c 00000801 R_C6000_ABS32 00000000 g1 \+ 0
|
||||
|
||||
Relocation section '\.rela\.plt' at offset 0x2000 contains 2 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
10000114 00000a1b R_C6000_JUMP_SLOT 10000088 sub0 \+ 0
|
||||
10000118 00000c1b R_C6000_JUMP_SLOT 100000c0 sub \+ 0
|
||||
|
||||
Symbol table '\.dynsym' contains 13 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 10000020 0 SECTION LOCAL DEFAULT 9
|
||||
2: 10000080 0 SECTION LOCAL DEFAULT 10
|
||||
3: 10000100 0 SECTION LOCAL DEFAULT 11
|
||||
4: 10000128 0 SECTION LOCAL DEFAULT 12
|
||||
5: 10000130 0 SECTION LOCAL DEFAULT 13
|
||||
6: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
7: 00000000 0 NOTYPE WEAK DEFAULT UND b
|
||||
8: 00000000 0 NOTYPE WEAK DEFAULT UND g1
|
||||
9: 1000012c 4 OBJECT GLOBAL DEFAULT 12 g2
|
||||
10: 10000088 52 FUNC GLOBAL DEFAULT 10 sub0
|
||||
11: 10000128 4 OBJECT GLOBAL DEFAULT 12 a
|
||||
12: 100000c0 52 FUNC GLOBAL DEFAULT 10 sub
|
||||
|
||||
Symbol table '\.symtab' contains 27 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 00008000 0 SECTION LOCAL DEFAULT 1
|
||||
2: 00008048 0 SECTION LOCAL DEFAULT 2
|
||||
3: 00008118 0 SECTION LOCAL DEFAULT 3
|
||||
4: 00008140 0 SECTION LOCAL DEFAULT 4
|
||||
5: 0000814c 0 SECTION LOCAL DEFAULT 5
|
||||
6: 00008170 0 SECTION LOCAL DEFAULT 6
|
||||
7: 00008188 0 SECTION LOCAL DEFAULT 7
|
||||
8: 10000000 0 SECTION LOCAL DEFAULT 8
|
||||
9: 10000020 0 SECTION LOCAL DEFAULT 9
|
||||
10: 10000080 0 SECTION LOCAL DEFAULT 10
|
||||
11: 10000100 0 SECTION LOCAL DEFAULT 11
|
||||
12: 10000128 0 SECTION LOCAL DEFAULT 12
|
||||
13: 10000130 0 SECTION LOCAL DEFAULT 13
|
||||
14: 00000000 0 SECTION LOCAL DEFAULT 14
|
||||
15: 10000080 0 FUNC LOCAL HIDDEN 10 sub1
|
||||
16: 00008188 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC
|
||||
17: 10000130 4 OBJECT LOCAL DEFAULT 13 c
|
||||
18: 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
|
||||
19: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
20: 00000000 0 NOTYPE WEAK DEFAULT UND b
|
||||
21: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize
|
||||
22: 00000000 0 NOTYPE WEAK DEFAULT UND g1
|
||||
23: 1000012c 4 OBJECT GLOBAL DEFAULT 12 g2
|
||||
24: 10000088 52 FUNC GLOBAL DEFAULT 10 sub0
|
||||
25: 10000128 4 OBJECT GLOBAL DEFAULT 12 a
|
||||
26: 100000c0 52 FUNC GLOBAL DEFAULT 10 sub
|
7
ld/testsuite/ld-tic6x/shlib-noindex.sd
Normal file
7
ld/testsuite/ld-tic6x/shlib-noindex.sd
Normal file
@ -0,0 +1,7 @@
|
||||
|
||||
tmpdir/libtestn\.so: file format elf32-tic6x-le
|
||||
|
||||
Contents of section \.got:
|
||||
[ \t]*10000100 00000000 00000000 00000000 00000000 .*
|
||||
[ \t]*10000110 00000000 20000010 20000010 00000000 .*
|
||||
[ \t]*10000120 30010010 00000000 .*
|
56
ld/testsuite/ld-tic6x/static-app-1.dd
Normal file
56
ld/testsuite/ld-tic6x/static-app-1.dd
Normal file
@ -0,0 +1,56 @@
|
||||
|
||||
tmpdir/static-app-1: file format elf32-tic6x-le
|
||||
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
10000000 <sub1>:
|
||||
10000000:[ \t]*000c0362[ \t]*b \.S2 b3
|
||||
10000004:[ \t]*00008000[ \t]*nop 5
|
||||
|
||||
10000008 <sub0>:
|
||||
10000008:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15
|
||||
1000000c:[ \t]*01bc62f6[ \t]*stw \.D2T2 b3,\*\+b15\(12\)
|
||||
10000010:[ \t]*073c82f6[ \t]*stw \.D2T2 b14,\*\+b15\(16\)
|
||||
10000014:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14
|
||||
10000018:[ \t]*00000812[ \t]*b \.S2 10000040 <sub>
|
||||
1000001c:[ \t]*00000112[ \t]*b \.S2 10000008 <sub0>
|
||||
10000020:[ \t]*0ffffc12[ \t]*b \.S2 10000000 <sub1>
|
||||
10000024:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3
|
||||
10000028:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14
|
||||
1000002c:[ \t]*07800852[ \t]*addk \.S2 16,b15
|
||||
10000030:[ \t]*00004000[ \t]*nop 3
|
||||
10000034:[ \t]*000c0362[ \t]*b \.S2 b3
|
||||
10000038:[ \t]*00008000[ \t]*nop 5
|
||||
1000003c:[ \t]*00000000[ \t]*nop 1
|
||||
|
||||
10000040 <sub>:
|
||||
10000040:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15
|
||||
10000044:[ \t]*023c62f4[ \t]*stw \.D2T1 a4,\*\+b15\(12\)
|
||||
10000048:[ \t]*003c62e4[ \t]*ldw \.D2T1 \*\+b15\(12\),a0
|
||||
1000004c:[ \t]*00006000[ \t]*nop 4
|
||||
10000050:[ \t]*00014940[ \t]*add \.D1 a0,10,a0
|
||||
10000054:[ \t]*020008f0[ \t]*or \.D1 0,a0,a4
|
||||
10000058:[ \t]*07be0942[ \t]*add \.D2 b15,16,b15
|
||||
1000005c:[ \t]*000c0362[ \t]*b \.S2 b3
|
||||
10000060:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6
|
||||
10000064:[ \t]*0380056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b7
|
||||
10000068:[ \t]*0400066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b8
|
||||
1000006c:[ \t]*04800d6e[ \t]*ldw \.D2T2 \*\+b14\(52\),b9
|
||||
[ \t]*\.\.\.
|
||||
|
||||
10000080 <fish>:
|
||||
10000080:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14
|
||||
10000084:[ \t]*1ffff112[ \t]*callp \.S2 10000008 <sub0>,b3
|
||||
10000088:[ \t]*0ffff112[ \t]*b \.S2 10000008 <sub0>
|
||||
1000008c:[ \t]*10000012[ \t]*callp \.S2 10000080 <fish>,b3
|
||||
10000090:[ \t]*00000012[ \t]*b \.S2 10000080 <fish>
|
||||
10000094:[ \t]*0200086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b4
|
||||
10000098:[ \t]*02800a6e[ \t]*ldw \.D2T2 \*\+b14\(40\),b5
|
||||
1000009c:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6
|
||||
100000a0:[ \t]*0300056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b6
|
||||
100000a4:[ \t]*020003a8[ \t]*mvk \.S1 7,a4
|
||||
100000a8:[ \t]*02000068[ \t]*mvkh \.S1 0,a4
|
||||
100000ac:[ \t]*028002a8[ \t]*mvk \.S1 5,a5
|
||||
100000b0:[ \t]*02800068[ \t]*mvkh \.S1 0,a5
|
||||
[ \t]*\.\.\.
|
14
ld/testsuite/ld-tic6x/static-app-1.od
Normal file
14
ld/testsuite/ld-tic6x/static-app-1.od
Normal file
@ -0,0 +1,14 @@
|
||||
|
||||
tmpdir/static-app-1: file format elf32-tic6x-le
|
||||
|
||||
DYNAMIC RELOCATION RECORDS
|
||||
OFFSET TYPE VALUE
|
||||
100000d8 R_C6000_ABS32 \.bss
|
||||
100000d4 R_C6000_ABS32 b
|
||||
100000dc R_C6000_ABS32 a
|
||||
100000e0 R_C6000_ABS32 \.text\+0x00000008
|
||||
100000e4 R_C6000_ABS32 g1
|
||||
100000ec R_C6000_ABS32 g1
|
||||
100000f0 R_C6000_ABS32 \.neardata\+0x00000004
|
||||
|
||||
|
112
ld/testsuite/ld-tic6x/static-app-1.rd
Normal file
112
ld/testsuite/ld-tic6x/static-app-1.rd
Normal file
@ -0,0 +1,112 @@
|
||||
There are 15 section headers, starting at offset 0x2180:
|
||||
|
||||
Section Headers:
|
||||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 00003c 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 5 4
|
||||
\[ 3\] \.dynstr STRTAB 000080dc 0010dc 00001d 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 000080fc 0010fc 000024 0c A 2 8 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008120 001120 000030 0c A 2 9 4
|
||||
\[ 6\] \.dynamic DYNAMIC 00008150 001150 000090 08 WA 3 0 4
|
||||
\[ 7\] \.text PROGBITS 10000000 002000 0000c0 00 AX 0 0 32
|
||||
\[ 8\] \.got PROGBITS 100000c0 0020c0 000020 00 WA 0 0 4
|
||||
\[ 9\] \.neardata PROGBITS 100000e0 0020e0 000014 00 WA 0 0 4
|
||||
\[10\] \.bss NOBITS 100000f4 0020f4 000004 00 WA 0 0 4
|
||||
\[11\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 0020f4 000019 00 0 0 1
|
||||
\[12\] \.shstrtab STRTAB 00000000 00210d 000071 00 0 0 1
|
||||
\[13\] \.symtab SYMTAB 00000000 0023d8 0001a0 10 14 19 4
|
||||
\[14\] \.strtab STRTAB 00000000 002578 000060 00 0 0 1
|
||||
Key to Flags:
|
||||
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
|
||||
I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\)
|
||||
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
|
||||
|
||||
Elf file type is EXEC \(Executable file\)
|
||||
Entry point 0x10000000
|
||||
There are 4 program headers, starting at offset 52
|
||||
|
||||
Program Headers:
|
||||
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
|
||||
LOAD 0x001000 0x00008000 0x00008000 0x001e0 0x001e0 RW 0x1000
|
||||
LOAD 0x002000 0x10000000 0x10000000 0x000f4 0x000f8 RWE 0x1000
|
||||
DYNAMIC 0x001150 0x00008150 0x00008150 0x00090 0x00090 RW 0x4
|
||||
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
|
||||
|
||||
Section to Segment mapping:
|
||||
Segment Sections\.\.\.
|
||||
00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.dynamic
|
||||
01 \.text \.got \.neardata \.bss
|
||||
02 \.dynamic
|
||||
03
|
||||
|
||||
Dynamic section at offset 0x1150 contains 13 entries:
|
||||
Tag Type Name/Value
|
||||
0x00000004 \(HASH\) 0x8000
|
||||
0x00000005 \(STRTAB\) 0x80dc
|
||||
0x00000006 \(SYMTAB\) 0x803c
|
||||
0x0000000a \(STRSZ\) 29 \(bytes\)
|
||||
0x0000000b \(SYMENT\) 16 \(bytes\)
|
||||
0x00000015 \(DEBUG\) 0x0
|
||||
0x70000000 \(C6000_DSBT_BASE\) 0x100000c0
|
||||
0x70000001 \(C6000_DSBT_SIZE\) 0x3
|
||||
0x70000003 \(C6000_DSBT_INDEX\) 0x0
|
||||
0x00000007 \(RELA\) 0x80fc
|
||||
0x00000008 \(RELASZ\) 84 \(bytes\)
|
||||
0x00000009 \(RELAENT\) 12 \(bytes\)
|
||||
0x00000000 \(NULL\) 0x0
|
||||
|
||||
Relocation section '\.rela\.got' at offset 0x10fc contains 3 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
100000d8 00000401 R_C6000_ABS32 100000f4 \.bss \+ 0
|
||||
100000d4 00000701 R_C6000_ABS32 100000e8 b \+ 0
|
||||
100000dc 00000901 R_C6000_ABS32 100000e0 a \+ 0
|
||||
|
||||
Relocation section '\.rela\.neardata' at offset 0x1120 contains 4 entries:
|
||||
Offset Info Type Sym\. Value Symbol's Name \+ Addend
|
||||
100000e0 00000101 R_C6000_ABS32 10000000 \.text \+ 8
|
||||
100000e4 00000801 R_C6000_ABS32 00000000 g1 \+ 0
|
||||
100000ec 00000801 R_C6000_ABS32 00000000 g1 \+ 0
|
||||
100000f0 00000301 R_C6000_ABS32 100000e0 \.neardata \+ 4
|
||||
|
||||
Symbol table '\.dynsym' contains 10 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 10000000 0 SECTION LOCAL DEFAULT 7
|
||||
2: 100000c0 0 SECTION LOCAL DEFAULT 8
|
||||
3: 100000e0 0 SECTION LOCAL DEFAULT 9
|
||||
4: 100000f4 0 SECTION LOCAL DEFAULT 10
|
||||
5: 100000f4 4 OBJECT LOCAL DEFAULT 10 c
|
||||
6: 100000c0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
7: 100000e8 4 OBJECT GLOBAL DEFAULT 9 b
|
||||
8: 00000000 0 NOTYPE WEAK DEFAULT UND g1
|
||||
9: 100000e0 4 OBJECT GLOBAL DEFAULT 9 a
|
||||
|
||||
Symbol table '\.symtab' contains 26 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 00008000 0 SECTION LOCAL DEFAULT 1
|
||||
2: 0000803c 0 SECTION LOCAL DEFAULT 2
|
||||
3: 000080dc 0 SECTION LOCAL DEFAULT 3
|
||||
4: 000080fc 0 SECTION LOCAL DEFAULT 4
|
||||
5: 00008120 0 SECTION LOCAL DEFAULT 5
|
||||
6: 00008150 0 SECTION LOCAL DEFAULT 6
|
||||
7: 10000000 0 SECTION LOCAL DEFAULT 7
|
||||
8: 100000c0 0 SECTION LOCAL DEFAULT 8
|
||||
9: 100000e0 0 SECTION LOCAL DEFAULT 9
|
||||
10: 100000f4 0 SECTION LOCAL DEFAULT 10
|
||||
11: 00000000 0 SECTION LOCAL DEFAULT 11
|
||||
12: 10000000 0 FUNC LOCAL HIDDEN 7 sub1
|
||||
13: 10000080 0 NOTYPE LOCAL DEFAULT 7 fish
|
||||
14: 100000ec 8 OBJECT LOCAL DEFAULT 9 w
|
||||
15: 00008150 0 OBJECT LOCAL DEFAULT 6 _DYNAMIC
|
||||
16: 100000f4 4 OBJECT LOCAL DEFAULT 10 c
|
||||
17: 100000cc 0 OBJECT LOCAL DEFAULT 8 _GLOBAL_OFFSET_TABLE_
|
||||
18: 100000c0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE
|
||||
19: 100000e8 4 OBJECT GLOBAL DEFAULT 9 b
|
||||
20: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize
|
||||
21: 00000000 0 NOTYPE WEAK DEFAULT UND g1
|
||||
22: 100000e4 4 OBJECT GLOBAL DEFAULT 9 g2
|
||||
23: 10000008 52 FUNC GLOBAL DEFAULT 7 sub0
|
||||
24: 100000e0 4 OBJECT GLOBAL DEFAULT 9 a
|
||||
25: 10000040 52 FUNC GLOBAL DEFAULT 7 sub
|
6
ld/testsuite/ld-tic6x/static-app-1.sd
Normal file
6
ld/testsuite/ld-tic6x/static-app-1.sd
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
tmpdir/static-app-1: file format elf32-tic6x-le
|
||||
|
||||
Contents of section \.got:
|
||||
[ \t]*100000c0 00000000 00000000 00000000 00000000 .*
|
||||
[ \t]*100000d0 00000000 00000000 f4000010 00000000 .*
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user