aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Blandy <jimb@codesourcery.com>2003-01-23 08:06:36 +0000
committerJim Blandy <jimb@codesourcery.com>2003-01-23 08:06:36 +0000
commit7904e09f8fc9327521760fa66df8c6252f36582d (patch)
tree901f64e6cd88f524302cb0cf15d80e0307d8cb96
parent7e8580c13a90f01fea31684d783b31bc87329b1c (diff)
downloadgdb-7904e09f8fc9327521760fa66df8c6252f36582d.zip
gdb-7904e09f8fc9327521760fa66df8c6252f36582d.tar.gz
gdb-7904e09f8fc9327521760fa66df8c6252f36582d.tar.bz2
* symfile.c (symbol_file_add_with_addrs_or_offsets): New function,
like the old symbol_file_add, but taking new arguments: you can now pass in either a `struct section_addr_info' list to say where each section is loaded, or a `struct section_offsets' table. Pass these new arguments through to syms_from_objfile as appropriate. (symbol_file_add): Just call symbol_file_add_with_addrs_or_offsets, with the appropriate quiescent values for the new arguments.
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/symfile.c39
2 files changed, 38 insertions, 9 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 81e1f69..86bb5fb 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,13 @@
2003-01-22 Jim Blandy <jimb@redhat.com>
+ * symfile.c (symbol_file_add_with_addrs_or_offsets): New function,
+ like the old symbol_file_add, but taking new arguments: you can
+ now pass in either a `struct section_addr_info' list to say where
+ each section is loaded, or a `struct section_offsets' table. Pass
+ these new arguments through to syms_from_objfile as appropriate.
+ (symbol_file_add): Just call symbol_file_add_with_addrs_or_offsets,
+ with the appropriate quiescent values for the new arguments.
+
* symfile.c: #include "gdb_assert.h".
(syms_from_objfile): Add the ability to pass in a section offset
table directly, as an alternative to the section_addr_info table.
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 1cc5d50..a610ae0 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -867,17 +867,24 @@ new_symfile_objfile (struct objfile *objfile, int mainline, int verbo)
NAME is the file name (which will be tilde-expanded and made
absolute herein) (but we don't free or modify NAME itself).
- FROM_TTY says how verbose to be. MAINLINE specifies whether this
- is the main symbol file, or whether it's an extra symbol file such
- as dynamically loaded code. If !mainline, ADDR is the address
- where the text segment was loaded.
+
+ FROM_TTY says how verbose to be.
+
+ MAINLINE specifies whether this is the main symbol file, or whether
+ it's an extra symbol file such as dynamically loaded code.
+
+ ADDRS, OFFSETS, and NUM_OFFSETS are as described for
+ syms_from_objfile, above. ADDRS is ignored when MAINLINE is
+ non-zero.
Upon success, returns a pointer to the objfile that was added.
Upon failure, jumps back to command level (never returns). */
-
-struct objfile *
-symbol_file_add (char *name, int from_tty, struct section_addr_info *addrs,
- int mainline, int flags)
+static struct objfile *
+symbol_file_add_with_addrs_or_offsets (char *name, int from_tty,
+ struct section_addr_info *addrs,
+ struct section_offsets *offsets,
+ int num_offsets,
+ int mainline, int flags)
{
struct objfile *objfile;
struct partial_symtab *psymtab;
@@ -930,7 +937,8 @@ symbol_file_add (char *name, int from_tty, struct section_addr_info *addrs,
gdb_flush (gdb_stdout);
}
}
- syms_from_objfile (objfile, addrs, 0, 0, mainline, from_tty);
+ syms_from_objfile (objfile, addrs, offsets, num_offsets,
+ mainline, from_tty);
}
/* We now have at least a partial symbol table. Check to see if the
@@ -981,6 +989,19 @@ symbol_file_add (char *name, int from_tty, struct section_addr_info *addrs,
return (objfile);
}
+
+/* Process a symbol file, as either the main file or as a dynamically
+ loaded file. See symbol_file_add_with_addrs_or_offsets's comments
+ for details. */
+struct objfile *
+symbol_file_add (char *name, int from_tty, struct section_addr_info *addrs,
+ int mainline, int flags)
+{
+ return symbol_file_add_with_addrs_or_offsets (name, from_tty, addrs, 0, 0,
+ mainline, flags);
+}
+
+
/* Call symbol_file_add() with default values and update whatever is
affected by the loading of a new main().
Used when the file is supplied in the gdb command line