This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: build broken on ppc linux?!
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Arnaud Charlet <charlet at adacore dot com>
- Cc: Richard Biener <richard dot guenther at gmail dot com>, Jonathan Wakely <jwakely dot gcc at gmail dot com>, Peter Bergner <bergner at vnet dot ibm dot com>, David Edelsohn <dje dot gcc at gmail dot com>, Mike Stump <mikestump at comcast dot net>, Kostya Serebryany <kcc at google dot com>, gcc List <gcc at gcc dot gnu dot org>
- Date: Fri, 22 Nov 2013 12:56:00 +0100
- Subject: Re: build broken on ppc linux?!
- Authentication-results: sourceware.org; auth=none
- References: <5376FADB-7E9F-45C6-8F47-F1F2EA15374C at comcast dot net> <CAGWvnykYv04xQ0c1fEco6N82pPTg9=TC_uCnCJ4v88NF-VWR4w at mail dot gmail dot com> <1385068635 dot 4783 dot 24 dot camel at otta> <CAH6eHdQjd84fGHrxSOgfZaNpspH=2u0M35k5AWSH9Dfmk-YG-Q at mail dot gmail dot com> <CAFiYyc2BjL4WMNE9_U2xsRhuaVCexcuUZTmuf53wb9=ZztRoUQ at mail dot gmail dot com> <20131122114717 dot GA24139 at adacore dot com>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
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)". */
Jakub