On Nov 22, 2013, at 4:31 AM, Konstantin Serebryany <konstantin.s.serebry...@gmail.com> wrote: > These CFI directives were completely removed in upstream at > http://llvm.org/viewvc/llvm-project?rev=192196&view=rev > Strangely, this did not get into the last merge... > > Anyway, these cfi_* will (should, at least) disappear with the next > merge which I hope to do in ~ 1 week. > (Or anyone is welcome to delete these now as a separate commit, but > please make sure the code matches the one in upstream)
This is exactly the patch referenced in the pointer to the upstream repo. Arno, does this fix the build for you? Ok? Index: libsanitizer/sanitizer_common/sanitizer_linux.cc =================================================================== --- libsanitizer/sanitizer_common/sanitizer_linux.cc (revision 205278) +++ libsanitizer/sanitizer_common/sanitizer_linux.cc (working copy) @@ -785,7 +785,6 @@ uptr internal_clone(int (*fn)(void *), v * %r8 = new_tls, * %r10 = child_tidptr) */ - ".cfi_endproc\n" "syscall\n" /* if (%rax != 0) @@ -795,8 +794,9 @@ uptr internal_clone(int (*fn)(void *), v "jnz 1f\n" /* In the child. Terminate unwind chain. */ - ".cfi_startproc\n" - ".cfi_undefined %%rip;\n" + // XXX: We should also terminate the CFI unwind chain + // here. Unfortunately clang 3.2 doesn't support the + // necessary CFI directives, so we skip that part. "xorq %%rbp,%%rbp\n" /* Call "fn(arg)". */