you should use llvm_unreachable instead of assert(0).<br><br><div class="gmail_quote">On Tue, Jun 12, 2012 at 4:01 PM, Nick Kledzik <span dir="ltr"><<a href="mailto:kledzik@apple.com" target="_blank">kledzik@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: kledzik<br>
Date: Tue Jun 12 18:01:30 2012<br>
New Revision: 158375<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=158375&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=158375&view=rev</a><br>
Log:<br>
flesh out mach-o Reference Kinds<br>
<br>
Modified:<br>
    lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.cpp<br>
    lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.h<br>
    lld/trunk/lib/ReaderWriter/MachO/StubAtoms_x86.hpp<br>
    lld/trunk/lib/ReaderWriter/MachO/StubAtoms_x86_64.hpp<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.cpp?rev=158375&r1=158374&r2=158375&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.cpp?rev=158375&r1=158374&r2=158375&view=diff</a><br>

==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.cpp Tue Jun 12 18:01:30 2012<br>
@@ -53,25 +53,39 @@<br>
<br>
 Reference::Kind KindHandler_x86_64::stringToKind(StringRef str) {<br>
   if ( str.equals("none") )<br>
-    return KindHandler_x86_64::none;<br>
-  else if ( str.equals("call32") )<br>
-    return KindHandler_x86_64::call32;<br>
+    return none;<br>
+  else if ( str.equals("branch32") )<br>
+    return branch32;<br>
   else if ( str.equals("ripRel32") )<br>
-    return KindHandler_x86_64::ripRel32;<br>
-  else if ( str.equals("gotLoad32") )<br>
-    return KindHandler_x86_64::gotLoad32;<br>
-  else if ( str.equals("gotUse32") )<br>
-    return KindHandler_x86_64::gotUse32;<br>
+    return ripRel32;<br>
+  else if ( str.equals("ripRel32_1") )<br>
+    return ripRel32_1;<br>
+  else if ( str.equals("ripRel32_2") )<br>
+    return ripRel32_2;<br>
+  else if ( str.equals("ripRel32_4") )<br>
+    return ripRel32_4;<br>
+  else if ( str.equals("gotLoadRipRel32") )<br>
+    return gotLoadRipRel32;<br>
+  else if ( str.equals("gotLoadRipRel32NowLea") )<br>
+    return gotLoadRipRel32NowLea;<br>
+  else if ( str.equals("gotUseRipRel32") )<br>
+    return gotUseRipRel32;<br>
+  else if ( str.equals("tlvLoadRipRel32") )<br>
+    return tlvLoadRipRel32;<br>
+  else if ( str.equals("tlvLoadRipRel32NowLea") )<br>
+    return tlvLoadRipRel32NowLea;<br>
   else if ( str.equals("pointer64") )<br>
-    return KindHandler_x86_64::pointer64;<br>
-  else if ( str.equals("lea32WasGot") )<br>
-    return KindHandler_x86_64::lea32WasGot;<br>
+    return pointer64;<br>
+  else if ( str.equals("pointerRel32") )<br>
+    return pointerRel32;<br>
   else if ( str.equals("lazyTarget") )<br>
-    return KindHandler_x86_64::lazyTarget;<br>
-  else if ( str.equals("lazyImm") )<br>
-    return KindHandler_x86_64::lazyImm;<br>
-  else if ( str.equals("gotTarget") )<br>
-    return KindHandler_x86_64::gotTarget;<br>
+    return lazyTarget;<br>
+  else if ( str.equals("lazyImmediate") )<br>
+    return lazyImmediate;<br>
+  else if ( str.equals("subordinateFDE") )<br>
+    return subordinateFDE;<br>
+  else if ( str.equals("subordinateLSDA") )<br>
+    return subordinateLSDA;<br>
<br>
   assert(0 && "invalid x86_64 Reference kind");<br>
   return 0;<br>
@@ -81,68 +95,100 @@<br>
   switch ( (Kinds)kind ) {<br>
     case none:<br>
       return StringRef("none");<br>
-    case call32:<br>
-      return StringRef("call32");<br>
+    case branch32:<br>
+      return StringRef("branch32");<br>
     case ripRel32:<br>
       return StringRef("ripRel32");<br>
-    case gotLoad32:<br>
-      return StringRef("gotLoad32");<br>
-    case gotUse32:<br>
-      return StringRef("gotUse32");<br>
+    case ripRel32_1:<br>
+      return StringRef("ripRel32_1");<br>
+    case ripRel32_2:<br>
+      return StringRef("ripRel32_2");<br>
+    case ripRel32_4:<br>
+      return StringRef("ripRel32_4");<br>
+    case gotLoadRipRel32:<br>
+      return StringRef("gotLoadRipRel32");<br>
+    case gotLoadRipRel32NowLea:<br>
+      return StringRef("gotLoadRipRel32NowLea");<br>
+    case gotUseRipRel32:<br>
+      return StringRef("gotUseRipRel32");<br>
+    case tlvLoadRipRel32:<br>
+      return StringRef("tlvLoadRipRel32");<br>
+    case tlvLoadRipRel32NowLea:<br>
+      return StringRef("tlvLoadRipRel32NowLea");<br>
     case pointer64:<br>
       return StringRef("pointer64");<br>
-    case lea32WasGot:<br>
-      return StringRef("lea32WasGot");<br>
+    case pointerRel32:<br>
+      return StringRef("pointerRel32");<br>
     case lazyTarget:<br>
       return StringRef("lazyTarget");<br>
-    case lazyImm:<br>
-      return StringRef("lazyImm");<br>
-    case gotTarget:<br>
-      return StringRef("gotTarget");<br>
+    case lazyImmediate:<br>
+      return StringRef("lazyImmediate");<br>
+    case subordinateFDE:<br>
+      return StringRef("subordinateFDE");<br>
+    case subordinateLSDA:<br>
+      return StringRef("subordinateLSDA");<br>
   }<br>
   assert(0 && "invalid x86_64 Reference kind");<br>
   return StringRef();<br>
 }<br>
<br>
 bool KindHandler_x86_64::isCallSite(Kind kind) {<br>
-  return (kind == call32);<br>
+  return (kind == branch32);<br>
 }<br>
<br>
 bool KindHandler_x86_64::isPointer(Kind kind) {<br>
   return (kind == pointer64);<br>
 }<br>
-<br>
<br>
 bool KindHandler_x86_64::isLazyImmediate(Kind kind) {<br>
-  return (kind == lazyImm);<br>
+  return (kind == lazyImmediate);<br>
 }<br>
-<br>
<br>
 bool KindHandler_x86_64::isLazyTarget(Kind kind) {<br>
   return (kind == lazyTarget);<br>
 }<br>
<br>
<br>
-void KindHandler_x86_64::applyFixup(Kind kind, uint64_t addend, uint8_t *location,<br>
-                  uint64_t fixupAddress, uint64_t targetAddress) {<br>
+void KindHandler_x86_64::applyFixup(Kind kind, uint64_t addend,<br>
+                                    uint8_t *location, uint64_t fixupAddress,<br>
+                                    uint64_t targetAddress) {<br>
   int32_t *loc32 = reinterpret_cast<int32_t*>(location);<br>
   uint64_t* loc64 = reinterpret_cast<uint64_t*>(location);<br>
   switch ( (Kinds)kind ) {<br>
-    case call32:<br>
+    case branch32:<br>
     case ripRel32:<br>
-    case gotLoad32:<br>
-    case gotUse32:<br>
+    case gotLoadRipRel32:<br>
+    case gotUseRipRel32:<br>
+    case tlvLoadRipRel32:<br>
       *loc32 = (targetAddress - (fixupAddress+4)) + addend;<br>
       break;<br>
     case pointer64:<br>
       *loc64 = targetAddress + addend;<br>
       break;<br>
-    case lea32WasGot:<br>
+    case ripRel32_1:<br>
+      *loc32 = (targetAddress - (fixupAddress+5)) + addend;<br>
+      break;<br>
+    case ripRel32_2:<br>
+      *loc32 = (targetAddress - (fixupAddress+6)) + addend;<br>
+      break;<br>
+    case ripRel32_4:<br>
+      *loc32 = (targetAddress - (fixupAddress+8)) + addend;<br>
+      break;<br>
+    case pointerRel32:<br>
+      *loc32 = (targetAddress - fixupAddress) + addend;<br>
+      break;<br>
+    case gotLoadRipRel32NowLea:<br>
+    case tlvLoadRipRel32NowLea:<br>
+      // Change MOVQ to LEA<br>
+      assert(location[-2] == 0x8B);<br>
+      location[-2] = 0x8D;<br>
+      *loc32 = (targetAddress - (fixupAddress+4)) + addend;<br>
       break;<br>
     case none:<br>
     case lazyTarget:<br>
-    case lazyImm:<br>
-    case gotTarget:<br>
+    case lazyImmediate:<br>
+    case subordinateFDE:<br>
+    case subordinateLSDA:<br>
       // do nothing<br>
       break;<br>
   }<br>
@@ -158,17 +204,19 @@<br>
<br>
 Reference::Kind KindHandler_x86::stringToKind(StringRef str) {<br>
   if ( str.equals("none") )<br>
-    return KindHandler_x86::none;<br>
-  else if ( str.equals("call32") )<br>
-    return KindHandler_x86::call32;<br>
+    return none;<br>
+  else if ( str.equals("branch32") )<br>
+    return branch32;<br>
   else if ( str.equals("abs32") )<br>
-    return KindHandler_x86::abs32;<br>
+    return abs32;<br>
+  else if ( str.equals("funcRel32") )<br>
+    return funcRel32;<br>
   else if ( str.equals("pointer32") )<br>
-    return KindHandler_x86::pointer32;<br>
+    return pointer32;<br>
   else if ( str.equals("lazyTarget") )<br>
-    return KindHandler_x86::lazyTarget;<br>
-  else if ( str.equals("lazyImm") )<br>
-    return KindHandler_x86::lazyImm;<br>
+    return lazyTarget;<br>
+  else if ( str.equals("lazyImmediate") )<br>
+    return lazyImmediate;<br>
<br>
   assert(0 && "invalid x86 Reference kind");<br>
   return 0;<br>
@@ -178,23 +226,29 @@<br>
   switch ( (Kinds)kind ) {<br>
     case none:<br>
       return StringRef("none");<br>
-    case call32:<br>
-      return StringRef("call32");<br>
+    case branch32:<br>
+      return StringRef("branch32");<br>
     case abs32:<br>
       return StringRef("abs32");<br>
+    case funcRel32:<br>
+      return StringRef("funcRel32");<br>
     case pointer32:<br>
       return StringRef("pointer32");<br>
     case lazyTarget:<br>
       return StringRef("lazyTarget");<br>
-    case lazyImm:<br>
-      return StringRef("lazyImm");<br>
+    case lazyImmediate:<br>
+      return StringRef("lazyImmediate");<br>
+    case subordinateFDE:<br>
+      return StringRef("subordinateFDE");<br>
+    case subordinateLSDA:<br>
+      return StringRef("subordinateLSDA");<br>
   }<br>
   assert(0 && "invalid x86 Reference kind");<br>
   return StringRef();<br>
 }<br>
<br>
 bool KindHandler_x86::isCallSite(Kind kind) {<br>
-  return (kind == call32);<br>
+  return (kind == branch32);<br>
 }<br>
<br>
 bool KindHandler_x86::isPointer(Kind kind) {<br>
@@ -203,7 +257,7 @@<br>
<br>
<br>
 bool KindHandler_x86::isLazyImmediate(Kind kind) {<br>
-  return (kind == lazyImm);<br>
+  return (kind == lazyImmediate);<br>
 }<br>
<br>
<br>
@@ -216,16 +270,21 @@<br>
                   uint64_t fixupAddress, uint64_t targetAddress) {<br>
   int32_t *loc32 = reinterpret_cast<int32_t*>(location);<br>
   switch ( (Kinds)kind ) {<br>
-    case call32:<br>
+    case branch32:<br>
       *loc32 = (targetAddress - (fixupAddress+4)) + addend;<br>
       break;<br>
     case pointer32:<br>
     case abs32:<br>
       *loc32 = targetAddress + addend;<br>
       break;<br>
+    case funcRel32:<br>
+      *loc32 = targetAddress + addend;<br>
+      break;<br>
     case none:<br>
     case lazyTarget:<br>
-    case lazyImm:<br>
+    case lazyImmediate:<br>
+    case subordinateFDE:<br>
+    case subordinateLSDA:<br>
       // do nothing<br>
       break;<br>
   }<br>
@@ -241,15 +300,29 @@<br>
<br>
 Reference::Kind KindHandler_arm::stringToKind(StringRef str) {<br>
   if ( str.equals("none") )<br>
-    return KindHandler_arm::none;<br>
-  else if ( str.equals("br22") )<br>
-    return KindHandler_arm::br22;<br>
+    return none;<br>
+  else if ( str.equals("thumbBranch22") )<br>
+    return thumbBranch22;<br>
+  else if ( str.equals("armBranch24") )<br>
+    return armBranch24;<br>
+  else if ( str.equals("thumbAbsLow16") )<br>
+    return thumbAbsLow16;<br>
+  else if ( str.equals("thumbAbsHigh16") )<br>
+    return thumbAbsHigh16;<br>
+  else if ( str.equals("thumbPcRelLow16") )<br>
+    return thumbPcRelLow16;<br>
+  else if ( str.equals("thumbPcRelHigh16") )<br>
+    return thumbPcRelHigh16;<br>
+  else if ( str.equals("abs32") )<br>
+    return abs32;<br>
   else if ( str.equals("pointer32") )<br>
-    return KindHandler_arm::pointer32;<br>
+    return pointer32;<br>
   else if ( str.equals("lazyTarget") )<br>
-    return KindHandler_arm::lazyTarget;<br>
-  else if ( str.equals("lazyImm") )<br>
-    return KindHandler_arm::lazyImm;<br>
+    return lazyTarget;<br>
+  else if ( str.equals("lazyImmediate") )<br>
+    return lazyImmediate;<br>
+  else if ( str.equals("subordinateLSDA") )<br>
+    return subordinateLSDA;<br>
<br>
   assert(0 && "invalid ARM Reference kind");<br>
   return 0;<br>
@@ -259,21 +332,35 @@<br>
   switch ( (Kinds)kind ) {<br>
     case none:<br>
       return StringRef("none");<br>
-    case br22:<br>
-      return StringRef("br22");<br>
+    case thumbBranch22:<br>
+      return StringRef("thumbBranch22");<br>
+    case armBranch24:<br>
+      return StringRef("armBranch24");<br>
+    case thumbAbsLow16:<br>
+      return StringRef("thumbAbsLow16");<br>
+    case thumbAbsHigh16:<br>
+      return StringRef("thumbAbsHigh16");<br>
+    case thumbPcRelLow16:<br>
+      return StringRef("thumbPcRelLow16");<br>
+    case thumbPcRelHigh16:<br>
+      return StringRef("thumbPcRelHigh16");<br>
+    case abs32:<br>
+      return StringRef("abs32");<br>
     case pointer32:<br>
       return StringRef("pointer32");<br>
     case lazyTarget:<br>
       return StringRef("lazyTarget");<br>
-    case lazyImm:<br>
-      return StringRef("lazyImm");<br>
+    case lazyImmediate:<br>
+      return StringRef("lazyImmediate");<br>
+    case subordinateLSDA:<br>
+      return StringRef("subordinateLSDA");<br>
   }<br>
   assert(0 && "invalid ARM Reference kind");<br>
   return StringRef();<br>
 }<br>
<br>
 bool KindHandler_arm::isCallSite(Kind kind) {<br>
-  return (kind == br22);<br>
+  return (kind == thumbBranch22) || (kind == armBranch24);<br>
 }<br>
<br>
 bool KindHandler_arm::isPointer(Kind kind) {<br>
@@ -282,7 +369,7 @@<br>
<br>
<br>
 bool KindHandler_arm::isLazyImmediate(Kind kind) {<br>
-  return (kind == lazyImm);<br>
+  return (kind == lazyImmediate);<br>
 }<br>
<br>
<br>
@@ -295,7 +382,25 @@<br>
                   uint64_t fixupAddress, uint64_t targetAddress) {<br>
   //int32_t *loc32 = reinterpret_cast<int32_t*>(location);<br>
   switch ( (Kinds)kind ) {<br>
-    case br22:<br>
+    case thumbBranch22:<br>
+      // FIXME<br>
+      break;<br>
+    case armBranch24:<br>
+      // FIXME<br>
+      break;<br>
+    case thumbAbsLow16:<br>
+      // FIXME<br>
+      break;<br>
+    case thumbAbsHigh16:<br>
+      // FIXME<br>
+      break;<br>
+    case thumbPcRelLow16:<br>
+      // FIXME<br>
+      break;<br>
+    case thumbPcRelHigh16:<br>
+      // FIXME<br>
+      break;<br>
+    case abs32:<br>
       // FIXME<br>
       break;<br>
     case pointer32:<br>
@@ -303,7 +408,8 @@<br>
       break;<br>
     case none:<br>
     case lazyTarget:<br>
-    case lazyImm:<br>
+    case lazyImmediate:<br>
+    case subordinateLSDA:<br>
       // do nothing<br>
       break;<br>
   }<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.h?rev=158375&r1=158374&r2=158375&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.h?rev=158375&r1=158374&r2=158375&view=diff</a><br>

==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.h Tue Jun 12 18:01:30 2012<br>
@@ -48,16 +48,23 @@<br>
 class KindHandler_x86_64 : public KindHandler {<br>
 public:<br>
   enum Kinds {<br>
-    none        = 0,<br>
-    call32      = 1,<br>
-    ripRel32    = 2,<br>
-    gotLoad32   = 3,<br>
-    gotUse32    = 4,<br>
-    lea32WasGot = 5,<br>
-    lazyTarget  = 6,<br>
-    lazyImm     = 7,<br>
-    gotTarget   = 8,<br>
-    pointer64   = 9<br>
+    none,<br>
+    branch32,        // CALL or JMP 32-bit pc-rel<br>
+    ripRel32,        // RIP-rel access pc-rel to fix up location<br>
+    ripRel32_1,      // RIP-rel access pc-rel to fix up location + 1<br>
+    ripRel32_2,      // RIP-rel access pc-rel to fix up location + 2<br>
+    ripRel32_4,      // RIP-rel access pc-rel to fix up location + 4<br>
+    gotLoadRipRel32, // RIP-rel load of GOT slot (can be optimized)<br>
+    gotLoadRipRel32NowLea, // RIP-rel movq load of GOT slot optimized to LEA<br>
+    gotUseRipRel32,  // RIP-rel non-load of GOT slot (not a movq load of GOT)<br>
+    tlvLoadRipRel32, // RIP-rel load of thread local pointer (can be optimized)<br>
+    tlvLoadRipRel32NowLea, // RIP-rel movq load of TLV pointer optimized to LEA<br>
+    pointer64,       // 64-bit data pointer<br>
+    pointerRel32,    // 32-bit pc-rel offset<br>
+    lazyTarget,      // Used in lazy pointers to reference ultimate target<br>
+    lazyImmediate,   // Location in stub where lazy info offset to be stored<br>
+    subordinateFDE,  // Reference to unwind info for this function<br>
+    subordinateLSDA  // Reference to excecption info for this function<br>
   };<br>
<br>
   virtual ~KindHandler_x86_64();<br>
@@ -76,12 +83,15 @@<br>
 class KindHandler_x86 : public KindHandler {<br>
 public:<br>
   enum Kinds {<br>
-    none        = 0,<br>
-    call32      = 1,<br>
-    abs32       = 2,<br>
-    pointer32   = 3,<br>
-    lazyTarget  = 4,<br>
-    lazyImm     = 5<br>
+    none,<br>
+    branch32,        // CALL or JMP 32-bit pc-rel<br>
+    abs32,           // 32-bit absolute address embedded in instruction<br>
+    funcRel32,       // 32-bit offset to target from start of function<br>
+    pointer32,       // 32-bit data pointer<br>
+    lazyTarget,      // Used in lazy pointers to reference ultimate target<br>
+    lazyImmediate,   // Location in stub where lazy info offset to be stored<br>
+    subordinateFDE,  // Reference to unwind info for this function<br>
+    subordinateLSDA  // Reference to excecption info for this function<br>
   };<br>
<br>
   virtual ~KindHandler_x86();<br>
@@ -99,12 +109,18 @@<br>
 class KindHandler_arm : public KindHandler {<br>
 public:<br>
   enum Kinds {<br>
-    none        = 0,<br>
-    br22        = 1,<br>
-    pointer32   = 2,<br>
-    lazyTarget  = 3,<br>
-    lazyImm     = 4<br>
-    // FIXME<br>
+    none,<br>
+    thumbBranch22,   // thumb b or bl with 22/24-bits of displacement<br>
+    armBranch24,     // arm b or bl with 24-bits of displacement<br>
+    thumbAbsLow16,   // thumb movw of absolute address<br>
+    thumbAbsHigh16,  // thumb movt of absolute address<br>
+    thumbPcRelLow16, // thumb movw of (target - pc)<br>
+    thumbPcRelHigh16,// thumb movt of (target - pc)<br>
+    abs32,           // 32-bit absolute address embedded in instructions<br>
+    pointer32,       // 32-bit data pointer<br>
+    lazyTarget,      // Used in lazy pointers to reference ultimate target<br>
+    lazyImmediate,   // Location in stub where lazy info offset to be stored<br>
+    subordinateLSDA  // Reference to excecption info for this function<br>
   };<br>
<br>
   virtual ~KindHandler_arm();<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/MachO/StubAtoms_x86.hpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/StubAtoms_x86.hpp?rev=158375&r1=158374&r2=158375&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/StubAtoms_x86.hpp?rev=158375&r1=158374&r2=158375&view=diff</a><br>

==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/MachO/StubAtoms_x86.hpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/MachO/StubAtoms_x86.hpp Tue Jun 12 18:01:30 2012<br>
@@ -100,8 +100,8 @@<br>
 public:<br>
   X86StubHelperAtom(const File &file, const Atom &helperCommon)<br>
   : SimpleDefinedAtom(file) {<br>
-    this->addReference(KindHandler_x86::lazyImm, 1, nullptr, 0);<br>
-    this->addReference(KindHandler_x86::call32, 6, &helperCommon, 0);<br>
+    this->addReference(KindHandler_x86::lazyImmediate, 1, nullptr, 0);<br>
+    this->addReference(KindHandler_x86::branch32, 6, &helperCommon, 0);<br>
   }<br>
<br>
   virtual ContentType contentType() const  {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/MachO/StubAtoms_x86_64.hpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/StubAtoms_x86_64.hpp?rev=158375&r1=158374&r2=158375&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/StubAtoms_x86_64.hpp?rev=158375&r1=158374&r2=158375&view=diff</a><br>

==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/MachO/StubAtoms_x86_64.hpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/MachO/StubAtoms_x86_64.hpp Tue Jun 12 18:01:30 2012<br>
@@ -101,7 +101,7 @@<br>
 public:<br>
   X86_64StubHelperAtom(const File &file, const Atom &helperCommon)<br>
   : SimpleDefinedAtom(file) {<br>
-    this->addReference(KindHandler_x86_64::lazyImm, 1, nullptr, 0);<br>
+    this->addReference(KindHandler_x86_64::lazyImmediate, 1, nullptr, 0);<br>
     this->addReference(KindHandler_x86_64::ripRel32, 6, &helperCommon, 0);<br>
   }<br>
<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br>