[apparmor] [patch] regression tests: more ptrace adjustments for arm64 upstream changes

John Johansen john.johansen at canonical.com
Tue Jul 14 17:19:36 UTC 2015


On 07/14/2015 09:20 AM, Steve Beattie wrote:
> Hi,
> 
> In the commit "Rev 3169: regression tests: have
> ptrace use PTRACE_GETREGSET by default", I created
> some ifdef magic to use the per arch general purpose
> register data structures for various architectures,
> including arm64.  Unfortunately, in the upstream glibc commit
> http://repo.or.cz/w/glibc.git/commitdiff/7d05a8168b45c0580e1f9a79c2dd26c8f0d31fca
> <bits/ptrace.h> is no longer included in the arm64 specific user.h,
> which defined the structure as 'struct user_pt_regs'; instead user.h
> was converted to define 'struct user_regs_struct'. Because of this, the
> ptrace test fails to compile on arm64 when glibc is 2.20 or newer.
> 
> This patch adjusts the ptrace test to use the newer structure on arm64
> if it's detected that a newer glibc is detected and reverts to using
> the older one for older glibcs. It also adds an error when compiling
> on architectures that haven't been incorporated yet (I don't have
> access to most of the other glibc architectures, patches welcome.).
> 
> This patch is for both 2.10 and 2.9.
> 
> Signed-off-by: Steve Beattie <steve at nxnw.org>
Acked-by: John Johansen <john.johansen at canonical.com>

> ---
>  tests/regression/apparmor/ptrace.c |    8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> Index: b/tests/regression/apparmor/ptrace.c
> ===================================================================
> --- a/tests/regression/apparmor/ptrace.c
> +++ b/tests/regression/apparmor/ptrace.c
> @@ -40,9 +40,15 @@ int interp_status(int status)
>  #  if defined(__x86_64__) || defined(__i386__)
>  #    define ARCH_REGS_STRUCT struct user_regs_struct
>  #  elif defined(__aarch64__)
> -#    define ARCH_REGS_STRUCT struct user_pt_regs
> +#    if (__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 20))
> +#      define ARCH_REGS_STRUCT struct user_regs_struct
> +#    else
> +#      define ARCH_REGS_STRUCT struct user_pt_regs
> +#    endif
>  #  elif defined(__arm__) || defined(__powerpc__) || defined(__powerpc64__)
>  #    define ARCH_REGS_STRUCT struct pt_regs
> +#  else
> +#    error "Need to define ARCH_REGS_STRUCT for this architecture"
>  #  endif
>  
>  int read_ptrace_registers(pid_t pid)
> 
> 
> 
> 




More information about the AppArmor mailing list