This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: RFC: solib.c:solib_map_sections so->so_name clobbering
- From: Joel Brobecker <brobecker at adacore dot com>
- To: Tom Tromey <tromey at redhat dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Thu, 28 Mar 2013 16:27:24 -0700
- Subject: Re: RFC: solib.c:solib_map_sections so->so_name clobbering
- References: <87r4s83lu5 dot fsf at fleche dot redhat dot com> <20130328011107 dot GA17105 at adacore dot com> <87li97cz5j dot fsf at fleche dot redhat dot com>
> Joel> What do you (or others!) think? I am happy to test and submit a proper
> Joel> patch.
>
> It sounds reasonable to me.
> I'm sorry about the mess here.
Thanks for the feedback, and really you should not feel sorry at all.
It wasn't your mess :-). And the good news is that I feel like we are
slowly making it better.
Attached is the patch I tested on x86_64-linux. I am off next week,
but I will also apply it to AdaCore's version of GDB to get some
exposure on all the targets that we support. JIC. That will give
more time for others to comment as well, if needed.
gdb/ChangeLog:
* solib.c (solib_map_sections): Remove code overwriting
SO->SO_NAME with the bfd's filename.
> Joel> We wouldn't be able to use a patch like this on the 7.6 branch,
> Joel> so for Darwin, I'd restore the xstrdup below - it would be a memory
> Joel> leak, but better to have a leak than not having the shared library name,
> Joel> IMO.
>
> You can make it not leak by using bfd_alloc.
Neat! I will try that before I go.
Thanks again,
--
Joel
>From f7bd26fcfdbcde492d4da15d291115d714f5febd Mon Sep 17 00:00:00 2001
From: Joel Brobecker <brobecker@adacore.com>
Date: Thu, 28 Mar 2013 16:23:06 -0700
Subject: [PATCH] Do not overwrite so_list's so_name in solib_map_sections
gdb/ChangeLog:
* solib.c (solib_map_sections): Remove code overwriting
SO->SO_NAME with the bfd's filename.
---
gdb/solib.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/gdb/solib.c b/gdb/solib.c
index 8129c0f..6978677 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -465,12 +465,6 @@ solib_map_sections (struct so_list *so)
/* Leave bfd open, core_xfer_memory and "info files" need it. */
so->abfd = abfd;
- /* copy full path name into so_name, so that later symbol_file_add
- can find it. */
- if (strlen (bfd_get_filename (abfd)) >= SO_NAME_MAX_PATH_SIZE)
- error (_("Shared library file name is too long."));
- strcpy (so->so_name, bfd_get_filename (abfd));
-
if (build_section_table (abfd, &so->sections, &so->sections_end))
{
error (_("Can't find the file sections in `%s': %s"),
--
1.7.10.4