Initial commit
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
See http://sourceware.org/bugzilla/show_bug.cgi?id=14523
|
||||
|
||||
--- a/gdb/common/signals.c
|
||||
+++ b/gdb/common/signals.c
|
||||
@@ -348,6 +348,11 @@ gdb_signal_from_host (int hostsig)
|
||||
else if (64 <= hostsig && hostsig <= 127)
|
||||
return (enum gdb_signal)
|
||||
(hostsig - 64 + (int) GDB_SIGNAL_REALTIME_64);
|
||||
+ else if (hostsig == 128)
|
||||
+ /* Some platforms, such as Linux MIPS, have NSIG == 128, in which case
|
||||
+ signal 128 is the highest realtime signal. There is no constant for
|
||||
+ that though. */
|
||||
+ return GDB_SIGNAL_UNKNOWN;
|
||||
else
|
||||
error (_("GDB bug: target.c (gdb_signal_from_host): "
|
||||
"unrecognized real-time signal"));
|
||||
38
package/devel/gdb/patches/010-aarch64-headers.patch
Normal file
38
package/devel/gdb/patches/010-aarch64-headers.patch
Normal file
@@ -0,0 +1,38 @@
|
||||
The signal definitions of musl and gdb collide
|
||||
|
||||
The kernel defines "struct sigcontext" in asm/sigcontext.h and musl libc
|
||||
defines it in signal.h which collides.
|
||||
Kernel 4.14 misses the definitions of struct user_sve_header so we still
|
||||
have to use the aarch64-sve-linux-sigcontext.h header file which also
|
||||
provides that and make sure aarch64-sve-linux-sigcontext.h does not
|
||||
provide the same headers as the kernel or musl.
|
||||
|
||||
--- a/gdb/nat/aarch64-sve-linux-ptrace.h
|
||||
+++ b/gdb/nat/aarch64-sve-linux-ptrace.h
|
||||
@@ -25,7 +25,7 @@
|
||||
#include <sys/ptrace.h>
|
||||
#include <asm/ptrace.h>
|
||||
|
||||
-#ifndef SVE_SIG_ZREGS_SIZE
|
||||
+#ifndef SVE_PT_REGS_SVE
|
||||
#include "aarch64-sve-linux-sigcontext.h"
|
||||
#endif
|
||||
|
||||
--- a/gdb/nat/aarch64-sve-linux-sigcontext.h
|
||||
+++ b/gdb/nat/aarch64-sve-linux-sigcontext.h
|
||||
@@ -19,6 +19,7 @@
|
||||
#ifndef NAT_AARCH64_SVE_LINUX_SIGCONTEXT_H
|
||||
#define NAT_AARCH64_SVE_LINUX_SIGCONTEXT_H
|
||||
|
||||
+#ifndef SVE_MAGIC
|
||||
#define SVE_MAGIC 0x53564501
|
||||
|
||||
struct sve_context {
|
||||
@@ -128,6 +129,7 @@ struct sve_context {
|
||||
(SVE_SIG_FFR_OFFSET(vq) + SVE_SIG_FFR_SIZE(vq) - SVE_SIG_REGS_OFFSET)
|
||||
|
||||
#define SVE_SIG_CONTEXT_SIZE(vq) (SVE_SIG_REGS_OFFSET + SVE_SIG_REGS_SIZE(vq))
|
||||
+#endif
|
||||
|
||||
/* SVE/FP/SIMD state (NT_ARM_SVE) */
|
||||
|
||||
53
package/devel/gdb/patches/100-musl_fix.patch
Normal file
53
package/devel/gdb/patches/100-musl_fix.patch
Normal file
@@ -0,0 +1,53 @@
|
||||
--- a/gdb/linux-nat.c
|
||||
+++ b/gdb/linux-nat.c
|
||||
@@ -17,6 +17,7 @@
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
+#include "stopcode.h"
|
||||
#include "defs.h"
|
||||
#include "inferior.h"
|
||||
#include "infrun.h"
|
||||
@@ -72,6 +73,10 @@
|
||||
#define SPUFS_MAGIC 0x23c9b64e
|
||||
#endif
|
||||
|
||||
+#ifndef __SIGRTMIN
|
||||
+#define __SIGRTMIN SIGRTMIN
|
||||
+#endif
|
||||
+
|
||||
/* This comment documents high-level logic of this file.
|
||||
|
||||
Waiting for events in sync mode
|
||||
--- /dev/null
|
||||
+++ b/gdb/stopcode.h
|
||||
@@ -0,0 +1,4 @@
|
||||
+#ifndef W_STOPCODE
|
||||
+#define W_STOPCODE(sig) ((sig) << 8 | 0x7f)
|
||||
+#endif
|
||||
+
|
||||
--- a/gdb/nat/ppc-linux.h
|
||||
+++ b/gdb/nat/ppc-linux.h
|
||||
@@ -18,7 +18,10 @@
|
||||
#ifndef NAT_PPC_LINUX_H
|
||||
#define NAT_PPC_LINUX_H
|
||||
|
||||
+#define pt_regs __pt_regs
|
||||
#include <asm/ptrace.h>
|
||||
+#undef pt_regs
|
||||
+
|
||||
#include <asm/cputable.h>
|
||||
|
||||
/* This sometimes isn't defined. */
|
||||
--- a/gdb/gdbserver/linux-ppc-low.c
|
||||
+++ b/gdb/gdbserver/linux-ppc-low.c
|
||||
@@ -23,7 +23,9 @@
|
||||
#include "elf/common.h"
|
||||
#include <sys/uio.h>
|
||||
#include <elf.h>
|
||||
+#define pt_regs __pt_regs
|
||||
#include <asm/ptrace.h>
|
||||
+#undef pt_regs
|
||||
|
||||
#include "arch/ppc-linux-common.h"
|
||||
#include "arch/ppc-linux-tdesc.h"
|
||||
76
package/devel/gdb/patches/110-shared_libgcc.patch
Normal file
76
package/devel/gdb/patches/110-shared_libgcc.patch
Normal file
@@ -0,0 +1,76 @@
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -1283,13 +1283,13 @@ if test -z "$LD"; then
|
||||
fi
|
||||
fi
|
||||
|
||||
-# Check whether -static-libstdc++ -static-libgcc is supported.
|
||||
+# Check whether -static-libstdc++ is supported.
|
||||
have_static_libs=no
|
||||
if test "$GCC" = yes; then
|
||||
saved_LDFLAGS="$LDFLAGS"
|
||||
|
||||
- LDFLAGS="$LDFLAGS -static-libstdc++ -static-libgcc"
|
||||
- AC_MSG_CHECKING([whether g++ accepts -static-libstdc++ -static-libgcc])
|
||||
+ LDFLAGS="$LDFLAGS -static-libstdc++"
|
||||
+ AC_MSG_CHECKING([whether g++ accepts -static-libstdc++])
|
||||
AC_LANG_PUSH(C++)
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||
#if (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
|
||||
@@ -1629,7 +1629,7 @@ AC_ARG_WITH(stage1-ldflags,
|
||||
# trust that they are doing what they want.
|
||||
if test "$with_static_standard_libraries" = yes -a "$stage1_libs" = "" \
|
||||
-a "$have_static_libs" = yes; then
|
||||
- stage1_ldflags="-static-libstdc++ -static-libgcc"
|
||||
+ stage1_ldflags="-static-libstdc++"
|
||||
fi])
|
||||
AC_SUBST(stage1_ldflags)
|
||||
|
||||
@@ -1658,7 +1658,7 @@ AC_ARG_WITH(boot-ldflags,
|
||||
# statically. But if the user explicitly specified the libraries to
|
||||
# use, trust that they are doing what they want.
|
||||
if test "$poststage1_libs" = ""; then
|
||||
- poststage1_ldflags="-static-libstdc++ -static-libgcc"
|
||||
+ poststage1_ldflags="-static-libstdc++"
|
||||
fi])
|
||||
AC_SUBST(poststage1_ldflags)
|
||||
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -5053,14 +5053,14 @@ if test -z "$LD"; then
|
||||
fi
|
||||
fi
|
||||
|
||||
-# Check whether -static-libstdc++ -static-libgcc is supported.
|
||||
+# Check whether -static-libstdc++ is supported.
|
||||
have_static_libs=no
|
||||
if test "$GCC" = yes; then
|
||||
saved_LDFLAGS="$LDFLAGS"
|
||||
|
||||
- LDFLAGS="$LDFLAGS -static-libstdc++ -static-libgcc"
|
||||
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether g++ accepts -static-libstdc++ -static-libgcc" >&5
|
||||
-$as_echo_n "checking whether g++ accepts -static-libstdc++ -static-libgcc... " >&6; }
|
||||
+ LDFLAGS="$LDFLAGS -static-libstdc++"
|
||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether g++ accepts -static-libstdc++" >&5
|
||||
+$as_echo_n "checking whether g++ accepts -static-libstdc++... " >&6; }
|
||||
ac_ext=cpp
|
||||
ac_cpp='$CXXCPP $CPPFLAGS'
|
||||
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
@@ -5861,7 +5861,7 @@ else
|
||||
# trust that they are doing what they want.
|
||||
if test "$with_static_standard_libraries" = yes -a "$stage1_libs" = "" \
|
||||
-a "$have_static_libs" = yes; then
|
||||
- stage1_ldflags="-static-libstdc++ -static-libgcc"
|
||||
+ stage1_ldflags="-static-libstdc++"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -5897,7 +5897,7 @@ else
|
||||
# statically. But if the user explicitly specified the libraries to
|
||||
# use, trust that they are doing what they want.
|
||||
if test "$poststage1_libs" = ""; then
|
||||
- poststage1_ldflags="-static-libstdc++ -static-libgcc"
|
||||
+ poststage1_ldflags="-static-libstdc++"
|
||||
fi
|
||||
fi
|
||||
|
||||
38
package/devel/gdb/patches/120-sigprocmask-invalid-call.patch
Normal file
38
package/devel/gdb/patches/120-sigprocmask-invalid-call.patch
Normal file
@@ -0,0 +1,38 @@
|
||||
From 56893a61aa4f0270fa8d1197b9848247f90fce0d Mon Sep 17 00:00:00 2001
|
||||
From: Yousong Zhou <yszhou4tech@gmail.com>
|
||||
Date: Fri, 24 Mar 2017 10:36:03 +0800
|
||||
Subject: [PATCH] Fix invalid sigprocmask call
|
||||
|
||||
The POSIX document says
|
||||
|
||||
The pthread_sigmask() and sigprocmask() functions shall fail if:
|
||||
|
||||
[EINVAL]
|
||||
The value of the how argument is not equal to one of the defined values.
|
||||
|
||||
and this is how musl-libc is currently doing. Fix the call to be safe
|
||||
and correct
|
||||
|
||||
[1] http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_sigmask.html
|
||||
|
||||
gdb/ChangeLog:
|
||||
2017-03-24 Yousong Zhou <yszhou4tech@gmail.com>
|
||||
|
||||
* common/signals-state-save-restore.c (save_original_signals_state):
|
||||
Fix invalid sigprocmask call.
|
||||
---
|
||||
gdb/ChangeLog | 5 +++++
|
||||
gdb/common/signals-state-save-restore.c | 2 +-
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/gdb/common/signals-state-save-restore.c
|
||||
+++ b/gdb/common/signals-state-save-restore.c
|
||||
@@ -41,7 +41,7 @@ save_original_signals_state (bool quiet)
|
||||
int i;
|
||||
int res;
|
||||
|
||||
- res = sigprocmask (0, NULL, &original_signal_mask);
|
||||
+ res = sigprocmask (SIG_BLOCK, NULL, &original_signal_mask);
|
||||
if (res == -1)
|
||||
perror_with_name (("sigprocmask"));
|
||||
|
||||
Reference in New Issue
Block a user