From 7904e09f8fc9327521760fa66df8c6252f36582d Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Thu, 23 Jan 2003 08:06:36 +0000 Subject: [PATCH] * 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. --- gdb/ChangeLog | 8 ++++++++ gdb/symfile.c | 39 ++++++++++++++++++++++++++++++--------- 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 81e1f69e924..86bb5fb4526 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,13 @@ 2003-01-22 Jim Blandy + * 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 1cc5d502048..a610ae015ed 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 -- 2.30.2