From cfde1e3f0fef85b542dfd2b45216f878cc469f87 Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Fri, 4 Dec 2015 15:00:37 +0000 Subject: [PATCH] x86_64, x32: add a replacement for Some old kernel headers, Ubuntu 14.04 in particular, provide editions that are completely wrong for x32. Workaround this issue by providing a replacement. * linux/x86_64/asm_stat.h: New file. * linux/x32/asm_stat.h: Likewise. * Makefile.am (strace_SOURCES): Add them. --- Makefile.am | 2 ++ linux/x32/asm_stat.h | 1 + linux/x86_64/asm_stat.h | 55 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 linux/x32/asm_stat.h create mode 100644 linux/x86_64/asm_stat.h diff --git a/Makefile.am b/Makefile.am index efee8532..0ed722ed 100644 --- a/Makefile.am +++ b/Makefile.am @@ -92,6 +92,8 @@ strace_SOURCES = \ ldt.c \ link.c \ linux/asm_stat.h \ + linux/x32/asm_stat.h \ + linux/x86_64/asm_stat.h \ lookup_dcookie.c \ loop.c \ lseek.c \ diff --git a/linux/x32/asm_stat.h b/linux/x32/asm_stat.h new file mode 100644 index 00000000..865aa4a0 --- /dev/null +++ b/linux/x32/asm_stat.h @@ -0,0 +1 @@ +#include "x86_64/asm_stat.h" diff --git a/linux/x86_64/asm_stat.h b/linux/x86_64/asm_stat.h new file mode 100644 index 00000000..53042c58 --- /dev/null +++ b/linux/x86_64/asm_stat.h @@ -0,0 +1,55 @@ +#if defined __x86_64__ && defined __ILP32__ + +/* + * This is a replacement for x32 which + * appears to be wrong in older kernel headers. + */ + +# ifndef STRACE_ASM_STAT_H + +# define STRACE_ASM_STAT_H + +# include "kernel_types.h" + +struct stat { + kernel_ulong_t st_dev; + kernel_ulong_t st_ino; + kernel_ulong_t st_nlink; + unsigned int st_mode; + unsigned int st_uid; + unsigned int st_gid; + unsigned int pad0__; + kernel_ulong_t st_rdev; + kernel_long_t st_size; + kernel_long_t st_blksize; + kernel_long_t st_blocks; + kernel_ulong_t st_atime; + kernel_ulong_t st_atime_nsec; + kernel_ulong_t st_mtime; + kernel_ulong_t st_mtime_nsec; + kernel_ulong_t st_ctime; + kernel_ulong_t st_ctime_nsec; + kernel_long_t pad1__[3]; +}; + +struct __old_kernel_stat { + unsigned short st_dev; + unsigned short st_ino; + unsigned short st_mode; + unsigned short st_nlink; + unsigned short st_uid; + unsigned short st_gid; + unsigned short st_rdev; + unsigned int st_size; + unsigned int st_atime; + unsigned int st_mtime; + unsigned int st_ctime; +}; + +# endif /* !STRACE_ASM_STAT_H */ + +#else + +# include "linux/asm_stat.h" + +#endif -- 2.40.0