[PATCH] D117217: Dwarf: Fix high pc patching

Vladislav Khmelevsky via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 14 14:06:34 PST 2022


This revision was automatically updated to reflect the committed changes.
Closed by commit rGfb3b86fedc99: [BOLT][DWARF] Fix high pc patching (authored by yota9).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D117217/new/

https://reviews.llvm.org/D117217

Files:
  bolt/lib/Rewrite/DWARFRewriter.cpp


Index: bolt/lib/Rewrite/DWARFRewriter.cpp
===================================================================
--- bolt/lib/Rewrite/DWARFRewriter.cpp
+++ bolt/lib/Rewrite/DWARFRewriter.cpp
@@ -1502,11 +1502,15 @@
     TempDebugPatcher->addLE64Patch(LowPCOffset, Range.LowPC);
   }
 
+  uint64_t HighPC = Range.HighPC;
+  // The DW_FORM_data* is delta between high and low pc
+  if (HighPCVal->V.getForm() != dwarf::Form::DW_FORM_addr)
+    HighPC -= Range.LowPC;
+
   if (isHighPcFormEightBytes(HighPCVal->V.getForm()))
-    TempDebugPatcher->addLE64Patch(HighPCOffset, Range.HighPC - Range.LowPC);
+    TempDebugPatcher->addLE64Patch(HighPCOffset, HighPC);
   else
-    TempDebugPatcher->addLE32Patch(HighPCOffset, Range.HighPC - Range.LowPC,
-                                   HighPCVal->Size);
+    TempDebugPatcher->addLE32Patch(HighPCOffset, HighPC);
 }
 
 void DWARFRewriter::convertToRangesPatchAbbrev(


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D117217.400142.patch
Type: text/x-patch
Size: 910 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220114/14a96d67/attachment.bin>


More information about the llvm-commits mailing list