чување e8d4435fbf0936e94fe37367328ad084808ae104
родитељ 6dd82d59e5b585bd09c3a3ed55d26d0e5c797503
Аутор: Страхиња Радић <contact@strahinja.org>
Датум: Fri, 26 Aug 2022 22:07:01 +0200
Add gdb
Signed-off-by: Страхиња Радић <contact@strahinja.org>
Diffstat:
измењених датотека: 8, додавања: 365(+), брисања: 5(-)
diff --git a/TODO b/TODO
@@ -20,17 +20,17 @@ TODO
[ ] Try with S-nail (mailx) for now; all the dependencies above are then
not needed
-[ ] Add gdb!
- [ ] Add patches
- [ ] https://www.mail-archive.com/debian-bugs-dist@lists.debian.org/
- msg1824486.html
-
[ ] Add X (quite a task!)
Done
----
+[x] Add gdb!
+ [x] Add patches
+ [x] https://www.mail-archive.com/debian-bugs-dist@lists.debian.org/
+ msg1824486.html
+
[x] Investigate why is install sometimes incorrectly defined as ../install in
Makefiles
- Auto*hell crap; can be overridden by `make INSTALL=install install`
diff --git a/gdb/config.mk b/gdb/config.mk
@@ -0,0 +1,5 @@
+PKGBASE= gdb
+PKGVER= 12.1
+LEGALFILES= COPYING COPYING.LIB COPYING3 COPYING3.LIB
+PREFIX= /sucks
+SRCTARBALLS= https://ftp.gnu.org/gnu/gdb/gdb-$PKGVER.tar.xz
diff --git a/gdb/mkfile b/gdb/mkfile
@@ -0,0 +1,61 @@
+mkpklib=/lib/mkpk
+<$mkpklib/defaults.mk
+<config.mk
+<$mkpklib/derivatives.mk
+
+PKG= $PKGBASE-$PKGVER
+BINDIR= $PREFIX/bin
+MANDIR= $PREFIX/share/man
+SYSCONFDIR= /etc
+LOCALSTATEDIR= /var
+CFLAGS= -Os -pipe -fPIC
+LDFLAGS= -s -lterminfo
+
+$PKGBASE:QV:
+ for patch in $(find pat -type f | sort); do
+ if [ -e $patch.applied ]; then
+ continue
+ fi
+ printf " PATCH\t%s\n" "$patch"
+ patch -Np1 -i $patch || exit 1
+ :>$patch.applied
+ done
+ if [ ! -d build ]; then
+ printf " MKDIR\tbuild\n"
+ mkdir build
+ fi
+ printf " CD\tbuild\n"
+ cd build
+ printf " CONF\t%s\n" --prefix=$PREFIX
+ CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS \
+ ../configure --prefix=$PREFIX \
+ --with-system-readline \
+ --disable-nls \
+ --without-sdl \
+ --disable-werror
+ printf " MAKE\n"
+ make
+ printf " CD\t-\n"
+ cd - >/dev/null
+
+install:QV: $PKGBASE install-legal
+ printf " CD\tbuild\n"
+ cd build
+ printf " MAKE\t%s\n" "DESTDIR=$(realpath ../$DESTDIR) install"
+ make DESTDIR=$(realpath ../$DESTDIR) install
+ printf " CD\t-\n"
+ cd - >/dev/null
+
+install-legal:QV: $PKGBASE
+ for legalfile in $LEGALFILES; do
+ printf " INST\t%s\n" "$legalfile"
+ $INSTALL -Dm0644 "$legalfile" $LEGALDIR/$legalfile
+ done
+
+clean:QV:
+ if [ -e Makefile ]; then
+ printf " MAKE\tclean\n"
+ make clean
+ fi
+
+<$mkpklib/package.mk
diff --git a/gdb/pat/configure-none-required.patch b/gdb/pat/configure-none-required.patch
@@ -0,0 +1,25 @@
+--- a/sim/configure 2022-05-01 20:46:32.000000000 +0200
++++ b/sim/configure 2022-08-26 21:17:28.972287175 +0200
+@@ -13583,8 +13583,12 @@
+ $as_echo "$ac_cv_search_tgetent" >&6; }
+ ac_res=$ac_cv_search_tgetent
+ if test "$ac_res" != no; then :
+- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+- TERMCAP_LIB=$ac_cv_search_tgetent
++ if test "$ac_res" != "none required"; then
++ LIBS="$ac_res $LIBS"
++ TERMCAP_LIB=$ac_cv_search_tgetent
++ else
++ TERMCAP_LIB=""
++ fi
+ else
+ TERMCAP_LIB=""
+ fi
+@@ -13645,7 +13649,6 @@
+
+
+
+-
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+ $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
diff --git a/gdb/pat/musl-signals.patch b/gdb/pat/musl-signals.patch
@@ -0,0 +1,16 @@
+--- a/gdbsupport/signals.cc 2020-02-08 12:50:14.000000000 +0000
++++ b/gdbsupport/signals.cc 2020-02-11 13:08:56.482694697 +0000
+@@ -31,6 +31,13 @@
+ _available_ realtime signal, not the lowest supported; glibc takes
+ several for its own use. */
+
++#ifndef __SIGRTMIN
++# define __SIGRTMIN 32
++#endif
++#ifndef __SIGRTMAX
++# define __SIGRTMAX _NSIG
++#endif
++
+ #ifndef REALTIME_LO
+ # if defined(__SIGRTMIN)
+ # define REALTIME_LO __SIGRTMIN
diff --git a/gdb/pat/ppc-musl.patch b/gdb/pat/ppc-musl.patch
@@ -0,0 +1,93 @@
+--- a/nat/ppc-linux.h
++++ b/nat/ppc-linux.h
+@@ -18,7 +18,90 @@
+ #ifndef PPC_LINUX_H
+ #define PPC_LINUX_H 1
+
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ #include <asm/ptrace.h>
++#else // Musl
++// Do not include ptrace.h from Linux headers and since
++// Musl does not define PT_*, define them:
++
++#define PT_R0 0
++#define PT_R1 1
++#define PT_R2 2
++#define PT_R3 3
++#define PT_R4 4
++#define PT_R5 5
++#define PT_R6 6
++#define PT_R7 7
++#define PT_R8 8
++#define PT_R9 9
++#define PT_R10 10
++#define PT_R11 11
++#define PT_R12 12
++#define PT_R13 13
++#define PT_R14 14
++#define PT_R15 15
++#define PT_R16 16
++#define PT_R17 17
++#define PT_R18 18
++#define PT_R19 19
++#define PT_R20 20
++#define PT_R21 21
++#define PT_R22 22
++#define PT_R23 23
++#define PT_R24 24
++#define PT_R25 25
++#define PT_R26 26
++#define PT_R27 27
++#define PT_R28 28
++#define PT_R29 29
++#define PT_R30 30
++#define PT_R31 31
++
++#define PT_NIP 32
++#define PT_MSR 33
++#define PT_ORIG_R3 34
++#define PT_CTR 35
++#define PT_LNK 36
++#define PT_XER 37
++#define PT_CCR 38
++#ifndef __powerpc64__
++#define PT_MQ 39
++#else
++#define PT_SOFTE 39
++#endif
++#define PT_TRAP 40
++#define PT_DAR 41
++#define PT_DSISR 42
++#define PT_RESULT 43
++#define PT_DSCR 44
++#define PT_REGS_COUNT 44
++
++#define PT_FPR0 48 /* each FP reg occupies 2 slots in this space */
++
++#ifndef __powerpc64__
++
++#define PT_FPR31 (PT_FPR0 + 2*31)
++#define PT_FPSCR (PT_FPR0 + 2*32 + 1)
++
++#else /* __powerpc64__ */
++
++#define PT_FPSCR (PT_FPR0 + 32) /* each FP reg occupies 1 slot in 64-bit space */
++
++
++#define PT_VR0 82 /* each Vector reg occupies 2 slots in 64-bit */
++#define PT_VSCR (PT_VR0 + 32*2 + 1)
++#define PT_VRSAVE (PT_VR0 + 33*2)
++
++
++/*
++ * Only store first 32 VSRs here. The second 32 VSRs in VR0-31
++ */
++#define PT_VSR0 150 /* each VSR reg occupies 2 slots in 64-bit */
++#define PT_VSR31 (PT_VSR0 + 2*31)
++#endif /* __powerpc64__ */
++
++#endif // Libc
++
+ #include <asm/cputable.h>
+
+ /* This sometimes isn't defined. */
diff --git a/gdb/pat/ppc-ptregs.patch b/gdb/pat/ppc-ptregs.patch
@@ -0,0 +1,10 @@
+--- a/gdbserver/linux-ppc-low.cc
++++ b/gdbserver/linux-ppc-low.cc
+@@ -21,7 +21,6 @@
+ #include "linux-low.h"
+
+ #include <elf.h>
+-#include <asm/ptrace.h>
+
+ #include "nat/ppc-linux.h"
+ #include "linux-ppc-tdesc.h"
diff --git a/gdb/pat/s390x-use-elf-gdb_fpregset_t.patch b/gdb/pat/s390x-use-elf-gdb_fpregset_t.patch
@@ -0,0 +1,150 @@
+The s390 versions of fill_gregset / supply_gregset and fill_fpregset /
+supply_fpregset declare the data structure to be filled or supplied from
+as gregset_t and fpregset_t, respectively, instead of gdb_gregset_t and
+gdb_fpregset_t. This is incompatible with the declaration of these
+functions in gregset.h.
+gdb/ChangeLog:
+
+ * s390-linux-nat.c (supply_gregset, fill_gregset, fetch_regs)
+ (store_regs): Replace gregset_t by gdb_gregset_t.
+ (supply_fpregset, fill_fpregset, fetch_fpregs, store_fpregs):
+ Replace fpregset_t by gdb_fpregset_t.
+Credit to Andreas Arnez at IBM
+
+---
+
+diff --git a/gdb/s390-linux-nat.c b/gdb/s390-linux-nat.c
+index 2c60562..c48a35a 100644
+--- a/gdb/s390-linux-nat.c
++++ b/gdb/s390-linux-nat.c
+@@ -153,7 +153,7 @@ static s390_linux_nat_target the_s390_linux_nat_target;
+ make them look like 32-bit registers. */
+
+ void
+-supply_gregset (struct regcache *regcache, const gregset_t *regp)
++supply_gregset (struct regcache *regcache, const gdb_gregset_t *regp)
+ {
+ #ifdef __s390x__
+ struct gdbarch *gdbarch = regcache->arch ();
+@@ -164,7 +164,7 @@ supply_gregset (struct regcache *regcache, const gregset_t *regp)
+ gdb_byte buf[4];
+
+ regcache_supply_regset (&s390_64_gregset, regcache, -1,
+- regp, sizeof (gregset_t));
++ regp, sizeof (gdb_gregset_t));
+ pswm = extract_unsigned_integer ((const gdb_byte *) regp
+ + S390_PSWM_OFFSET, 8, byte_order);
+ pswa = extract_unsigned_integer ((const gdb_byte *) regp
+@@ -179,7 +179,7 @@ supply_gregset (struct regcache *regcache, const gregset_t *regp)
+ #endif
+
+ regcache_supply_regset (&s390_gregset, regcache, -1, regp,
+- sizeof (gregset_t));
++ sizeof (gdb_gregset_t));
+ }
+
+ /* Fill register REGNO (if it is a general-purpose register) in
+@@ -187,14 +187,14 @@ supply_gregset (struct regcache *regcache, const gregset_t *regp)
+ do this for all registers. */
+
+ void
+-fill_gregset (const struct regcache *regcache, gregset_t *regp, int regno)
++fill_gregset (const struct regcache *regcache, gdb_gregset_t *regp, int regno)
+ {
+ #ifdef __s390x__
+ struct gdbarch *gdbarch = regcache->arch ();
+ if (gdbarch_ptr_bit (gdbarch) == 32)
+ {
+ regcache_collect_regset (&s390_64_gregset, regcache, regno,
+- regp, sizeof (gregset_t));
++ regp, sizeof (gdb_gregset_t));
+
+ if (regno == -1
+ || regno == S390_PSWM_REGNUM || regno == S390_PSWA_REGNUM)
+@@ -231,26 +231,27 @@ fill_gregset (const struct regcache *regcache, gregset_t *regp, int regno)
+ #endif
+
+ regcache_collect_regset (&s390_gregset, regcache, regno, regp,
+- sizeof (gregset_t));
++ sizeof (gdb_gregset_t));
+ }
+
+ /* Fill GDB's register array with the floating-point register values
+ in *REGP. */
+ void
+-supply_fpregset (struct regcache *regcache, const fpregset_t *regp)
++supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *regp)
+ {
+ regcache_supply_regset (&s390_fpregset, regcache, -1, regp,
+- sizeof (fpregset_t));
++ sizeof (gdb_fpregset_t));
+ }
+
+ /* Fill register REGNO (if it is a general-purpose register) in
+ *REGP with the value in GDB's register array. If REGNO is -1,
+ do this for all registers. */
+ void
+-fill_fpregset (const struct regcache *regcache, fpregset_t *regp, int regno)
++fill_fpregset (const struct regcache *regcache, gdb_fpregset_t *regp,
++ int regno)
+ {
+ regcache_collect_regset (&s390_fpregset, regcache, regno, regp,
+- sizeof (fpregset_t));
++ sizeof (gdb_fpregset_t));
+ }
+
+ /* Find the TID for the current inferior thread to use with ptrace. */
+@@ -270,7 +271,7 @@ s390_inferior_tid (void)
+ static void
+ fetch_regs (struct regcache *regcache, int tid)
+ {
+- gregset_t regs;
++ gdb_gregset_t regs;
+ ptrace_area parea;
+
+ parea.len = sizeof (regs);
+@@ -279,7 +280,7 @@ fetch_regs (struct regcache *regcache, int tid)
+ if (ptrace (PTRACE_PEEKUSR_AREA, tid, (long) &parea, 0) < 0)
+ perror_with_name (_("Couldn't get registers"));
+
+- supply_gregset (regcache, (const gregset_t *) ®s);
++ supply_gregset (regcache, (const gdb_gregset_t *) ®s);
+ }
+
+ /* Store all valid general-purpose registers in GDB's register cache
+@@ -287,7 +288,7 @@ fetch_regs (struct regcache *regcache, int tid)
+ static void
+ store_regs (const struct regcache *regcache, int tid, int regnum)
+ {
+- gregset_t regs;
++ gdb_gregset_t regs;
+ ptrace_area parea;
+
+ parea.len = sizeof (regs);
+@@ -307,7 +308,7 @@ store_regs (const struct regcache *regcache, int tid, int regnum)
+ static void
+ fetch_fpregs (struct regcache *regcache, int tid)
+ {
+- fpregset_t fpregs;
++ gdb_fpregset_t fpregs;
+ ptrace_area parea;
+
+ parea.len = sizeof (fpregs);
+@@ -316,7 +317,7 @@ fetch_fpregs (struct regcache *regcache, int tid)
+ if (ptrace (PTRACE_PEEKUSR_AREA, tid, (long) &parea, 0) < 0)
+ perror_with_name (_("Couldn't get floating point status"));
+
+- supply_fpregset (regcache, (const fpregset_t *) &fpregs);
++ supply_fpregset (regcache, (const gdb_fpregset_t *) &fpregs);
+ }
+
+ /* Store all valid floating-point registers in GDB's register cache
+@@ -324,7 +325,7 @@ fetch_fpregs (struct regcache *regcache, int tid)
+ static void
+ store_fpregs (const struct regcache *regcache, int tid, int regnum)
+ {
+- fpregset_t fpregs;
++ gdb_fpregset_t fpregs;
+ ptrace_area parea;
+
+ parea.len = sizeof (fpregs);