This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] Add new language: "unsupported"
- From: Elena Zannoni <ezannoni at redhat dot com>
- To: Joel Brobecker <brobecker at gnat dot com>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Wed, 7 May 2003 10:26:42 -0400
- Subject: Re: [RFA] Add new language: "unsupported"
- References: <20030507014231.GA3156@gnat.com>
Joel Brobecker writes:
> As promised to Elena, this is a followup on:
>
> http://sources.redhat.com/ml/gdb-patches/2003-04/msg00209.html
>
> Basically, I added a new "unsupported" language which support is
> minimalistic (identical to what we do with the "asm" language).
> I didn't fancy "partial":
>
> (gdb) show lang
> Current language: auto; currently partial
>
> I felt like it could confuse the user to think that "partial" is the
> name of a real language :-). But I'm not such a big fan of "unsupported"
> either, so all suggestions are welcome.
>
minimal? I would think of 'basic' but that's obviously not good :-)
'unsupported' to me would imply that you still get the errors.
Looking up on a thesaurus:
primitive, primary, nominal, trivial, sparse
> This new language will first be used by the dwarf2 reader, for objects
> which language is currently not supported. What it does, at the moment,
> is use the "unknown" language, which makes a lot of the GDB commands
> fall flat. Like so, when debugging an Ada program:
>
> (gdb) list foo.adb:1
> internal error - unimplemented function unk_lang_create_fundamental_type called.
> (gdb) quit
>
> With the attached patch, and also the little patch to dwarf2read.c
> (attached too, will be submitted later, after this one is agreed on),
> GDB behaves in a much more friendly way:
>
> (gdb) list foo.adb:1
> 1 procedure Foo is
> 2 A : Integer := 1;
> 3 begin
> 4 A := A + 1;
> 5 end Foo;
> (gdb) b foo.adb:4
> Breakpoint 1 at 0x8049769: file foo.adb, line 4.
> (gdb) run
> Starting program: /lek.a/brobecke/ada_example/foo
>
> Breakpoint 1, _ada_foo () at foo.adb:4
> 4 A := A + 1;
> Current language: auto; currently unsupported
> (gdb) p a
> $1 = 1
>
> 2003-05-06 J. Brobecker <brobecker@gnat.com>
>
> * defs.h (language): Add language_unsupported enum value.
> * c-lang.c (unsupported_language_defn): New language definition.
> (_initialize_c_language): Add the new unsupported language to
> the list of languages known to GDB.
>
> Ok to apply?
Yes, modulus the name choice. Could you add a few more comments on
what this new language is suitable for, etc? I wonder if we could add
a mini test case, that maybe set the language to this new one, and
tries something simple, if possible. We cannot add a test that uses
Ada code, because that will eventually become obsolete when we get
full ada support. But maybe we can still use a C program, and see what
happens with 'set laguage <whatever>'.
thanks for doing this.
elena
>
> Thanks,
> --
> Joel
> Index: defs.h
> ===================================================================
> RCS file: /cvs/src/src/gdb/defs.h,v
> retrieving revision 1.118
> diff -c -3 -p -r1.118 defs.h
> *** defs.h 10 Apr 2003 02:18:40 -0000 1.118
> --- defs.h 7 May 2003 01:23:11 -0000
> *************** enum language
> *** 211,217 ****
> language_m2, /* Modula-2 */
> language_asm, /* Assembly language */
> language_scm, /* Scheme / Guile */
> ! language_pascal /* Pascal */
> };
>
> enum precision_type
> --- 211,218 ----
> language_m2, /* Modula-2 */
> language_asm, /* Assembly language */
> language_scm, /* Scheme / Guile */
> ! language_pascal, /* Pascal */
> ! language_unsupported /* All other (unsupported) languages */
> };
>
> enum precision_type
> Index: c-lang.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/c-lang.c,v
> retrieving revision 1.18
> diff -c -3 -p -r1.18 c-lang.c
> *** c-lang.c 2 Apr 2003 03:02:46 -0000 1.18
> --- c-lang.c 7 May 2003 01:23:04 -0000
> *************** const struct language_defn asm_language_
> *** 651,660 ****
> --- 651,692 ----
> LANG_MAGIC
> };
>
> + const struct language_defn unsupported_language_defn =
> + {
> + "unsupported", /* Language name */
> + language_unsupported,
> + c_builtin_types,
> + range_check_off,
> + type_check_off,
> + case_sensitive_on,
> + c_preprocess_and_parse,
> + c_error,
> + evaluate_subexp_standard,
> + c_printchar, /* Print a character constant */
> + c_printstr, /* Function to print string constant */
> + c_emit_char, /* Print a single char */
> + c_create_fundamental_type, /* Create fundamental type in this language */
> + c_print_type, /* Print a type using appropriate syntax */
> + c_val_print, /* Print a value using appropriate syntax */
> + c_value_print, /* Print a top-level value */
> + NULL, /* Language specific skip_trampoline */
> + NULL, /* Language specific symbol demangler */
> + {"", "", "", ""}, /* Binary format info */
> + {"0%lo", "0", "o", ""}, /* Octal format info */
> + {"%ld", "", "d", ""}, /* Decimal format info */
> + {"0x%lx", "0x", "x", ""}, /* Hex format info */
> + c_op_print_tab, /* expression operators for printing */
> + 1, /* c-style arrays */
> + 0, /* String lower bound */
> + &builtin_type_char, /* Type of string elements */
> + LANG_MAGIC
> + };
> +
> void
> _initialize_c_language (void)
> {
> add_language (&c_language_defn);
> add_language (&cplus_language_defn);
> add_language (&asm_language_defn);
> + add_language (&unsupported_language_defn);
> }
> Index: dwarf2read.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/dwarf2read.c,v
> retrieving revision 1.90
> diff -c -3 -p -r1.90 dwarf2read.c
> *** dwarf2read.c 15 Apr 2003 23:07:11 -0000 1.90
> --- dwarf2read.c 7 May 2003 01:23:14 -0000
> *************** set_cu_language (unsigned int lang)
> *** 4548,4554 ****
> case DW_LANG_Pascal83:
> case DW_LANG_Modula2:
> default:
> ! cu_language = language_unknown;
> break;
> }
> cu_language_defn = language_def (cu_language);
> --- 4548,4554 ----
> case DW_LANG_Pascal83:
> case DW_LANG_Modula2:
> default:
> ! cu_language = language_unsupported;
> break;
> }
> cu_language_defn = language_def (cu_language);
>