X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=gdb%2Fobjfiles.h;fp=gdb%2Fobjfiles.h;h=c689622729666838bb22cd74a2ed7a35e9990e25;hb=cf6af2c9824156c4e38f21d1ac1234d3bd6314c3;hp=cf5fc38624d9352316244dfaa9ab08559854ccd8;hpb=ae4bf010374a9320497af260fa90af3fe8e2c5a5;p=pf3gnuchains%2Fpf3gnuchains3x.git diff --git a/gdb/objfiles.h b/gdb/objfiles.h index cf5fc38624..c689622729 100644 --- a/gdb/objfiles.h +++ b/gdb/objfiles.h @@ -363,15 +363,25 @@ struct objfile struct obj_section *sections, *sections_end; - /* Link to objfile that contains the debug symbols for this one. - One is loaded if this file has an debug link to an existing - debug file with the right checksum */ + /* GDB allows to have debug symbols in separate object files. This is + used by .gnu_debuglink, ELF build id note and Mach-O OSO. + Although this is a tree structure, GDB only support one level + (ie a separate debug for a separate debug is not supported). Note that + separate debug object are in the main chain and therefore will be + visited by ALL_OBJFILES & co iterators. Separate debug objfile always + has a non-nul separate_debug_objfile_backlink. */ + + /* Link to the first separate debug object, if any. */ struct objfile *separate_debug_objfile; /* If this is a separate debug object, this is used as a link to the actual executable objfile. */ struct objfile *separate_debug_objfile_backlink; - + + /* If this is a separate debug object, this is a link to the next one + for the same executable objfile. */ + struct objfile *separate_debug_objfile_link; + /* Place to stash various statistics about this objfile */ OBJSTATS; @@ -452,14 +462,21 @@ extern int build_objfile_section_table (struct objfile *); extern void terminate_minimal_symbol_table (struct objfile *objfile); +extern struct objfile *objfile_separate_debug_iterate (const struct objfile *, + const struct objfile *); + extern void put_objfile_before (struct objfile *, struct objfile *); extern void objfile_to_front (struct objfile *); +extern void add_separate_debug_objfile (struct objfile *, struct objfile *); + extern void unlink_objfile (struct objfile *); extern void free_objfile (struct objfile *); +extern void free_objfile_separate_debug (struct objfile *); + extern struct cleanup *make_cleanup_free_objfile (struct objfile *); extern void free_all_objfiles (void);