/* Definitions for symbol file management in GDB.
- Copyright (C) 1992-2013 Free Software Foundation, Inc.
+ Copyright (C) 1992-2014 Free Software Foundation, Inc.
This file is part of GDB.
struct entry_info
{
- /* The relocated value we should use for this objfile entry point. */
+ /* The unrelocated value we should use for this objfile entry point. */
CORE_ADDR entry_point;
+ /* The index of the section in which the entry point appears. */
+ int the_bfd_section_index;
+
/* Set to 1 iff ENTRY_POINT contains a valid value. */
unsigned entry_point_p : 1;
+
+ /* Set to 1 iff this object was initialized. */
+ unsigned initialized : 1;
};
/* Sections in an objfile. The section offsets are stored in the
/* Byte cache for macros. */
struct bcache *macro_cache;
+
+ /* The gdbarch associated with the BFD. Note that this gdbarch is
+ determined solely from BFD information, without looking at target
+ information. The gdbarch determined from a running target may
+ differ from this e.g. with respect to register types and names. */
+
+ struct gdbarch *gdbarch;
+
+ /* Hash table for mapping symbol names to demangled names. Each
+ entry in the hash table is actually two consecutive strings,
+ both null-terminated; the first one is a mangled or linkage
+ name, and the second is the demangled name or just a zero byte
+ if the name doesn't demangle. */
+ struct htab *demangled_names_hash;
+
+ /* The per-objfile information about the entry point, the scope (file/func)
+ containing the entry point, and the scope of the user's main() func. */
+
+ struct entry_info ei;
+
+ /* The name and language of any "main" found in this objfile. The
+ name can be NULL, which means that the information was not
+ recorded. */
+
+ const char *name_of_main;
+ enum language language_of_main;
};
/* Master structure for keeping track of each file from which
struct objfile *next;
- /* The object file's name, tilde-expanded and absolute. This
- pointer is never NULL. This does not have to be freed; it is
+ /* The object file's original name as specified by the user,
+ made absolute, and tilde-expanded. However, it is not canonicalized
+ (i.e., it has not been passed through gdb_realpath).
+ This pointer is never NULL. This does not have to be freed; it is
guaranteed to have a lifetime at least as long as the objfile. */
- char *name;
+ char *original_name;
CORE_ADDR addr_low;
struct objfile_per_bfd_storage *per_bfd;
- /* The gdbarch associated with the BFD. Note that this gdbarch is
- determined solely from BFD information, without looking at target
- information. The gdbarch determined from a running target may
- differ from this e.g. with respect to register types and names. */
-
- struct gdbarch *gdbarch;
-
/* The modification timestamp of the object file, as of the last time
we read its symbols. */
struct psymbol_bcache *psymbol_cache; /* Byte cache for partial syms. */
- /* Hash table for mapping symbol names to demangled names. Each
- entry in the hash table is actually two consecutive strings,
- both null-terminated; the first one is a mangled or linkage
- name, and the second is the demangled name or just a zero byte
- if the name doesn't demangle. */
- struct htab *demangled_names_hash;
-
/* Vectors of all partial symbols read in from file. The actual data
is stored in the objfile_obstack. */
const struct sym_fns *sf;
- /* The per-objfile information about the entry point, the scope (file/func)
- containing the entry point, and the scope of the user's main() func. */
-
- struct entry_info ei;
-
/* Per objfile data-pointers required by other GDB modules. */
REGISTRY_FIELDS;
#define OBJF_MAINLINE (1 << 5)
-/* The object file that contains the runtime common minimal symbols
- for SunOS4. Note that this objfile has no associated BFD. */
+/* ORIGINAL_NAME and OBFD->FILENAME correspond to text description unrelated to
+ filesystem names. It can be for example "<image in memory>". */
-extern struct objfile *rt_common_objfile;
+#define OBJF_NOT_FILENAME (1 << 6)
/* Declarations for functions defined in objfiles.c */
-extern struct objfile *allocate_objfile (bfd *, int);
+extern struct objfile *allocate_objfile (bfd *, const char *name, int);
extern struct gdbarch *get_objfile_arch (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 int have_full_symbols (void);
+extern void objfile_set_sym_fns (struct objfile *objfile,
+ const struct sym_fns *sf);
+
extern void objfiles_changed (void);
+extern int is_addr_in_objfile (CORE_ADDR addr, const struct objfile *objfile);
+
/* This operation deletes all objfile entries that represent solibs that
weren't explicitly loaded by the user, via e.g., the add-symbol-file
command. */
void set_objfile_per_bfd (struct objfile *obj);
+const char *objfile_name (const struct objfile *objfile);
+
+/* Set the objfile's notion of the "main" name and language. */
+
+extern void set_objfile_main_name (struct objfile *objfile,
+ const char *name, enum language lang);
+
#endif /* !defined (OBJFILES_H) */