summaryrefslogtreecommitdiff
path: root/gdb/elfread.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/elfread.c')
-rw-r--r--gdb/elfread.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/gdb/elfread.c b/gdb/elfread.c
index 7aee37cc5db..fd4c9566dbf 100644
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
@@ -141,6 +141,12 @@ record_minimal_symbol_and_info (char *name, CORE_ADDR address,
if (ms_type == mst_text || ms_type == mst_file_text)
address = SMASH_TEXT_ADDRESS (address);
+#ifdef DROP_TEXT_NAME_PREFIX_CHAR
+ if ((ms_type == mst_text || ms_type == mst_file_text)
+ && name[0] == DROP_TEXT_NAME_PREFIX_CHAR)
+ ++name;
+#endif /* DROP_TEXT_NAME_PREFIX_CHAR */
+
return prim_record_minimal_symbol_and_info
(name, address, ms_type, info, bfd_section->index, bfd_section, objfile);
}
@@ -363,6 +369,10 @@ elf_symtab_read (struct objfile *objfile, int dynamic)
{
if (sym->section->flags & SEC_LOAD)
{
+#ifdef SKIP_DATA_IN_OPD
+ if (strcmp(sym->section->name, ".opd") == 0)
+ continue;
+#endif /* SKIP_DATA_IN_OPD */
ms_type = mst_data;
}
else
@@ -444,6 +454,10 @@ elf_symtab_read (struct objfile *objfile, int dynamic)
symbol processing. */
if (sym->section->flags & SEC_LOAD)
{
+#ifdef SKIP_DATA_IN_OPD
+ if (strcmp(sym->section->name, ".opd") == 0)
+ continue;
+#endif /* SKIP_DATA_IN_OPD */
ms_type = mst_file_data;
}
else