Sun Oct 24 20:16:38 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
* parse.c, parser-defs.h (write_exp_msymbol): New function to write the appropriate expression for a minimal symbol. * c-exp.y, m2-exp.y: Use it.
This commit is contained in:
parent
94c74a0c22
commit
abe28b9214
|
@ -1,3 +1,10 @@
|
|||
Sun Oct 24 20:16:38 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
|
||||
|
||||
* parse.c, parser-defs.h (write_exp_msymbol): New function to write
|
||||
the appropriate expression for a minimal symbol. Taken from c-exp.y
|
||||
and m2-exp.y but handles mst_file_*.
|
||||
* c-exp.y, m2-exp.y: Use it.
|
||||
|
||||
Sun Oct 24 09:31:05 1993 Fred Fish (fnf@lisa.cygnus.com)
|
||||
|
||||
* elfread.c (elf_symtab_read): Use bfd convention that both
|
||||
|
|
34
gdb/c-exp.y
34
gdb/c-exp.y
|
@ -38,8 +38,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
|||
|
||||
#include "defs.h"
|
||||
#include "expression.h"
|
||||
#include "parser-defs.h"
|
||||
#include "value.h"
|
||||
#include "parser-defs.h"
|
||||
#include "language.h"
|
||||
#include "c-lang.h"
|
||||
#include "bfd.h" /* Required by objfiles.h. */
|
||||
|
@ -635,19 +635,9 @@ variable: qualified_name
|
|||
(struct objfile *) NULL);
|
||||
if (msymbol != NULL)
|
||||
{
|
||||
write_exp_elt_opcode (OP_LONG);
|
||||
write_exp_elt_type (builtin_type_long);
|
||||
write_exp_elt_longcst ((LONGEST) SYMBOL_VALUE_ADDRESS (msymbol));
|
||||
write_exp_elt_opcode (OP_LONG);
|
||||
write_exp_elt_opcode (UNOP_MEMVAL);
|
||||
if (msymbol -> type == mst_data ||
|
||||
msymbol -> type == mst_bss)
|
||||
write_exp_elt_type (builtin_type_int);
|
||||
else if (msymbol -> type == mst_text)
|
||||
write_exp_elt_type (lookup_function_type (builtin_type_int));
|
||||
else
|
||||
write_exp_elt_type (builtin_type_char);
|
||||
write_exp_elt_opcode (UNOP_MEMVAL);
|
||||
write_exp_msymbol (msymbol,
|
||||
lookup_function_type (builtin_type_int),
|
||||
builtin_type_int);
|
||||
}
|
||||
else
|
||||
if (!have_full_symbols () && !have_partial_symbols ())
|
||||
|
@ -701,19 +691,9 @@ variable: name_not_typename
|
|||
(struct objfile *) NULL);
|
||||
if (msymbol != NULL)
|
||||
{
|
||||
write_exp_elt_opcode (OP_LONG);
|
||||
write_exp_elt_type (builtin_type_long);
|
||||
write_exp_elt_longcst ((LONGEST) SYMBOL_VALUE_ADDRESS (msymbol));
|
||||
write_exp_elt_opcode (OP_LONG);
|
||||
write_exp_elt_opcode (UNOP_MEMVAL);
|
||||
if (msymbol -> type == mst_data ||
|
||||
msymbol -> type == mst_bss)
|
||||
write_exp_elt_type (builtin_type_int);
|
||||
else if (msymbol -> type == mst_text)
|
||||
write_exp_elt_type (lookup_function_type (builtin_type_int));
|
||||
else
|
||||
write_exp_elt_type (builtin_type_char);
|
||||
write_exp_elt_opcode (UNOP_MEMVAL);
|
||||
write_exp_msymbol (msymbol,
|
||||
lookup_function_type (builtin_type_int),
|
||||
builtin_type_int);
|
||||
}
|
||||
else if (!have_full_symbols () && !have_partial_symbols ())
|
||||
error ("No symbol table is loaded. Use the \"file\" command.");
|
||||
|
|
20
gdb/m2-exp.y
20
gdb/m2-exp.y
|
@ -623,23 +623,13 @@ variable: NAME
|
|||
struct minimal_symbol *msymbol;
|
||||
register char *arg = copy_name ($1);
|
||||
|
||||
msymbol = lookup_minimal_symbol (arg,
|
||||
(struct objfile *) NULL);
|
||||
msymbol = lookup_minimal_symbol (arg, NULL);
|
||||
if (msymbol != NULL)
|
||||
{
|
||||
write_exp_elt_opcode (OP_LONG);
|
||||
write_exp_elt_type (builtin_type_long);
|
||||
write_exp_elt_longcst ((LONGEST) SYMBOL_VALUE_ADDRESS (msymbol));
|
||||
write_exp_elt_opcode (OP_LONG);
|
||||
write_exp_elt_opcode (UNOP_MEMVAL);
|
||||
if (msymbol -> type == mst_data ||
|
||||
msymbol -> type == mst_bss)
|
||||
write_exp_elt_type (builtin_type_int);
|
||||
else if (msymbol -> type == mst_text)
|
||||
write_exp_elt_type (lookup_function_type (builtin_type_int));
|
||||
else
|
||||
write_exp_elt_type (builtin_type_char);
|
||||
write_exp_elt_opcode (UNOP_MEMVAL);
|
||||
write_exp_msymbol
|
||||
(msymbol,
|
||||
lookup_function_type (builtin_type_int),
|
||||
builtin_type_int);
|
||||
}
|
||||
else if (!have_full_symbols () && !have_partial_symbols ())
|
||||
error ("No symbol table is loaded. Use the \"symbol-file\" command.");
|
||||
|
|
36
gdb/parse.c
36
gdb/parse.c
|
@ -338,6 +338,42 @@ write_exp_bitstring (str)
|
|||
expout_ptr += lenelt - 2;
|
||||
write_exp_elt_longcst ((LONGEST) bits);
|
||||
}
|
||||
|
||||
/* Add the appropriate elements for a minimal symbol to the end of
|
||||
the expression. */
|
||||
|
||||
void
|
||||
write_exp_msymbol (msymbol, text_symbol_type, data_symbol_type)
|
||||
struct minimal_symbol *msymbol;
|
||||
struct type *text_symbol_type;
|
||||
struct type *data_symbol_type;
|
||||
{
|
||||
write_exp_elt_opcode (OP_LONG);
|
||||
write_exp_elt_type (builtin_type_long);
|
||||
write_exp_elt_longcst ((LONGEST) SYMBOL_VALUE_ADDRESS (msymbol));
|
||||
write_exp_elt_opcode (OP_LONG);
|
||||
|
||||
write_exp_elt_opcode (UNOP_MEMVAL);
|
||||
switch (msymbol -> type)
|
||||
{
|
||||
case mst_text:
|
||||
case mst_file_text:
|
||||
write_exp_elt_type (text_symbol_type);
|
||||
break;
|
||||
|
||||
case mst_data:
|
||||
case mst_file_data:
|
||||
case mst_bss:
|
||||
case mst_file_bss:
|
||||
write_exp_elt_type (data_symbol_type);
|
||||
break;
|
||||
|
||||
default:
|
||||
write_exp_elt_type (builtin_type_char);
|
||||
break;
|
||||
}
|
||||
write_exp_elt_opcode (UNOP_MEMVAL);
|
||||
}
|
||||
|
||||
/* Return a null-terminated temporary copy of the name
|
||||
of a string token. */
|
||||
|
|
|
@ -105,6 +105,9 @@ extern void write_exp_bitstring PARAMS ((struct stoken));
|
|||
|
||||
extern void write_exp_elt_block PARAMS ((struct block *));
|
||||
|
||||
extern void write_exp_msymbol PARAMS ((struct minimal_symbol *,
|
||||
struct type *, struct type *));
|
||||
|
||||
extern void
|
||||
start_arglist PARAMS ((void));
|
||||
|
||||
|
|
Loading…
Reference in New Issue