build broken on ppc linux?!
Konstantin Serebryany
konstantin.s.serebryany@gmail.com
Fri Nov 22 12:32:00 GMT 2013
On Fri, Nov 22, 2013 at 3:56 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Fri, Nov 22, 2013 at 12:47:17PM +0100, Arnaud Charlet wrote:
>> > >>> Looks like another issue for the libsanitizer maintainers.
>> > >>
>> > >> I've been doing bootstraps, but didn't see this because the
>> > >> kernel header linux/vt.h use on the RHEL6 system I was doing
>> > >> builds on has that field renamed. Looking at our SLES11
>> > >> devel system I do see the problematic header file.
>> > >
>> > > Yes, it only seems to be a problem with SUSE kernels:
>> > > http://gcc.gnu.org/ml/gcc/2013-11/msg00090.html
>> >
>> > As my bugreport is being ignored it would help if one ouf our
>> > partners (hint! hint!) would raise this issue via the appropriate
>> > channel ;)
>>
>> BTW I do not know if this is related, but my build of GCC is stuck
>> currently with this error message:
>>
>> <<
>> /users/charlet/fsf/trunk/libsanitizer/sanitizer_common/sanitizer_linux.cc: Assembler messages:
>> /users/charlet/fsf/trunk/libsanitizer/sanitizer_common/sanitizer_linux.cc:821: Error: .cfi_endproc without corresponding .cfi_startproc
>> :21485: Error: open CFI at the end of file; missing .cfi_endproc directive
>> make[4]: *** [sanitizer_linux.lo] Error 1
>> >>
>>
>> Would appreciate a fix/work around!
>
> I guess something like this could fix this.
> Though, no idea if clang has any similar macro, or if llvm always
> uses .cfi_* directives, or what. Certainly for GCC, if
> __GCC_HAVE_DWARF2_CFI_ASM isn't defined, then GCC doesn't emit them
> (either as doesn't support them, or gcc simply hasn't been configured to use
> them, etc.). In that case GCC emits .eh_frame by hand, and it isn't really
> possible to tweak that. Kostya?
>
> --- libsanitizer/sanitizer_common/sanitizer_linux.cc 2013-11-12 11:31:00.154740857 +0100
> +++ libsanitizer/sanitizer_common/sanitizer_linux.cc 2013-11-22 12:50:50.107420695 +0100
> @@ -785,7 +785,9 @@ uptr internal_clone(int (*fn)(void *), v
> * %r8 = new_tls,
> * %r10 = child_tidptr)
> */
> +#ifdef __GCC_HAVE_DWARF2_CFI_ASM
> ".cfi_endproc\n"
> +#endif
> "syscall\n"
>
> /* if (%rax != 0)
> @@ -795,8 +797,10 @@ uptr internal_clone(int (*fn)(void *), v
> "jnz 1f\n"
>
> /* In the child. Terminate unwind chain. */
> +#ifdef __GCC_HAVE_DWARF2_CFI_ASM
> ".cfi_startproc\n"
> ".cfi_undefined %%rip;\n"
> +#endif
> "xorq %%rbp,%%rbp\n"
>
> /* Call "fn(arg)". */
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)
--kcc
>
> Jakub
More information about the Gcc
mailing list