summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Aizatsky <aizatsky@chromium.org>2016-08-12 20:28:05 +0000
committerMike Aizatsky <aizatsky@chromium.org>2016-08-12 20:28:05 +0000
commitf4fdb5ddf3f18348393516bea845d406805e497b (patch)
tree91edcbbef1c5017eff32de8db5088a4aea9d74b7
parent8585e9d33dfd6b8b4143ea77014c2c3f15f0693b (diff)
downloadbcm5719-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.cpp8
-rw-r--r--llvm/test/tools/sancov/Inputs/test-linux_android_aarch64bin0 -> 3797288 bytes
-rw-r--r--llvm/test/tools/sancov/print_coverage_pcs.test4
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
new file mode 100644
index 00000000000..854459d69fe
--- /dev/null
+++ b/llvm/test/tools/sancov/Inputs/test-linux_android_aarch64
Binary files differ
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
+
OpenPOWER on IntegriCloud