Package: gdb
Version: 7.7.1-2
Severity: important

Please consider attached debdiff fixing FTBFS on Hurd.
It applies four patches cherry-picked from upstream as pointed out by
Thomas Schwinge at

 https://sourceware.org/ml/gdb-patches/2014-05/msg00056.html

Thanks.
diff -Nru gdb-7.7.1/debian/changelog gdb-7.7.1/debian/changelog
--- gdb-7.7.1/debian/changelog  2014-06-17 23:42:37.000000000 +0000
+++ gdb-7.7.1/debian/changelog  2014-06-24 19:16:14.000000000 +0000
@@ -1,3 +1,14 @@
+gdb (7.7.1-3) UNRELEASED; urgency=medium
+
+  * Fix FTBFS on Hurd.
+    + Cherry-pick from upstream:
+      hurd-new-RPC-reply-stub-functions.patch
+      hurd-adapt-to-changed-MIG-output.patch
+      hurd-adjust-to-startup-with-shell-changes.patch
+      hurd-make-MIG-output-parsing-more-robust.patch
+
+ -- Gabriele Giacone <1o5g4...@gmail.com>  Tue, 24 Jun 2014 16:41:28 +0000
+
 gdb (7.7.1-2) unstable; urgency=medium
 
   [ Samuel Bronson ]
diff -Nru gdb-7.7.1/debian/patches/hurd-adapt-to-changed-MIG-output.patch 
gdb-7.7.1/debian/patches/hurd-adapt-to-changed-MIG-output.patch
--- gdb-7.7.1/debian/patches/hurd-adapt-to-changed-MIG-output.patch     
1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.7.1/debian/patches/hurd-adapt-to-changed-MIG-output.patch     
2014-06-24 19:07:48.000000000 +0000
@@ -0,0 +1,22 @@
+Description: Fix FTBFS on Hurd.
+ Adapt to changed MIG output.
+ Based on a patch by David Michael <fedora....@gmail.com>.
+Author: Thomas Schwinge <tho...@codesourcery.com>
+Origin: upstream, 
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=bae8023e39868ab2065ff05be61e151b3c082492
+
+diff --git a/gdb/reply_mig_hack.awk b/gdb/reply_mig_hack.awk
+index 075ab02..6d27685 100644
+--- a/gdb/reply_mig_hack.awk
++++ b/gdb/reply_mig_hack.awk
+@@ -78,9 +78,9 @@ parse_phase == 4 {
+   print; next;
+ }
+ 
+-parse_phase == 5 && /^[ \t]*(auto|static) const mach_msg_type_t/ {
++parse_phase == 5 && /^[ \t]*(auto |static |)const mach_msg_type_t/ {
+   # The type check structure for an argument.
+-  arg_check_name[num_checks] = $4;
++  arg_check_name[num_checks] = $(NF - 2);
+   num_checks++;
+   print; next;
+ }
diff -Nru 
gdb-7.7.1/debian/patches/hurd-adjust-to-startup-with-shell-changes.patch 
gdb-7.7.1/debian/patches/hurd-adjust-to-startup-with-shell-changes.patch
--- gdb-7.7.1/debian/patches/hurd-adjust-to-startup-with-shell-changes.patch    
1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.7.1/debian/patches/hurd-adjust-to-startup-with-shell-changes.patch    
2014-06-24 19:07:39.000000000 +0000
@@ -0,0 +1,69 @@
+Description: Fix FTBFS on Hurd.
+ Adjust to startup-with-shell changes.
+Author: Thomas Schwinge <tho...@codesourcery.com>
+Origin: upstream, 
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=c82f56d9d760a9b4034eeaac44f2f0fa5779ff69
+
+diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c
+index a3ed0e0..b66a7f0 100644
+--- a/gdb/gnu-nat.c
++++ b/gdb/gnu-nat.c
+@@ -210,9 +210,9 @@ struct inf
+     unsigned int no_wait:1;
+ 
+     /* When starting a new inferior, we don't try to validate threads until 
all
+-       the proper execs have been done.  This is a count of how many execs we
++       the proper execs have been done, which this flag states we still
+        expect to happen.  */
+-    unsigned pending_execs;
++    unsigned int pending_execs:1;
+ 
+     /* Fields describing global state.  */
+ 
+@@ -1568,26 +1568,14 @@ rewait:
+          while execing.  */
+       {
+         w->suppress = 1;
+-        inf_debug (inf, "pending_execs = %d, ignoring minor event",
+-                   inf->pending_execs);
++        inf_debug (inf, "pending_execs, ignoring minor event");
+       }
+       else if (kind == TARGET_WAITKIND_STOPPED
+              && w->status.value.sig == GDB_SIGNAL_TRAP)
+       /* Ah hah!  A SIGTRAP from the inferior while starting up probably
+          means we've succesfully completed an exec!  */
+       {
+-        if (--inf->pending_execs == 0)
+-          /* We're done!  */
+-          {
+-#if 0                         /* do we need this?  */
+-            prune_threads (1);        /* Get rid of the old shell
+-                                         threads.  */
+-            renumber_threads (0);     /* Give our threads reasonable
+-                                         names.  */
+-#endif
+-          }
+-        inf_debug (inf, "pending exec completed, pending_execs => %d",
+-                   inf->pending_execs);
++        inf_debug (inf, "one pending exec completed");
+       }
+       else if (kind == TARGET_WAITKIND_STOPPED)
+       /* It's possible that this signal is because of a crashed process
+@@ -2146,7 +2134,7 @@ gnu_create_inferior (struct target_ops *ops,
+ 
+   push_target (ops);
+ 
+-  inf->pending_execs = 2;
++  inf->pending_execs = 1;
+   inf->nomsg = 1;
+   inf->traced = 1;
+ 
+@@ -2158,7 +2146,8 @@ gnu_create_inferior (struct target_ops *ops,
+   thread_change_ptid (inferior_ptid,
+                     ptid_build (inf->pid, inf_pick_first_thread (), 0));
+ 
+-  startup_inferior (inf->pending_execs);
++  startup_inferior (START_INFERIOR_TRAPS_EXPECTED);
++  inf->pending_execs = 0;
+ 
+   inf_validate_procinfo (inf);
+   inf_update_signal_thread (inf);
diff -Nru 
gdb-7.7.1/debian/patches/hurd-make-MIG-output-parsing-more-robust.patch 
gdb-7.7.1/debian/patches/hurd-make-MIG-output-parsing-more-robust.patch
--- gdb-7.7.1/debian/patches/hurd-make-MIG-output-parsing-more-robust.patch     
1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.7.1/debian/patches/hurd-make-MIG-output-parsing-more-robust.patch     
2014-06-24 19:09:12.000000000 +0000
@@ -0,0 +1,23 @@
+Description: Fix FTBFS on Hurd.
+ Make MIG output parsing more robust.
+ Based on a patch by David Michael <fedora....@gmail.com>.
+Author: Thomas Schwinge <tho...@codesourcery.com>
+Origin: upstream, 
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=d47642c93dda6344af12458e4e26587f3353fb44
+
+diff --git a/gdb/reply_mig_hack.awk b/gdb/reply_mig_hack.awk
+index 6d27685..15bfdfb 100644
+--- a/gdb/reply_mig_hack.awk
++++ b/gdb/reply_mig_hack.awk
+@@ -92,6 +92,12 @@ parse_phase == 5 && /^[ \t]*mig_external kern_return_t/ {
+ }
+ 
+ parse_phase == 5 && /^#if[ \t]TypeCheck/ {
++  # Keep going if we have not yet collected the type check structures.
++  if (num_checks == 0)
++    {
++      print; next;
++    }
++
+   # The first args type checking statement; we need to insert our chunk of
+   # code that bypasses all the type checks if this is an error return, after
+   # which we're done until we get to the next function.  Handily, the size
diff -Nru gdb-7.7.1/debian/patches/hurd-new-RPC-reply-stub-functions.patch 
gdb-7.7.1/debian/patches/hurd-new-RPC-reply-stub-functions.patch
--- gdb-7.7.1/debian/patches/hurd-new-RPC-reply-stub-functions.patch    
1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.7.1/debian/patches/hurd-new-RPC-reply-stub-functions.patch    
2014-06-24 19:08:04.000000000 +0000
@@ -0,0 +1,165 @@
+Description: Fix FTBFS on hurd.
+ New RPC reply stub functions.
+ Based on a patch by David Michael <fedora....@gmail.com>.
+Author: Thomas Schwinge <tho...@codesourcery.com>
+Origin: upstream, 
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=3398af6aa352b0611bc9d66aed72080a876e42d4
+
+diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c
+index efafc35..a3ed0e0 100644
+--- a/gdb/gnu-nat.c
++++ b/gdb/gnu-nat.c
+@@ -1794,43 +1794,23 @@ do_mach_notify_dead_name (mach_port_t notify, 
mach_port_t dead_port)
+ }
+ 
+ 
+-static error_t
+-ill_rpc (char *fun)
+-{
+-  warning (_("illegal rpc: %s"), fun);
+-  return 0;
+-}
+-
+-error_t
+-do_mach_notify_no_senders (mach_port_t notify, mach_port_mscount_t count)
+-{
+-  return ill_rpc ("do_mach_notify_no_senders");
+-}
+-
+-error_t
+-do_mach_notify_port_deleted (mach_port_t notify, mach_port_t name)
+-{
+-  return ill_rpc ("do_mach_notify_port_deleted");
+-}
+-
+-error_t
+-do_mach_notify_msg_accepted (mach_port_t notify, mach_port_t name)
+-{
+-  return ill_rpc ("do_mach_notify_msg_accepted");
+-}
+-
+-error_t
+-do_mach_notify_port_destroyed (mach_port_t notify, mach_port_t name)
+-{
+-  return ill_rpc ("do_mach_notify_port_destroyed");
+-}
+-
+-error_t
+-do_mach_notify_send_once (mach_port_t notify)
+-{
+-  return ill_rpc ("do_mach_notify_send_once");
+-}
++#define ILL_RPC(fun, ...) \
++  kern_return_t fun (__VA_ARGS__) \
++  { \
++    warning (_("illegal rpc: %s"), #fun); \
++    return 0; \
++  }
+ 
++ILL_RPC (do_mach_notify_no_senders,
++       mach_port_t notify, mach_port_mscount_t count)
++ILL_RPC (do_mach_notify_port_deleted,
++       mach_port_t notify, mach_port_t name)
++ILL_RPC (do_mach_notify_msg_accepted,
++       mach_port_t notify, mach_port_t name)
++ILL_RPC (do_mach_notify_port_destroyed,
++       mach_port_t notify, mach_port_t name)
++ILL_RPC (do_mach_notify_send_once,
++       mach_port_t notify)
+ 
+ /* Process_reply server routines.  We only use process_wait_reply.  */
+ 
+@@ -1887,19 +1867,66 @@ S_proc_wait_reply (mach_port_t reply, error_t err,
+   return 0;
+ }
+ 
+-error_t
+-S_proc_setmsgport_reply (mach_port_t reply, error_t err,
+-                       mach_port_t old_msg_port)
+-{
+-  return ill_rpc ("S_proc_setmsgport_reply");
+-}
+-
+-error_t
+-S_proc_getmsgport_reply (mach_port_t reply, error_t err, mach_port_t msg_port)
+-{
+-  return ill_rpc ("S_proc_getmsgport_reply");
+-}
+-
++ILL_RPC (S_proc_setmsgport_reply,
++       mach_port_t reply_port, kern_return_t return_code,
++       mach_port_t oldmsgport)
++ILL_RPC (S_proc_getmsgport_reply,
++       mach_port_t reply_port, kern_return_t return_code,
++       mach_port_t msgports)
++ILL_RPC (S_proc_pid2task_reply,
++       mach_port_t reply_port, kern_return_t return_code, mach_port_t task)
++ILL_RPC (S_proc_task2pid_reply,
++       mach_port_t reply_port, kern_return_t return_code, pid_t pid)
++ILL_RPC (S_proc_task2proc_reply,
++       mach_port_t reply_port, kern_return_t return_code, mach_port_t proc)
++ILL_RPC (S_proc_proc2task_reply,
++       mach_port_t reply_port, kern_return_t return_code, mach_port_t task)
++ILL_RPC (S_proc_pid2proc_reply,
++       mach_port_t reply_port, kern_return_t return_code, mach_port_t proc)
++ILL_RPC (S_proc_getprocinfo_reply,
++       mach_port_t reply_port, kern_return_t return_code,
++       int flags, procinfo_t procinfo, mach_msg_type_number_t procinfoCnt,
++       data_t threadwaits, mach_msg_type_number_t threadwaitsCnt)
++ILL_RPC (S_proc_getprocargs_reply,
++       mach_port_t reply_port, kern_return_t return_code,
++       data_t procargs, mach_msg_type_number_t procargsCnt)
++ILL_RPC (S_proc_getprocenv_reply,
++       mach_port_t reply_port, kern_return_t return_code,
++       data_t procenv, mach_msg_type_number_t procenvCnt)
++ILL_RPC (S_proc_getloginid_reply,
++       mach_port_t reply_port, kern_return_t return_code, pid_t login_id)
++ILL_RPC (S_proc_getloginpids_reply,
++       mach_port_t reply_port, kern_return_t return_code,
++       pidarray_t pids, mach_msg_type_number_t pidsCnt)
++ILL_RPC (S_proc_getlogin_reply,
++       mach_port_t reply_port, kern_return_t return_code, string_t logname)
++ILL_RPC (S_proc_getsid_reply,
++       mach_port_t reply_port, kern_return_t return_code, pid_t sid)
++ILL_RPC (S_proc_getsessionpgids_reply,
++       mach_port_t reply_port, kern_return_t return_code,
++       pidarray_t pgidset, mach_msg_type_number_t pgidsetCnt)
++ILL_RPC (S_proc_getsessionpids_reply,
++       mach_port_t reply_port, kern_return_t return_code,
++       pidarray_t pidset, mach_msg_type_number_t pidsetCnt)
++ILL_RPC (S_proc_getsidport_reply,
++       mach_port_t reply_port, kern_return_t return_code,
++       mach_port_t sessport)
++ILL_RPC (S_proc_getpgrp_reply,
++       mach_port_t reply_port, kern_return_t return_code, pid_t pgrp)
++ILL_RPC (S_proc_getpgrppids_reply,
++       mach_port_t reply_port, kern_return_t return_code,
++       pidarray_t pidset, mach_msg_type_number_t pidsetCnt)
++ILL_RPC (S_proc_get_tty_reply,
++       mach_port_t reply_port, kern_return_t return_code, mach_port_t tty)
++ILL_RPC (S_proc_getnports_reply,
++       mach_port_t reply_port, kern_return_t return_code,
++       mach_msg_type_number_t nports)
++ILL_RPC (S_proc_is_important_reply,
++       mach_port_t reply_port, kern_return_t return_code,
++       boolean_t essential)
++ILL_RPC (S_proc_get_code_reply,
++       mach_port_t reply_port, kern_return_t return_code,
++       vm_address_t start_code, vm_address_t end_code)
+ 
+ /* Msg_reply server routines.  We only use msg_sig_post_untraced_reply.  */
+ 
+@@ -1933,12 +1960,8 @@ S_msg_sig_post_untraced_reply (mach_port_t reply, 
error_t err)
+   return 0;
+ }
+ 
+-error_t
+-S_msg_sig_post_reply (mach_port_t reply, error_t err)
+-{
+-  return ill_rpc ("S_msg_sig_post_reply");
+-}
+-
++ILL_RPC (S_msg_sig_post_reply,
++       mach_port_t reply, error_t err)
+ 
+ /* Returns the number of messages queued for the receive right PORT.  */
+ static mach_port_msgcount_t
diff -Nru gdb-7.7.1/debian/patches/series gdb-7.7.1/debian/patches/series
--- gdb-7.7.1/debian/patches/series     2014-05-29 23:13:49.000000000 +0000
+++ gdb-7.7.1/debian/patches/series     2014-06-24 18:58:49.000000000 +0000
@@ -5,3 +5,7 @@
 python-config.patch
 ppc64le.diff
 gdb-glibc-vdso-workaround.patch
+hurd-new-RPC-reply-stub-functions.patch
+hurd-adapt-to-changed-MIG-output.patch
+hurd-adjust-to-startup-with-shell-changes.patch
+hurd-make-MIG-output-parsing-more-robust.patch

Reply via email to