commit 5e70b3a

Randy Palamar  ·  2025-02-13 01:56:33 +0000 UTC
parent 0313184
strace: support aarch64
2 files changed,  +32, -12
+7, -3
 1@@ -226,7 +226,9 @@
 2 #define HAVE_STRUCT_IOCB_AIO_RW_FLAGS 1
 3 #define HAVE_STRUCT_KBDIACRSUC 1
 4 #define HAVE_STRUCT_KBDIACRUC 1
 5+#if __x86_64__
 6 #define HAVE_STRUCT_KVM_CPUID2 1
 7+#endif /* __x86_64__ */
 8 #define HAVE_STRUCT_KVM_REGS 1
 9 #define HAVE_STRUCT_KVM_RUN_FLAGS 1
10 #define HAVE_STRUCT_KVM_RUN_IMMEDIATE_EXIT 1
11@@ -263,13 +265,17 @@
12 #define HAVE_STRUCT_TERMIOS2 1
13 /* #undef HAVE_STRUCT_TERMIOS_C_ISPEED */
14 /* #undef HAVE_STRUCT_TERMIOS_C_OSPEED */
15+#if __x86_64__
16 #define HAVE_STRUCT_USER_DESC 1
17 #define HAVE_STRUCT_USER_DESC_LM 1
18+#endif /* __x86_64__ */
19 #define HAVE_STRUCT_UTSNAME_DOMAINNAME 1
20 /* #undef HAVE_STRUCT___AIO_SIGSET */
21 #define HAVE_STRUCT___KERNEL_SOCK_TIMEVAL 1
22 #define HAVE_STRUCT___KERNEL_TIMESPEC 1
23+#if __x86_64__
24 #define HAVE_STRUCT___OLD_KERNEL_STAT 1
25+#endif /* __x86_64__ */
26 #define HAVE_SYNC_FILE_RANGE 1
27 #define HAVE_SYS_EVENTFD_H 1
28 #define HAVE_SYS_FANOTIFY_H 1
29@@ -590,9 +596,7 @@
30 # endif
31 #endif
32 /* #undef X32 */
33-#ifdef __x86_64__
34-# define X86_64 1
35-#endif
36+/* #undef X86_64 */
37 /* #undef XTENSA */
38 /* #undef gid_t */
39 /* #undef typeof */
+25, -9
 1@@ -1,13 +1,28 @@
 2+local targets = {
 3+	aarch64={
 4+		cflags={'-D AARCH64=1'},
 5+		ioctls=1,
 6+	},
 7+	x86_64={
 8+		cflags={'-D X86_64=1'},
 9+		ioctls=2,
10+	},
11+}
12+local arch = config.target.platform:match('[^-]*')
13+local targ = targets[arch]
14+if not targ then return end
15+
16 cflags{
17 	'-D HAVE_CONFIG_H',
18 	'-D IN_STRACE',
19 	-- it is important that the arch-specific directory is searched first
20-	'-I $srcdir/src/linux/x86_64',
21+	'-I $srcdir/src/linux/'..arch,
22 	'-I $srcdir/src/linux/generic',
23 	'-I $srcdir/src',
24 	'-I $outdir',
25 	'-isystem $builddir/pkg/linux-headers/include',
26 }
27+cflags(targ.cflags)
28 
29 build('cat', '$outdir/config.h', {
30 	'$builddir/probe/HAVE___BUILTIN_POPCOUNT',
31@@ -22,16 +37,16 @@ build('sed', '$outdir/ioctl_iocdef.h', '$outdir/ioctl_iocdef.i', {
32 sub('tools.ninja', function()
33 	toolchain(config.host)
34 	cflags{
35-		'-D X86_64=1',
36-		'-I $srcdir/src/linux/x86_64',
37+		'-I $srcdir/src/linux/'..arch,
38 		'-I $srcdir/src/linux',
39 		'-I $outdir',
40 	}
41+	cflags(targ.cflags)
42 
43-	for i = 0, 2 do
44+	for i = 0, targ.ioctls do
45 		build('cat', '$outdir/ioctls_all'..i..'.h', {
46-			'$srcdir/src/linux/x86_64/ioctls_inc'..i..'.h',
47-			'$srcdir/src/linux/x86_64/ioctls_arch'..i..'.h',
48+			'$srcdir/src/linux/'..arch..'/ioctls_inc'..i..'.h',
49+			'$srcdir/src/linux/'..arch..'/ioctls_arch'..i..'.h',
50 		})
51 		build('cc', '$outdir/ioctlsort'..i..'.c.o', {
52 			'$srcdir/src/ioctlsort.c',
53@@ -379,9 +394,6 @@ build('sed', '$outdir/sys_func.h', expand{'$srcdir/', srcs}, {
54 
55 pkg.deps = {
56 	'$outdir/config.h',
57-	'$outdir/ioctlent0.h',
58-	'$outdir/ioctlent1.h',
59-	'$outdir/ioctlent2.h',
60 	'$outdir/native_printer_decls.h',
61 	'$outdir/native_printer_defs.h',
62 	'$outdir/printers.h',
63@@ -391,6 +403,10 @@ pkg.deps = {
64 	'pkg/linux-headers/headers',
65 }
66 
67+for i = 0, targ.ioctls do
68+	table.insert(pkg.deps, '$outdir/ioctlent'..i..'.h')
69+end
70+
71 lib('libstrace.a', srcs)
72 exe('strace', {'src/strace.c', 'libstrace.a'})
73 file('bin/strace', '755', '$outdir/strace')