aboutsummaryrefslogtreecommitdiff
path: root/gdb/utils.c
diff options
context:
space:
mode:
authorJim Blandy <jimb@codesourcery.com>2004-09-08 21:58:19 +0000
committerJim Blandy <jimb@codesourcery.com>2004-09-08 21:58:19 +0000
commit7b90c3f96efc132cac934b3f2b43da899d46eae0 (patch)
treec956505ed511fa6e4ec307ae552a7492570a7351 /gdb/utils.c
parent10b016c223f165a06dbd20e46307c9a0bfbf0ee2 (diff)
downloadfsf-binutils-gdb-7b90c3f96efc132cac934b3f2b43da899d46eae0.zip
fsf-binutils-gdb-7b90c3f96efc132cac934b3f2b43da899d46eae0.tar.gz
fsf-binutils-gdb-7b90c3f96efc132cac934b3f2b43da899d46eae0.tar.bz2
Fix bug reported and analyzed by Olivier Crete:
* symfile.c (copy_section_addr_info): New function. (symbol_file_add_with_addrs_or_offsets): Use it to save the original set of address arguments, instead of handwritten code that uses one length to allocate and a different length to initialize. Use make_cleanup_free_section_addr_info. * symfile.h (copy_section_addr_info): New declaration. * utils.c: #include "symfile.h". (do_free_section_addr_info, make_cleanup_free_section_addr_info): New functions. * defs.h (make_cleanup_free_section_addr_info): New declaration. * Makefile.in (utils.o): Update dependencies.
Diffstat (limited to 'gdb/utils.c')
-rw-r--r--gdb/utils.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/gdb/utils.c b/gdb/utils.c
index e350c25..10c40c7 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -51,6 +51,7 @@
#include "charset.h"
#include "annotate.h"
#include "filenames.h"
+#include "symfile.h"
#include "inferior.h" /* for signed_pointer_to_address */
@@ -260,6 +261,19 @@ make_cleanup_ui_file_delete (struct ui_file *arg)
return make_my_cleanup (&cleanup_chain, do_ui_file_delete, arg);
}
+static void
+do_free_section_addr_info (void *arg)
+{
+ free_section_addr_info (arg);
+}
+
+struct cleanup *
+make_cleanup_free_section_addr_info (struct section_addr_info *addrs)
+{
+ return make_my_cleanup (&cleanup_chain, do_free_section_addr_info, addrs);
+}
+
+
struct cleanup *
make_my_cleanup (struct cleanup **pmy_chain, make_cleanup_ftype *function,
void *arg)