Skip to content

Commit

Permalink
Support for TLS GD/IE/LE. LD is not supported.
Browse files Browse the repository at this point in the history
	* reloc.c: Add R_OR1K_TLS_GD_HI16,
	R_OR1K_TLS_GD_LO16, R_OR1K_TLS_LDM_HI16, R_OR1K_TLS_LDM_HI16,
	R_OR1K_TLS_LDM_LO16, R_OR1K_TLS_LDO_HI16, R_OR1K_TLS_LDO_LO16,
	R_OR1K_TLS_IE_HI16, R_OR1K_TLS_IE_LO16, R_OR1K_TLS_LE_HI16,
	R_OR1K_TLS_LE_LO16, R_OR1K_TLS_TPOFF, R_OR1K_TLS_DTPOFF,
	R_OR1K_TLS_DTPMOD.
	* elf32-or1k.c (or1k_elf_howto_table): Add R_OR1K_TLS_GD_HI16,
	R_OR1K_TLS_GD_LO16, R_OR1K_TLS_LDM_HI16, R_OR1K_TLS_LDM_HI16,
	R_OR1K_TLS_LDM_LO16, R_OR1K_TLS_LDO_HI16, R_OR1K_TLS_LDO_LO16,
	R_OR1K_TLS_IE_HI16, R_OR1K_TLS_IE_LO16, R_OR1K_TLS_LE_HI16,
	R_OR1K_TLS_LE_LO16.
	(or1k_reloc_map): Likewise.
	(TLS_*): Defined TLS type macros.
	(elf_or1k_link_hash_entry): Added tls_type.
	(elf_or1k_obj_tdata): New.
	(elf_or1k_tdata): New.
	(elf_or1k_local_tls_type): New.
	(elf_or1k_mkobject): New.
	(or1k_elf_link_hash_newfunc): Set default TLS type to UNKNOWN.
	(tpoff): New.
	(or1k_elf_relocate_section): Relocation logic for TLS.
	(or1k_elf_check_relocs): Likewise.
	(or1k_elf_check_relocs): Fixed combreloc bug by using
	_bfd_elf_make_dynamic_reloc_section instead of bfd_make_section.
	(or1k_elf_finish_dynamic_symbol): Do not handle TLS symbols.
	(allocate_dynrelocs): Handle TLS types which needs more GOT / reloc
	space.
	(or1k_elf_size_dynamic_sections): Likewise.
	* bfd-in2.h: Regenerate.
	* libbfd.h: Likewise.
	* or1k.opc (parse simm16): Add parsing for tls*(), gottp*().
	* config/tc-or1k.c (or1k_apply_fix): Mark TLS related symbols as TLS.
	* tc-or1k.h: Hook for or1k_apply_fix.
	* elf/or1k.h (START_RELOC_NUMBERS): Add R_OR1K_TLS_GD_HI16,
	R_OR1K_TLS_GD_LO16, R_OR1K_TLS_LDM_HI16, R_OR1K_TLS_LDM_HI16,
	R_OR1K_TLS_LDM_LO16, R_OR1K_TLS_LDO_HI16, R_OR1K_TLS_LDO_LO16,
	R_OR1K_TLS_IE_HI16, R_OR1K_TLS_IE_LO16, R_OR1K_TLS_LE_HI16,
	R_OR1K_TLS_LE_LO16, R_OR1K_TLS_TPOFF, R_OR1K_TLS_DTPOFF,
	R_OR1K_TLS_DTPMOD.
	* ld/emulparams/elf32or1k_linux.sh (GENERATE_COMBRELOC_SCRIPT): Define
	to yes.
	* ld/scripttempl/or1k.sc: Delete unused file.
	* or1k-asm.c: Regenerate
  • Loading branch information
bluecmd committed Feb 12, 2013
1 parent 9fa86c3 commit 25cf517
Show file tree
Hide file tree
Showing 17 changed files with 968 additions and 57 deletions.
33 changes: 33 additions & 0 deletions bfd/ChangeLog.or1k
@@ -1,3 +1,36 @@
2013-02-12 Christian Svensson <blue@cmd.nu>

* reloc.c: Add R_OR1K_TLS_GD_HI16,
R_OR1K_TLS_GD_LO16, R_OR1K_TLS_LDM_HI16, R_OR1K_TLS_LDM_HI16,
R_OR1K_TLS_LDM_LO16, R_OR1K_TLS_LDO_HI16, R_OR1K_TLS_LDO_LO16,
R_OR1K_TLS_IE_HI16, R_OR1K_TLS_IE_LO16, R_OR1K_TLS_LE_HI16,
R_OR1K_TLS_LE_LO16, R_OR1K_TLS_TPOFF, R_OR1K_TLS_DTPOFF,
R_OR1K_TLS_DTPMOD.
* elf32-or1k.c (or1k_elf_howto_table): Add R_OR1K_TLS_GD_HI16,
R_OR1K_TLS_GD_LO16, R_OR1K_TLS_LDM_HI16, R_OR1K_TLS_LDM_HI16,
R_OR1K_TLS_LDM_LO16, R_OR1K_TLS_LDO_HI16, R_OR1K_TLS_LDO_LO16,
R_OR1K_TLS_IE_HI16, R_OR1K_TLS_IE_LO16, R_OR1K_TLS_LE_HI16,
R_OR1K_TLS_LE_LO16.
(or1k_reloc_map): Likewise.
(TLS_*): Defined TLS type macros.
(elf_or1k_link_hash_entry): Added tls_type.
(elf_or1k_obj_tdata): New.
(elf_or1k_tdata): New.
(elf_or1k_local_tls_type): New.
(elf_or1k_mkobject): New.
(or1k_elf_link_hash_newfunc): Set default TLS type to UNKNOWN.
(tpoff): New.
(or1k_elf_relocate_section): Relocation logic for TLS.
(or1k_elf_check_relocs): Likewise.
(or1k_elf_check_relocs): Fixed combreloc bug by using
_bfd_elf_make_dynamic_reloc_section instead of bfd_make_section.
(or1k_elf_finish_dynamic_symbol): Do not handle TLS symbols.
(allocate_dynrelocs): Handle TLS types which needs more GOT / reloc
space.
(or1k_elf_size_dynamic_sections): Likewise.
* bfd-in2.h: Regenerate.
* libbfd.h: Likewise.

2012-10-24 Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>

* elf-bfd.h (elf_target_id): Add OR1K_ELF_DATA.
Expand Down
13 changes: 13 additions & 0 deletions bfd/bfd-in2.h
Expand Up @@ -4820,6 +4820,19 @@ a matching LO8XG part. */
BFD_RELOC_OR1K_GLOB_DAT,
BFD_RELOC_OR1K_JMP_SLOT,
BFD_RELOC_OR1K_RELATIVE,
BFD_RELOC_OR1K_TLS_GD_HI16,
BFD_RELOC_OR1K_TLS_GD_LO16,
BFD_RELOC_OR1K_TLS_LDM_HI16,
BFD_RELOC_OR1K_TLS_LDM_LO16,
BFD_RELOC_OR1K_TLS_LDO_HI16,
BFD_RELOC_OR1K_TLS_LDO_LO16,
BFD_RELOC_OR1K_TLS_IE_HI16,
BFD_RELOC_OR1K_TLS_IE_LO16,
BFD_RELOC_OR1K_TLS_LE_HI16,
BFD_RELOC_OR1K_TLS_LE_LO16,
BFD_RELOC_OR1K_TLS_TPOFF,
BFD_RELOC_OR1K_TLS_DTPOFF,
BFD_RELOC_OR1K_TLS_DTPMOD,

/* H8 elf Relocations. */
BFD_RELOC_H8_DIR16A8,
Expand Down

0 comments on commit 25cf517

Please sign in to comment.