* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
/* Chill language support routines for GDB, the GNU debugger.
|
* demangle.c (is_cplus_marker): New function, checks if a
character is one of the commonly used C++ marker characters.
* defs.h (is_cplus_marker): Add prototype.
* c-typeprint.c (c_type_print_base), ch-lang.c (chill_demangle),
cp-valprint.c (cp_print_class_method), mdebugread.c (parse_symbol),
stabsread.c (define_symbol, read_member_functions, read_struct_fields),
symtab.h (OPNAME_PREFIX_P, VTBL_PREFIX_P, DESTRUCTOR_PREFIX_P),
values.c (vb_match): Use is_cplus_marker instead of comparison
with CPLUS_MARKER.
1996-02-16 06:14:15 +00:00
|
|
|
|
Copyright 1992, 1995, 1996 Free Software Foundation, Inc.
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
|
|
|
|
|
This file is part of GDB.
|
|
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
|
along with this program; if not, write to the Free Software
|
1995-08-02 03:41:12 +00:00
|
|
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
|
|
|
|
|
#include "defs.h"
|
|
|
|
|
#include "symtab.h"
|
|
|
|
|
#include "gdbtypes.h"
|
1995-02-12 19:21:04 +00:00
|
|
|
|
#include "value.h"
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
#include "expression.h"
|
|
|
|
|
#include "parser-defs.h"
|
|
|
|
|
#include "language.h"
|
|
|
|
|
#include "ch-lang.h"
|
|
|
|
|
|
1996-07-26 03:01:51 +00:00
|
|
|
|
static value_ptr
|
|
|
|
|
evaluate_subexp_chill PARAMS ((struct type *, struct expression *, int *, enum noside));
|
|
|
|
|
|
|
|
|
|
static value_ptr
|
|
|
|
|
value_chill_max_min PARAMS ((enum exp_opcode, value_ptr));
|
|
|
|
|
|
|
|
|
|
static value_ptr
|
|
|
|
|
value_chill_card PARAMS ((value_ptr));
|
|
|
|
|
|
|
|
|
|
static value_ptr
|
|
|
|
|
value_chill_length PARAMS ((value_ptr));
|
|
|
|
|
|
|
|
|
|
static struct type *
|
|
|
|
|
chill_create_fundamental_type PARAMS ((struct objfile *, int));
|
|
|
|
|
|
|
|
|
|
static void
|
1998-10-05 19:42:04 +00:00
|
|
|
|
chill_printstr PARAMS ((GDB_FILE *stream, char *string, unsigned int length, int width, int force_ellipses));
|
1996-07-26 03:01:51 +00:00
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
chill_printchar PARAMS ((int, GDB_FILE *));
|
* tm-sun4sol2.h (CPLUS_MARKER): Remove, now set in tm-sysv4.h.
* tm-sysv4.h (CPLUS_MARKER): By default, g++ uses '.' as the
CPLUS_MARKER for all SVR4 systems, so follow suit.
* defs.h (strdup_demangled): Remove prototype.
* dwarfread.c (enum_type, synthesize_typedef): Use new macro
SYMBOL_INIT_LANGUAGE_SPECIFIC.
* dwarfread.c (new_symbol): Use SYMBOL_INIT_DEMANGLED_NAME.
* minsyms.c (install_minimal_symbols, prim_record_minimal_symbol,
prim_record_minimal_symbol_and_info): Use new macro
SYMBOL_INIT_LANGUAGE_SPECIFIC.
* minsyms.c (install_minimal_symbols): Use new macro
SYMBOL_INIT_DEMANGLED_NAME.
* stabsread.c (define_symbol): Use new macro
SYMBOL_INIT_DEMANGLED_NAME.
* symfile.c (add_psymbol_to_list, add_psymbol_addr_to_list):
Use new macro SYMBOL_INIT_DEMANGLED_NAME.
* symfile.h (ADD_PSYMBOL_VT_TO_LIST): Use new macro
SYMBOL_INIT_DEMANGLED_NAME.
* symmisc.c (dump_msymbols, dump_symtab, print_partial_symbol):
SYMBOL_DEMANGLED_NAME now tests language itself.
* symtab.c (COMPLETION_LIST_ADD_SYMBOL): SYMBOL_DEMANGLED_NAME
now tests language itself.
* symtab.h (SYMBOL_CPLUS_DEMANGLED_NAME): New macro that does
what SYMBOL_DEMANGLED_NAME used to do, directly access the C++
mangled name member in the language dependent portion of a symbol.
* symtab.h (SYMBOL_DEMANGLED_NAME): New macro that returns the
mangled name member appropriate for a symbol's language.
* symtab.h (SYMBOL_SOURCE_NAME, SYMBOL_LINKAGE_NAME,
SYMBOL_MATCHES_NAME, SYMBOL_MATCHES_REGEXP):
SYMBOL_DEMANGLED_NAME now tests language itself.
* symtab.h (SYMBOL_INIT_LANGUAGE_SPECIFIC): New macro that
initializes language dependent portion of symbol.
* symtab.h (SYMBOL_INIT_DEMANGLED_NAME): New macro that
demangles and caches the demangled form of symbol names.
* utils.c (fputs_demangled, fprint_symbol): Use current language
to select an appropriate demangling algorithm.
* utils.c (strdup_demangled): Remove, no longer used.
**** start-sanitize-chill ****
* symtab.h (SYMBOL_CHILL_DEMANGLED_NAME): New macro that directly
access the Chill mangled name member in the language dependent
portion of a symbol.
* ch-lang.c (chill_demangle): New function, simple demangler.
* defs.h (chill_demangle): Add prototype.
* symtab.h (language_dependent_info): Add struct for Chill.
**** end-sanitize-chill ****
1993-01-01 20:29:41 +00:00
|
|
|
|
|
|
|
|
|
/* For now, Chill uses a simple mangling algorithm whereby you simply
|
|
|
|
|
discard everything after the occurance of two successive CPLUS_MARKER
|
|
|
|
|
characters to derive the demangled form. */
|
|
|
|
|
|
|
|
|
|
char *
|
|
|
|
|
chill_demangle (mangled)
|
|
|
|
|
const char *mangled;
|
|
|
|
|
{
|
* demangle.c (is_cplus_marker): New function, checks if a
character is one of the commonly used C++ marker characters.
* defs.h (is_cplus_marker): Add prototype.
* c-typeprint.c (c_type_print_base), ch-lang.c (chill_demangle),
cp-valprint.c (cp_print_class_method), mdebugread.c (parse_symbol),
stabsread.c (define_symbol, read_member_functions, read_struct_fields),
symtab.h (OPNAME_PREFIX_P, VTBL_PREFIX_P, DESTRUCTOR_PREFIX_P),
values.c (vb_match): Use is_cplus_marker instead of comparison
with CPLUS_MARKER.
1996-02-16 06:14:15 +00:00
|
|
|
|
const char *joiner = NULL;
|
* tm-sun4sol2.h (CPLUS_MARKER): Remove, now set in tm-sysv4.h.
* tm-sysv4.h (CPLUS_MARKER): By default, g++ uses '.' as the
CPLUS_MARKER for all SVR4 systems, so follow suit.
* defs.h (strdup_demangled): Remove prototype.
* dwarfread.c (enum_type, synthesize_typedef): Use new macro
SYMBOL_INIT_LANGUAGE_SPECIFIC.
* dwarfread.c (new_symbol): Use SYMBOL_INIT_DEMANGLED_NAME.
* minsyms.c (install_minimal_symbols, prim_record_minimal_symbol,
prim_record_minimal_symbol_and_info): Use new macro
SYMBOL_INIT_LANGUAGE_SPECIFIC.
* minsyms.c (install_minimal_symbols): Use new macro
SYMBOL_INIT_DEMANGLED_NAME.
* stabsread.c (define_symbol): Use new macro
SYMBOL_INIT_DEMANGLED_NAME.
* symfile.c (add_psymbol_to_list, add_psymbol_addr_to_list):
Use new macro SYMBOL_INIT_DEMANGLED_NAME.
* symfile.h (ADD_PSYMBOL_VT_TO_LIST): Use new macro
SYMBOL_INIT_DEMANGLED_NAME.
* symmisc.c (dump_msymbols, dump_symtab, print_partial_symbol):
SYMBOL_DEMANGLED_NAME now tests language itself.
* symtab.c (COMPLETION_LIST_ADD_SYMBOL): SYMBOL_DEMANGLED_NAME
now tests language itself.
* symtab.h (SYMBOL_CPLUS_DEMANGLED_NAME): New macro that does
what SYMBOL_DEMANGLED_NAME used to do, directly access the C++
mangled name member in the language dependent portion of a symbol.
* symtab.h (SYMBOL_DEMANGLED_NAME): New macro that returns the
mangled name member appropriate for a symbol's language.
* symtab.h (SYMBOL_SOURCE_NAME, SYMBOL_LINKAGE_NAME,
SYMBOL_MATCHES_NAME, SYMBOL_MATCHES_REGEXP):
SYMBOL_DEMANGLED_NAME now tests language itself.
* symtab.h (SYMBOL_INIT_LANGUAGE_SPECIFIC): New macro that
initializes language dependent portion of symbol.
* symtab.h (SYMBOL_INIT_DEMANGLED_NAME): New macro that
demangles and caches the demangled form of symbol names.
* utils.c (fputs_demangled, fprint_symbol): Use current language
to select an appropriate demangling algorithm.
* utils.c (strdup_demangled): Remove, no longer used.
**** start-sanitize-chill ****
* symtab.h (SYMBOL_CHILL_DEMANGLED_NAME): New macro that directly
access the Chill mangled name member in the language dependent
portion of a symbol.
* ch-lang.c (chill_demangle): New function, simple demangler.
* defs.h (chill_demangle): Add prototype.
* symtab.h (language_dependent_info): Add struct for Chill.
**** end-sanitize-chill ****
1993-01-01 20:29:41 +00:00
|
|
|
|
char *demangled;
|
* demangle.c (is_cplus_marker): New function, checks if a
character is one of the commonly used C++ marker characters.
* defs.h (is_cplus_marker): Add prototype.
* c-typeprint.c (c_type_print_base), ch-lang.c (chill_demangle),
cp-valprint.c (cp_print_class_method), mdebugread.c (parse_symbol),
stabsread.c (define_symbol, read_member_functions, read_struct_fields),
symtab.h (OPNAME_PREFIX_P, VTBL_PREFIX_P, DESTRUCTOR_PREFIX_P),
values.c (vb_match): Use is_cplus_marker instead of comparison
with CPLUS_MARKER.
1996-02-16 06:14:15 +00:00
|
|
|
|
const char *cp = mangled;
|
* tm-sun4sol2.h (CPLUS_MARKER): Remove, now set in tm-sysv4.h.
* tm-sysv4.h (CPLUS_MARKER): By default, g++ uses '.' as the
CPLUS_MARKER for all SVR4 systems, so follow suit.
* defs.h (strdup_demangled): Remove prototype.
* dwarfread.c (enum_type, synthesize_typedef): Use new macro
SYMBOL_INIT_LANGUAGE_SPECIFIC.
* dwarfread.c (new_symbol): Use SYMBOL_INIT_DEMANGLED_NAME.
* minsyms.c (install_minimal_symbols, prim_record_minimal_symbol,
prim_record_minimal_symbol_and_info): Use new macro
SYMBOL_INIT_LANGUAGE_SPECIFIC.
* minsyms.c (install_minimal_symbols): Use new macro
SYMBOL_INIT_DEMANGLED_NAME.
* stabsread.c (define_symbol): Use new macro
SYMBOL_INIT_DEMANGLED_NAME.
* symfile.c (add_psymbol_to_list, add_psymbol_addr_to_list):
Use new macro SYMBOL_INIT_DEMANGLED_NAME.
* symfile.h (ADD_PSYMBOL_VT_TO_LIST): Use new macro
SYMBOL_INIT_DEMANGLED_NAME.
* symmisc.c (dump_msymbols, dump_symtab, print_partial_symbol):
SYMBOL_DEMANGLED_NAME now tests language itself.
* symtab.c (COMPLETION_LIST_ADD_SYMBOL): SYMBOL_DEMANGLED_NAME
now tests language itself.
* symtab.h (SYMBOL_CPLUS_DEMANGLED_NAME): New macro that does
what SYMBOL_DEMANGLED_NAME used to do, directly access the C++
mangled name member in the language dependent portion of a symbol.
* symtab.h (SYMBOL_DEMANGLED_NAME): New macro that returns the
mangled name member appropriate for a symbol's language.
* symtab.h (SYMBOL_SOURCE_NAME, SYMBOL_LINKAGE_NAME,
SYMBOL_MATCHES_NAME, SYMBOL_MATCHES_REGEXP):
SYMBOL_DEMANGLED_NAME now tests language itself.
* symtab.h (SYMBOL_INIT_LANGUAGE_SPECIFIC): New macro that
initializes language dependent portion of symbol.
* symtab.h (SYMBOL_INIT_DEMANGLED_NAME): New macro that
demangles and caches the demangled form of symbol names.
* utils.c (fputs_demangled, fprint_symbol): Use current language
to select an appropriate demangling algorithm.
* utils.c (strdup_demangled): Remove, no longer used.
**** start-sanitize-chill ****
* symtab.h (SYMBOL_CHILL_DEMANGLED_NAME): New macro that directly
access the Chill mangled name member in the language dependent
portion of a symbol.
* ch-lang.c (chill_demangle): New function, simple demangler.
* defs.h (chill_demangle): Add prototype.
* symtab.h (language_dependent_info): Add struct for Chill.
**** end-sanitize-chill ****
1993-01-01 20:29:41 +00:00
|
|
|
|
|
* demangle.c (is_cplus_marker): New function, checks if a
character is one of the commonly used C++ marker characters.
* defs.h (is_cplus_marker): Add prototype.
* c-typeprint.c (c_type_print_base), ch-lang.c (chill_demangle),
cp-valprint.c (cp_print_class_method), mdebugread.c (parse_symbol),
stabsread.c (define_symbol, read_member_functions, read_struct_fields),
symtab.h (OPNAME_PREFIX_P, VTBL_PREFIX_P, DESTRUCTOR_PREFIX_P),
values.c (vb_match): Use is_cplus_marker instead of comparison
with CPLUS_MARKER.
1996-02-16 06:14:15 +00:00
|
|
|
|
while (*cp)
|
|
|
|
|
{
|
|
|
|
|
if (is_cplus_marker (*cp))
|
|
|
|
|
{
|
|
|
|
|
joiner = cp;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
cp++;
|
|
|
|
|
}
|
|
|
|
|
if (joiner != NULL && *(joiner + 1) == *joiner)
|
* tm-sun4sol2.h (CPLUS_MARKER): Remove, now set in tm-sysv4.h.
* tm-sysv4.h (CPLUS_MARKER): By default, g++ uses '.' as the
CPLUS_MARKER for all SVR4 systems, so follow suit.
* defs.h (strdup_demangled): Remove prototype.
* dwarfread.c (enum_type, synthesize_typedef): Use new macro
SYMBOL_INIT_LANGUAGE_SPECIFIC.
* dwarfread.c (new_symbol): Use SYMBOL_INIT_DEMANGLED_NAME.
* minsyms.c (install_minimal_symbols, prim_record_minimal_symbol,
prim_record_minimal_symbol_and_info): Use new macro
SYMBOL_INIT_LANGUAGE_SPECIFIC.
* minsyms.c (install_minimal_symbols): Use new macro
SYMBOL_INIT_DEMANGLED_NAME.
* stabsread.c (define_symbol): Use new macro
SYMBOL_INIT_DEMANGLED_NAME.
* symfile.c (add_psymbol_to_list, add_psymbol_addr_to_list):
Use new macro SYMBOL_INIT_DEMANGLED_NAME.
* symfile.h (ADD_PSYMBOL_VT_TO_LIST): Use new macro
SYMBOL_INIT_DEMANGLED_NAME.
* symmisc.c (dump_msymbols, dump_symtab, print_partial_symbol):
SYMBOL_DEMANGLED_NAME now tests language itself.
* symtab.c (COMPLETION_LIST_ADD_SYMBOL): SYMBOL_DEMANGLED_NAME
now tests language itself.
* symtab.h (SYMBOL_CPLUS_DEMANGLED_NAME): New macro that does
what SYMBOL_DEMANGLED_NAME used to do, directly access the C++
mangled name member in the language dependent portion of a symbol.
* symtab.h (SYMBOL_DEMANGLED_NAME): New macro that returns the
mangled name member appropriate for a symbol's language.
* symtab.h (SYMBOL_SOURCE_NAME, SYMBOL_LINKAGE_NAME,
SYMBOL_MATCHES_NAME, SYMBOL_MATCHES_REGEXP):
SYMBOL_DEMANGLED_NAME now tests language itself.
* symtab.h (SYMBOL_INIT_LANGUAGE_SPECIFIC): New macro that
initializes language dependent portion of symbol.
* symtab.h (SYMBOL_INIT_DEMANGLED_NAME): New macro that
demangles and caches the demangled form of symbol names.
* utils.c (fputs_demangled, fprint_symbol): Use current language
to select an appropriate demangling algorithm.
* utils.c (strdup_demangled): Remove, no longer used.
**** start-sanitize-chill ****
* symtab.h (SYMBOL_CHILL_DEMANGLED_NAME): New macro that directly
access the Chill mangled name member in the language dependent
portion of a symbol.
* ch-lang.c (chill_demangle): New function, simple demangler.
* defs.h (chill_demangle): Add prototype.
* symtab.h (language_dependent_info): Add struct for Chill.
**** end-sanitize-chill ****
1993-01-01 20:29:41 +00:00
|
|
|
|
{
|
|
|
|
|
demangled = savestring (mangled, joiner - mangled);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
demangled = NULL;
|
|
|
|
|
}
|
|
|
|
|
return (demangled);
|
|
|
|
|
}
|
|
|
|
|
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
static void
|
|
|
|
|
chill_printchar (c, stream)
|
|
|
|
|
register int c;
|
1993-11-01 22:25:23 +00:00
|
|
|
|
GDB_FILE *stream;
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
{
|
|
|
|
|
c &= 0xFF; /* Avoid sign bit follies */
|
|
|
|
|
|
|
|
|
|
if (PRINT_LITERAL_FORM (c))
|
|
|
|
|
{
|
* ch-exp.c (parse_primval): Handle CARD, MAX, MIN.
(match_string_literal): Handle control sequence.
(match_character_literal): Deto.
* ch-lang.c (chill_printchar): Change formating of nonprintable
characters from C'xx' to ^(num).
(chill_printstr): Deto.
(value_chill_card, value_chill_max_min): New functions to process
Chill's CARD, MAX, MIN.
(evaluate_subexp_chill): Process UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN.
* expression.h (exp_opcode): Add UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN
for Chill's CARD, MAX, MIN.
* valarith.c (value_in): Add processing of TYPE_CODE_RANGE
and change return type from builtin_type_int to
builtin_type_chill_bool.
1996-03-06 08:02:45 +00:00
|
|
|
|
if (c == '\'' || c == '^')
|
|
|
|
|
fprintf_filtered (stream, "'%c%c'", c, c);
|
|
|
|
|
else
|
|
|
|
|
fprintf_filtered (stream, "'%c'", c);
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
* ch-exp.c (parse_primval): Handle CARD, MAX, MIN.
(match_string_literal): Handle control sequence.
(match_character_literal): Deto.
* ch-lang.c (chill_printchar): Change formating of nonprintable
characters from C'xx' to ^(num).
(chill_printstr): Deto.
(value_chill_card, value_chill_max_min): New functions to process
Chill's CARD, MAX, MIN.
(evaluate_subexp_chill): Process UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN.
* expression.h (exp_opcode): Add UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN
for Chill's CARD, MAX, MIN.
* valarith.c (value_in): Add processing of TYPE_CODE_RANGE
and change return type from builtin_type_int to
builtin_type_chill_bool.
1996-03-06 08:02:45 +00:00
|
|
|
|
fprintf_filtered (stream, "'^(%u)'", (unsigned int) c);
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Print the character string STRING, printing at most LENGTH characters.
|
|
|
|
|
Printing stops early if the number hits print_max; repeat counts
|
|
|
|
|
are printed as appropriate. Print ellipses at the end if we
|
|
|
|
|
had to stop before printing LENGTH characters, or if FORCE_ELLIPSES.
|
|
|
|
|
Note that gdb maintains the length of strings without counting the
|
|
|
|
|
terminating null byte, while chill strings are typically written with
|
|
|
|
|
an explicit null byte. So we always assume an implied null byte
|
|
|
|
|
until gdb is able to maintain non-null terminated strings as well
|
|
|
|
|
as null terminated strings (FIXME).
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
static void
|
1998-10-05 19:42:04 +00:00
|
|
|
|
chill_printstr (stream, string, length, width, force_ellipses)
|
1993-11-01 22:25:23 +00:00
|
|
|
|
GDB_FILE *stream;
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
char *string;
|
|
|
|
|
unsigned int length;
|
1998-10-05 19:42:04 +00:00
|
|
|
|
int width;
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
int force_ellipses;
|
|
|
|
|
{
|
|
|
|
|
register unsigned int i;
|
|
|
|
|
unsigned int things_printed = 0;
|
|
|
|
|
int in_literal_form = 0;
|
|
|
|
|
int in_control_form = 0;
|
|
|
|
|
int need_slashslash = 0;
|
|
|
|
|
unsigned int c;
|
|
|
|
|
extern int repeat_count_threshold;
|
|
|
|
|
extern int print_max;
|
|
|
|
|
|
|
|
|
|
if (length == 0)
|
|
|
|
|
{
|
1994-01-23 20:42:00 +00:00
|
|
|
|
fputs_filtered ("\"\"", stream);
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < length && things_printed < print_max; ++i)
|
|
|
|
|
{
|
|
|
|
|
/* Position of the character we are examining
|
|
|
|
|
to see whether it is repeated. */
|
|
|
|
|
unsigned int rep1;
|
|
|
|
|
/* Number of repetitions we have detected so far. */
|
|
|
|
|
unsigned int reps;
|
|
|
|
|
|
|
|
|
|
QUIT;
|
|
|
|
|
|
|
|
|
|
if (need_slashslash)
|
|
|
|
|
{
|
|
|
|
|
fputs_filtered ("//", stream);
|
|
|
|
|
need_slashslash = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rep1 = i + 1;
|
|
|
|
|
reps = 1;
|
|
|
|
|
while (rep1 < length && string[rep1] == string[i])
|
|
|
|
|
{
|
|
|
|
|
++rep1;
|
|
|
|
|
++reps;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
c = string[i];
|
|
|
|
|
if (reps > repeat_count_threshold)
|
|
|
|
|
{
|
|
|
|
|
if (in_control_form || in_literal_form)
|
|
|
|
|
{
|
* ch-exp.c (parse_primval): Handle CARD, MAX, MIN.
(match_string_literal): Handle control sequence.
(match_character_literal): Deto.
* ch-lang.c (chill_printchar): Change formating of nonprintable
characters from C'xx' to ^(num).
(chill_printstr): Deto.
(value_chill_card, value_chill_max_min): New functions to process
Chill's CARD, MAX, MIN.
(evaluate_subexp_chill): Process UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN.
* expression.h (exp_opcode): Add UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN
for Chill's CARD, MAX, MIN.
* valarith.c (value_in): Add processing of TYPE_CODE_RANGE
and change return type from builtin_type_int to
builtin_type_chill_bool.
1996-03-06 08:02:45 +00:00
|
|
|
|
if (in_control_form)
|
|
|
|
|
fputs_filtered (")", stream);
|
1993-12-21 22:18:51 +00:00
|
|
|
|
fputs_filtered ("\"//", stream);
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
in_control_form = in_literal_form = 0;
|
|
|
|
|
}
|
|
|
|
|
chill_printchar (c, stream);
|
|
|
|
|
fprintf_filtered (stream, "<repeats %u times>", reps);
|
|
|
|
|
i = rep1 - 1;
|
|
|
|
|
things_printed += repeat_count_threshold;
|
|
|
|
|
need_slashslash = 1;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
* ch-exp.c (parse_primval): Handle CARD, MAX, MIN.
(match_string_literal): Handle control sequence.
(match_character_literal): Deto.
* ch-lang.c (chill_printchar): Change formating of nonprintable
characters from C'xx' to ^(num).
(chill_printstr): Deto.
(value_chill_card, value_chill_max_min): New functions to process
Chill's CARD, MAX, MIN.
(evaluate_subexp_chill): Process UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN.
* expression.h (exp_opcode): Add UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN
for Chill's CARD, MAX, MIN.
* valarith.c (value_in): Add processing of TYPE_CODE_RANGE
and change return type from builtin_type_int to
builtin_type_chill_bool.
1996-03-06 08:02:45 +00:00
|
|
|
|
if (! in_literal_form && ! in_control_form)
|
|
|
|
|
fputs_filtered ("\"", stream);
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
if (PRINT_LITERAL_FORM (c))
|
|
|
|
|
{
|
|
|
|
|
if (!in_literal_form)
|
|
|
|
|
{
|
|
|
|
|
if (in_control_form)
|
|
|
|
|
{
|
* ch-exp.c (parse_primval): Handle CARD, MAX, MIN.
(match_string_literal): Handle control sequence.
(match_character_literal): Deto.
* ch-lang.c (chill_printchar): Change formating of nonprintable
characters from C'xx' to ^(num).
(chill_printstr): Deto.
(value_chill_card, value_chill_max_min): New functions to process
Chill's CARD, MAX, MIN.
(evaluate_subexp_chill): Process UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN.
* expression.h (exp_opcode): Add UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN
for Chill's CARD, MAX, MIN.
* valarith.c (value_in): Add processing of TYPE_CODE_RANGE
and change return type from builtin_type_int to
builtin_type_chill_bool.
1996-03-06 08:02:45 +00:00
|
|
|
|
fputs_filtered (")", stream);
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
in_control_form = 0;
|
|
|
|
|
}
|
|
|
|
|
in_literal_form = 1;
|
|
|
|
|
}
|
|
|
|
|
fprintf_filtered (stream, "%c", c);
|
* ch-exp.c (parse_primval): Handle CARD, MAX, MIN.
(match_string_literal): Handle control sequence.
(match_character_literal): Deto.
* ch-lang.c (chill_printchar): Change formating of nonprintable
characters from C'xx' to ^(num).
(chill_printstr): Deto.
(value_chill_card, value_chill_max_min): New functions to process
Chill's CARD, MAX, MIN.
(evaluate_subexp_chill): Process UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN.
* expression.h (exp_opcode): Add UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN
for Chill's CARD, MAX, MIN.
* valarith.c (value_in): Add processing of TYPE_CODE_RANGE
and change return type from builtin_type_int to
builtin_type_chill_bool.
1996-03-06 08:02:45 +00:00
|
|
|
|
if (c == '"' || c == '^')
|
|
|
|
|
/* duplicate this one as must be done at input */
|
|
|
|
|
fprintf_filtered (stream, "%c", c);
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (!in_control_form)
|
|
|
|
|
{
|
|
|
|
|
if (in_literal_form)
|
|
|
|
|
{
|
|
|
|
|
in_literal_form = 0;
|
|
|
|
|
}
|
* ch-exp.c (parse_primval): Handle CARD, MAX, MIN.
(match_string_literal): Handle control sequence.
(match_character_literal): Deto.
* ch-lang.c (chill_printchar): Change formating of nonprintable
characters from C'xx' to ^(num).
(chill_printstr): Deto.
(value_chill_card, value_chill_max_min): New functions to process
Chill's CARD, MAX, MIN.
(evaluate_subexp_chill): Process UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN.
* expression.h (exp_opcode): Add UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN
for Chill's CARD, MAX, MIN.
* valarith.c (value_in): Add processing of TYPE_CODE_RANGE
and change return type from builtin_type_int to
builtin_type_chill_bool.
1996-03-06 08:02:45 +00:00
|
|
|
|
fputs_filtered ("^(", stream);
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
in_control_form = 1;
|
|
|
|
|
}
|
* ch-exp.c (parse_primval): Handle CARD, MAX, MIN.
(match_string_literal): Handle control sequence.
(match_character_literal): Deto.
* ch-lang.c (chill_printchar): Change formating of nonprintable
characters from C'xx' to ^(num).
(chill_printstr): Deto.
(value_chill_card, value_chill_max_min): New functions to process
Chill's CARD, MAX, MIN.
(evaluate_subexp_chill): Process UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN.
* expression.h (exp_opcode): Add UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN
for Chill's CARD, MAX, MIN.
* valarith.c (value_in): Add processing of TYPE_CODE_RANGE
and change return type from builtin_type_int to
builtin_type_chill_bool.
1996-03-06 08:02:45 +00:00
|
|
|
|
else
|
|
|
|
|
fprintf_filtered (stream, ",");
|
|
|
|
|
c = c & 0xff;
|
|
|
|
|
fprintf_filtered (stream, "%u", (unsigned int) c);
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
}
|
|
|
|
|
++things_printed;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Terminate the quotes if necessary. */
|
* ch-exp.c (parse_primval): Handle CARD, MAX, MIN.
(match_string_literal): Handle control sequence.
(match_character_literal): Deto.
* ch-lang.c (chill_printchar): Change formating of nonprintable
characters from C'xx' to ^(num).
(chill_printstr): Deto.
(value_chill_card, value_chill_max_min): New functions to process
Chill's CARD, MAX, MIN.
(evaluate_subexp_chill): Process UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN.
* expression.h (exp_opcode): Add UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN
for Chill's CARD, MAX, MIN.
* valarith.c (value_in): Add processing of TYPE_CODE_RANGE
and change return type from builtin_type_int to
builtin_type_chill_bool.
1996-03-06 08:02:45 +00:00
|
|
|
|
if (in_control_form)
|
|
|
|
|
{
|
|
|
|
|
fputs_filtered (")", stream);
|
|
|
|
|
}
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
if (in_literal_form || in_control_form)
|
|
|
|
|
{
|
1993-12-21 22:18:51 +00:00
|
|
|
|
fputs_filtered ("\"", stream);
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
}
|
|
|
|
|
if (force_ellipses || (i < length))
|
|
|
|
|
{
|
|
|
|
|
fputs_filtered ("...", stream);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static struct type *
|
|
|
|
|
chill_create_fundamental_type (objfile, typeid)
|
|
|
|
|
struct objfile *objfile;
|
|
|
|
|
int typeid;
|
|
|
|
|
{
|
|
|
|
|
register struct type *type = NULL;
|
|
|
|
|
|
|
|
|
|
switch (typeid)
|
|
|
|
|
{
|
|
|
|
|
default:
|
|
|
|
|
/* FIXME: For now, if we are asked to produce a type not in this
|
|
|
|
|
language, create the equivalent of a C integer type with the
|
|
|
|
|
name "<?type?>". When all the dust settles from the type
|
|
|
|
|
reconstruction work, this should probably become an error. */
|
* Makefile.in (VERSION): Bump to 4.7.4.
* Makefile.in (SFILES_MAINDIR): Add typeprint.c, c-typeprint.c,
m2-typeprint.c, c-valprint.c cp-valprint.c m2-valprint.c.
* Makefile.in (HFILES): Add valprint.h.
* Makefile.in (OBS): Add typeprint.o, c-typeprint.o,
m2-typeprint.o, c-valprint.o, cp-valprint.o m2-valprint.o.
* typeprint.c, typeprint.h: New files for language independent
type printing functions.
* c-typeprint.c, m2-typeprint.c: New files for language dependent
type printing functions and definitions.
* valprint.h: New include file for language independent value
printing definitions.
* c-valprint.c, cp-valprint.c, m2-valprint.c: New files for language
dependent value printing functions.
* c-exp.y (production ptype): Add range_type variable and use new
create_range_type function.
* c-exp.y (tokentab2, tokentab3), c-lang.c (c_op_print_tab),
infcmd.c (path_var_name), language.c (unk_op_print_tab),
m2-lang.c (m2_op_print_tab): Change from ANSI-obsolescent
"const static" to ANSI-conformant "static const".
* c-exp.y (c_create_fundamental_type): Remove unused nbytes.
* c-exp.y (c_language_defn, cplus_language_defn): Add c_print_type,
and c_val_print.
* c-lang.h (c_print_type, c_val_print): Add prototypes.
* coffread.c (decode_type): Add range_type variable and call to
new create_range_type function.
* complaints.c (complain): Remove unused val variable.
* complaints.c (_initialize_complaints): Make it void.
* convex-tdep.c (value_of_trapped_internalvar): Add range_type
variable and call new create_range_type function.
* defs.h (enum val_prettyprint): Move enum from value.h to here
so we can avoid having to include value.h just for prototypes that
need the enum (thanks ANSI).
* dwarfread.c (struct_type): Local anonymous_size variable is
only used if !BITS_BIG_ENDIAN.
* dwarfread.c (decode_subscript_data_item): Add rangetype
variable and call new create_range_type function.
* elfread.c (elf_symfile_read): Remove unused dbx and text_sect
variables.
* eval.c (evaluate_subexp): Remove unused local variable name
and the statement with no side effects that initializes it.
* expprint.c (print_subexp): Change local_printstr to
LA_PRINT_STRING.
* gdbtypes.c (create_range_type): New function that creates
a range type using code fragments from object file readers as
an example of what has to be initialized.
* gdbtypes.c (create_array_type): Removed index_type, low_bound,
and high_bound parameters, replaced with a single range_type
parameter. Change function body to use passed in range_type
rather than handcrafting one.
* gdbtypes.h (create_range_type): Add prototype.
* gdbtypes.h (create_array_type): Change prototype parameters.
* infrun.c (normal_stop): Remove unused local variables tem and c.
* infrun.c (hook_stop_stub): Return 0 rather than random value.
* language.c (unk_lang_print_type, unk_lang_val_print): Add
stub functions that call error if called.
* language.c (unknown_language_defn, auto_language_defn,
local_language_defn): Add initializers unk_lang_print_type and
unk_lang_val_print.
* language.h (struct language_defn): Reformat for larger
comments, add la_print_type and la_val_print members. Add
LA_PRINT_TYPE and LA_VAL_PRINT macros. Change local_printchar
to LA_PRINT_CHAR and local_printstr to LA_PRINT_STRING.
* m2-lang.c (m2_create_fundamental_type): Remove unused local
variable nbytes.
* m2-lang.c (m2_language_defn): Add initializers m2_print_type
and m2_val_print.
* m2-lang.h (m2_print_type, m2_val_print): Add prototypes.
* main.c (execute_command): Remove unused local variable cmdlines.
* main.c (echo_command), stabsread.c (read_type), printcmd.c
(clear_displays), symmisc.c (block_depth), values.c
(clear_value_history):
Make testing of truth value of assignment result explicit.
* mipsread.c (upgrade_type): Update FIXME to include future use
of create_range_type.
* printcmd.c (ptype_command, ptype_eval, whatis_command,
whatis_exp, maintenance_print_type): Move prototypes and functions
to new typeprint.c.
* printcmd.c (_initialize_printcmd): Move add_com calls for
ptype_command and whatis_command to new typeprint.c.
* ser-bsd.c (serial_open): Remove unused variable sgttyb.
* source.c (find_source_lines): Local variable c only used
when LSEEK_NOT_LINEAR is defined.
* stabsread.c (read_array_type): Use new create_range_type
function.
* stabsread.c (read_range_type): Add new index_type variable and
call new create_range_type function rather than handcrafting
range types.
* symmisc.c (type_print_1): Change usages to LA_PRINT_TYPE.
* symtab.c (typedef_print usages): Use c_typedef_print, renamed.
* symtab.c (type_print_base usages): Use c_type_print_base.
* symtab.c (type_print_varspec_prefix usages): Use
c_type_print_varspec_prefix.
* symtab.c (type_print_method_args usages): Use
cp_type_print_method_args.
* valprint.c: Completely ripped apart and the fragments used
to create c-valprint.c, cp-valprint.c, m2-valprint.c, and
valprint.h. Remaining stuff is language independent.
* value.h (struct fn_field): Forward declare for prototypes.
* value.h (type_print_1): Remove prototype.
* value.h (enum val_prettyprint): Moved to defs.h.
* value.h (typedef_print): Prototype renamed to c_typedef_print.
* value.h (baseclass_offset): Add prototype.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-typeprint.c, ch-valprint.c.
* Makefile.in (OBS): Add ch-typeprint.o, ch-valprint.o.
* ch-typeprint.c: New file for language dependent type printing.
* ch-valprint.c: New file for language dependent value printing.
* ch-exp.y (parse_number): Remove prototype and stub function.
* ch-exp.y (decode_integer_literal): Removed unused digits and
temp variables.
* ch-exp.y (convert_float): Completely ifdef out for now.
* ch-exp.y (tokentab2, tokentab3, tokentab4, tokentab5),
ch-lang.c (chill_op_print_tab):
Change from ANSI-obsolescent "const static" to ANSI-conformant
"static const".
* ch-exp.y (yylex): Add unhandled storage class enumeration
literals to switch statement for completeness.
* ch-lang.c (chill_create_fundamental_types): Remove unused
nbytes variable. Change dummy type to 2 bytes to match int.
Handle FT_VOID types gratuituously added to chill DWARF by
compiler. Change FT_CHAR case to generate an TYPE_CODE_CHAR
type rather than a one byte TYPE_CODE_INT type.
* ch-lang.c (chill_language_defn): Add chill_print_type and
chill_val_print.
* ch-lang.h (chill_print_type, chill_val_print): Add prototypes.
**** end-sanitize-chill ****
1992-12-18 20:21:32 +00:00
|
|
|
|
type = init_type (TYPE_CODE_INT, 2, 0, "<?type?>", objfile);
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
warning ("internal error: no chill fundamental type %d", typeid);
|
|
|
|
|
break;
|
* Makefile.in (VERSION): Bump to 4.7.4.
* Makefile.in (SFILES_MAINDIR): Add typeprint.c, c-typeprint.c,
m2-typeprint.c, c-valprint.c cp-valprint.c m2-valprint.c.
* Makefile.in (HFILES): Add valprint.h.
* Makefile.in (OBS): Add typeprint.o, c-typeprint.o,
m2-typeprint.o, c-valprint.o, cp-valprint.o m2-valprint.o.
* typeprint.c, typeprint.h: New files for language independent
type printing functions.
* c-typeprint.c, m2-typeprint.c: New files for language dependent
type printing functions and definitions.
* valprint.h: New include file for language independent value
printing definitions.
* c-valprint.c, cp-valprint.c, m2-valprint.c: New files for language
dependent value printing functions.
* c-exp.y (production ptype): Add range_type variable and use new
create_range_type function.
* c-exp.y (tokentab2, tokentab3), c-lang.c (c_op_print_tab),
infcmd.c (path_var_name), language.c (unk_op_print_tab),
m2-lang.c (m2_op_print_tab): Change from ANSI-obsolescent
"const static" to ANSI-conformant "static const".
* c-exp.y (c_create_fundamental_type): Remove unused nbytes.
* c-exp.y (c_language_defn, cplus_language_defn): Add c_print_type,
and c_val_print.
* c-lang.h (c_print_type, c_val_print): Add prototypes.
* coffread.c (decode_type): Add range_type variable and call to
new create_range_type function.
* complaints.c (complain): Remove unused val variable.
* complaints.c (_initialize_complaints): Make it void.
* convex-tdep.c (value_of_trapped_internalvar): Add range_type
variable and call new create_range_type function.
* defs.h (enum val_prettyprint): Move enum from value.h to here
so we can avoid having to include value.h just for prototypes that
need the enum (thanks ANSI).
* dwarfread.c (struct_type): Local anonymous_size variable is
only used if !BITS_BIG_ENDIAN.
* dwarfread.c (decode_subscript_data_item): Add rangetype
variable and call new create_range_type function.
* elfread.c (elf_symfile_read): Remove unused dbx and text_sect
variables.
* eval.c (evaluate_subexp): Remove unused local variable name
and the statement with no side effects that initializes it.
* expprint.c (print_subexp): Change local_printstr to
LA_PRINT_STRING.
* gdbtypes.c (create_range_type): New function that creates
a range type using code fragments from object file readers as
an example of what has to be initialized.
* gdbtypes.c (create_array_type): Removed index_type, low_bound,
and high_bound parameters, replaced with a single range_type
parameter. Change function body to use passed in range_type
rather than handcrafting one.
* gdbtypes.h (create_range_type): Add prototype.
* gdbtypes.h (create_array_type): Change prototype parameters.
* infrun.c (normal_stop): Remove unused local variables tem and c.
* infrun.c (hook_stop_stub): Return 0 rather than random value.
* language.c (unk_lang_print_type, unk_lang_val_print): Add
stub functions that call error if called.
* language.c (unknown_language_defn, auto_language_defn,
local_language_defn): Add initializers unk_lang_print_type and
unk_lang_val_print.
* language.h (struct language_defn): Reformat for larger
comments, add la_print_type and la_val_print members. Add
LA_PRINT_TYPE and LA_VAL_PRINT macros. Change local_printchar
to LA_PRINT_CHAR and local_printstr to LA_PRINT_STRING.
* m2-lang.c (m2_create_fundamental_type): Remove unused local
variable nbytes.
* m2-lang.c (m2_language_defn): Add initializers m2_print_type
and m2_val_print.
* m2-lang.h (m2_print_type, m2_val_print): Add prototypes.
* main.c (execute_command): Remove unused local variable cmdlines.
* main.c (echo_command), stabsread.c (read_type), printcmd.c
(clear_displays), symmisc.c (block_depth), values.c
(clear_value_history):
Make testing of truth value of assignment result explicit.
* mipsread.c (upgrade_type): Update FIXME to include future use
of create_range_type.
* printcmd.c (ptype_command, ptype_eval, whatis_command,
whatis_exp, maintenance_print_type): Move prototypes and functions
to new typeprint.c.
* printcmd.c (_initialize_printcmd): Move add_com calls for
ptype_command and whatis_command to new typeprint.c.
* ser-bsd.c (serial_open): Remove unused variable sgttyb.
* source.c (find_source_lines): Local variable c only used
when LSEEK_NOT_LINEAR is defined.
* stabsread.c (read_array_type): Use new create_range_type
function.
* stabsread.c (read_range_type): Add new index_type variable and
call new create_range_type function rather than handcrafting
range types.
* symmisc.c (type_print_1): Change usages to LA_PRINT_TYPE.
* symtab.c (typedef_print usages): Use c_typedef_print, renamed.
* symtab.c (type_print_base usages): Use c_type_print_base.
* symtab.c (type_print_varspec_prefix usages): Use
c_type_print_varspec_prefix.
* symtab.c (type_print_method_args usages): Use
cp_type_print_method_args.
* valprint.c: Completely ripped apart and the fragments used
to create c-valprint.c, cp-valprint.c, m2-valprint.c, and
valprint.h. Remaining stuff is language independent.
* value.h (struct fn_field): Forward declare for prototypes.
* value.h (type_print_1): Remove prototype.
* value.h (enum val_prettyprint): Moved to defs.h.
* value.h (typedef_print): Prototype renamed to c_typedef_print.
* value.h (baseclass_offset): Add prototype.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-typeprint.c, ch-valprint.c.
* Makefile.in (OBS): Add ch-typeprint.o, ch-valprint.o.
* ch-typeprint.c: New file for language dependent type printing.
* ch-valprint.c: New file for language dependent value printing.
* ch-exp.y (parse_number): Remove prototype and stub function.
* ch-exp.y (decode_integer_literal): Removed unused digits and
temp variables.
* ch-exp.y (convert_float): Completely ifdef out for now.
* ch-exp.y (tokentab2, tokentab3, tokentab4, tokentab5),
ch-lang.c (chill_op_print_tab):
Change from ANSI-obsolescent "const static" to ANSI-conformant
"static const".
* ch-exp.y (yylex): Add unhandled storage class enumeration
literals to switch statement for completeness.
* ch-lang.c (chill_create_fundamental_types): Remove unused
nbytes variable. Change dummy type to 2 bytes to match int.
Handle FT_VOID types gratuituously added to chill DWARF by
compiler. Change FT_CHAR case to generate an TYPE_CODE_CHAR
type rather than a one byte TYPE_CODE_INT type.
* ch-lang.c (chill_language_defn): Add chill_print_type and
chill_val_print.
* ch-lang.h (chill_print_type, chill_val_print): Add prototypes.
**** end-sanitize-chill ****
1992-12-18 20:21:32 +00:00
|
|
|
|
case FT_VOID:
|
|
|
|
|
/* FIXME: Currently the GNU Chill compiler emits some DWARF entries for
|
|
|
|
|
typedefs, unrelated to anything directly in the code being compiled,
|
|
|
|
|
that have some FT_VOID types. Just fake it for now. */
|
|
|
|
|
type = init_type (TYPE_CODE_VOID, 0, 0, "<?VOID?>", objfile);
|
|
|
|
|
break;
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
case FT_BOOLEAN:
|
|
|
|
|
type = init_type (TYPE_CODE_BOOL, 1, TYPE_FLAG_UNSIGNED, "BOOL", objfile);
|
|
|
|
|
break;
|
|
|
|
|
case FT_CHAR:
|
* Makefile.in (VERSION): Bump to 4.7.4.
* Makefile.in (SFILES_MAINDIR): Add typeprint.c, c-typeprint.c,
m2-typeprint.c, c-valprint.c cp-valprint.c m2-valprint.c.
* Makefile.in (HFILES): Add valprint.h.
* Makefile.in (OBS): Add typeprint.o, c-typeprint.o,
m2-typeprint.o, c-valprint.o, cp-valprint.o m2-valprint.o.
* typeprint.c, typeprint.h: New files for language independent
type printing functions.
* c-typeprint.c, m2-typeprint.c: New files for language dependent
type printing functions and definitions.
* valprint.h: New include file for language independent value
printing definitions.
* c-valprint.c, cp-valprint.c, m2-valprint.c: New files for language
dependent value printing functions.
* c-exp.y (production ptype): Add range_type variable and use new
create_range_type function.
* c-exp.y (tokentab2, tokentab3), c-lang.c (c_op_print_tab),
infcmd.c (path_var_name), language.c (unk_op_print_tab),
m2-lang.c (m2_op_print_tab): Change from ANSI-obsolescent
"const static" to ANSI-conformant "static const".
* c-exp.y (c_create_fundamental_type): Remove unused nbytes.
* c-exp.y (c_language_defn, cplus_language_defn): Add c_print_type,
and c_val_print.
* c-lang.h (c_print_type, c_val_print): Add prototypes.
* coffread.c (decode_type): Add range_type variable and call to
new create_range_type function.
* complaints.c (complain): Remove unused val variable.
* complaints.c (_initialize_complaints): Make it void.
* convex-tdep.c (value_of_trapped_internalvar): Add range_type
variable and call new create_range_type function.
* defs.h (enum val_prettyprint): Move enum from value.h to here
so we can avoid having to include value.h just for prototypes that
need the enum (thanks ANSI).
* dwarfread.c (struct_type): Local anonymous_size variable is
only used if !BITS_BIG_ENDIAN.
* dwarfread.c (decode_subscript_data_item): Add rangetype
variable and call new create_range_type function.
* elfread.c (elf_symfile_read): Remove unused dbx and text_sect
variables.
* eval.c (evaluate_subexp): Remove unused local variable name
and the statement with no side effects that initializes it.
* expprint.c (print_subexp): Change local_printstr to
LA_PRINT_STRING.
* gdbtypes.c (create_range_type): New function that creates
a range type using code fragments from object file readers as
an example of what has to be initialized.
* gdbtypes.c (create_array_type): Removed index_type, low_bound,
and high_bound parameters, replaced with a single range_type
parameter. Change function body to use passed in range_type
rather than handcrafting one.
* gdbtypes.h (create_range_type): Add prototype.
* gdbtypes.h (create_array_type): Change prototype parameters.
* infrun.c (normal_stop): Remove unused local variables tem and c.
* infrun.c (hook_stop_stub): Return 0 rather than random value.
* language.c (unk_lang_print_type, unk_lang_val_print): Add
stub functions that call error if called.
* language.c (unknown_language_defn, auto_language_defn,
local_language_defn): Add initializers unk_lang_print_type and
unk_lang_val_print.
* language.h (struct language_defn): Reformat for larger
comments, add la_print_type and la_val_print members. Add
LA_PRINT_TYPE and LA_VAL_PRINT macros. Change local_printchar
to LA_PRINT_CHAR and local_printstr to LA_PRINT_STRING.
* m2-lang.c (m2_create_fundamental_type): Remove unused local
variable nbytes.
* m2-lang.c (m2_language_defn): Add initializers m2_print_type
and m2_val_print.
* m2-lang.h (m2_print_type, m2_val_print): Add prototypes.
* main.c (execute_command): Remove unused local variable cmdlines.
* main.c (echo_command), stabsread.c (read_type), printcmd.c
(clear_displays), symmisc.c (block_depth), values.c
(clear_value_history):
Make testing of truth value of assignment result explicit.
* mipsread.c (upgrade_type): Update FIXME to include future use
of create_range_type.
* printcmd.c (ptype_command, ptype_eval, whatis_command,
whatis_exp, maintenance_print_type): Move prototypes and functions
to new typeprint.c.
* printcmd.c (_initialize_printcmd): Move add_com calls for
ptype_command and whatis_command to new typeprint.c.
* ser-bsd.c (serial_open): Remove unused variable sgttyb.
* source.c (find_source_lines): Local variable c only used
when LSEEK_NOT_LINEAR is defined.
* stabsread.c (read_array_type): Use new create_range_type
function.
* stabsread.c (read_range_type): Add new index_type variable and
call new create_range_type function rather than handcrafting
range types.
* symmisc.c (type_print_1): Change usages to LA_PRINT_TYPE.
* symtab.c (typedef_print usages): Use c_typedef_print, renamed.
* symtab.c (type_print_base usages): Use c_type_print_base.
* symtab.c (type_print_varspec_prefix usages): Use
c_type_print_varspec_prefix.
* symtab.c (type_print_method_args usages): Use
cp_type_print_method_args.
* valprint.c: Completely ripped apart and the fragments used
to create c-valprint.c, cp-valprint.c, m2-valprint.c, and
valprint.h. Remaining stuff is language independent.
* value.h (struct fn_field): Forward declare for prototypes.
* value.h (type_print_1): Remove prototype.
* value.h (enum val_prettyprint): Moved to defs.h.
* value.h (typedef_print): Prototype renamed to c_typedef_print.
* value.h (baseclass_offset): Add prototype.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-typeprint.c, ch-valprint.c.
* Makefile.in (OBS): Add ch-typeprint.o, ch-valprint.o.
* ch-typeprint.c: New file for language dependent type printing.
* ch-valprint.c: New file for language dependent value printing.
* ch-exp.y (parse_number): Remove prototype and stub function.
* ch-exp.y (decode_integer_literal): Removed unused digits and
temp variables.
* ch-exp.y (convert_float): Completely ifdef out for now.
* ch-exp.y (tokentab2, tokentab3, tokentab4, tokentab5),
ch-lang.c (chill_op_print_tab):
Change from ANSI-obsolescent "const static" to ANSI-conformant
"static const".
* ch-exp.y (yylex): Add unhandled storage class enumeration
literals to switch statement for completeness.
* ch-lang.c (chill_create_fundamental_types): Remove unused
nbytes variable. Change dummy type to 2 bytes to match int.
Handle FT_VOID types gratuituously added to chill DWARF by
compiler. Change FT_CHAR case to generate an TYPE_CODE_CHAR
type rather than a one byte TYPE_CODE_INT type.
* ch-lang.c (chill_language_defn): Add chill_print_type and
chill_val_print.
* ch-lang.h (chill_print_type, chill_val_print): Add prototypes.
**** end-sanitize-chill ****
1992-12-18 20:21:32 +00:00
|
|
|
|
type = init_type (TYPE_CODE_CHAR, 1, TYPE_FLAG_UNSIGNED, "CHAR", objfile);
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
break;
|
|
|
|
|
case FT_SIGNED_CHAR:
|
* gdbtypes.h: Add TYPE_FLAG_TARGET_STUB.
* gdbtypes.c (check_stub_type): On TYPE_FLAG_TARGET_STUB, do
what cleanup_undefined_types does for arrays, except we clear
TYPE_FLAG_TARGET_STUB if we fix up the type.
* stabsread.c (cleanup_undefined_types): Add comments about how
doing arrays here is no longer the clean way to do it.
(read_array_type): Set TYPE_FLAG_TARGET_STUB as well as calling
add_undefined_type.
* c-typeprint.c, ch-typeprint.c: Move call to check_stub_type
outside switch so it happens for all type codes.
* cp-valprint.c (cp_print_value_fields): Recurse to val_print,
instead of c_val_print, so that check_stub_type gets called.
* gdbtypes.h, gdbtypes.c, m2-lang.c, ch-lang.c, c-lang.c: Remove
TYPE_FLAG_SIGNED. It was inconsistently set, never checked
(except in recursive_dump_type), and is pointless.
1993-11-15 20:13:30 +00:00
|
|
|
|
type = init_type (TYPE_CODE_INT, 1, 0, "BYTE", objfile);
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
break;
|
|
|
|
|
case FT_UNSIGNED_CHAR:
|
|
|
|
|
type = init_type (TYPE_CODE_INT, 1, TYPE_FLAG_UNSIGNED, "UBYTE", objfile);
|
|
|
|
|
break;
|
|
|
|
|
case FT_SHORT: /* Chill ints are 2 bytes */
|
* gdbtypes.h: Add TYPE_FLAG_TARGET_STUB.
* gdbtypes.c (check_stub_type): On TYPE_FLAG_TARGET_STUB, do
what cleanup_undefined_types does for arrays, except we clear
TYPE_FLAG_TARGET_STUB if we fix up the type.
* stabsread.c (cleanup_undefined_types): Add comments about how
doing arrays here is no longer the clean way to do it.
(read_array_type): Set TYPE_FLAG_TARGET_STUB as well as calling
add_undefined_type.
* c-typeprint.c, ch-typeprint.c: Move call to check_stub_type
outside switch so it happens for all type codes.
* cp-valprint.c (cp_print_value_fields): Recurse to val_print,
instead of c_val_print, so that check_stub_type gets called.
* gdbtypes.h, gdbtypes.c, m2-lang.c, ch-lang.c, c-lang.c: Remove
TYPE_FLAG_SIGNED. It was inconsistently set, never checked
(except in recursive_dump_type), and is pointless.
1993-11-15 20:13:30 +00:00
|
|
|
|
type = init_type (TYPE_CODE_INT, 2, 0, "INT", objfile);
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
break;
|
|
|
|
|
case FT_UNSIGNED_SHORT: /* Chill ints are 2 bytes */
|
|
|
|
|
type = init_type (TYPE_CODE_INT, 2, TYPE_FLAG_UNSIGNED, "UINT", objfile);
|
|
|
|
|
break;
|
1993-02-23 19:30:22 +00:00
|
|
|
|
case FT_INTEGER: /* FIXME? */
|
|
|
|
|
case FT_SIGNED_INTEGER: /* FIXME? */
|
|
|
|
|
case FT_LONG: /* Chill longs are 4 bytes */
|
|
|
|
|
case FT_SIGNED_LONG: /* Chill longs are 4 bytes */
|
* gdbtypes.h: Add TYPE_FLAG_TARGET_STUB.
* gdbtypes.c (check_stub_type): On TYPE_FLAG_TARGET_STUB, do
what cleanup_undefined_types does for arrays, except we clear
TYPE_FLAG_TARGET_STUB if we fix up the type.
* stabsread.c (cleanup_undefined_types): Add comments about how
doing arrays here is no longer the clean way to do it.
(read_array_type): Set TYPE_FLAG_TARGET_STUB as well as calling
add_undefined_type.
* c-typeprint.c, ch-typeprint.c: Move call to check_stub_type
outside switch so it happens for all type codes.
* cp-valprint.c (cp_print_value_fields): Recurse to val_print,
instead of c_val_print, so that check_stub_type gets called.
* gdbtypes.h, gdbtypes.c, m2-lang.c, ch-lang.c, c-lang.c: Remove
TYPE_FLAG_SIGNED. It was inconsistently set, never checked
(except in recursive_dump_type), and is pointless.
1993-11-15 20:13:30 +00:00
|
|
|
|
type = init_type (TYPE_CODE_INT, 4, 0, "LONG", objfile);
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
break;
|
1993-02-23 19:30:22 +00:00
|
|
|
|
case FT_UNSIGNED_INTEGER: /* FIXME? */
|
|
|
|
|
case FT_UNSIGNED_LONG: /* Chill longs are 4 bytes */
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
type = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED, "ULONG", objfile);
|
|
|
|
|
break;
|
|
|
|
|
case FT_FLOAT:
|
|
|
|
|
type = init_type (TYPE_CODE_FLT, 4, 0, "REAL", objfile);
|
|
|
|
|
break;
|
|
|
|
|
case FT_DBL_PREC_FLOAT:
|
|
|
|
|
type = init_type (TYPE_CODE_FLT, 8, 0, "LONG_REAL", objfile);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return (type);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Table of operators and their precedences for printing expressions. */
|
|
|
|
|
|
* Makefile.in (VERSION): Bump to 4.7.4.
* Makefile.in (SFILES_MAINDIR): Add typeprint.c, c-typeprint.c,
m2-typeprint.c, c-valprint.c cp-valprint.c m2-valprint.c.
* Makefile.in (HFILES): Add valprint.h.
* Makefile.in (OBS): Add typeprint.o, c-typeprint.o,
m2-typeprint.o, c-valprint.o, cp-valprint.o m2-valprint.o.
* typeprint.c, typeprint.h: New files for language independent
type printing functions.
* c-typeprint.c, m2-typeprint.c: New files for language dependent
type printing functions and definitions.
* valprint.h: New include file for language independent value
printing definitions.
* c-valprint.c, cp-valprint.c, m2-valprint.c: New files for language
dependent value printing functions.
* c-exp.y (production ptype): Add range_type variable and use new
create_range_type function.
* c-exp.y (tokentab2, tokentab3), c-lang.c (c_op_print_tab),
infcmd.c (path_var_name), language.c (unk_op_print_tab),
m2-lang.c (m2_op_print_tab): Change from ANSI-obsolescent
"const static" to ANSI-conformant "static const".
* c-exp.y (c_create_fundamental_type): Remove unused nbytes.
* c-exp.y (c_language_defn, cplus_language_defn): Add c_print_type,
and c_val_print.
* c-lang.h (c_print_type, c_val_print): Add prototypes.
* coffread.c (decode_type): Add range_type variable and call to
new create_range_type function.
* complaints.c (complain): Remove unused val variable.
* complaints.c (_initialize_complaints): Make it void.
* convex-tdep.c (value_of_trapped_internalvar): Add range_type
variable and call new create_range_type function.
* defs.h (enum val_prettyprint): Move enum from value.h to here
so we can avoid having to include value.h just for prototypes that
need the enum (thanks ANSI).
* dwarfread.c (struct_type): Local anonymous_size variable is
only used if !BITS_BIG_ENDIAN.
* dwarfread.c (decode_subscript_data_item): Add rangetype
variable and call new create_range_type function.
* elfread.c (elf_symfile_read): Remove unused dbx and text_sect
variables.
* eval.c (evaluate_subexp): Remove unused local variable name
and the statement with no side effects that initializes it.
* expprint.c (print_subexp): Change local_printstr to
LA_PRINT_STRING.
* gdbtypes.c (create_range_type): New function that creates
a range type using code fragments from object file readers as
an example of what has to be initialized.
* gdbtypes.c (create_array_type): Removed index_type, low_bound,
and high_bound parameters, replaced with a single range_type
parameter. Change function body to use passed in range_type
rather than handcrafting one.
* gdbtypes.h (create_range_type): Add prototype.
* gdbtypes.h (create_array_type): Change prototype parameters.
* infrun.c (normal_stop): Remove unused local variables tem and c.
* infrun.c (hook_stop_stub): Return 0 rather than random value.
* language.c (unk_lang_print_type, unk_lang_val_print): Add
stub functions that call error if called.
* language.c (unknown_language_defn, auto_language_defn,
local_language_defn): Add initializers unk_lang_print_type and
unk_lang_val_print.
* language.h (struct language_defn): Reformat for larger
comments, add la_print_type and la_val_print members. Add
LA_PRINT_TYPE and LA_VAL_PRINT macros. Change local_printchar
to LA_PRINT_CHAR and local_printstr to LA_PRINT_STRING.
* m2-lang.c (m2_create_fundamental_type): Remove unused local
variable nbytes.
* m2-lang.c (m2_language_defn): Add initializers m2_print_type
and m2_val_print.
* m2-lang.h (m2_print_type, m2_val_print): Add prototypes.
* main.c (execute_command): Remove unused local variable cmdlines.
* main.c (echo_command), stabsread.c (read_type), printcmd.c
(clear_displays), symmisc.c (block_depth), values.c
(clear_value_history):
Make testing of truth value of assignment result explicit.
* mipsread.c (upgrade_type): Update FIXME to include future use
of create_range_type.
* printcmd.c (ptype_command, ptype_eval, whatis_command,
whatis_exp, maintenance_print_type): Move prototypes and functions
to new typeprint.c.
* printcmd.c (_initialize_printcmd): Move add_com calls for
ptype_command and whatis_command to new typeprint.c.
* ser-bsd.c (serial_open): Remove unused variable sgttyb.
* source.c (find_source_lines): Local variable c only used
when LSEEK_NOT_LINEAR is defined.
* stabsread.c (read_array_type): Use new create_range_type
function.
* stabsread.c (read_range_type): Add new index_type variable and
call new create_range_type function rather than handcrafting
range types.
* symmisc.c (type_print_1): Change usages to LA_PRINT_TYPE.
* symtab.c (typedef_print usages): Use c_typedef_print, renamed.
* symtab.c (type_print_base usages): Use c_type_print_base.
* symtab.c (type_print_varspec_prefix usages): Use
c_type_print_varspec_prefix.
* symtab.c (type_print_method_args usages): Use
cp_type_print_method_args.
* valprint.c: Completely ripped apart and the fragments used
to create c-valprint.c, cp-valprint.c, m2-valprint.c, and
valprint.h. Remaining stuff is language independent.
* value.h (struct fn_field): Forward declare for prototypes.
* value.h (type_print_1): Remove prototype.
* value.h (enum val_prettyprint): Moved to defs.h.
* value.h (typedef_print): Prototype renamed to c_typedef_print.
* value.h (baseclass_offset): Add prototype.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-typeprint.c, ch-valprint.c.
* Makefile.in (OBS): Add ch-typeprint.o, ch-valprint.o.
* ch-typeprint.c: New file for language dependent type printing.
* ch-valprint.c: New file for language dependent value printing.
* ch-exp.y (parse_number): Remove prototype and stub function.
* ch-exp.y (decode_integer_literal): Removed unused digits and
temp variables.
* ch-exp.y (convert_float): Completely ifdef out for now.
* ch-exp.y (tokentab2, tokentab3, tokentab4, tokentab5),
ch-lang.c (chill_op_print_tab):
Change from ANSI-obsolescent "const static" to ANSI-conformant
"static const".
* ch-exp.y (yylex): Add unhandled storage class enumeration
literals to switch statement for completeness.
* ch-lang.c (chill_create_fundamental_types): Remove unused
nbytes variable. Change dummy type to 2 bytes to match int.
Handle FT_VOID types gratuituously added to chill DWARF by
compiler. Change FT_CHAR case to generate an TYPE_CODE_CHAR
type rather than a one byte TYPE_CODE_INT type.
* ch-lang.c (chill_language_defn): Add chill_print_type and
chill_val_print.
* ch-lang.h (chill_print_type, chill_val_print): Add prototypes.
**** end-sanitize-chill ****
1992-12-18 20:21:32 +00:00
|
|
|
|
static const struct op_print chill_op_print_tab[] = {
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
{"AND", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
|
|
|
|
|
{"OR", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
|
|
|
|
|
{"NOT", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
|
1993-01-05 01:18:07 +00:00
|
|
|
|
{"MOD", BINOP_MOD, PREC_MUL, 0},
|
|
|
|
|
{"REM", BINOP_REM, PREC_MUL, 0},
|
1995-06-14 19:59:35 +00:00
|
|
|
|
{"SIZE",UNOP_SIZEOF, PREC_BUILTIN_FUNCTION, 0},
|
|
|
|
|
{"LOWER",UNOP_LOWER, PREC_BUILTIN_FUNCTION, 0},
|
|
|
|
|
{"UPPER",UNOP_UPPER, PREC_BUILTIN_FUNCTION, 0},
|
* ch-exp.c (parse_primval): Handle CARD, MAX, MIN.
(match_string_literal): Handle control sequence.
(match_character_literal): Deto.
* ch-lang.c (chill_printchar): Change formating of nonprintable
characters from C'xx' to ^(num).
(chill_printstr): Deto.
(value_chill_card, value_chill_max_min): New functions to process
Chill's CARD, MAX, MIN.
(evaluate_subexp_chill): Process UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN.
* expression.h (exp_opcode): Add UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN
for Chill's CARD, MAX, MIN.
* valarith.c (value_in): Add processing of TYPE_CODE_RANGE
and change return type from builtin_type_int to
builtin_type_chill_bool.
1996-03-06 08:02:45 +00:00
|
|
|
|
{"CARD",UNOP_CARD, PREC_BUILTIN_FUNCTION, 0},
|
|
|
|
|
{"MAX",UNOP_CHMAX, PREC_BUILTIN_FUNCTION, 0},
|
|
|
|
|
{"MIN",UNOP_CHMIN, PREC_BUILTIN_FUNCTION, 0},
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
{":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
|
|
|
|
|
{"=", BINOP_EQUAL, PREC_EQUAL, 0},
|
|
|
|
|
{"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
|
|
|
|
|
{"<=", BINOP_LEQ, PREC_ORDER, 0},
|
|
|
|
|
{">=", BINOP_GEQ, PREC_ORDER, 0},
|
|
|
|
|
{">", BINOP_GTR, PREC_ORDER, 0},
|
|
|
|
|
{"<", BINOP_LESS, PREC_ORDER, 0},
|
|
|
|
|
{"+", BINOP_ADD, PREC_ADD, 0},
|
|
|
|
|
{"-", BINOP_SUB, PREC_ADD, 0},
|
|
|
|
|
{"*", BINOP_MUL, PREC_MUL, 0},
|
|
|
|
|
{"/", BINOP_DIV, PREC_MUL, 0},
|
1993-01-21 18:13:55 +00:00
|
|
|
|
{"//", BINOP_CONCAT, PREC_PREFIX, 0}, /* FIXME: precedence? */
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
{"-", UNOP_NEG, PREC_PREFIX, 0},
|
1994-09-16 07:28:22 +00:00
|
|
|
|
{"->", UNOP_IND, PREC_SUFFIX, 1},
|
|
|
|
|
{"->", UNOP_ADDR, PREC_PREFIX, 0},
|
1995-11-29 22:59:31 +00:00
|
|
|
|
{":", BINOP_RANGE, PREC_ASSIGN, 0},
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
{NULL, 0, 0, 0}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* The built-in types of Chill. */
|
|
|
|
|
|
|
|
|
|
struct type *builtin_type_chill_bool;
|
|
|
|
|
struct type *builtin_type_chill_char;
|
|
|
|
|
struct type *builtin_type_chill_long;
|
|
|
|
|
struct type *builtin_type_chill_ulong;
|
|
|
|
|
struct type *builtin_type_chill_real;
|
|
|
|
|
|
1996-08-13 00:01:37 +00:00
|
|
|
|
struct type ** CONST_PTR (chill_builtin_types[]) =
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
{
|
|
|
|
|
&builtin_type_chill_bool,
|
|
|
|
|
&builtin_type_chill_char,
|
|
|
|
|
&builtin_type_chill_long,
|
|
|
|
|
&builtin_type_chill_ulong,
|
|
|
|
|
&builtin_type_chill_real,
|
|
|
|
|
0
|
|
|
|
|
};
|
|
|
|
|
|
1995-06-14 19:59:35 +00:00
|
|
|
|
/* Calculate LOWER or UPPER of TYPE.
|
|
|
|
|
Returns the result as an integer.
|
|
|
|
|
*RESULT_TYPE is the appropriate type for the result. */
|
|
|
|
|
|
|
|
|
|
LONGEST
|
|
|
|
|
type_lower_upper (op, type, result_type)
|
|
|
|
|
enum exp_opcode op; /* Either UNOP_LOWER or UNOP_UPPER */
|
|
|
|
|
struct type *type;
|
|
|
|
|
struct type **result_type;
|
|
|
|
|
{
|
1995-11-30 01:07:28 +00:00
|
|
|
|
LONGEST low, high;
|
|
|
|
|
*result_type = type;
|
|
|
|
|
CHECK_TYPEDEF (type);
|
1995-06-14 19:59:35 +00:00
|
|
|
|
switch (TYPE_CODE (type))
|
|
|
|
|
{
|
|
|
|
|
case TYPE_CODE_STRUCT:
|
1995-11-30 01:07:28 +00:00
|
|
|
|
*result_type = builtin_type_int;
|
1995-06-14 19:59:35 +00:00
|
|
|
|
if (chill_varying_type (type))
|
|
|
|
|
return type_lower_upper (op, TYPE_FIELD_TYPE (type, 1), result_type);
|
|
|
|
|
break;
|
|
|
|
|
case TYPE_CODE_ARRAY:
|
|
|
|
|
case TYPE_CODE_BITSTRING:
|
|
|
|
|
case TYPE_CODE_STRING:
|
|
|
|
|
type = TYPE_FIELD_TYPE (type, 0); /* Get index type */
|
|
|
|
|
|
|
|
|
|
/* ... fall through ... */
|
|
|
|
|
case TYPE_CODE_RANGE:
|
|
|
|
|
*result_type = TYPE_TARGET_TYPE (type);
|
|
|
|
|
return op == UNOP_LOWER ? TYPE_LOW_BOUND (type) : TYPE_HIGH_BOUND (type);
|
|
|
|
|
|
|
|
|
|
case TYPE_CODE_ENUM:
|
|
|
|
|
case TYPE_CODE_BOOL:
|
|
|
|
|
case TYPE_CODE_INT:
|
|
|
|
|
case TYPE_CODE_CHAR:
|
1995-11-30 01:07:28 +00:00
|
|
|
|
if (get_discrete_bounds (type, &low, &high) >= 0)
|
|
|
|
|
{
|
|
|
|
|
*result_type = type;
|
|
|
|
|
return op == UNOP_LOWER ? low : high;
|
|
|
|
|
}
|
|
|
|
|
break;
|
* dache.c (struct dcache_block): Change data member from unsigned char
to char, since everything passed in and out of dcache is char or casted
to appropriate type anyway.
(dcache_alloc): Move assignment of db out of test and combine separate
tests into if-else.
(dcache_peek_byte): Change ptr from unsigned char* to char*.
(dcache_peek_byte): Remove now unnecessary cast in read_memory call.
(dcache_peek): Change cast of incoming data arg.
(dcache_poke): Change cast of addr of incoming data arg.
(dcache_info): Mask data passed to printf_filtered to lsbyte only.
(dcache_info): Change printf_filtered arg from "% 2x" to " %2x".
* target.c (debug_to_thread_alive): Change return type to int and
return zero, for type compatibility with other *_thread_alive funcs.
(cleanup_target): Change cast of ignore function to match type of the
to_thread_alive member.
* defs.h (error_hook): Add ATTR_NORETURN.
* defs.h (NORETURN, ATTR_NORETURN): Switch from volatile to
__attribute__ method with gcc 2.7, to avoid gcc 2.6.3 bug.
* remote.c (remote_wait): Cast first arg to strtol, strchr, and strncmp
to "const char *" from "unsigned char *".
(remote_wait): Cast arg to putpkt and strcpy from "unsigned char *" to
"char *".
(remote_wait): Change printf format for long arg from "%d" to "%ld".
(getpkt): Remove unused variable "bp".
(remote_fetch_word, remote_store_word): Ifdef out apparently unused
functions.
* breakpoint.c (watchpoint_check): Removed unused variables
"saved_level" and "saved_frame".
* valops.c (value_arg_coerce): Add other enum TYPE_CODE_* and
default cases to switch for completeness.
* infrun.c (wait_for_inferior): Enclose "have_waited" label
in #ifdef that matches the one in which it is referenced.
* ser-unix.c (hardwire_noflush_set_tty_state): Enclose otherwise
unused variable "state" in #ifdef that matches one in which it is
referenced.
* eval.c (evaluate_subexp_standard): Remove unused variable "var".
* eval.c (evaluate_subexp_standard): Remove unused variable "tmp_symbol".
* valarith.c (value_subscript): Remove unused variable "lowerbound",
which is redeclared in a nested scope prior to use.
* printcmd.c (print_frame_nameless_args): Use "%ld" to print long
arg, not "%d".
* {mem-break.c, remote-pa.c, remote.c, saber.suppress}:
Remove unused static var "check_break_insn_size".
* buildsym.c (finish_block): Add other enum LOC_* and default
cases to switch for completeness.
ch-lang.c (type_lower_upper): Removed unused label "retry".
Add other enum TYPE_* and default cases to switch for completeness.
* f-typeprint.c (f_type_print_args): Ifdef out unused function
that may be used someday when Fortran support is complete.
* ch-valprint.c (chill_print_type_scalar): Add other enum
TYPE_* and default cases to switch for completeness.
(chill_val_print): Remove unused local var "high_bound" that
is redeclared in a nested scope prior to use.
(chill_var_print): Use "%ld" to print long arg, not "%d".
* regex.c (re_compile_fastmap, re_match_2): Add remaining enum types
and default to switches for completeness.
* minsyms.c (lookup_minimal_symbol_text): Delete unused variable
"trampoline_symbol".
(prim_record_minimal_symbol_and_info): Return NULL rather than trash.
* elfread.c (elf_symtab_read): Don't dereference NULL returns from
record_minimal_symbol_and_info.
* f-lang.c (saved_function_list_end): Ifdef out unused variable
that may be used someday.
* f-valprint.c (f_val_print): Remove unused local variable "straddr".
1995-07-18 04:38:06 +00:00
|
|
|
|
case TYPE_CODE_UNDEF:
|
|
|
|
|
case TYPE_CODE_PTR:
|
|
|
|
|
case TYPE_CODE_UNION:
|
|
|
|
|
case TYPE_CODE_FUNC:
|
|
|
|
|
case TYPE_CODE_FLT:
|
|
|
|
|
case TYPE_CODE_VOID:
|
|
|
|
|
case TYPE_CODE_SET:
|
|
|
|
|
case TYPE_CODE_ERROR:
|
|
|
|
|
case TYPE_CODE_MEMBER:
|
|
|
|
|
case TYPE_CODE_METHOD:
|
|
|
|
|
case TYPE_CODE_REF:
|
|
|
|
|
case TYPE_CODE_COMPLEX:
|
|
|
|
|
default:
|
|
|
|
|
break;
|
1995-06-14 19:59:35 +00:00
|
|
|
|
}
|
|
|
|
|
error ("unknown mode for LOWER/UPPER builtin");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static value_ptr
|
|
|
|
|
value_chill_length (val)
|
|
|
|
|
value_ptr val;
|
|
|
|
|
{
|
|
|
|
|
LONGEST tmp;
|
|
|
|
|
struct type *type = VALUE_TYPE (val);
|
|
|
|
|
struct type *ttype;
|
1995-11-30 01:07:28 +00:00
|
|
|
|
CHECK_TYPEDEF (type);
|
1995-06-14 19:59:35 +00:00
|
|
|
|
switch (TYPE_CODE (type))
|
|
|
|
|
{
|
|
|
|
|
case TYPE_CODE_ARRAY:
|
|
|
|
|
case TYPE_CODE_BITSTRING:
|
|
|
|
|
case TYPE_CODE_STRING:
|
|
|
|
|
tmp = type_lower_upper (UNOP_UPPER, type, &ttype)
|
|
|
|
|
- type_lower_upper (UNOP_LOWER, type, &ttype) + 1;
|
|
|
|
|
break;
|
|
|
|
|
case TYPE_CODE_STRUCT:
|
|
|
|
|
if (chill_varying_type (type))
|
|
|
|
|
{
|
|
|
|
|
tmp = unpack_long (TYPE_FIELD_TYPE (type, 0), VALUE_CONTENTS (val));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
/* ... else fall through ... */
|
|
|
|
|
default:
|
|
|
|
|
error ("bad argument to LENGTH builtin");
|
|
|
|
|
}
|
|
|
|
|
return value_from_longest (builtin_type_int, tmp);
|
|
|
|
|
}
|
|
|
|
|
|
* ch-exp.c (parse_primval): Handle CARD, MAX, MIN.
(match_string_literal): Handle control sequence.
(match_character_literal): Deto.
* ch-lang.c (chill_printchar): Change formating of nonprintable
characters from C'xx' to ^(num).
(chill_printstr): Deto.
(value_chill_card, value_chill_max_min): New functions to process
Chill's CARD, MAX, MIN.
(evaluate_subexp_chill): Process UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN.
* expression.h (exp_opcode): Add UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN
for Chill's CARD, MAX, MIN.
* valarith.c (value_in): Add processing of TYPE_CODE_RANGE
and change return type from builtin_type_int to
builtin_type_chill_bool.
1996-03-06 08:02:45 +00:00
|
|
|
|
static value_ptr
|
|
|
|
|
value_chill_card (val)
|
|
|
|
|
value_ptr val;
|
|
|
|
|
{
|
|
|
|
|
LONGEST tmp = 0;
|
|
|
|
|
struct type *type = VALUE_TYPE (val);
|
|
|
|
|
CHECK_TYPEDEF (type);
|
|
|
|
|
|
|
|
|
|
if (TYPE_CODE (type) == TYPE_CODE_SET)
|
|
|
|
|
{
|
|
|
|
|
struct type *range_type = TYPE_INDEX_TYPE (type);
|
|
|
|
|
LONGEST lower_bound, upper_bound;
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
get_discrete_bounds (range_type, &lower_bound, &upper_bound);
|
|
|
|
|
for (i = lower_bound; i <= upper_bound; i++)
|
|
|
|
|
if (value_bit_index (type, VALUE_CONTENTS (val), i) > 0)
|
|
|
|
|
tmp++;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
error ("bad argument to CARD builtin");
|
|
|
|
|
|
|
|
|
|
return value_from_longest (builtin_type_int, tmp);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static value_ptr
|
|
|
|
|
value_chill_max_min (op, val)
|
|
|
|
|
enum exp_opcode op;
|
|
|
|
|
value_ptr val;
|
|
|
|
|
{
|
|
|
|
|
LONGEST tmp = 0;
|
|
|
|
|
struct type *type = VALUE_TYPE (val);
|
|
|
|
|
struct type *elttype;
|
|
|
|
|
CHECK_TYPEDEF (type);
|
|
|
|
|
|
|
|
|
|
if (TYPE_CODE (type) == TYPE_CODE_SET)
|
|
|
|
|
{
|
|
|
|
|
LONGEST lower_bound, upper_bound;
|
|
|
|
|
int i, empty = 1;
|
|
|
|
|
|
|
|
|
|
elttype = TYPE_INDEX_TYPE (type);
|
|
|
|
|
CHECK_TYPEDEF (elttype);
|
|
|
|
|
get_discrete_bounds (elttype, &lower_bound, &upper_bound);
|
|
|
|
|
|
|
|
|
|
if (op == UNOP_CHMAX)
|
|
|
|
|
{
|
|
|
|
|
for (i = upper_bound; i >= lower_bound; i--)
|
|
|
|
|
{
|
|
|
|
|
if (value_bit_index (type, VALUE_CONTENTS (val), i) > 0)
|
|
|
|
|
{
|
|
|
|
|
tmp = i;
|
|
|
|
|
empty = 0;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
for (i = lower_bound; i <= upper_bound; i++)
|
|
|
|
|
{
|
|
|
|
|
if (value_bit_index (type, VALUE_CONTENTS (val), i) > 0)
|
|
|
|
|
{
|
|
|
|
|
tmp = i;
|
|
|
|
|
empty = 0;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (empty)
|
|
|
|
|
error ("%s for empty powerset", op == UNOP_CHMAX ? "MAX" : "MIN");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
error ("bad argument to %s builtin", op == UNOP_CHMAX ? "MAX" : "MIN");
|
|
|
|
|
|
|
|
|
|
return value_from_longest (TYPE_CODE (elttype) == TYPE_CODE_RANGE
|
|
|
|
|
? TYPE_TARGET_TYPE (elttype)
|
|
|
|
|
: elttype,
|
|
|
|
|
tmp);
|
|
|
|
|
}
|
|
|
|
|
|
1995-02-12 19:21:04 +00:00
|
|
|
|
static value_ptr
|
|
|
|
|
evaluate_subexp_chill (expect_type, exp, pos, noside)
|
|
|
|
|
struct type *expect_type;
|
|
|
|
|
register struct expression *exp;
|
|
|
|
|
register int *pos;
|
|
|
|
|
enum noside noside;
|
|
|
|
|
{
|
|
|
|
|
int pc = *pos;
|
1995-06-14 19:59:35 +00:00
|
|
|
|
struct type *type;
|
1995-02-12 19:21:04 +00:00
|
|
|
|
int tem, nargs;
|
|
|
|
|
value_ptr arg1;
|
|
|
|
|
value_ptr *argvec;
|
1995-06-14 19:59:35 +00:00
|
|
|
|
enum exp_opcode op = exp->elts[*pos].opcode;
|
|
|
|
|
switch (op)
|
1995-02-12 19:21:04 +00:00
|
|
|
|
{
|
|
|
|
|
case MULTI_SUBSCRIPT:
|
1995-11-30 01:07:28 +00:00
|
|
|
|
if (noside == EVAL_SKIP)
|
1995-02-12 19:21:04 +00:00
|
|
|
|
break;
|
|
|
|
|
(*pos) += 3;
|
|
|
|
|
nargs = longest_to_int (exp->elts[pc + 1].longconst);
|
|
|
|
|
arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
|
1995-11-30 01:07:28 +00:00
|
|
|
|
type = check_typedef (VALUE_TYPE (arg1));
|
1995-02-12 19:21:04 +00:00
|
|
|
|
|
1995-11-30 01:07:28 +00:00
|
|
|
|
if (nargs == 1 && TYPE_CODE (type) == TYPE_CODE_INT)
|
|
|
|
|
{
|
|
|
|
|
/* Looks like string repetition. */
|
|
|
|
|
value_ptr string = evaluate_subexp_with_coercion (exp, pos, noside);
|
|
|
|
|
return value_concat (arg1, string);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch (TYPE_CODE (type))
|
1995-02-12 19:21:04 +00:00
|
|
|
|
{
|
|
|
|
|
case TYPE_CODE_PTR:
|
1996-03-05 07:48:20 +00:00
|
|
|
|
type = check_typedef (TYPE_TARGET_TYPE (type));
|
1996-03-23 19:52:50 +00:00
|
|
|
|
if (!type || TYPE_CODE (type) != TYPE_CODE_FUNC)
|
1996-03-05 07:48:20 +00:00
|
|
|
|
error ("reference value used as function");
|
|
|
|
|
/* ... fall through ... */
|
1995-02-12 19:21:04 +00:00
|
|
|
|
case TYPE_CODE_FUNC:
|
|
|
|
|
/* It's a function call. */
|
1995-11-30 01:07:28 +00:00
|
|
|
|
if (noside == EVAL_AVOID_SIDE_EFFECTS)
|
|
|
|
|
break;
|
|
|
|
|
|
1995-02-12 19:21:04 +00:00
|
|
|
|
/* Allocate arg vector, including space for the function to be
|
|
|
|
|
called in argvec[0] and a terminating NULL */
|
|
|
|
|
argvec = (value_ptr *) alloca (sizeof (value_ptr) * (nargs + 2));
|
|
|
|
|
argvec[0] = arg1;
|
|
|
|
|
tem = 1;
|
1996-03-05 07:48:20 +00:00
|
|
|
|
for (; tem <= nargs && tem <= TYPE_NFIELDS (type); tem++)
|
1996-01-12 01:31:37 +00:00
|
|
|
|
{
|
1996-03-05 07:48:20 +00:00
|
|
|
|
argvec[tem]
|
|
|
|
|
= evaluate_subexp_chill (TYPE_FIELD_TYPE (type, tem-1),
|
|
|
|
|
exp, pos, noside);
|
1996-01-12 01:31:37 +00:00
|
|
|
|
}
|
1995-02-12 19:21:04 +00:00
|
|
|
|
for (; tem <= nargs; tem++)
|
|
|
|
|
argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
|
|
|
|
|
argvec[tem] = 0; /* signal end of arglist */
|
|
|
|
|
|
|
|
|
|
return call_function_by_hand (argvec[0], nargs, argvec + 1);
|
1995-02-12 21:54:20 +00:00
|
|
|
|
default:
|
|
|
|
|
break;
|
1995-02-12 19:21:04 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
while (nargs-- > 0)
|
|
|
|
|
{
|
|
|
|
|
value_ptr index = evaluate_subexp_with_coercion (exp, pos, noside);
|
|
|
|
|
arg1 = value_subscript (arg1, index);
|
|
|
|
|
}
|
|
|
|
|
return (arg1);
|
1995-06-14 19:59:35 +00:00
|
|
|
|
|
|
|
|
|
case UNOP_LOWER:
|
|
|
|
|
case UNOP_UPPER:
|
|
|
|
|
(*pos)++;
|
|
|
|
|
if (noside == EVAL_SKIP)
|
|
|
|
|
{
|
|
|
|
|
(*exp->language_defn->evaluate_exp) (NULL_TYPE, exp, pos, EVAL_SKIP);
|
|
|
|
|
goto nosideret;
|
|
|
|
|
}
|
|
|
|
|
arg1 = (*exp->language_defn->evaluate_exp) (NULL_TYPE, exp, pos,
|
|
|
|
|
EVAL_AVOID_SIDE_EFFECTS);
|
|
|
|
|
tem = type_lower_upper (op, VALUE_TYPE (arg1), &type);
|
|
|
|
|
return value_from_longest (type, tem);
|
|
|
|
|
|
|
|
|
|
case UNOP_LENGTH:
|
|
|
|
|
(*pos)++;
|
|
|
|
|
arg1 = (*exp->language_defn->evaluate_exp) (NULL_TYPE, exp, pos, noside);
|
|
|
|
|
return value_chill_length (arg1);
|
|
|
|
|
|
* ch-exp.c (parse_primval): Handle CARD, MAX, MIN.
(match_string_literal): Handle control sequence.
(match_character_literal): Deto.
* ch-lang.c (chill_printchar): Change formating of nonprintable
characters from C'xx' to ^(num).
(chill_printstr): Deto.
(value_chill_card, value_chill_max_min): New functions to process
Chill's CARD, MAX, MIN.
(evaluate_subexp_chill): Process UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN.
* expression.h (exp_opcode): Add UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN
for Chill's CARD, MAX, MIN.
* valarith.c (value_in): Add processing of TYPE_CODE_RANGE
and change return type from builtin_type_int to
builtin_type_chill_bool.
1996-03-06 08:02:45 +00:00
|
|
|
|
case UNOP_CARD:
|
|
|
|
|
(*pos)++;
|
|
|
|
|
arg1 = (*exp->language_defn->evaluate_exp) (NULL_TYPE, exp, pos, noside);
|
|
|
|
|
return value_chill_card (arg1);
|
|
|
|
|
|
|
|
|
|
case UNOP_CHMAX:
|
|
|
|
|
case UNOP_CHMIN:
|
|
|
|
|
(*pos)++;
|
|
|
|
|
arg1 = (*exp->language_defn->evaluate_exp) (NULL_TYPE, exp, pos, noside);
|
|
|
|
|
return value_chill_max_min (op, arg1);
|
|
|
|
|
|
1995-11-29 22:59:31 +00:00
|
|
|
|
case BINOP_COMMA:
|
|
|
|
|
error ("',' operator used in invalid context");
|
|
|
|
|
|
1995-02-12 21:54:20 +00:00
|
|
|
|
default:
|
|
|
|
|
break;
|
1995-02-12 19:21:04 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return evaluate_subexp_standard (expect_type, exp, pos, noside);
|
1995-06-14 19:59:35 +00:00
|
|
|
|
nosideret:
|
|
|
|
|
return value_from_longest (builtin_type_long, (LONGEST) 1);
|
1995-02-12 19:21:04 +00:00
|
|
|
|
}
|
|
|
|
|
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
const struct language_defn chill_language_defn = {
|
|
|
|
|
"chill",
|
|
|
|
|
language_chill,
|
|
|
|
|
chill_builtin_types,
|
|
|
|
|
range_check_on,
|
|
|
|
|
type_check_on,
|
|
|
|
|
chill_parse, /* parser */
|
|
|
|
|
chill_error, /* parser error function */
|
1995-02-12 19:21:04 +00:00
|
|
|
|
evaluate_subexp_chill,
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
chill_printchar, /* print a character constant */
|
|
|
|
|
chill_printstr, /* function to print a string constant */
|
1998-10-05 19:42:04 +00:00
|
|
|
|
NULL, /* Function to print a single char */
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
chill_create_fundamental_type,/* Create fundamental type in this language */
|
* Makefile.in (VERSION): Bump to 4.7.4.
* Makefile.in (SFILES_MAINDIR): Add typeprint.c, c-typeprint.c,
m2-typeprint.c, c-valprint.c cp-valprint.c m2-valprint.c.
* Makefile.in (HFILES): Add valprint.h.
* Makefile.in (OBS): Add typeprint.o, c-typeprint.o,
m2-typeprint.o, c-valprint.o, cp-valprint.o m2-valprint.o.
* typeprint.c, typeprint.h: New files for language independent
type printing functions.
* c-typeprint.c, m2-typeprint.c: New files for language dependent
type printing functions and definitions.
* valprint.h: New include file for language independent value
printing definitions.
* c-valprint.c, cp-valprint.c, m2-valprint.c: New files for language
dependent value printing functions.
* c-exp.y (production ptype): Add range_type variable and use new
create_range_type function.
* c-exp.y (tokentab2, tokentab3), c-lang.c (c_op_print_tab),
infcmd.c (path_var_name), language.c (unk_op_print_tab),
m2-lang.c (m2_op_print_tab): Change from ANSI-obsolescent
"const static" to ANSI-conformant "static const".
* c-exp.y (c_create_fundamental_type): Remove unused nbytes.
* c-exp.y (c_language_defn, cplus_language_defn): Add c_print_type,
and c_val_print.
* c-lang.h (c_print_type, c_val_print): Add prototypes.
* coffread.c (decode_type): Add range_type variable and call to
new create_range_type function.
* complaints.c (complain): Remove unused val variable.
* complaints.c (_initialize_complaints): Make it void.
* convex-tdep.c (value_of_trapped_internalvar): Add range_type
variable and call new create_range_type function.
* defs.h (enum val_prettyprint): Move enum from value.h to here
so we can avoid having to include value.h just for prototypes that
need the enum (thanks ANSI).
* dwarfread.c (struct_type): Local anonymous_size variable is
only used if !BITS_BIG_ENDIAN.
* dwarfread.c (decode_subscript_data_item): Add rangetype
variable and call new create_range_type function.
* elfread.c (elf_symfile_read): Remove unused dbx and text_sect
variables.
* eval.c (evaluate_subexp): Remove unused local variable name
and the statement with no side effects that initializes it.
* expprint.c (print_subexp): Change local_printstr to
LA_PRINT_STRING.
* gdbtypes.c (create_range_type): New function that creates
a range type using code fragments from object file readers as
an example of what has to be initialized.
* gdbtypes.c (create_array_type): Removed index_type, low_bound,
and high_bound parameters, replaced with a single range_type
parameter. Change function body to use passed in range_type
rather than handcrafting one.
* gdbtypes.h (create_range_type): Add prototype.
* gdbtypes.h (create_array_type): Change prototype parameters.
* infrun.c (normal_stop): Remove unused local variables tem and c.
* infrun.c (hook_stop_stub): Return 0 rather than random value.
* language.c (unk_lang_print_type, unk_lang_val_print): Add
stub functions that call error if called.
* language.c (unknown_language_defn, auto_language_defn,
local_language_defn): Add initializers unk_lang_print_type and
unk_lang_val_print.
* language.h (struct language_defn): Reformat for larger
comments, add la_print_type and la_val_print members. Add
LA_PRINT_TYPE and LA_VAL_PRINT macros. Change local_printchar
to LA_PRINT_CHAR and local_printstr to LA_PRINT_STRING.
* m2-lang.c (m2_create_fundamental_type): Remove unused local
variable nbytes.
* m2-lang.c (m2_language_defn): Add initializers m2_print_type
and m2_val_print.
* m2-lang.h (m2_print_type, m2_val_print): Add prototypes.
* main.c (execute_command): Remove unused local variable cmdlines.
* main.c (echo_command), stabsread.c (read_type), printcmd.c
(clear_displays), symmisc.c (block_depth), values.c
(clear_value_history):
Make testing of truth value of assignment result explicit.
* mipsread.c (upgrade_type): Update FIXME to include future use
of create_range_type.
* printcmd.c (ptype_command, ptype_eval, whatis_command,
whatis_exp, maintenance_print_type): Move prototypes and functions
to new typeprint.c.
* printcmd.c (_initialize_printcmd): Move add_com calls for
ptype_command and whatis_command to new typeprint.c.
* ser-bsd.c (serial_open): Remove unused variable sgttyb.
* source.c (find_source_lines): Local variable c only used
when LSEEK_NOT_LINEAR is defined.
* stabsread.c (read_array_type): Use new create_range_type
function.
* stabsread.c (read_range_type): Add new index_type variable and
call new create_range_type function rather than handcrafting
range types.
* symmisc.c (type_print_1): Change usages to LA_PRINT_TYPE.
* symtab.c (typedef_print usages): Use c_typedef_print, renamed.
* symtab.c (type_print_base usages): Use c_type_print_base.
* symtab.c (type_print_varspec_prefix usages): Use
c_type_print_varspec_prefix.
* symtab.c (type_print_method_args usages): Use
cp_type_print_method_args.
* valprint.c: Completely ripped apart and the fragments used
to create c-valprint.c, cp-valprint.c, m2-valprint.c, and
valprint.h. Remaining stuff is language independent.
* value.h (struct fn_field): Forward declare for prototypes.
* value.h (type_print_1): Remove prototype.
* value.h (enum val_prettyprint): Moved to defs.h.
* value.h (typedef_print): Prototype renamed to c_typedef_print.
* value.h (baseclass_offset): Add prototype.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-typeprint.c, ch-valprint.c.
* Makefile.in (OBS): Add ch-typeprint.o, ch-valprint.o.
* ch-typeprint.c: New file for language dependent type printing.
* ch-valprint.c: New file for language dependent value printing.
* ch-exp.y (parse_number): Remove prototype and stub function.
* ch-exp.y (decode_integer_literal): Removed unused digits and
temp variables.
* ch-exp.y (convert_float): Completely ifdef out for now.
* ch-exp.y (tokentab2, tokentab3, tokentab4, tokentab5),
ch-lang.c (chill_op_print_tab):
Change from ANSI-obsolescent "const static" to ANSI-conformant
"static const".
* ch-exp.y (yylex): Add unhandled storage class enumeration
literals to switch statement for completeness.
* ch-lang.c (chill_create_fundamental_types): Remove unused
nbytes variable. Change dummy type to 2 bytes to match int.
Handle FT_VOID types gratuituously added to chill DWARF by
compiler. Change FT_CHAR case to generate an TYPE_CODE_CHAR
type rather than a one byte TYPE_CODE_INT type.
* ch-lang.c (chill_language_defn): Add chill_print_type and
chill_val_print.
* ch-lang.h (chill_print_type, chill_val_print): Add prototypes.
**** end-sanitize-chill ****
1992-12-18 20:21:32 +00:00
|
|
|
|
chill_print_type, /* Print a type using appropriate syntax */
|
|
|
|
|
chill_val_print, /* Print a value using appropriate syntax */
|
1994-06-05 01:43:40 +00:00
|
|
|
|
chill_value_print, /* Print a top-levl value */
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
{"", "B'", "", ""}, /* Binary format info */
|
Tue Sep 28 09:45:38 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
* symmisc.c (print_symbol): Use %02x not %2x for LOC_CONST_BYTES.
Clean up problems with targets and hosts that have 64 bit longs
and pointers and 32 bit ints.
* breakpoint.c, buildsym.c, c-lang.c, c-valprint.c, ch-lang.c,
ch-valprint.c, core.c, cp-valprint.c, dbxread.c, exec.c,
expprint.c, gdbtypes.c, infcmd.c, language.c, language.h,
m2-lang.c, maint.c, mips-tdep.c, mipsread.c, partial-stab.h,
printcmd.c, remote-vx.c, solib.c, source.c, stack.c, symfile.c,
symmisc.c, symtab.c, valops.c, valprint.c, xcoffexec.c:
Change all printf formats from %x to %lx if outputting an address.
Change la_*_format to use long format.
local_hex_string, local_hex_string_custom now take an unsigned long
argument, change all callers.
* coffread.c (read_coff_symtab): Remove superfluous cast for
complaint output.
* dbxread.c (end_psymtab): Cast MSYMBOL_INFO to long, not int.
* findvar.c, value.h (write_register): Change register value to long.
* gdbtypes.h (struct type): Change `bitsize' to long as
TYPE_FIELD_STATIC_PHYSNAME uses this field as a pointer.
* inferior.h (struct inferior_status): Change type of stop_pc to
CORE_ADDR.
* language.h (local_octal_string, local_octal_string_custom):
Remove prototype, the functions are neither defined nor used.
* mipsread.c (parse_symbol): Use temporary variable for bitsize as
f->bitsize is a long now.
* objfiles.c (add_to_objfile_sections, build_objfile_section_table):
Use unsigned long casts instead of int for abusing sections_end
pointer as integer.
* stack.c (parse_frame_specification): Change type of `args' to
CORE_ADDR for SETUP_ARBITRARY_FRAME.
* printcmd.c (make_vasize): Allow redefinition via MAKEVA_SIZE.
* mipsread.c (parse_type): Alpha cc now supports the t->continued
bit, update algorithm to match the way the compiler uses it.
1993-09-28 17:43:25 +00:00
|
|
|
|
{"O'%lo", "O'", "o", ""}, /* Octal format info */
|
|
|
|
|
{"D'%ld", "D'", "d", ""}, /* Decimal format info */
|
|
|
|
|
{"H'%lx", "H'", "x", ""}, /* Hex format info */
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
chill_op_print_tab, /* expression operators for printing */
|
* language.h (struct language_defn): New field c_style_arrays.
* language.c (unknown_language_defn, auto_language_defn,
local_language_defn), c-lang.c (c_language_defn, cplus_language_defn,
asm_language_defn): Set c_style_arrays to true.
* m2-lang.c (m2_language_defn), ch-lang.c (chill_language_defn),
f-lang.c (f_language_defn): Set c_style_arrays to false.
* valops.c (value_string): If c_style_array is not set,
allocate string in gdb (not inferior) using allocate_value.
* value.h (COERCE_ARRAY), valops.c (value_addr, value_arg_coerce):
Only call value_coerce_array if current_language->c_style_arrays.
* values.c: Add #include "language.h". (Needed for COERCE_ARRAY.)
* valops.c (chill_varying_type): New predicate.
* valops.c (value_cast): Support assigning a fixed string or array
to a variable string/array structure.
* valarith.c (value_subscripted_rvalue): Extra parameter lowerbound.
Check index>=lowerbound, and then add lowerbound to index here,
instead of in caller. Generalize to arbitrary lval_types.
(value_subscript): Use enhanced value_subscripted_rvalue if
c_style_arrays is false (and index is in range).
1995-01-26 02:32:25 +00:00
|
|
|
|
0, /* arrays are first-class (not c-style) */
|
* eval.c (evaluate_subexp): Clean up handling of
OP_UNDETERMINED_ARGLIST (no backtracking, more general).
* f-valprint.c (f_val_print): Print TYPE_CODE_STRING using
LA_PRINT_STRING, and not val_print_string (which reads from inferior).
* ch-lang.c (chill_is_varying_struct), ch-lang.h: Remve function
duplicate function made redundant by chill_varying_type.
Re-write of f77 string and complex number support:
* language.h (struct language_defn): New fields string_lower_bound
and string_char_type.
* c-lang.c (c_language_defn, cplus_language_defn, asm_language_defn),
language.c (unknown_language_defn, auto_language_defn,
local_language_defn), m2-lang.c (m2_language_defn), f-lang.c
(f_language_defn), ch-lang.c (chill_language_defn): Set new fields.
* gdbtypes.c (create_string_type): Use new string_char_type field.
* valops.c (value_string): Use new string_lower_bound field.
* defs.h (TARGET_COMPLEX_BIT, TARGET_DOUBLE_COMPLEX_BIT): Removed.
* f-lang.c (f_create_fundamental_type, _initialize_f_language),
m2-lang.c (m2_create_fundamental_type),
gdbtypes.c (_initialize_gdbtypes): Set TYPE_TARGET_TYPE of complex
types. Set their TYPE_CODEs to TYPE_CODE_COMPLEX.
* mdebugread.c (mdebug_type_complex, mdebug_type_double_complex):
Removed. Use builtin_type_complex and builtin_type_double_complex.
* gdbtypes.h (enum type_code): Removed TYPE_CODE_LITERAL_STRING
and TYPE_CODE_LITERAL_COMPLEX.
* c-typeprint.c, f-typeprint.c, f-valprint.c, eval.c: Removed uses of
TYPE_CODE_LITERAL_STRING and TYPE_CODE_LITERAL_COMPLEX.
* gdbtypes.c, gdbtypes.h (f77_create_literal_complex_type,
f77_create_literal_string_type): Removed.
* value.h (VALUE_LITERAL_DATA, VALUE_SUBSTRING_MEMADDR,
VALUE_SUBSTRING_MYADDR): Removed.
* expression.h (enum exp_opcode): Rename OP_F77_LITERAL_COMPLEX to
OP_COMPLEX.
* parse.c: Update accordingly.
* f-valprint.c (f77_print_cmplx): Removed.
(f_val_print case TYPE_CODE_COMPLEX): Re-write to use print_floating.
* f-exp.y (STRING_LITERAL): Use OP_STRING instead of OP_ARRAY.
* eval.c (evaluate_subexp): For case OP_ARRAY, don't call
f77_value_literal_string.
* valops.c, value.h (f77_value_literal_string, f77_value_substring,
f77_assign_from_literal_string, f77_assign_from_literal_complex):
Removed.
(value_assign): No longer need to handle literal types.
* valops.c (f77_value_literal_complex), value.h: Re-written and
renamed to value_literal_complex. Last arg is now a (complex) type.
* valops.c (f77_cast_into_complex): Re-written and renamed to
cast_into_complex.
* eval.c (evaluate_subexp): Update accordingly.
1995-02-02 03:37:26 +00:00
|
|
|
|
0, /* String lower bound */
|
|
|
|
|
&builtin_type_chill_char, /* Type of string elements */
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
LANG_MAGIC
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* Initialization for Chill */
|
|
|
|
|
|
|
|
|
|
void
|
1992-12-09 07:01:43 +00:00
|
|
|
|
_initialize_chill_language ()
|
* c-exp.y, m2-exp.y: Migrate code that has nothing to do with
expression parsing into c-lang.c and m2-lang.c respectively.
* c-lang.c, m2-lang.c: New files, code migrated from c-exp.y and
m2-exp.y respectively.
* c-lang.h, m2-lang.h: New files, internal interfaces between c-*
and m2-* files respectively.
* Makefile.in (SFILES_MAINDIR): Add c-lang.c, m2-lang.c.
* Makefile.in (HFILES): Add c-lang.h, m2-lang.h.
* Makefile.in (OBS): Add c-lang.o, m2-lang.o.
* expression.h (struct block): Forward declaration for prototypes.
* language.h (struct objfile): Forward declaration for prototypes.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-lang.c.
* Makefile.in (HFILES): Add ch-lang.h.
* Makefile.in (OBS): Add ch-lang.o.
* ch-exp.y: Migrate code that has nothing to do with expression
parsing into ch-lang.c.
* ch-lang.c: New file, code migrated from c-exp.y.
* ch-lang.h: New file, internal interface between ch-* files.
**** end-sanitize-chill ****
1992-12-09 06:50:30 +00:00
|
|
|
|
{
|
|
|
|
|
builtin_type_chill_bool =
|
|
|
|
|
init_type (TYPE_CODE_BOOL, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
|
|
|
|
|
TYPE_FLAG_UNSIGNED,
|
|
|
|
|
"BOOL", (struct objfile *) NULL);
|
|
|
|
|
builtin_type_chill_char =
|
|
|
|
|
init_type (TYPE_CODE_CHAR, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
|
|
|
|
|
TYPE_FLAG_UNSIGNED,
|
|
|
|
|
"CHAR", (struct objfile *) NULL);
|
|
|
|
|
builtin_type_chill_long =
|
|
|
|
|
init_type (TYPE_CODE_INT, TARGET_LONG_BIT / TARGET_CHAR_BIT,
|
|
|
|
|
0,
|
|
|
|
|
"LONG", (struct objfile *) NULL);
|
|
|
|
|
builtin_type_chill_ulong =
|
|
|
|
|
init_type (TYPE_CODE_INT, TARGET_LONG_BIT / TARGET_CHAR_BIT,
|
|
|
|
|
TYPE_FLAG_UNSIGNED,
|
|
|
|
|
"ULONG", (struct objfile *) NULL);
|
|
|
|
|
builtin_type_chill_real =
|
|
|
|
|
init_type (TYPE_CODE_FLT, TARGET_DOUBLE_BIT / TARGET_CHAR_BIT,
|
|
|
|
|
0,
|
|
|
|
|
"LONG_REAL", (struct objfile *) NULL);
|
|
|
|
|
|
|
|
|
|
add_language (&chill_language_defn);
|
|
|
|
|
}
|