]> granicus.if.org Git - llvm/commitdiff
[JITLink] Fix section start address calculation in eh-frame recorder.
authorLang Hames <lhames@gmail.com>
Mon, 22 Apr 2019 01:35:16 +0000 (01:35 +0000)
committerLang Hames <lhames@gmail.com>
Mon, 22 Apr 2019 01:35:16 +0000 (01:35 +0000)
Section atoms are not sorted, so we need to scan the whole section to find the
start address.

No test case: Found by inspection, and any reproduction would depend on pointer
ordering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358865 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ExecutionEngine/JITLink/JITLink_EHFrameSupport.cpp

index 2aa4a45600cd576b6ccfb9952dcff1eee36963ca..38c537b5c78437978b113b4649bae2f8f983e8e0 100644 (file)
@@ -516,6 +516,9 @@ AtomGraphPassFunction createEHFrameRecorderPass(const Triple &TT,
     for (auto &S : G.sections())
       if (S.getName() == EHFrameSectionName && !S.atoms_empty()) {
         Addr = (*S.atoms().begin())->getAddress();
+        for (auto *DA : S.atoms())
+          if (DA->getAddress() < Addr)
+            Addr = DA->getAddress();
         break;
       }