X-Original-To: alpine-aports@lists.alpinelinux.org Received: from mail.ovgu.de (mail.ovgu.de [141.44.1.66]) by lists.alpinelinux.org (Postfix) with ESMTP id 37D105C608D for ; Tue, 10 Jul 2018 07:56:25 +0000 (GMT) Received: from mail.ovgu.de (localhost [127.0.0.1]) by localhost (Postfix) with SMTP id 68E3440065 for ; Tue, 10 Jul 2018 09:56:24 +0200 (CEST) Received: from localhost.localdomain (unknown [193.175.2.4]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.ovgu.de (Postfix) with ESMTPSA id C31AC4005F; Tue, 10 Jul 2018 09:56:23 +0200 (CEST) From: Marian Buschsieweke To: alpine-aports@lists.alpinelinux.org Cc: Marian Buschsieweke Subject: [alpine-aports] [PATCH 2/2] testing/gdb-embedded: New aport Date: Tue, 10 Jul 2018 09:56:21 +0200 Message-Id: <20180710075621.32342-2-marian.buschsieweke@ovgu.de> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180710075621.32342-1-marian.buschsieweke@ovgu.de> References: <20180710075621.32342-1-marian.buschsieweke@ovgu.de> X-PMX-Version: 6.4.4.2767743, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2018.7.10.75116, AntiVirus-Engine: 5.50.0, AntiVirus-Data: 2018.7.9.5500002 X-PMX-Spam: Gauge=IIIIIIII, Probability=8%, Report=' HTML_00_01 0.05, HTML_00_10 0.05, BODY_SIZE_10000_PLUS 0, IN_REP_TO 0, LEGITIMATE_SIGNS 0, MSG_THREAD 0, MULTIPLE_REAL_RCPTS 0, RDNS_NXDOMAIN 0, RDNS_SUSP 0, RDNS_SUSP_GENERIC 0, REFERENCES 0, URI_WITH_PATH_ONLY 0, __ANY_URI 0, __C230066_P5 0, __CC_NAME 0, __CC_NAME_DIFF_FROM_ACC 0, __CC_REAL_NAMES 0, __CP_URI_IN_BODY 0, __FRAUD_MONEY_CURRENCY 0, __FRAUD_MONEY_CURRENCY_DOLLAR 0, __FROM_DOMAIN_IN_ANY_CC1 0, __FROM_DOMAIN_IN_RCPT 0, __HAS_CC_HDR 0, __HAS_FROM 0, __HAS_MSGID 0, __HAS_X_MAILER 0, __HTTPS_URI 0, __INVOICE_MULTILINGUAL 0, __IN_REP_TO 0, __MIME_TEXT_ONLY 0, __MIME_TEXT_P 0, __MIME_TEXT_P1 0, __MULTIPLE_URI_TEXT 0, __NO_HTML_TAG_RAW 0, __OEM_PRICE 0, __REFERENCES 0, __SANE_MSGID 0, __STOCK_PHRASE_7 0, __SUBJ_ALPHA_END 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __URI_IN_BODY 0, __URI_NOT_IMG 0, __URI_NS , __URI_WITH_PATH 0' X-Spam-Score: Gauge=IIIIIIII X-PMX-consideredAsSpam: no X-Mailinglist: alpine-aports Precedence: list List-Id: Alpine Development List-Unsubscribe: List-Post: List-Help: List-Subscribe: The GNU Debugger for embedded targets https://www.sourceware.org/gdb/ Provides gdb-avr and gdb-arm-none-eabi as subpackages. --- testing/gdb-embedded/APKBUILD | 90 ++++++++++ testing/gdb-embedded/ppc-musl.patch | 93 +++++++++++ testing/gdb-embedded/ppc-ptregs.patch | 10 ++ .../s390x-use-elf-gdb_fpregset_t.patch | 156 ++++++++++++++++++ 4 files changed, 349 insertions(+) create mode 100644 testing/gdb-embedded/APKBUILD create mode 100644 testing/gdb-embedded/ppc-musl.patch create mode 100644 testing/gdb-embedded/ppc-ptregs.patch create mode 100644 testing/gdb-embedded/s390x-use-elf-gdb_fpregset_t.patch diff --git a/testing/gdb-embedded/APKBUILD b/testing/gdb-embedded/APKBUILD new file mode 100644 index 0000000000..0eb3095fe5 --- /dev/null +++ b/testing/gdb-embedded/APKBUILD @@ -0,0 +1,90 @@ +# Maintainer: Marian Buschsieweke +_targets="arm-none-eabi avr" +_realname=gdb +pkgname=$_realname-embedded +pkgver=8.0.1 +pkgrel=6 +pkgdesc="The GNU Debugger for embedded targets" +url="https://www.sourceware.org/gdb/" +arch="all" +license="GPL-3.0" +depends="gdb" +makedepends="ncurses-dev expat-dev texinfo readline-dev python3-dev + zlib-dev autoconf automake libtool linux-headers perl" +options="!check" +source="https://ftp.gnu.org/gnu/$_realname/$_realname-$pkgver.tar.xz + s390x-use-elf-gdb_fpregset_t.patch + ppc-musl.patch + ppc-ptregs.patch" +subpackages="gdb-avr:avr gdb-arm-none-eabi:arm" +builddir="$srcdir"/$_realname-$pkgver + +build () { + for target in $_targets; do + mkdir -p "$srcdir/build/$target" + cd "$srcdir/build/$target" + _config=" + --build=$CBUILD + --host=$CHOST + --prefix=/usr + --bindir=/usr/bin + --libexecdir=/usr/lib + --libdir=/usr/lib + --target=$target + --with-build-sysroot=$CBUILDROOT + --with-python=/usr/bin/python3 + --datarootdir=/usr/share + --disable-nls + --disable-werror + --with-system-readline + --with-system-zlib + --mandir=/deleteme/man + --infodir=/deleteme/info + --pdfdir=/deleteme/pdf + --htmldir=/deleteme/html" + + # use system readline if not cross compiling + [ "$CBUILD" = "$CHOST" ] && _config="$_config --with-system-readline" + + # use system zlib if not cross compiling + [ "$CBUILD" = "$CHOST" ] && _config="$_config --with-system-zlib" + + # avoid generation of mangled and non-mangled objects on ppc64 + [ "$CARCH" = ppc64le ] && _config="$_config --enable-build-with-cxx=no" + + "$builddir/configure" $_config || return 1 + #(cd opcodes && ./configure $_config) || return 1 + make || return 1 + done +} + +package() { + mkdir -p "$pkgdir" +} + +_subpkg() { + pkgdesc="The GNU Debugger for $1" + cd "$srcdir/build/$1" + make DESTDIR="$subpkgdir" install || return 1 + + rm -rf "$subpkgdir"/deleteme + + # those are provided by gdb + rm -rf "$subpkgdir"/usr/share + # those are provided by binutils + rm -rf "$subpkgdir"/usr/include + rm -rf "$subpkgdir"/usr/lib +} + +arm() { + _subpkg arm-none-eabi +} + +avr() { + _subpkg avr +} + +sha512sums="5eb328910033f0918058be2f92caebf1e8dfc6caa3c730d99d621627e53de3c1b43761c2f683d53555893253c2f06768cbf56cdea051a3d291ffb6cfae87b5e1 gdb-8.0.1.tar.xz +c3872eb51b3a42c5a33f8b7542c37fab7b0548560202e5eda740a2176cdfadff9bf73c6d26bceb225829dcb509c823acae2ccc796237ac97ebe552b82582bdf5 s390x-use-elf-gdb_fpregset_t.patch +04911f87904b62dd7662435f9182b20485afb29ddb3d6398a9d31fef13495f7b70639c77fdae3a40e2775e270d7cd40d0cfd7ddf832372b506808d33c8301e01 ppc-musl.patch +b75e1c1ee503a1948a7d5b8d90427b5c7d38ded69978056cee0adca222771a5c95ed1ac73127fcae7b795ea94296344eee5fca47e4cd04b418c164a756fb0933 ppc-ptregs.patch" diff --git a/testing/gdb-embedded/ppc-musl.patch b/testing/gdb-embedded/ppc-musl.patch new file mode 100644 index 0000000000..70cfa18e47 --- /dev/null +++ b/testing/gdb-embedded/ppc-musl.patch @@ -0,0 +1,93 @@ +--- a/gdb/nat/ppc-linux.h ++++ b/gdb/nat/ppc-linux.h +@@ -18,7 +18,90 @@ + #ifndef PPC_LINUX_H + #define PPC_LINUX_H 1 + ++#if defined(__GLIBC__) || defined(__UCLIBC__) + #include ++#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 + + /* This sometimes isn't defined. */ diff --git a/testing/gdb-embedded/ppc-ptregs.patch b/testing/gdb-embedded/ppc-ptregs.patch new file mode 100644 index 0000000000..743bd2e6d2 --- /dev/null +++ b/testing/gdb-embedded/ppc-ptregs.patch @@ -0,0 +1,10 @@ +--- a/gdb/gdbserver/linux-ppc-low.c ++++ b/gdb/gdbserver/linux-ppc-low.c +@@ -21,7 +21,6 @@ + #include "linux-low.h" + + #include +-#include + + #include "nat/ppc-linux.h" + #include "linux-ppc-tdesc.h" diff --git a/testing/gdb-embedded/s390x-use-elf-gdb_fpregset_t.patch b/testing/gdb-embedded/s390x-use-elf-gdb_fpregset_t.patch new file mode 100644 index 0000000000..2b3f318da7 --- /dev/null +++ b/testing/gdb-embedded/s390x-use-elf-gdb_fpregset_t.patch @@ -0,0 +1,156 @@ +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 + +--- + gdb/s390-linux-nat.c | 34 ++++++++++++++++++---------------- + 1 file changed, 18 insertions(+), 16 deletions(-) + +diff --git a/gdb/s390-linux-nat.c b/gdb/s390-linux-nat.c +index 55a3899..84c304f 100644 +--- a/gdb/s390-linux-nat.c ++++ b/gdb/s390-linux-nat.c +@@ -100,7 +100,7 @@ static const struct regset s390_64_gregset = + 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 = get_regcache_arch (regcache); +@@ -111,7 +111,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 +@@ -126,7 +126,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 +@@ -134,14 +134,15 @@ 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 = get_regcache_arch (regcache); + 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) +@@ -178,26 +179,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. */ +@@ -217,7 +219,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); +@@ -226,7 +228,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 +@@ -234,7 +236,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); +@@ -254,7 +256,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); +@@ -263,7 +265,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 +@@ -271,7 +273,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); +-- +1.8.5.6 + -- 2.18.0 --- Unsubscribe: alpine-aports+unsubscribe@lists.alpinelinux.org Help: alpine-aports+help@lists.alpinelinux.org ---