diff options
author | Mike Aizatsky <aizatsky@chromium.org> | 2016-08-12 20:28:05 +0000 |
---|---|---|
committer | Mike Aizatsky <aizatsky@chromium.org> | 2016-08-12 20:28:05 +0000 |
commit | f4fdb5ddf3f18348393516bea845d406805e497b (patch) | |
tree | 91edcbbef1c5017eff32de8db5088a4aea9d74b7 | |
parent | 8585e9d33dfd6b8b4143ea77014c2c3f15f0693b (diff) | |
download | bcm5719-llvm-f4fdb5ddf3f18348393516bea845d406805e497b.tar.gz bcm5719-llvm-f4fdb5ddf3f18348393516bea845d406805e497b.zip |
[AArch64] Registering default MCInstrAnalysis
Even in this form it is useful: it can detect branch instructions.
https://github.com/google/sanitizers/issues/706
Subscribers: aemerson, rengolin
Differential Revision: https://reviews.llvm.org/D23426
llvm-svn: 278560
-rw-r--r-- | llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp | 8 | ||||
-rw-r--r-- | llvm/test/tools/sancov/Inputs/test-linux_android_aarch64 | bin | 0 -> 3797288 bytes | |||
-rw-r--r-- | llvm/test/tools/sancov/print_coverage_pcs.test | 4 |
3 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp index 70278062120..dec7e38d63b 100644 --- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp +++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp @@ -15,6 +15,7 @@ #include "AArch64ELFStreamer.h" #include "AArch64MCAsmInfo.h" #include "InstPrinter/AArch64InstPrinter.h" +#include "llvm/MC/MCInstrAnalysis.h" #include "llvm/MC/MCInstrInfo.h" #include "llvm/MC/MCRegisterInfo.h" #include "llvm/MC/MCStreamer.h" @@ -116,6 +117,10 @@ static MCStreamer *createMachOStreamer(MCContext &Ctx, MCAsmBackend &TAB, /*LabelSections*/ true); } +static MCInstrAnalysis *createAArch64InstrAnalysis(const MCInstrInfo *Info) { + return new MCInstrAnalysis(Info); +} + // Force static initialization. extern "C" void LLVMInitializeAArch64TargetMC() { for (Target *T : @@ -135,6 +140,9 @@ extern "C" void LLVMInitializeAArch64TargetMC() { // Register the MC subtarget info. TargetRegistry::RegisterMCSubtargetInfo(*T, createAArch64MCSubtargetInfo); + // Register the MC instruction analyzer. + TargetRegistry::RegisterMCInstrAnalysis(*T, createAArch64InstrAnalysis); + // Register the MC Code Emitter TargetRegistry::RegisterMCCodeEmitter(*T, createAArch64MCCodeEmitter); diff --git a/llvm/test/tools/sancov/Inputs/test-linux_android_aarch64 b/llvm/test/tools/sancov/Inputs/test-linux_android_aarch64 Binary files differnew file mode 100644 index 00000000000..854459d69fe --- /dev/null +++ b/llvm/test/tools/sancov/Inputs/test-linux_android_aarch64 diff --git a/llvm/test/tools/sancov/print_coverage_pcs.test b/llvm/test/tools/sancov/print_coverage_pcs.test index da304bd94df..3e3358cb074 100644 --- a/llvm/test/tools/sancov/print_coverage_pcs.test +++ b/llvm/test/tools/sancov/print_coverage_pcs.test @@ -3,6 +3,7 @@ RUN: sancov -print-coverage-pcs %p/Inputs/test-linux_x86_64 | FileCheck %s --che RUN: llvm-objdump -d %p/Inputs/test-windows_x86_64 | FileCheck %s --check-prefix=DISAS_WIN RUN: sancov -print-coverage-pcs %p/Inputs/test-windows_x86_64 | FileCheck %s --check-prefix=WINDOWS RUN: sancov -print-coverage-pcs %p/Inputs/test-darwin_x86_64 | FileCheck %s --check-prefix=DARWIN +RUN: not sancov -print-coverage-pcs %p/Inputs/test-linux_android_aarch64 2>&1 | FileCheck %s --check-prefix=AARCH64 LINUX: 0x4e132b LINUX: 0x4e1472 @@ -57,3 +58,6 @@ DARWIN: 0x1000018e0 DARWIN: 0x100001906 DARWIN: 0x1000019dc DARWIN: 0x100001a28 + +AARCH64: Error: __sanitizer_cov* functions not found + |