revert 228308. The code has changed since the review
[oota-llvm.git] / tools / llvm-objdump / MachODump.cpp
index 68528e2852e772ea8566db9346ad71c54c546af3..1bb9bfce6661c6b56fed9fdae3e1853fc16588d1 100644 (file)
@@ -1519,20 +1519,35 @@ int SymbolizerGetOpInfo(void *DisInfo, uint64_t Pc, uint64_t Offset,
       const char *name = SymName.data();
       op_info->AddSymbol.Present = 1;
       op_info->AddSymbol.Name = name;
-      switch (r_type) {
-      case MachO::ARM_RELOC_HALF:
-        if ((r_length & 0x1) == 1) {
-          op_info->Value = value << 16 | other_half;
-          op_info->VariantKind = LLVMDisassembler_VariantKind_ARM_HI16;
-        } else {
-          op_info->Value = other_half << 16 | value;
-          op_info->VariantKind = LLVMDisassembler_VariantKind_ARM_LO16;
+      if (value != 0) {
+        switch (r_type) {
+        case MachO::ARM_RELOC_HALF:
+          if ((r_length & 0x1) == 1) {
+            op_info->Value = value << 16 | other_half;
+            op_info->VariantKind = LLVMDisassembler_VariantKind_ARM_HI16;
+          } else {
+            op_info->Value = other_half << 16 | value;
+            op_info->VariantKind = LLVMDisassembler_VariantKind_ARM_LO16;
+          }
+          break;
+        default:
+          break;
         }
-        break;
-      default:
+      } else {
+        switch (r_type) {
+        case MachO::ARM_RELOC_HALF:
+          if ((r_length & 0x1) == 1) {
+            op_info->Value = value << 16 | other_half;
+            op_info->VariantKind = LLVMDisassembler_VariantKind_ARM_HI16;
+          } else {
+            op_info->Value = other_half << 16 | value;
+            op_info->VariantKind = LLVMDisassembler_VariantKind_ARM_LO16;
+          }
+          break;
+        default:
           break;
+        }
       }
-    }
       return 1;
     }
     // If we have a branch that is not an external relocation entry then