Hi Konstantin,
The machine I was working is down now. I am waiting for someone in
linaro lab to turn it on.
Now I used another machine and with this one I am not getting segfault
for the simple "hello world" test case.
However ASAN tests continued to fail with same errors.
An example
<stdin>:3:1: note: possible intended match here
==4793==ERROR: AddressSanitizer: SEGV on unknown address
0x007ffd9552d8 (pc 0x0000004c41e8 bp 0x03ffecaa9760 sp 0x03ffecaa96c0
T0)
^
Below is the LLVM IR for the test case you gave.
(------Snip----)
; ModuleID = 'try.c'
target datalayout = "e-m:e-i64:64-i128:128-n32:64-S128"
target triple = "aarch64-unknown-linux-gnu"
@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32,
void ()* } { i32 1, void ()* @asan.module_ctor }]
; Function Attrs: nounwind sanitize_address uwtable
define void @_Z3fooPl(i64* %x) #0 {
entry:
%x.addr = alloca i64*, align 8
store i64* %x, i64** %x.addr, align 8
%0 = load i64*, i64** %x.addr, align 8
%1 = ptrtoint i64* %0 to i64
%2 = lshr i64 %1, 3
%3 = or i64 %2, 68719476736
%4 = inttoptr i64 %3 to i8*
%5 = load i8, i8* %4
%6 = icmp ne i8 %5, 0
br i1 %6, label %7, label %8
; <label>:7 ; preds = %entry
call void @__asan_report_store8(i64 %1)
call void asm sideeffect "", ""()
unreachable
; <label>:8 ; preds = %entry
store i64 0, i64* %0, align 8
ret void
}
define internal void @asan.module_ctor() {
call void @__asan_init_v5()
ret void
}
declare void @__asan_init_v5()
declare void @__asan_report_load_n(i64, i64)
declare void @__asan_loadN(i64, i64)
declare void @__asan_report_load1(i64)
declare void @__asan_load1(i64)
declare void @__asan_report_load2(i64)
declare void @__asan_load2(i64)
declare void @__asan_report_load4(i64)
declare void @__asan_load4(i64)
declare void @__asan_report_load8(i64)
declare void @__asan_load8(i64)
declare void @__asan_report_load16(i64)
declare void @__asan_load16(i64)
declare void @__asan_report_store_n(i64, i64)
declare void @__asan_storeN(i64, i64)
declare void @__asan_report_store1(i64)
declare void @__asan_store1(i64)
declare void @__asan_report_store2(i64)
declare void @__asan_store2(i64)
declare void @__asan_report_store4(i64)
declare void @__asan_store4(i64)
declare void @__asan_report_store8(i64)
declare void @__asan_store8(i64)
declare void @__asan_report_store16(i64)
declare void @__asan_store16(i64)
declare void @__asan_report_exp_load_n(i64, i64, i32)
declare void @__asan_exp_loadN(i64, i64, i32)
declare void @__asan_report_exp_load1(i64, i32)
declare void @__asan_exp_load1(i64, i32)
declare void @__asan_report_exp_load2(i64, i32)
declare void @__asan_exp_load2(i64, i32)
declare void @__asan_report_exp_load4(i64, i32)
declare void @__asan_exp_load4(i64, i32)
declare void @__asan_report_exp_load8(i64, i32)
declare void @__asan_exp_load8(i64, i32)
declare void @__asan_report_exp_load16(i64, i32)
declare void @__asan_exp_load16(i64, i32)
declare void @__asan_report_exp_store_n(i64, i64, i32)
declare void @__asan_exp_storeN(i64, i64, i32)
declare void @__asan_report_exp_store1(i64, i32)
declare void @__asan_exp_store1(i64, i32)
declare void @__asan_report_exp_store2(i64, i32)
declare void @__asan_exp_store2(i64, i32)
declare void @__asan_report_exp_store4(i64, i32)
declare void @__asan_exp_store4(i64, i32)
declare void @__asan_report_exp_store8(i64, i32)
declare void @__asan_exp_store8(i64, i32)
declare void @__asan_report_exp_store16(i64, i32)
declare void @__asan_exp_store16(i64, i32)
declare i8* @__asan_memmove(i8*, i8*, i64)
declare i8* @__asan_memcpy(i8*, i8*, i64)
declare i8* @__asan_memset(i8*, i32, i64)
declare void @__asan_handle_no_return()
declare void @__sanitizer_ptr_cmp(i64, i64)
declare void @__sanitizer_ptr_sub(i64, i64)
declare void @__asan_before_dynamic_init(i64)
declare void @__asan_after_dynamic_init()
declare void @__asan_register_globals(i64, i64)
declare void @__asan_unregister_globals(i64, i64)
attributes #0 = { nounwind sanitize_address uwtable
"less-precise-fpmad"="false" "no-frame-pointer-elim"="true"
"no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false"
"no-nans-fp-math"="false" "stack-protector-buffer-size"="8"
"target-cpu"="generic" "target-features"="+neon"
"unsafe-fp-math"="false" "use-soft-float"="false" }
!llvm.ident = !{!0}
!0 = !{!"clang version 3.7.0 (
http://llvm.org/git/clang.git
f3f115679db522ca44f75e3dadf3cdef8679b928)
(
http://llvm.org/git/llvm.git
048ca17f6ea4386f608eea62ca716466bf9f674c)"}
(-----Snip------)
%2 = lshr i64 %1, 3
%3 = or i64 %2, 68719476736
%4 = inttoptr i64 %3 to i8*
I am trying to understand why 68719476736 (0x1000000000) has been
ored with stack here.
On 20 March 2015 at 21:27, Konstantin Serebryany
regards,
Venkat.