This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Add --enable-codesign to gdb's configure


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=44cee4fdf46a13b63d90ed706c815d9c81e972e3

commit 44cee4fdf46a13b63d90ed706c815d9c81e972e3
Author: Tom Tromey <tom@tromey.com>
Date:   Thu Jun 28 10:32:13 2018 -0600

    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.

Diff:
---
 gdb/ChangeLog       |  9 +++++++++
 gdb/Makefile.in     |  7 +++++++
 gdb/NEWS            |  7 +++++++
 gdb/configure       | 11 +++++++++++
 gdb/configure.ac    |  7 +++++++
 gdb/silent-rules.mk |  1 +
 6 files changed, 42 insertions(+)

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]