This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: Small patch to enable build of gdb-7.6 for GNU/Hurd
- From: Joel Brobecker <brobecker at adacore dot com>
- To: Svante Signell <svante dot signell at gmail dot com>
- Cc: Sergio Durigan Junior <sergiodj at redhat dot com>, Pedro Alves <palves at redhat dot com>, gdb-patches at sourceware dot org
- Date: Mon, 27 May 2013 16:10:28 +0400
- Subject: Re: Small patch to enable build of gdb-7.6 for GNU/Hurd
- References: <1369326967 dot 8127 dot 33 dot camel at s1499 dot it dot kth dot se> <m3mwrlm6al dot fsf at redhat dot com> <20130524042734 dot GG4017 at adacore dot com> <519F2A7A dot 4050002 at redhat dot com> <1369386446 dot 8127 dot 51 dot camel at s1499 dot it dot kth dot se> <m3hahslp0a dot fsf at redhat dot com> <1369654913 dot 8127 dot 84 dot camel at s1499 dot it dot kth dot se>
> 2013-05-27 Svante Signell <srs@hurd-2013.my.own.domain>
>
> * nto-tdep.c (nto_init_solib_absolute_prefix): Solve build
> problems for systems not defining PATH_MAX by using xstrprintf and
> a cleanup.
Is the domain name above really valid?
> Attached is an updated patch for the build problems on systems where
> PATH_MAX is not defined.
In this case, I think you need to use what we call a "cleanup",
because execute_command might trigger an "error" (GDB's poor man's
exception mechanism), thus prevening the last xfree from releasing
buf.
A formatting nit: The GNU Coding Standard, which we follow in GDB,
requires a space before opening parens.
While looking at this code, I don't think you'll need 2 xstrprintf
either. Can you try the attached patch?
--
Joel
diff --git a/gdb/nto-tdep.c b/gdb/nto-tdep.c
index 748869f..cf4fd60 100644
--- a/gdb/nto-tdep.c
+++ b/gdb/nto-tdep.c
@@ -147,9 +147,10 @@ nto_find_and_open_solib (char *solib, unsigned o_flags, char **temp_pathname)
void
nto_init_solib_absolute_prefix (void)
{
- char buf[PATH_MAX * 2], arch_path[PATH_MAX];
+ char buf;
char *nto_root, *endian;
const char *arch;
+ struct cleanup *old_chain;
nto_root = nto_target ();
if (strcmp (gdbarch_bfd_arch_info (target_gdbarch ())->arch_name, "i386") == 0)
@@ -172,10 +173,11 @@ nto_init_solib_absolute_prefix (void)
== BFD_ENDIAN_BIG ? "be" : "le";
}
- xsnprintf (arch_path, sizeof (arch_path), "%s/%s%s", nto_root, arch, endian);
-
- xsnprintf (buf, sizeof (buf), "set solib-absolute-prefix %s", arch_path);
+ buf = xstrprintf ("set solib-absolute-prefix \"%s/%s%s\"",
+ nto_root, arch, endian);
+ old_chain = make_cleanup (xfree, buf);
execute_command (buf, 0);
+ make_cleanup (old_chain);
}
char **