From: Alan Modra Date: Tue, 8 Apr 2003 23:01:47 +0000 (+0000) Subject: * config/tc-ppc.c (md_apply_fix3): Generate ADDR16 relocs. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a7fc733f393cf349a03757bdf1c66c2576b387ca;p=binutils-gdb.git * config/tc-ppc.c (md_apply_fix3): Generate ADDR16 relocs. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 9918fc55779..cf54e8501f3 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,7 @@ +2003-04-09 Alan Modra + + * config/tc-ppc.c (md_apply_fix3): Generate ADDR16 relocs. + 2003-04-08 Nick Clifton * as.c (perform_an_assembly_pass): If using cgen, call diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c index 293627e3d84..7436fbdd379 100644 --- a/gas/config/tc-ppc.c +++ b/gas/config/tc-ppc.c @@ -5522,15 +5522,26 @@ md_apply_fix3 (fixP, valP, seg) #if defined (OBJ_XCOFF) || defined (OBJ_ELF) else if ((operand->flags & PPC_OPERAND_PARENS) != 0 && operand->bits == 16 - && operand->shift == 0 - && ppc_is_toc_sym (fixP->fx_addsy)) + && operand->shift == 0) { - fixP->fx_r_type = BFD_RELOC_PPC_TOC16; + if (ppc_is_toc_sym (fixP->fx_addsy)) + { + fixP->fx_r_type = BFD_RELOC_PPC_TOC16; #ifdef OBJ_ELF - if (ppc_obj64 - && (operand->flags & PPC_OPERAND_DS) != 0) - fixP->fx_r_type = BFD_RELOC_PPC64_TOC16_DS; + if (ppc_obj64 + && (operand->flags & PPC_OPERAND_DS) != 0) + fixP->fx_r_type = BFD_RELOC_PPC64_TOC16_DS; +#endif + } + else + { + fixP->fx_r_type = BFD_RELOC_16; +#ifdef OBJ_ELF + if (ppc_obj64 + && (operand->flags & PPC_OPERAND_DS) != 0) + fixP->fx_r_type = BFD_RELOC_PPC64_ADDR16_DS; #endif + } fixP->fx_size = 2; if (target_big_endian) fixP->fx_where += 2;