aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-06-28 10:32:13 -0600
committerTom Tromey <tom@tromey.com>2018-06-28 15:13:43 -0600
commit44cee4fdf46a13b63d90ed706c815d9c81e972e3 (patch)
tree6f4c3c482d7ab94560e0e3a2d5b3bd9b1b7e5123
parentf2ffa92bbce9dd5fbedc138ac2a3bc8a88327d09 (diff)
downloadgdb-44cee4fdf46a13b63d90ed706c815d9c81e972e3.zip
gdb-44cee4fdf46a13b63d90ed706c815d9c81e972e3.tar.gz
gdb-44cee4fdf46a13b63d90ed706c815d9c81e972e3.tar.bz2
Add --enable-codesign to gdb's configure
macOS requires that the gdb executable be signed in order to be able to successfully use ptrace. This must be done after each link. This patch adds a new --enable-codesign configure option so that this step can be automated. gdb/ChangeLog 2018-06-28 Tom Tromey <tom@tromey.com> * NEWS: Mention --enable-codesign. * silent-rules.mk (ECHO_SIGN): New variable. * configure.ac: Add --enable-codesign. * configure: Rebuild. * Makefile.in (CODESIGN, CODESIGN_CERT): New variables. (gdb$(EXEEXT)): Optionally invoke codesign.
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/Makefile.in7
-rw-r--r--gdb/NEWS7
-rwxr-xr-xgdb/configure11
-rw-r--r--gdb/configure.ac7
-rw-r--r--gdb/silent-rules.mk1
6 files changed, 42 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ad42eb8..4c04d0b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@
+2018-06-28 Tom Tromey <tom@tromey.com>
+
+ * NEWS: Mention --enable-codesign.
+ * silent-rules.mk (ECHO_SIGN): New variable.
+ * configure.ac: Add --enable-codesign.
+ * configure: Rebuild.
+ * Makefile.in (CODESIGN, CODESIGN_CERT): New variables.
+ (gdb$(EXEEXT)): Optionally invoke codesign.
+
2018-06-28 Pedro Alves <palves@redhat.com>
* gdbthread.h (struct thread_suspend_state) <stop_pc>: Extend
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 5934cd6..13627e0 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -222,6 +222,10 @@ LIBICONV = @LIBICONV@
# Did the user give us a --with-gdb-datadir option?
GDB_DATADIR = @GDB_DATADIR@
+# Code signing.
+CODESIGN = codesign
+CODESIGN_CERT = @CODESIGN_CERT@
+
# Flags to pass to gdb when invoked with "make run".
GDBFLAGS =
@@ -1916,6 +1920,9 @@ gdb$(EXEEXT): gdb.o $(LIBGDB_OBS) $(ADD_DEPS) $(CDEPS) $(TDEPLIBS)
$(ECHO_CXXLD) $(CC_LD) $(INTERNAL_LDFLAGS) $(WIN32LDAPP) \
-o gdb$(EXEEXT) gdb.o $(LIBGDB_OBS) \
$(TDEPLIBS) $(TUI_LIBRARY) $(CLIBS) $(LOADLIBES)
+ifneq ($(CODESIGN_CERT),)
+ $(ECHO_SIGN) $(CODESIGN) -s $(CODESIGN_CERT) gdb$(EXEEXT)
+endif
# Convenience rule to handle recursion.
$(LIBGNU) $(GNULIB_H): all-lib
diff --git a/gdb/NEWS b/gdb/NEWS
index 016796a..839466e 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -94,6 +94,13 @@ SH-5/SH64 running OpenBSD SH-5/SH64 support in sh*-*-openbsd*
the tradeoff that there is a possibility of false hits being
reported.
+* New configure options
+
+--enable-codesign=CERT
+ This can be used to invoke "codesign -s CERT" after building gdb.
+ This option is useful on macOS, where code signing is required for
+ gdb to work properly.
+
*** Changes in GDB 8.1
* GDB now supports dynamically creating arbitrary register groups specified
diff --git a/gdb/configure b/gdb/configure
index d3a3bbe..28756ed 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -745,6 +745,7 @@ AWK
REPORT_BUGS_TEXI
REPORT_BUGS_TO
PKGVERSION
+CODESIGN_CERT
HAVE_NATIVE_GCORE_TARGET
TARGET_OBS
subdirs
@@ -861,6 +862,7 @@ enable_gdbtk
with_libunwind_ia64
with_curses
enable_profiling
+enable_codesign
with_pkgversion
with_bugurl
with_system_zlib
@@ -1550,6 +1552,7 @@ Optional Features:
--enable-tui enable full-screen terminal user interface (TUI)
--enable-gdbtk enable gdbtk graphical user interface (GUI)
--enable-profiling enable profiling of GDB
+ --enable-codesign=CERT sign gdb with 'codesign -s CERT'
--disable-rpath do not hardcode runtime library paths
--enable-libmcheck Try linking with -lmcheck if available
--enable-werror treat compile warnings as errors
@@ -7050,6 +7053,14 @@ $as_echo "$ac_cv_cc_supports_pg" >&6; }
CFLAGS="$OLD_CFLAGS"
fi
+CODESIGN_CERT=
+# Check whether --enable-codesign was given.
+if test "${enable_codesign+set}" = set; then :
+ enableval=$enable_codesign; CODESIGN_CERT=$enableval
+fi
+
+
+
# Check whether --with-pkgversion was given.
diff --git a/gdb/configure.ac b/gdb/configure.ac
index 44b6c62..4c20ea5 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -471,6 +471,13 @@ if test "$enable_profiling" = yes ; then
CFLAGS="$OLD_CFLAGS"
fi
+CODESIGN_CERT=
+AC_ARG_ENABLE([codesign],
+ AS_HELP_STRING([--enable-codesign=CERT],
+ [sign gdb with 'codesign -s CERT']),
+ [CODESIGN_CERT=$enableval])
+AC_SUBST([CODESIGN_CERT])
+
ACX_PKGVERSION([GDB])
ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
diff --git a/gdb/silent-rules.mk b/gdb/silent-rules.mk
index 803dbda..ade77ad 100644
--- a/gdb/silent-rules.mk
+++ b/gdb/silent-rules.mk
@@ -10,5 +10,6 @@ ECHO_GEN_XML_BUILTIN = \
ECHO_GEN_XML_BUILTIN_GENERATED = \
@echo " GEN xml-builtin-generated.c";
ECHO_INIT_C = echo " GEN init.c" ||
+ECHO_SIGN = @echo " SIGN gdb";
SILENCE = @
endif