diff --git a/bolt/runtime/CMakeLists.txt b/bolt/runtime/CMakeLists.txt --- a/bolt/runtime/CMakeLists.txt +++ b/bolt/runtime/CMakeLists.txt @@ -32,6 +32,9 @@ if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") set(BOLT_RT_FLAGS ${BOLT_RT_FLAGS} "-mno-sse") endif() +if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") + set(BOLT_RT_FLAGS ${BOLT_RT_FLAGS} "-mno-outline-atomics") +endif() # Don't let the compiler think it can create calls to standard libs target_compile_options(bolt_rt_instr PRIVATE ${BOLT_RT_FLAGS}) diff --git a/bolt/test/X86/bolt-address-translation-internal-call.test b/bolt/test/X86/bolt-address-translation-internal-call.test --- a/bolt/test/X86/bolt-address-translation-internal-call.test +++ b/bolt/test/X86/bolt-address-translation-internal-call.test @@ -9,7 +9,7 @@ # RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %s -o %t.o # Delete our BB symbols so BOLT doesn't mark them as entry points # RUN: llvm-strip --strip-unneeded %t.o -# RUN: %clang %t.o -o %t.exe -Wl,-q +# RUN: %clang %cflags %t.o -o %t.exe -Wl,-q # RUN: llvm-bolt --enable-bat %t.exe --relocs -o %t.out | FileCheck %s # CHECK: BOLT-INFO: Wrote {{.*}} BAT maps @@ -29,6 +29,7 @@ push %rbx sub $0x120,%rsp mov $0x3,%rbx + movq rel(%rip), %rdi .J1: cmp $0x0,%rbx je .J2 @@ -49,4 +50,8 @@ .J4: pop %rbp retq +end: .size main, .-main + + .data +rel: .quad end diff --git a/bolt/test/X86/instrumentation-eh_frame_hdr.cpp b/bolt/test/X86/instrumentation-eh_frame_hdr.cpp --- a/bolt/test/X86/instrumentation-eh_frame_hdr.cpp +++ b/bolt/test/X86/instrumentation-eh_frame_hdr.cpp @@ -1,7 +1,7 @@ // This test checks that .eh_frame_hdr address is in bounds of the last LOAD // end address i.e. the section address is smaller then the LOAD end address. -// REQUIRES: system-linux,bolt-runtime +// REQUIRES: system-linux,bolt-runtime,target=x86_64{{.*}} // RUN: %clangxx %cxxflags -static -Wl,-q %s -o %t.exe -Wl,--entry=_start // RUN: llvm-bolt %t.exe -o %t.instr -instrument \ diff --git a/bolt/test/X86/internal-call-instrument.s b/bolt/test/X86/internal-call-instrument.s --- a/bolt/test/X86/internal-call-instrument.s +++ b/bolt/test/X86/internal-call-instrument.s @@ -1,15 +1,23 @@ # This reproduces a bug with instrumentation crashes on internal call -# REQUIRES: x86_64-linux,bolt-runtime +# REQUIRES: x86_64-linux,bolt-runtime,target=x86_64{{.*}} # RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %s -o %t.o # Delete our BB symbols so BOLT doesn't mark them as entry points # RUN: llvm-strip --strip-unneeded %t.o -# RUN: %clang %t.o -o %t.exe -Wl,-q +# RUN: %clang %cflags %t.o -o %t.exe -Wl,-q # RUN: llvm-bolt --instrument %t.exe --relocs -o %t.out .text + .globl _start + .type _start, %function + .p2align 4 +_start: + call main + ret + .size _start, .-_start + .globl main .type main, %function .p2align 4 @@ -20,6 +28,7 @@ push %rbx sub $0x120,%rsp mov $0x3,%rbx + movq rel(%rip), %rdi .J1: cmp $0x0,%rbx je .J2 @@ -40,4 +49,15 @@ .J4: pop %rbp retq +end: .size main, .-main + + .globl _fini + .type _fini, %function + .p2align 4 +_fini: + hlt + .size _fini, .-_fini + + .data +rel: .quad end diff --git a/bolt/test/runtime/meta-merge-fdata.test b/bolt/test/runtime/meta-merge-fdata.test --- a/bolt/test/runtime/meta-merge-fdata.test +++ b/bolt/test/runtime/meta-merge-fdata.test @@ -1,7 +1,7 @@ # Meta test using merge-fdata binary UNSUPPORTED: asan # Instrumentation currently only works on X86 -REQUIRES: bolt-runtime +REQUIRES: x86_64-linux,bolt-runtime # Instrumentation, should test: # - Direct branches