http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59018

--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Kostya Serebryany from comment #1)
> At least one of these patches does not build with clang:
> 
> /home/kcc/llvm/projects/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc:
> 807:21: error: ignored asm label 'r8' on automatic variable [-Werror]
>   void *r8 __asm__ ("r8") = newtls;
>                     ^
> /home/kcc/llvm/projects/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc:
> 808:21: error: ignored asm label 'r10' on automatic variable [-Werror]
>   int *r10 __asm__ ("r10") = child_tidptr;
>                     ^
> 
> is this some kind of gcc-specific syntax? 
> (forgive my ignorance here)

Can you try

  register void *r8 __asm__ ("r8") = newtls;
  register int *r10 __asm__ ("r10") = child_tidptr;

as suggested by Jakub?

> Two general questions: 
> 
> 1. Before doing the merge I test the patch like this: 
> rm -rf */{*/,}libsanitizer && make -j 50  && make -C gcc check-g{cc,++} 
> RUNTESTFLAGS='--target_board=unix\{-m32,-m64\} asan.exp'
> 
> What should I add to this line to also test x32? 

I am using:

RUNTESTFLAGS='--target_board=unix\{-mx32,-m32,-m64\} asan.exp'

But you need to enable x32 first on your OS, which requires

1. x32 enabled kernel, Linux kernel >= 3.4.0.
2. x32 glibc.

> 
> 2. Is there any chance to test x32 off the clang tree, so that we keep the
> upstream tree x32-clean all the time?

There was x32 port of llvm/clang last year.  But only parts
of the x32 patches have been merged with llvm.

Reply via email to