Re: one week to gdb-7.6 release?

Eli Zaretskii
2013-04-02T17:32:50Z

> Date: Fri, 29 Mar 2013 08:56:41 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: gdb-patches@sourceware.org, palves@redhat.com, jan.kratochvil@redhat.com, ralf.corsepius@rtems.org, vapier@gentoo.org, joel.sherrill@oarcorp.com
>
> > Date: Thu, 28 Mar 2013 18:59:24 -0700
> > From: Joel Brobecker <brobecker@adacore.com>
> > Cc: gdb-patches@sourceware.org, palves@redhat.com,
> > jan.kratochvil@redhat.com, ralf.corsepius@rtems.org,
> > vapier@gentoo.org, joel.sherrill@oarcorp.com
> >
> > > > The
> > > > code in main.c already does
> > > >
> > > > #ifdef __MINGW32__
> > > > /* On Windows, argv[0] is not necessarily set to absolute form when
> > > > GDB is found along PATH, without which relocation doesn't work. */
> > > > gdb_program_name = windows_get_absolute_argv0 (argv[0]);
> > > > #else
> > > > gdb_program_name = xstrdup (argv[0]);
> > > > #endif
> > > >
> > > > Is moving that to posix-hdep.c just to avoid an ifdef?
> > >
> > > The main purpose is to move the code away out of windows-nat, which
> > > is only linked in native debuggers, not cross ones - so that building
> > > a cross debugger hosted on Windows will work again. Basically, your
> > > new function is really only dependent on the host, whereas the -nat
> > > file makes the assumption that host & target are Windows.
> >
> > I have added this item to the TODO list for the 7.6 release, so as not
> > to forget.
>
> Thanks.
>
> > I was wondering if this discussion was stalled, or if it was just
> > a matter of not finding the time to do the implementation.
>
> The latter.
>
> > I could possibly take care of it tomorrow if you'd like.
>
> If you have time, it's fine with me. Failing that, I will submit the
> changes in a few days.

Here they are. This is for the trunk; it undoes the previous commit
and moves the code to mingw-hdep.c.

OK to commit, including the branch (which will get a different change,
since there's no need to remove the previous commit there)?

2013-04-02 Eli Zaretskii <eliz@gnu.org>

* windows-nat.c (windows_get_absolute_argv0): Move from here...
* mingw-hdep.c (windows_get_absolute_argv0): ...to here.
Include main.h.

* windows-nat.h (windows_get_absolute_argv0): Move prototype from
here...
* main.h (windows_get_absolute_argv0): ...to here

--- gdb/windows-nat.c~1 2013-03-21 13:05:21.642985800 +0200
+++ gdb/windows-nat.c 2013-04-02 20:04:56.438612100 +0300
@@ -597,18 +597,6 @@ failed:
return 0; /* failure */
}

-/* Return an absolute file name of the running GDB, if possible, or
- ARGV0 if not. The return value is in malloc'ed storage. */
-char *
-windows_get_absolute_argv0 (const char *argv0)
-{
- char full_name[PATH_MAX];
-
- if (GetModuleFileName (NULL, full_name, PATH_MAX))
- return xstrdup (full_name);
- return xstrdup (argv0);
-}
-
/* Encapsulate the information required in a call to
symbol_file_add_args. */
struct safe_symbol_file_add_args

--- gdb/windows-nat.h~1 2013-03-21 13:05:19.068969300 +0200
+++ gdb/windows-nat.h 2013-04-02 20:05:15.626735100 +0300
@@ -28,9 +28,5 @@ typedef int (segment_register_p_ftype) (
whether a given register is a segment register or not. */
extern void windows_set_segment_register_p (segment_register_p_ftype *fun);

-/* Return argv[0] in absolute form, if possible, or ARGV0 if not. The
- return value is in malloc'ed storage. */
-extern char *windows_get_absolute_argv0 (const char *argv0);
-
#endif

--- gdb/mingw-hdep.c~1 2013-01-01 08:32:47.000000000 +0200
+++ gdb/mingw-hdep.c 2013-04-02 20:26:57.231081900 +0300
@@ -18,6 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */

#include "defs.h"
+#include "main.h"
#include "serial.h"
#include "event-loop.h"

@@ -80,6 +81,19 @@ safe_strerror (int errnum)
return buffer;
}

+/* Return an absolute file name of the running GDB, if possible, or
+ ARGV0 if not. The return value is in malloc'ed storage. */
+
+char *
+windows_get_absolute_argv0 (const char *argv0)
+{
+ char full_name[PATH_MAX];
+
+ if (GetModuleFileName (NULL, full_name, PATH_MAX))
+ return xstrdup (full_name);
+ return xstrdup (argv0);
+}
+
/* Wrapper for select. On Windows systems, where the select interface
only works for sockets, this uses the GDB serial abstraction to
handle sockets, consoles, pipes, and serial ports.

--- gdb/main.c~2 2013-03-21 13:11:43.279038500 +0200
+++ gdb/main.c 2013-04-02 20:07:51.534134500 +0300
@@ -44,9 +44,6 @@
#include "auto-load.h"

#include "filenames.h"
-#ifdef __MINGW32__
-# include "windows-nat.h"
-#endif

#include "version.h"

--- gdb/main.h~1 2013-01-01 08:32:47.000000000 +0200
+++ gdb/main.h 2013-04-02 20:25:41.837731800 +0300
@@ -36,4 +36,10 @@ extern int return_child_result_value;
extern int batch_silent;
extern int batch_flag;

+/* From mingw-hdep.c, used by main.c. */
+
+/* Return argv[0] in absolute form, if possible, or ARGV0 if not. The
+ return value is in malloc'ed storage. */
+extern char *windows_get_absolute_argv0 (const char *argv0);
+
#endif