This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: RFC: Allow symbol_file_add to take section_offsets table
- From: Jim Blandy <jimb at redhat dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: 23 Jan 2003 14:17:20 -0500
- Subject: Re: RFC: Allow symbol_file_add to take section_offsets table
- References: <vt2wun1vy4h.fsf@zenia.red-bean.com>
I've committed this change. There should be no user-visible change in
behavior.
Jim Blandy <jimb@redhat.com> writes:
> 2002-11-25 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.
>
> Index: gdb/symfile.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/symfile.c,v
> retrieving revision 1.74.2.1
> diff -u -r1.74.2.1 symfile.c
> --- gdb/symfile.c 26 Nov 2002 02:32:13 -0000 1.74.2.1
> +++ gdb/symfile.c 26 Nov 2002 02:36:47 -0000
> @@ -866,17 +866,24 @@
>
> 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;
> @@ -929,7 +936,8 @@
> 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
> @@ -979,6 +987,19 @@
>
> 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().