diff options
author | 2024-01-12 20:24:30 +0100 | |
---|---|---|
committer | 2024-01-13 10:42:33 +0100 | |
commit | 1eb06b860d83a59fce6466517e5c9d1b2ab20033 (patch) | |
tree | 7f0a9b9954bf1da5c185473cdf496ad70bb9b198 /dev-debug | |
parent | Move {sys-devel → dev-debug}/gdb (diff) | |
download | gentoo-1eb06b860d83a59fce6466517e5c9d1b2ab20033.tar.gz gentoo-1eb06b860d83a59fce6466517e5c9d1b2ab20033.tar.bz2 gentoo-1eb06b860d83a59fce6466517e5c9d1b2ab20033.zip |
Move {sys-devel → dev-debug}/gdb-apple
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-debug')
-rw-r--r-- | dev-debug/gdb-apple/Manifest | 1 | ||||
-rw-r--r-- | dev-debug/gdb-apple/files/gdb-apple-1518-darwin8-9.patch | 87 | ||||
-rw-r--r-- | dev-debug/gdb-apple/files/gdb-apple-1518-darwin8.patch | 128 | ||||
-rw-r--r-- | dev-debug/gdb-apple/files/gdb-apple-1705-darwin8-10.patch | 11 | ||||
-rw-r--r-- | dev-debug/gdb-apple/files/gdb-apple-768-texinfo.patch | 10 | ||||
-rw-r--r-- | dev-debug/gdb-apple/files/gdb-apple-no-global-gdbinit.patch | 23 | ||||
-rw-r--r-- | dev-debug/gdb-apple/gdb-apple-1752.ebuild | 95 | ||||
-rw-r--r-- | dev-debug/gdb-apple/metadata.xml | 8 |
8 files changed, 363 insertions, 0 deletions
diff --git a/dev-debug/gdb-apple/Manifest b/dev-debug/gdb-apple/Manifest new file mode 100644 index 000000000000..d52e9873b523 --- /dev/null +++ b/dev-debug/gdb-apple/Manifest @@ -0,0 +1 @@ +DIST gdb-1752.tar.gz 17922994 BLAKE2B 9b27bca2b6a9f10e01d130d595270300a4e7f0040790c5b60337d41086e1238dc12d785cc88c484df630f742ddfe783f7baefc2132b47e41bb74a5d0b7ebbf1e SHA512 863a861a9a7708b8a763ea93599f6b519277f23fff35700d04e81a7747cc49421d0f051790deb92c440ced30ee15ba719b75066d5a614341e0f0b765d7a81094 diff --git a/dev-debug/gdb-apple/files/gdb-apple-1518-darwin8-9.patch b/dev-debug/gdb-apple/files/gdb-apple-1518-darwin8-9.patch new file mode 100644 index 000000000000..a05169cec25d --- /dev/null +++ b/dev-debug/gdb-apple/files/gdb-apple-1518-darwin8-9.patch @@ -0,0 +1,87 @@ +--- src/gdb/macosx/macosx-nat-dyld.c ++++ src/gdb/macosx/macosx-nat-dyld.c +@@ -2083,7 +2083,9 @@ + case MH_DYLIB: + case MH_DYLINKER: + case MH_BUNDLE: ++#ifdef MH_KEXT_BUNDLE + case MH_KEXT_BUNDLE: ++#endif + break; + case MH_FVMLIB: + case MH_PRELOAD: +@@ -2412,7 +2414,9 @@ + break; + case MH_DYLINKER: + case MH_BUNDLE: ++#ifdef MH_KEXT_BUNDLE + case MH_KEXT_BUNDLE: ++#endif + entry->reason = dyld_reason_dyld; + break; + default: +--- src/gdb/macosx/macosx-nat-dyld-process.c ++++ src/gdb/macosx/macosx-nat-dyld-process.c +@@ -407,7 +407,9 @@ + case MH_DYLIB: + break; + case MH_BUNDLE: ++#ifdef MH_KEXT_BUNDLE + case MH_KEXT_BUNDLE: ++#endif + break; + default: + return; + return; +--- src/gdb/macosx/macosx-nat-inferior.c ++++ src/gdb/macosx/macosx-nat-inferior.c +@@ -2692,6 +2692,7 @@ + if (tp->private == NULL || tp->private->app_thread_port == 0) + return NULL; + ++#ifdef THREAD_IDENTIFIER_INFO_COUNT + thread_identifier_info_data_t tident; + unsigned int info_count; + kern_return_t kret; +@@ -2719,6 +2720,7 @@ + } + } + } ++#endif + return buf; + } + +--- src/gdb/macosx/macosx-nat-infthread.c ++++ src/gdb/macosx/macosx-nat-infthread.c +@@ -809,6 +809,7 @@ + print_stack_frame (get_selected_frame (NULL), 0, LOCATION); + switch_to_thread (current_ptid); + ++#ifdef THREAD_IDENTIFIER_INFO_COUNT + thread_identifier_info_data_t tident; + info_count = THREAD_IDENTIFIER_INFO_COUNT; + kret = thread_info (tid, THREAD_IDENTIFIER_INFO, (thread_info_t) &tident, +@@ -878,6 +879,7 @@ + printf_filtered ("\tcurrent priority: %d\n", pth.pth_priority); + printf_filtered ("\tmax priority: %d\n", pth.pth_maxpriority); + } ++#endif + + printf_filtered ("\tsuspend count: %d", info.suspend_count); + +@@ -1175,6 +1177,7 @@ + ui_out_field_fmt (uiout, "mach-port-number", "0x%s", + paddr_nz (app_thread_name)); + ++#ifdef THREAD_IDENTIFIER_INFO_COUNT + thread_identifier_info_data_t tident; + info_count = THREAD_IDENTIFIER_INFO_COUNT; + kret = thread_info (tid, THREAD_IDENTIFIER_INFO, (thread_info_t) &tident, +@@ -1207,6 +1210,7 @@ + paddr_nz (struct_addr)); + } + } ++#endif + } + + diff --git a/dev-debug/gdb-apple/files/gdb-apple-1518-darwin8.patch b/dev-debug/gdb-apple/files/gdb-apple-1518-darwin8.patch new file mode 100644 index 000000000000..f8ecc30be7f6 --- /dev/null +++ b/dev-debug/gdb-apple/files/gdb-apple-1518-darwin8.patch @@ -0,0 +1,128 @@ +--- src/gdb/macosx/macosx-nat-inferior.c ++++ src/gdb/macosx/macosx-nat-inferior.c +@@ -60,13 +60,17 @@ + #include <sys/sysctl.h> + #include <sys/proc.h> + #include <mach/mach_error.h> ++#if defined(TARGET_ARM) + #include <spawn.h> ++#endif + + #include <semaphore.h> + + #include <dlfcn.h> ++#if 0 + #include <libproc.h> + #include <sys/proc_info.h> ++#endif + + #include "macosx-nat-dyld.h" + #include "macosx-nat-inferior.h" +--- src/gdb/macosx/macosx-nat-info.c ++++ src/gdb/macosx/macosx-nat-info.c +@@ -45,6 +45,22 @@ + #include "macosx-nat-inferior.h" + #include "macosx-nat-inferior-debug.h" + ++#ifdef __ppc__ ++#ifndef __darwin_ppc_thread_state ++#define __darwin_ppc_thread_state ppc_thread_state ++#define __r0 r0 ++#define __srr0 srr0 ++#define __srr1 srr1 ++#define __cr cr ++#define __xer xer ++#define __lr lr ++#define __ctr ctr ++#endif ++#ifndef __darwin_ppc_exception_state ++#define __darwin_ppc_exception_state ppc_exception_state ++#endif ++#endif ++ + extern macosx_inferior_status *macosx_status; + + #define CHECK_ARGS(what, args) \ +--- src/gdb/macosx/macosx-nat-infthread.c ++++ src/gdb/macosx/macosx-nat-infthread.c +@@ -36,8 +36,10 @@ + #include <sys/dir.h> + #include <inttypes.h> + ++#if 0 + #include <libproc.h> + #include <sys/proc_info.h> ++#endif + + #include "macosx-nat-inferior.h" + #include "macosx-nat-inferior-util.h" +--- src/gdb/macosx/macosx-tdep.c ++++ src/gdb/macosx/macosx-tdep.c +@@ -64,7 +64,6 @@ + #include "gdbcore.h" + + #include <dirent.h> +-#include <libgen.h> + #include <sys/types.h> + #include <sys/stat.h> + #include <sys/param.h> +--- src/gdb/remote.c ++++ src/gdb/remote.c +@@ -63,7 +63,6 @@ + #include "macosx-nat-dyld.h" + #include "macosx-nat-dyld-process.h" + #endif +-#include <execinfo.h> + + /* Prototypes for local functions. */ + static void cleanup_sigint_signal_handler (void *dummy); +@@ -475,11 +474,13 @@ + static void + remote_backtrace_self (const char *message) + { ++#if 0 + void *bt_buffer[100]; + int count = backtrace (bt_buffer, 100); + if (message && message[0]) + fprintf_filtered (gdb_stderr, "%s", message); + backtrace_symbols_fd (bt_buffer, count, STDERR_FILENO); ++#endif + } + + static void +--- src/gdb/symfile.c ++++ src/gdb/symfile.c +@@ -67,7 +67,6 @@ + #include <ctype.h> + #include <time.h> + #include <sys/time.h> +-#include <libgen.h> + + #include <sys/mman.h> + +--- src/gdb/utils.c ++++ src/gdb/utils.c +@@ -28,7 +28,6 @@ + #include "event-top.h" + #include "exceptions.h" + #include "bfd.h" +-#include <execinfo.h> + #include <sys/resource.h> + #include <uuid/uuid.h> + +@@ -879,6 +878,7 @@ + target_terminal_ours (); + begin_line (); + ++#if 0 + /* APPLE LOCAL: Do a stack crawl of how we got here so we're more likely + to get useful bug reports. */ + { +@@ -887,6 +887,7 @@ + fprintf (stderr, "gdb stack crawl at point of internal error:\n"); + backtrace_symbols_fd (bt_buffer, count, STDERR_FILENO); + } ++#endif + + /* Create a string containing the full error/warning message. Need + to call query with this full string, as otherwize the reason diff --git a/dev-debug/gdb-apple/files/gdb-apple-1705-darwin8-10.patch b/dev-debug/gdb-apple/files/gdb-apple-1705-darwin8-10.patch new file mode 100644 index 000000000000..32247431fe89 --- /dev/null +++ b/dev-debug/gdb-apple/files/gdb-apple-1705-darwin8-10.patch @@ -0,0 +1,11 @@ +--- src/gdb/macosx/macosx-nat-dyld.c ++++ src/gdb/macosx/macosx-nat-dyld.c +@@ -788,7 +788,7 @@ + } + else + { +-#if defined (NM_NEXTSTEP) ++#if defined (NM_NEXTSTEP) && defined(TASK_DYLD_INFO_COUNT) + if (macosx_status->task == TASK_NULL) + return 0; + diff --git a/dev-debug/gdb-apple/files/gdb-apple-768-texinfo.patch b/dev-debug/gdb-apple/files/gdb-apple-768-texinfo.patch new file mode 100644 index 000000000000..41153d8436de --- /dev/null +++ b/dev-debug/gdb-apple/files/gdb-apple-768-texinfo.patch @@ -0,0 +1,10 @@ +--- src/Makefile.in ++++ src/Makefile.in +@@ -280,6 +280,6 @@ + then echo $$r/$(BUILD_SUBDIR)/texinfo/makeinfo/makeinfo ; \ + else if (${CONFIGURED_MAKEINFO} --version \ +- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])') >/dev/null 2>&1; \ ++ | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|4\.[1-9][0-9]|[5-9])') >/dev/null 2>&1; \ + then echo ${CONFIGURED_MAKEINFO}; else echo $$s/missing makeinfo; fi; fi` + + # This just becomes part of the MAKEINFO definition passed down to diff --git a/dev-debug/gdb-apple/files/gdb-apple-no-global-gdbinit.patch b/dev-debug/gdb-apple/files/gdb-apple-no-global-gdbinit.patch new file mode 100644 index 000000000000..0c132ec5b384 --- /dev/null +++ b/dev-debug/gdb-apple/files/gdb-apple-no-global-gdbinit.patch @@ -0,0 +1,23 @@ +Sourcing /etc/gdb.conf is annoying mainly because Apple put + set history save on +in there, which means everywhere you run it, you end up with a +.gdb_history file. + +--- src/gdb/main.c ++++ src/gdb/main.c +@@ -675,6 +675,7 @@ + memset (&cwdbuf, 0, sizeof (struct stat)); + /* APPLE LOCAL end move inits up */ + /* APPLE LOCAL begin global gdbinit */ ++#ifdef WANT_GLOBAL_GDBINIT + memset (&globalbuf, 0, sizeof (struct stat)); + stat (gdbinit_global, &globalbuf); + if (!inhibit_gdbinit) +@@ -683,6 +684,7 @@ + source_file (gdbinit_global, 0); + } + do_cleanups (ALL_CLEANUPS); ++#endif + /* APPLE LOCAL end global gdbinit */ + + /* APPLE LOCAL: Set the $_Xcode convenience variable at '0' before sourcing diff --git a/dev-debug/gdb-apple/gdb-apple-1752.ebuild b/dev-debug/gdb-apple/gdb-apple-1752.ebuild new file mode 100644 index 000000000000..974164cdbaa3 --- /dev/null +++ b/dev-debug/gdb-apple/gdb-apple-1752.ebuild @@ -0,0 +1,95 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit flag-o-matic toolchain-funcs + +APPLE_PV=${PV} +DESCRIPTION="Apple branch of the GNU Debugger, Developer Tools 4.3" +HOMEPAGE="https://sourceware.org/gdb/" +SRC_URI="http://www.opensource.apple.com/darwinsource/tarballs/other/gdb-${APPLE_PV}.tar.gz" + +LICENSE="APSL-2 GPL-2" +SLOT="0" + +KEYWORDS="~ppc-macos ~x64-macos" + +IUSE="nls" + +RDEPEND=">=sys-libs/ncurses-5.2-r2:0= + sys-libs/readline:0= + =dev-db/sqlite-3*" +DEPEND="${RDEPEND} + nls? ( sys-devel/gettext ) + || ( >=sys-devel/gcc-apple-4.2.1 sys-devel/llvm:* )" + +S=${WORKDIR}/gdb-${APPLE_PV}/src + +PATCHES=( + "${FILESDIR}"/${PN}-no-global-gdbinit.patch + "${FILESDIR}"/${PN}-768-texinfo.patch + "${FILESDIR}"/${PN}-1518-darwin8-9.patch + "${FILESDIR}"/${PN}-1705-darwin8-10.patch +) + +src_prepare() { + default + [[ ${CHOST} == *-darwin8 ]] && eapply "${FILESDIR}"/${PN}-1518-darwin8.patch + + # use host readline + sed -i -e '/host_libs/s/readline//' configure.in configure || die + sed -i \ + -e '/^\(READLINE\|readline\)_/s/=.*$/=/' \ + -e '/^READLINE /s/=.*$/= -lreadline/' \ + gdb/Makefile.in || die +} + +src_configure() { + if tc-is-gcc ; then + # force gcc-apple, FSF gcc doesn't grok this code + export CC=${CTARGET:-${CHOST}}-gcc-4.2.1 + export CXX=${CTARGET:-${CHOST}}-g++-4.2.1 + fi + + replace-flags -O? -O2 + econf \ + --disable-werror \ + --disable-debug-symbols-framework \ + $(use_enable nls) +} + +src_compile() { + # unable to work around parallel make issue + # ignore texinfo issues (version mismatch, to hard to fix or + # disable) + emake -j2 MAKEINFOFLAGS="--force" +} + +src_install() { + emake -j2 \ + DESTDIR="${D}" libdir=/nukeme includedir=/nukeme \ + MAKEINFOFLAGS="--force" install || die + rm -R "${D}"/nukeme || die + rm -Rf "${ED}"/usr/${CHOST} || die + mv "${ED}"/usr/bin/gdb "${ED}"/ + rm -f "${ED}"/usr/bin/* + mv "${ED}"/gdb "${ED}"/usr/bin/ +} + +pkg_postinst() { + if [[ ${CHOST} == *-darwin* && ${CHOST#*-darwin} -ge 9 ]] ; then + ewarn "Due to increased security measures in 10.5 and up, gdb is" + ewarn "not able to get a mach task port when installed by Prefix" + ewarn "Portage, unprivileged. To make gdb fully functional you'll" + ewarn "have to perform the following steps:" + ewarn " % sudo chgrp procmod ${EPREFIX}/usr/bin/gdb" + ewarn " % sudo chmod g+s ${EPREFIX}/usr/bin/gdb" + fi + if [[ ${CHOST} == *86* ]] ; then + einfo "FSF gdb works on Intel-based OSX platforms, sometimes even" + einfo "better than gdb-apple. You can consider installing FSF gdb" + einfo "instead of gdb-apple, since the FSF version is surely more" + einfo "advanced than this old 6.8 version modified by Apple." + fi +} diff --git a/dev-debug/gdb-apple/metadata.xml b/dev-debug/gdb-apple/metadata.xml new file mode 100644 index 000000000000..232d18dd1fa2 --- /dev/null +++ b/dev-debug/gdb-apple/metadata.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>prefix@gentoo.org</email> + <name>Gentoo Prefix</name> + </maintainer> +</pkgmetadata> |