[llvm] r181450 - [PowerPC] Fix regression in generating @ha/@l relocs

Hal Finkel hfinkel at anl.gov
Tue May 14 09:43:36 PDT 2013


Bill,

Please also pull this into the release branch if possible. It fixes a regression w.r.t. 3.2.

Thanks again,
Hal

----- Original Message -----
> Author: uweigand
> Date: Wed May  8 12:50:07 2013
> New Revision: 181450
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=181450&view=rev
> Log:
> 
> [PowerPC] Fix regression in generating @ha/@l relocs
> 
> The patch I committed as revision 167864 introduced a regression that
> causes LLVM to no longer generate appropriate relocs for @ha/@l
> symbol
> references (but fail an assertion instead).
> 
> This is fixed here by re-enabling support for the VK_PPC_GAS_HA16/
> VK_PPC_GAS_LO16 variant kinds (and their Darwin variants) in
> PPCELFObjectWriter.cpp.
> 
> Tested by running projects/test-suite in -m32 mode with the
> integrated
> assembler forced on.  A standalone test case will be committed
> shortly
> as well.
> 
> 
> Modified:
>     llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
> 
> Modified:
> llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp?rev=181450&r1=181449&r2=181450&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
> (original)
> +++ llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
> Wed May  8 12:50:07 2013
> @@ -107,7 +107,8 @@ unsigned PPCELFObjectWriter::getRelocTyp
>        case MCSymbolRefExpr::VK_PPC_DTPREL16_HA:
>          Type = ELF::R_PPC64_DTPREL16_HA;
>          break;
> -      case MCSymbolRefExpr::VK_None:
> +      case MCSymbolRefExpr::VK_PPC_GAS_HA16:
> +      case MCSymbolRefExpr::VK_PPC_DARWIN_HA16:
>          Type = ELF::R_PPC_ADDR16_HA;
>  	break;
>        case MCSymbolRefExpr::VK_PPC_TOC16_HA:
> @@ -134,6 +135,10 @@ unsigned PPCELFObjectWriter::getRelocTyp
>          Type = ELF::R_PPC64_DTPREL16_LO;
>          break;
>        case MCSymbolRefExpr::VK_None:
> +        Type = ELF::R_PPC_ADDR16;
> +        break;
> +      case MCSymbolRefExpr::VK_PPC_GAS_LO16:
> +      case MCSymbolRefExpr::VK_PPC_DARWIN_LO16:
>          Type = ELF::R_PPC_ADDR16_LO;
>  	break;
>        case MCSymbolRefExpr::VK_PPC_TOC_ENTRY:
> @@ -156,6 +161,10 @@ unsigned PPCELFObjectWriter::getRelocTyp
>        case MCSymbolRefExpr::VK_None:
>          Type = ELF::R_PPC64_ADDR16_DS;
>          break;
> +      case MCSymbolRefExpr::VK_PPC_GAS_LO16:
> +      case MCSymbolRefExpr::VK_PPC_DARWIN_LO16:
> +        Type = ELF::R_PPC64_ADDR16_LO_DS;
> +        break;
>        case MCSymbolRefExpr::VK_PPC_TOC_ENTRY:
>          Type = ELF::R_PPC64_TOC16_DS;
>  	break;
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 



More information about the llvm-commits mailing list