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

Bill Wendling isanbard at gmail.com
Tue May 14 11:35:06 PDT 2013


Done. Thanks!

-bw

On May 14, 2013, at 9:43 AM, Hal Finkel <hfinkel at anl.gov> wrote:

> 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