From d92f3f08532e6db15a10edbb7214e1b1d2b5d9a1 Mon Sep 17 00:00:00 2001 From: Jim Kingdon Date: Thu, 27 Jan 1994 01:23:50 +0000 Subject: [PATCH] * parse.c (write_exp_msymbol): Use new type msymbol_addr_type instead of builtin_type_long. It is necessary to get a type which is TARGET_PTR_BIT bits in size; builtin_type_long might not be big enough. --- gdb/ChangeLog | 4 ++++ gdb/parse.c | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 36bae5238d..7bfbdfcec9 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,9 @@ Wed Jan 26 10:57:21 1994 Jim Kingdon (kingdon@lioth.cygnus.com) + * parse.c (write_exp_msymbol): Use new type msymbol_addr_type instead + of builtin_type_long. It is necessary to get a type which is + TARGET_PTR_BIT bits in size; builtin_type_long might not be big enough. + Fix many sins which will come up in 32 bit x 64 bit GDB, and various miscellaneous things discovered in the process: * printcmd.c, defs.h (print_address_numeric): New function. diff --git a/gdb/parse.c b/gdb/parse.c index ca9bcc8c9b..f53be7ea06 100644 --- a/gdb/parse.c +++ b/gdb/parse.c @@ -1,5 +1,5 @@ /* Parse expressions for GDB. - Copyright (C) 1986, 1989, 1990, 1991 Free Software Foundation, Inc. + Copyright (C) 1986, 1989, 1990, 1991, 1994 Free Software Foundation, Inc. Modified from expread.y by the Department of Computer Science at the State University of New York at Buffalo, 1991. @@ -339,6 +339,10 @@ write_exp_bitstring (str) write_exp_elt_longcst ((LONGEST) bits); } +/* Type that corresponds to the address given in a minimal symbol. */ + +static struct type *msymbol_addr_type; + /* Add the appropriate elements for a minimal symbol to the end of the expression. */ @@ -349,7 +353,7 @@ write_exp_msymbol (msymbol, text_symbol_type, data_symbol_type) struct type *data_symbol_type; { write_exp_elt_opcode (OP_LONG); - write_exp_elt_type (builtin_type_long); + write_exp_elt_type (msymbol_addr_type); write_exp_elt_longcst ((LONGEST) SYMBOL_VALUE_ADDRESS (msymbol)); write_exp_elt_opcode (OP_LONG); @@ -860,4 +864,11 @@ _initialize_parse () type_stack_depth = 0; type_stack = (union type_stack_elt *) xmalloc (type_stack_size * sizeof (*type_stack)); + + /* We don't worry too much about what the name of this type is + because the name should rarely appear in output to the user. */ + + msymbol_addr_type = + init_type (TYPE_CODE_PTR, TARGET_PTR_BIT / HOST_CHAR_BIT, 0, + "void *", NULL); }