aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog13
-rw-r--r--gdb/dbxread.c19
-rw-r--r--gdb/f-valprint.c11
-rw-r--r--gdb/xcoffread.c11
4 files changed, 40 insertions, 14 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index f8313e0..6284d3c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,16 @@
+Wed Sep 14 14:26:21 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
+
+ * xcoffread.c (read_xcoff_symtab): Fix obsolete comment about
+ mst_solib_trampoline.
+
+ * f-valprint.c (f_val_print): Change cast of valaddr from
+ CORE_ADDR * to char **, since that is how it is used.
+
+ * dbxread.c (read_dbx_dynamic_symtab): Save copy of symbol names
+ using obsavestring, and pass that to prim_record_minimal_symbol.
+ Having the objfile point to bfd_asymbol_name directly doesn't work
+ if we save and restore a mapped symbol file.
+
Wed Sep 14 00:55:26 1994 Stu Grossman (grossman@cygnus.com)
* gdbtk.tcl: Add ref counts to breakpoint tags.
diff --git a/gdb/dbxread.c b/gdb/dbxread.c
index 4ee97f3..a0a9820 100644
--- a/gdb/dbxread.c
+++ b/gdb/dbxread.c
@@ -898,6 +898,7 @@ read_dbx_dynamic_symtab (section_offsets, objfile)
long dynrel_count;
arelent **dynrels;
CORE_ADDR sym_value;
+ char *name;
/* Check that the symbol file has dynamic symbols that we know about.
bfd_arch_unknown can happen if we are reading a sun3 symbol file
@@ -960,8 +961,12 @@ read_dbx_dynamic_symtab (section_offsets, objfile)
if (sym->flags & BSF_GLOBAL)
type |= N_EXT;
- record_minimal_symbol ((char *) bfd_asymbol_name (sym), sym_value,
- type, objfile);
+ name = (char *) bfd_asymbol_name (sym);
+ record_minimal_symbol
+ (obsavestring (name, strlen (name), &objfile -> symbol_obstack),
+ sym_value,
+ type,
+ objfile);
}
}
@@ -1013,10 +1018,12 @@ read_dbx_dynamic_symtab (section_offsets, objfile)
continue;
}
- prim_record_minimal_symbol (bfd_asymbol_name (*rel->sym_ptr_ptr),
- address,
- mst_solib_trampoline,
- objfile);
+ name = bfd_asymbol_name (*rel->sym_ptr_ptr);
+ prim_record_minimal_symbol
+ (obsavestring (name, strlen (name), &objfile -> symbol_obstack),
+ address,
+ mst_solib_trampoline,
+ objfile);
}
do_cleanups (back_to);
diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c
index 2f2bd14..57d8ec1 100644
--- a/gdb/f-valprint.c
+++ b/gdb/f-valprint.c
@@ -455,10 +455,13 @@ f_val_print (type, valaddr, address, stream, format, deref_ref, recurse,
and for straight literals (i.e. of the form 'hello world'),
valaddr points a ptr to VALUE_LITERAL_DATA(value). */
- /* First dereference valaddr. */
-
- straddr = * (CORE_ADDR *) valaddr;
-
+ /* First dereference valaddr. This relies on valaddr pointing to the
+ aligner union of a struct value (so we are now fetching the
+ literal_data pointer from that union). FIXME: Is this always
+ true. */
+
+ straddr = * (char **) valaddr;
+
if (straddr)
{
len = TYPE_LENGTH (type);
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c
index a40aa8f..7a0f4c5 100644
--- a/gdb/xcoffread.c
+++ b/gdb/xcoffread.c
@@ -1373,9 +1373,12 @@ function_entry_point:
breakpoints, using malloc, etc). On the other side, this is
consistient with gdb's behaviour on a SUN platform. */
- /* Trying to prefer *real* function entry over its trampoline,
- by assigning `mst_solib_trampoline' type to trampoline entries
- fails. Gdb treats those entries as chars. FIXME. */
+ /* FIXME: I think this code is using "<trampoline>" instead of
+ the real name because there didn't used to be a way to prefer
+ mst_text symbols over mst_solib_trampoline symbols (in fact,
+ it was using mst_unknown because mst_solib_trampoline didn't
+ exist yet). Using the real name would cause better output
+ from print_address. */
/* Recording this entry is necessary. Single stepping relies on
this vector to get an idea about function address boundaries. */
@@ -1386,7 +1389,7 @@ function_entry_point:
#else
/* record trampoline code entries as mst_solib_trampoline symbol.
- When we lookup mst symbols, we will choose mst_text over
+ When we lookup minimal symbols, we will choose mst_text over
mst_solib_trampoline. */
RECORD_MINIMAL_SYMBOL (cs->c_name, cs->c_value,