This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA] Add new language: "unsupported"


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);
 > 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]