[compiler-rt] r185150 - [sanitizer] Disable all ptrace-related definitions on Android.

Hal Finkel hfinkel at anl.gov
Wed Jul 3 13:58:00 PDT 2013


Evgeniy,

Investigating this further, user_regs_struct, user_fpregs_struct, PTRACE_GETFPXREGS and PTRACE_SETFPXREGS are x86-specific. Other architectures have different structures (and ptrace opcodes). In fact, if you look in lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc at void StopTheWorld(...), you'll see conditional compilation in this regard for ARM, PPC64, etc. which use a structure called pt_regs.

I've attached a small patch which disables this ptrace code on non-x86 architectures. What do you think?

Thanks again,
Hal

----- Original Message -----
> I think it is simply missing from Android NDK headers, and everyone
> brings their own copy.
> I wonder if it is the same on PPC64.
> 
> On Tue, Jul 2, 2013 at 11:01 PM, Hal Finkel <hfinkel at anl.gov> wrote:
> > ----- Original Message -----
> >> Author: eugenis
> >> Date: Fri Jun 28 09:18:10 2013
> >> New Revision: 185150
> >>
> >> URL: http://llvm.org/viewvc/llvm-project?rev=185150&view=rev
> >> Log:
> >> [sanitizer] Disable all ptrace-related definitions on Android.
> >
> > Is this because user_regs_struct is x86-specific? It does not seem
> > to exist on PPC64/Linux.
> >
> >  -Hal
> >
> >>
> >> Modified:
> >>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
> >>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.h
> >>
> >> Modified:
> >> compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
> >> URL:
> >> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.cc?rev=185150&r1=185149&r2=185150&view=diff
> >> ==============================================================================
> >> ---
> >> compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
> >> (original)
> >> +++
> >> compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
> >> Fri Jun 28 09:18:10 2013
> >> @@ -43,7 +43,6 @@
> >>  #include <sys/mount.h>
> >>  #include <sys/ptrace.h>
> >>  #include <sys/sysinfo.h>
> >> -#include <sys/user.h>
> >>  #include <sys/vt.h>
> >>  #include <linux/cdrom.h>
> >>  #include <linux/fd.h>
> >> @@ -66,6 +65,7 @@
> >>  #include <scsi/scsi.h>
> >>  #include <sys/mtio.h>
> >>  #include <sys/kd.h>
> >> +#include <sys/user.h>
> >>  #include <linux/cyclades.h>
> >>  #include <linux/if_eql.h>
> >>  #include <linux/if_plip.h>
> >> @@ -162,7 +162,7 @@ namespace __sanitizer {
> >>        return 0;
> >>    }
> >>
> >> -#if SANITIZER_LINUX
> >> +#if SANITIZER_LINUX && !SANITIZER_ANDROID
> >>    unsigned struct_user_regs_struct_sz = sizeof(struct
> >>    user_regs_struct);
> >>    unsigned struct_user_fpregs_struct_sz = sizeof(struct
> >>    user_fpregs_struct);
> >>  #if __WORDSIZE == 64
> >>
> >> Modified:
> >> compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.h
> >> URL:
> >> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.h?rev=185150&r1=185149&r2=185150&view=diff
> >> ==============================================================================
> >> ---
> >> compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.h
> >> (original)
> >> +++
> >> compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.h
> >> Fri Jun 28 09:18:10 2013
> >> @@ -180,7 +180,7 @@ namespace __sanitizer {
> >>      char **h_addr_list;
> >>    };
> >>
> >> -#if SANITIZER_LINUX
> >> +#if SANITIZER_LINUX && !SANITIZER_ANDROID
> >>    extern unsigned struct_user_regs_struct_sz;
> >>    extern unsigned struct_user_fpregs_struct_sz;
> >>    extern unsigned struct_user_fpxregs_struct_sz;
> >>
> >>
> >> _______________________________________________
> >> llvm-commits mailing list
> >> llvm-commits at cs.uiuc.edu
> >> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> >>
> >
> > --
> > Hal Finkel
> > Assistant Computational Scientist
> > Leadership Computing Facility
> > Argonne National Laboratory
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
-------------- next part --------------
A non-text attachment was scrubbed...
Name: t.patch
Type: text/x-patch
Size: 2077 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130703/cf520287/attachment.bin>


More information about the llvm-commits mailing list