From: Lang Hames Date: Tue, 29 Jul 2014 20:40:37 +0000 (+0000) Subject: [MCJIT] Make the RuntimeDyldChecker stub_addr builtin use file names rather than X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=fbfb01496b5f52d9bdb30f149c44bba84728048b [MCJIT] Make the RuntimeDyldChecker stub_addr builtin use file names rather than full paths for its first argument. This allows us to remove the annoying sed lines in the test cases, and write direct references to file names in stub_addr calls (rather than placeholders). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214211 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp index 308d80ef95e..135444f9b5b 100644 --- a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp +++ b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp @@ -13,6 +13,7 @@ #include "llvm/MC/MCDisassembler.h" #include "llvm/MC/MCInst.h" #include "llvm/Support/StringRefMemoryObject.h" +#include "llvm/Support/Path.h" #include "RuntimeDyldCheckerImpl.h" #include "RuntimeDyldImpl.h" #include @@ -772,8 +773,9 @@ RuntimeDyldCheckerImpl::getSubsectionStartingAt(StringRef Name) const { } void RuntimeDyldCheckerImpl::registerStubMap( - StringRef FileName, unsigned SectionID, + StringRef FilePath, unsigned SectionID, const RuntimeDyldImpl::StubMap &RTDyldStubs) { + StringRef FileName = sys::path::filename(FilePath); const SectionEntry &Section = getRTDyld().Sections[SectionID]; StringRef SectionName = Section.Name; for (auto &StubMapEntry : RTDyldStubs) { diff --git a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCheckerImpl.h b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCheckerImpl.h index 8adde62448a..b3b16da5210 100644 --- a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCheckerImpl.h +++ b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCheckerImpl.h @@ -34,7 +34,7 @@ private: uint64_t getSymbolLinkerAddr(StringRef Symbol) const; uint64_t getSymbolRemoteAddr(StringRef Symbol) const; uint64_t readMemoryAtAddr(uint64_t Addr, unsigned Size) const; - std::pair getStubAddrFor(StringRef FileName, + std::pair getStubAddrFor(StringRef FilePath, StringRef SectionName, StringRef Symbol, bool IsInsideLoad) const; diff --git a/test/ExecutionEngine/RuntimeDyld/AArch64/MachO_ARM64_relocations.s b/test/ExecutionEngine/RuntimeDyld/AArch64/MachO_ARM64_relocations.s index 4713c118e12..29c95e6ce35 100644 --- a/test/ExecutionEngine/RuntimeDyld/AArch64/MachO_ARM64_relocations.s +++ b/test/ExecutionEngine/RuntimeDyld/AArch64/MachO_ARM64_relocations.s @@ -1,6 +1,5 @@ # RUN: llvm-mc -triple=arm64-apple-ios7.0.0 -code-model=small -relocation-model=pic -filetype=obj -o %T/foo.o %s -# RUN: sed "s,,%/T/foo.o,g" %s > %T/foo.s -# RUN: llvm-rtdyld -triple=arm64-apple-ios7.0.0 -verify -check=%T/foo.s %/T/foo.o +# RUN: llvm-rtdyld -triple=arm64-apple-ios7.0.0 -verify -check=%s %/T/foo.o .section __TEXT,__text,regular,pure_instructions .ios_version_min 7, 0 @@ -39,15 +38,14 @@ ldr1: ldr x0, [x0, _ptr@PAGEOFF] ret - # Test ARM64_RELOC_GOT_LOAD_PAGE21 and ARM64_RELOC_GOT_LOAD_PAGEOFF12 # relocation. adrp encodes the PC-relative page (4 KiB) difference between the # adrp instruction and the GOT entry for ptr. ldr encodes the offset of the GOT # entry within the page. The ldr instruction perfroms an implicit shift on the # encoded immediate (imm<<3). -# rtdyld-check: *{8}(stub_addr(, __text, _ptr)) = _ptr -# rtdyld-check: decode_operand(adrp2, 1) = (stub_addr(, __text, _ptr)[32:12] - adrp2[32:12]) -# rtdyld-check: decode_operand(ldr2, 2) = stub_addr(, __text, _ptr)[11:3] +# rtdyld-check: *{8}(stub_addr(foo.o, __text, _ptr)) = _ptr +# rtdyld-check: decode_operand(adrp2, 1) = (stub_addr(foo.o, __text, _ptr)[32:12] - adrp2[32:12]) +# rtdyld-check: decode_operand(ldr2, 2) = stub_addr(foo.o, __text, _ptr)[11:3] .globl _test_adrp_ldr .align 2 _test_got_adrp_ldr: diff --git a/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s b/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s index 728d0739673..cbaadacbce5 100644 --- a/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s +++ b/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s @@ -1,6 +1,5 @@ # RUN: llvm-mc -triple=x86_64-apple-macosx10.9 -relocation-model=pic -filetype=obj -o %T/foo.o %s -# RUN: sed "s,,%/T/foo.o,g" %s > %T/foo.s -# RUN: llvm-rtdyld -triple=x86_64-apple-macosx10.9 -verify -check=%T/foo.s %/T/foo.o +# RUN: llvm-rtdyld -triple=x86_64-apple-macosx10.9 -verify -check=%s %/T/foo.o .section __TEXT,__text,regular,pure_instructions .globl foo @@ -24,8 +23,8 @@ insn2: # Test PC-rel GOT relocation. # Verify both the contents of the GOT entry for y, and that the movq instruction # references the correct GOT entry address: -# rtdyld-check: *{8}(stub_addr(, __text, y)) = y -# rtdyld-check: decode_operand(insn3, 4) = stub_addr(, __text, y) - next_pc(insn3) +# rtdyld-check: *{8}(stub_addr(foo.o, __text, y)) = y +# rtdyld-check: decode_operand(insn3, 4) = stub_addr(foo.o, __text, y) - next_pc(insn3) insn3: movq y@GOTPCREL(%rip), %rax