[PATCH] musl: add debug information for mipsel syscalls
Daniel Santos
daniel.santos at pobox.com
Wed Jun 24 19:14:23 EDT 2020
This is split into two patches to ease reviewing, as it must be renamed
to *.S in order to be preprocessed.
Co-Authored-By: Daniele Tamino <dtamino at irobot.com>
Signed-off-by: Daniel Santos <daniel.santos at pobox.com>
---
...ebug-information-to-__syscall_cp_asm.patch | 100 ++++++++++++++++++
.../221-mipsel-preprocess-syscall_cp.s.patch | 18 ++++
2 files changed, 118 insertions(+)
create mode 100644 toolchain/musl/patches/220-mipsel-Add-debug-information-to-__syscall_cp_asm.patch
create mode 100644 toolchain/musl/patches/221-mipsel-preprocess-syscall_cp.s.patch
diff --git a/toolchain/musl/patches/220-mipsel-Add-debug-information-to-__syscall_cp_asm.patch b/toolchain/musl/patches/220-mipsel-Add-debug-information-to-__syscall_cp_asm.patch
new file mode 100644
index 0000000000..0aa9330bd4
--- /dev/null
+++ b/toolchain/musl/patches/220-mipsel-Add-debug-information-to-__syscall_cp_asm.patch
@@ -0,0 +1,100 @@
+From 6ce77039943af4ca51ebf1385fd6ed01ecce8159 Mon Sep 17 00:00:00 2001
+From: Daniel Santos <daniel.santos at pobox.com>
+Date: Wed, 24 Jun 2020 14:45:08 -0500
+Subject: mipsel: Add debug information to __syscall_cp_asm
+
+This is the function called for interruptable / repeatable syscalls like
+nanosleep. Without this patch, attaching a debugger to a program making
+such a syscall results in the debugger being completely unable to
+perform a backtrace.
+
+Co-Authored-By: Daniele Tamino <dtamino at irobot.com>
+Signed-off-by: Daniel Santos <daniel.santos at pobox.com>
+---
+ src/thread/mips/syscall_cp.s | 41 +++++++++++++++++++++++++++++++++++-
+ 1 file changed, 40 insertions(+), 1 deletion(-)
+
+diff --git a/src/thread/mips/syscall_cp.s b/src/thread/mips/syscall_cp.s
+index d2846264..d39bff59 100644
+--- a/src/thread/mips/syscall_cp.s
++++ b/src/thread/mips/syscall_cp.s
+@@ -1,4 +1,14 @@
++.section .mdebug.abi32
++.previous
+ .set noreorder
++.cfi_sections .debug_frame
++.abicalls
++#ifdef __PIC__
++ .option pic2
++#else
++ .option pic0
++#endif
++.text
+
+ .global __cp_begin
+ .hidden __cp_begin
+@@ -9,12 +19,32 @@
+ .global __cp_cancel
+ .hidden __cp_cancel
+ .type __cp_cancel, at function
+-.hidden __cancel
++.hidden __cancel /* long __cancel() in src/thread/pthread_cancel.c */
+ .global __syscall_cp_asm
+ .hidden __syscall_cp_asm
+ .type __syscall_cp_asm, at function
++
++/*
++long __syscall_cp_asm(
++ volatile int *cancel,
++ syscall_arg_t nr,
++ syscall_arg_t u,
++ syscall_arg_t v,
++ syscall_arg_t w,
++ syscall_arg_t x,
++ syscall_arg_t y,
++ syscall_arg_t z)
++*/
++
++ .ent __syscall_cp_asm
++ .frame $sp, 32, $ra
++ .mask 0x00000000, 0
++ .fmask 0x00000000, 0
++ .cfi_startproc
++ .cfi_return_column $ra
+ __syscall_cp_asm:
+ subu $sp, $sp, 32
++ .cfi_adjust_cfa_offset 32
+ __cp_begin:
+ lw $4, 0($4)
+ bne $4, $0, __cp_cancel
+@@ -35,14 +65,17 @@ __cp_begin:
+ __cp_end:
+ beq $7, $0, 1f
+ addu $sp, $sp, 32
++ .cfi_adjust_cfa_offset -32
+ subu $2, $0, $2
+ 1: jr $ra
+ nop
+
+ __cp_cancel:
+ move $2, $ra
++ .cfi_register $ra, $2
+ bal 1f
+ addu $sp, $sp, 32
++ .cfi_adjust_cfa_offset -32
+ .gpword .
+ .gpword __cancel
+ 1: lw $3, ($ra)
+@@ -51,3 +84,9 @@ __cp_cancel:
+ addu $25, $25, $3
+ jr $25
+ move $ra, $2
++ .cfi_restore $ra
++#ifdef __ELF__
++ .size __syscall_cp_asm,.-__syscall_cp_asm
++#endif
++ .end __syscall_cp_asm
++ .cfi_endproc
+--
+2.24.1
+
diff --git a/toolchain/musl/patches/221-mipsel-preprocess-syscall_cp.s.patch b/toolchain/musl/patches/221-mipsel-preprocess-syscall_cp.s.patch
new file mode 100644
index 0000000000..a4eb8fed51
--- /dev/null
+++ b/toolchain/musl/patches/221-mipsel-preprocess-syscall_cp.s.patch
@@ -0,0 +1,18 @@
+From 76cfae6e5a22bbbbdca17ff2ffa196b3ad2a3537 Mon Sep 17 00:00:00 2001
+From: Daniel Santos <daniel.santos at pobox.com>
+Date: Wed, 24 Jun 2020 14:46:15 -0500
+Subject: mipsel: preprocess syscall_cp.s
+
+Signed-off-by: Daniel Santos <daniel.santos at pobox.com>
+---
+ src/thread/mips/{syscall_cp.s => syscall_cp.S} | 0
+ 1 file changed, 0 insertions(+), 0 deletions(-)
+ rename src/thread/mips/{syscall_cp.s => syscall_cp.S} (100%)
+
+diff --git a/src/thread/mips/syscall_cp.s b/src/thread/mips/syscall_cp.S
+similarity index 100%
+rename from src/thread/mips/syscall_cp.s
+rename to src/thread/mips/syscall_cp.S
+--
+2.24.1
+
--
2.24.1
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
http://lists.infradead.org/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list