* elf32-sh.c (sh_elf_optimized_tls_reloc, sh_elf_mkobject,

sh_elf_object_p, dtpoff_base): New functions.
	(sh_elf_howto_table): Add TLS relocs.
	(sh_reloc_map): Likewise.
	(sh_elf_info_to_howto): Support TLS relocs.
	(elf_sh_link_hash_entry): Add tls_type and tls_tpoff32.
	(sh_elf_hash_entry, sh_elf_tdata, sh_elf_local_got_tls_type):
	New macros.
	(sh_elf_obj_tdata): New.
	(elf_sh_link_hash_table): Add tls_ldm_got.
	(sh_elf_link_hash_table_create): Clear refcount of tls_ldm_got.
	(allocate_dynrelocs): Support TLS relocs.
	(sh_elf_size_dynamic_sections): Likewise.
	(sh_elf_relocate_section): Support TLS relocs.  Don't try to find
	.rela.got section when found already.  Return false after printing
	error about unresolvable relocation.
	(sh_elf_gc_sweep_hook): Support TLS relocs.
	(sh_elf_check_relocs): Likewise.
	(sh_elf_finish_dynamic_symbol): Likewise.
	(bfd_elf32_mkobject, elf_backend_object_p): Define for TLS case.
	* reloc.c: Add SH TLS relocs.
	* libbfd.h: Regenerate.
This commit is contained in:
Kaz Kojima 2002-10-11 14:32:03 +00:00
parent 5dc976556d
commit 3376eaf577
3 changed files with 959 additions and 26 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1005,6 +1005,14 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_SH_IMM_HI16",
"BFD_RELOC_SH_IMM_HI16_PCREL",
"BFD_RELOC_SH_PT_16",
"BFD_RELOC_SH_TLS_GD_32",
"BFD_RELOC_SH_TLS_LD_32",
"BFD_RELOC_SH_TLS_LDO_32",
"BFD_RELOC_SH_TLS_IE_32",
"BFD_RELOC_SH_TLS_LE_32",
"BFD_RELOC_SH_TLS_DTPMOD32",
"BFD_RELOC_SH_TLS_DTPOFF32",
"BFD_RELOC_SH_TLS_TPOFF32",
"BFD_RELOC_THUMB_PCREL_BRANCH9",
"BFD_RELOC_THUMB_PCREL_BRANCH12",
"BFD_RELOC_THUMB_PCREL_BRANCH23",

View File

@ -2575,6 +2575,22 @@ ENUMX
BFD_RELOC_SH_IMM_HI16_PCREL
ENUMX
BFD_RELOC_SH_PT_16
ENUMX
BFD_RELOC_SH_TLS_GD_32
ENUMX
BFD_RELOC_SH_TLS_LD_32
ENUMX
BFD_RELOC_SH_TLS_LDO_32
ENUMX
BFD_RELOC_SH_TLS_IE_32
ENUMX
BFD_RELOC_SH_TLS_LE_32
ENUMX
BFD_RELOC_SH_TLS_DTPMOD32
ENUMX
BFD_RELOC_SH_TLS_DTPOFF32
ENUMX
BFD_RELOC_SH_TLS_TPOFF32
ENUMDOC
Hitachi SH relocs. Not all of these appear in object files.