aboutsummaryrefslogtreecommitdiff
path: root/gdb/dwarf2read.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2017-12-11 13:24:32 +0000
committerPedro Alves <palves@redhat.com>2017-12-11 14:41:32 +0000
commit3c0aa29aab3949363f8b23d062c2e0cb1ccf017a (patch)
tree2722efa4a210635dcd5a9534a80dc37753c6c05a /gdb/dwarf2read.c
parentf2f9e7ecc1f02bfe5da83c38cf356ea96d428c6d (diff)
downloadgdb-3c0aa29aab3949363f8b23d062c2e0cb1ccf017a.zip
gdb-3c0aa29aab3949363f8b23d062c2e0cb1ccf017a.tar.gz
gdb-3c0aa29aab3949363f8b23d062c2e0cb1ccf017a.tar.bz2
Unbreak build for non-ELF ports
As reported at <https://sourceware.org/ml/gdb-patches/2017-12/msg00229.html>, this commit: ~~~~ commit abccd1e7b7a37385159610ca4e0bc2632a547e9a Author: Jan Kratochvil <jan.kratochvil@redhat.com> AuthorDate: Fri Dec 8 22:44:11 2017 +0000 Change dwarf2_initialize_objfile's return value dwarf2_initialize_objfile was returning boolean whether it is psymtabs or .gdb_index while now it needs to return also whether it is .debug_names. ~~~~ breaks non-ELF-target builds: dwarf2read.o: In function `dwarf2_initialize_objfile(objfile*)': /home/yao.qi/SourceCode/gnu/binutils-gdb/gdb/dwarf2read.c:6486: undefined reference to `elf_sym_fns_gdb_index' /home/yao.qi/SourceCode/gnu/binutils-gdb/gdb/dwarf2read.c:6490: undefined reference to `elf_sym_fns_debug_names' /home/yao.qi/SourceCode/gnu/binutils-gdb/gdb/dwarf2read.c:6495: undefined reference to `elf_sym_fns_lazy_psyms' collect2: error: ld returned 1 exit status Makefile:1920: recipe for target 'gdb' failed because gdb/elfread.c is not included in the gdb build unless bfd also includes elf support. Fix this by reverting the patch mentioned above and at the same time re-adding .debug_names support by adding a new output parameter to dwarf2_initialize_objfile to indicate the index variant in use. We can reuse the new dw_index_kind enum in dwarf2read.c for that. gdb/ChangeLog: 2017-12-11 Pedro Alves <palves@redhat.com> * defs.h (elf_sym_fns_lazy_psyms, elf_sym_fns_gdb_index) (elf_sym_fns_debug_names): Move to elfread.c. * dwarf2read.c (dwarf2_initialize_objfile): Return a boolean instead of a sym_fns and add 'index_kind' output parameter. Fill the latter in with the index variant kind if using an index. (enum dw_index_kind): Moved to symfile.h. * elfread.c (elf_sym_fns_gdb_index, elf_sym_fns_debug_names) (elf_sym_fns_lazy_psyms): Move from defs.h. (elf_symfile_read): Adjust to new dwarf2_initialize_objfile interface. * symfile.h (enum class dw_index_kind): New, moved from dwarf2read.c. (dwarf2_initialize_objfile): Change prototype.
Diffstat (limited to 'gdb/dwarf2read.c')
-rw-r--r--gdb/dwarf2read.c32
1 files changed, 14 insertions, 18 deletions
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 2aeb506..b4e60a4 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -6451,11 +6451,10 @@ const struct quick_symbol_functions dwarf2_debug_names_functions =
dw2_map_symbol_filenames
};
-/* Initialize for reading DWARF for this objfile. Return 0 if this
- file will use psymtabs, or 1 if using the GNU index. */
+/* See symfile.h. */
-const sym_fns &
-dwarf2_initialize_objfile (struct objfile *objfile)
+bool
+dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
{
/* If we're about to read full symbols, don't bother with the
indices. In this case we also don't care if some other debug
@@ -6483,16 +6482,23 @@ dwarf2_initialize_objfile (struct objfile *objfile)
/* Return 1 so that gdb sees the "quick" functions. However,
these functions will be no-ops because we will have expanded
all symtabs. */
- return elf_sym_fns_gdb_index;
+ *index_kind = dw_index_kind::GDB_INDEX;
+ return true;
}
if (dwarf2_read_debug_names (objfile))
- return elf_sym_fns_debug_names;
+ {
+ *index_kind = dw_index_kind::DEBUG_NAMES;
+ return true;
+ }
if (dwarf2_read_index (objfile))
- return elf_sym_fns_gdb_index;
+ {
+ *index_kind = dw_index_kind::GDB_INDEX;
+ return true;
+ }
- return elf_sym_fns_lazy_psyms;
+ return false;
}
@@ -26799,16 +26805,6 @@ assert_file_size (FILE *file, const char *filename, size_t expected_size)
gdb_assert (file_size == expected_size);
}
-/* An index variant. */
-enum dw_index_kind
-{
- /* GDB's own .gdb_index format. */
- GDB_INDEX,
-
- /* DWARF5 .debug_names. */
- DEBUG_NAMES,
-};
-
/* Create an index file for OBJFILE in the directory DIR. */
static void