2004-10-01 H.J. Lu <hongjiu.lu@intel.com>

* config/tc-ppc.c (md_apply_fix3): Call S_SET_THREAD_LOCAL for
	TLS relocations.
	* config/tc-s390.c (md_apply_fix3): Likewise.
	* config/tc-sparc.c (md_apply_fix3): Likewise.
This commit is contained in:
H.J. Lu 2004-10-02 00:18:31 +00:00
parent 007807770d
commit 7c1d09598d
4 changed files with 47 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2004-10-01 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-ppc.c (md_apply_fix3): Call S_SET_THREAD_LOCAL for
TLS relocations.
* config/tc-s390.c (md_apply_fix3): Likewise.
* config/tc-sparc.c (md_apply_fix3): Likewise.
2004-10-01 Paul Brook <paul@codesourcery.com>
* config/tc-arm.c (arm_elf_section_type): New function.

View File

@ -5846,6 +5846,8 @@ md_apply_fix3 (fixP, valP, seg)
break;
case BFD_RELOC_PPC_TLS:
break;
case BFD_RELOC_PPC_DTPMOD:
case BFD_RELOC_PPC_TPREL16:
case BFD_RELOC_PPC_TPREL16_LO:
@ -5885,6 +5887,7 @@ md_apply_fix3 (fixP, valP, seg)
case BFD_RELOC_PPC64_DTPREL16_HIGHERA:
case BFD_RELOC_PPC64_DTPREL16_HIGHEST:
case BFD_RELOC_PPC64_DTPREL16_HIGHESTA:
S_SET_THREAD_LOCAL (fixP->fx_addsy);
break;
#endif
/* Because SDA21 modifies the register field, the size is set to 4

View File

@ -2217,10 +2217,12 @@ md_apply_fix3 (fixP, valP, seg)
case BFD_RELOC_390_TLS_DTPMOD:
case BFD_RELOC_390_TLS_DTPOFF:
case BFD_RELOC_390_TLS_TPOFF:
S_SET_THREAD_LOCAL (fixP->fx_addsy);
/* Fully resolved at link time. */
break;
case BFD_RELOC_390_TLS_IEENT:
/* Fully resolved at link time. */
S_SET_THREAD_LOCAL (fixP->fx_addsy);
value += 2;
break;

View File

@ -3012,7 +3012,41 @@ md_apply_fix3 (fixP, valP, segment)
#ifdef OBJ_ELF
/* SPARC ELF relocations don't use an addend in the data field. */
if (fixP->fx_addsy != NULL)
return;
{
switch (fixP->fx_r_type)
{
case BFD_RELOC_SPARC_TLS_GD_HI22:
case BFD_RELOC_SPARC_TLS_GD_LO10:
case BFD_RELOC_SPARC_TLS_GD_ADD:
case BFD_RELOC_SPARC_TLS_GD_CALL:
case BFD_RELOC_SPARC_TLS_LDM_HI22:
case BFD_RELOC_SPARC_TLS_LDM_LO10:
case BFD_RELOC_SPARC_TLS_LDM_ADD:
case BFD_RELOC_SPARC_TLS_LDM_CALL:
case BFD_RELOC_SPARC_TLS_LDO_HIX22:
case BFD_RELOC_SPARC_TLS_LDO_LOX10:
case BFD_RELOC_SPARC_TLS_LDO_ADD:
case BFD_RELOC_SPARC_TLS_IE_HI22:
case BFD_RELOC_SPARC_TLS_IE_LO10:
case BFD_RELOC_SPARC_TLS_IE_LD:
case BFD_RELOC_SPARC_TLS_IE_LDX:
case BFD_RELOC_SPARC_TLS_IE_ADD:
case BFD_RELOC_SPARC_TLS_LE_HIX22:
case BFD_RELOC_SPARC_TLS_LE_LOX10:
case BFD_RELOC_SPARC_TLS_DTPMOD32:
case BFD_RELOC_SPARC_TLS_DTPMOD64:
case BFD_RELOC_SPARC_TLS_DTPOFF32:
case BFD_RELOC_SPARC_TLS_DTPOFF64:
case BFD_RELOC_SPARC_TLS_TPOFF32:
case BFD_RELOC_SPARC_TLS_TPOFF64:
S_SET_THREAD_LOCAL (fixP->fx_addsy);
default:
break;
}
return;
}
#endif
/* This is a hack. There should be a better way to