ltrace: Fix mips build with kernels 5.13+

Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Khem Raj 2021-07-09 01:37:04 -07:00
parent 85dc9b58e7
commit a41e283250
3 changed files with 51 additions and 31 deletions

View File

@ -0,0 +1,50 @@
From ed8dbe1c793f2f770fef61adc4390277f903cceb Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 9 Jul 2021 01:32:42 -0700
Subject: [PATCH] mips: Use hardcodes values for ABI syscall bases
mips kernels 5.13+ have stopped exposing the UAPIs which provided these
defines, the values are more or less static so just use the hardcoded
values for now. Use __NR_syscalls to get number of syscalls supported
and include asm-generic/unistd.h to get this definition
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
sysdeps/linux-gnu/mips/trace.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/sysdeps/linux-gnu/mips/trace.c b/sysdeps/linux-gnu/mips/trace.c
index d54818e..e72184d 100644
--- a/sysdeps/linux-gnu/mips/trace.c
+++ b/sysdeps/linux-gnu/mips/trace.c
@@ -33,6 +33,7 @@
#include <asm/unistd.h>
#include <assert.h>
#include <asm/unistd.h>
+#include <asm-generic/unistd.h>
#include "backend.h"
#include "common.h"
@@ -135,12 +136,12 @@ syscall_p(struct process *proc, int status, int *sysnum)
int min_syscall, max_syscall, sigreturn, rt_sigreturn;
struct callstack_element *top = NULL;
int depth = proc->callstack_depth;
- const int syscallbase[] = {__NR_O32_Linux, __NR_N32_Linux,
- __NR_64_Linux, __NR_O32_Linux};
- const int syscallnum[] = {__NR_O32_Linux_syscalls,
- __NR_N32_Linux_syscalls,
- __NR_64_Linux_syscalls,
- __NR_O32_Linux_syscalls};
+ const int syscallbase[] = {4000, 6000,
+ 5000, 4000};
+ const int syscallnum[] = {__NR_syscalls,
+ __NR_syscalls,
+ __NR_syscalls,
+ __NR_syscalls};
const int rt_sigreturn_list[] = {193, 211, 211, 193};
const int sigreturn_list[] = {119, -1, -1, 119};
--
2.32.0

View File

@ -1,30 +0,0 @@
kernel headers have restructured mips syscall generation in kernel
in recent versions, however, ltrace still has logic to define the
syscall numbers based on old logic, this patch includes the legacy
UAPI headers to get these defines
Fixes errors e.g.
../../../../git/sysdeps/linux-gnu/mips/trace.c:138:29: error: '__NR_O32_Linux' undeclared (first use in this function)
const int syscallbase[] = {__NR_O32_Linux, __NR_N32_Linux,
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
--- a/sysdeps/linux-gnu/mips/trace.c
+++ b/sysdeps/linux-gnu/mips/trace.c
@@ -34,6 +34,16 @@
#include <assert.h>
#include <asm/unistd.h>
+#ifndef __NR_O32_Linux
+#include <asm/unistd_nr_o32.h>
+#endif
+#ifndef __NR_N32_Linux
+#include <asm/unistd_nr_n64.h>
+#endif
+#ifndef __NR_N64_Linux
+#include <asm/unistd_nr_n32.h>
+#endif
+
#include "backend.h"
#include "common.h"
#include "debug.h"

View File

@ -26,10 +26,10 @@ SRC_URI = "git://github.com/sparkleholic/ltrace.git;branch=master;protocol=http
file://0001-mips-plt.c-Delete-include-error.h.patch \
file://0001-move-fprintf-into-same-block-where-modname-and-symna.patch \
file://0001-hook-Do-not-append-int-to-std-string.patch \
file://include_unistd_nr.patch \
file://0001-Bug-fix-for-data-type-length-judgment.patch \
file://0001-ensure-the-struct-pointers-are-null-initilized.patch \
file://0001-ppc-Remove-unused-host_powerpc64-function.patch \
file://0001-mips-Use-hardcodes-values-for-ABI-syscall-bases.patch \
"
SRC_URI_append_libc-musl = " file://add_ppc64le.patch"