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]

[PATCH RFA] pascal language part 5 : support for 'info type'


  The current CVS tree gives the following output for
a pascal executable:

(gdb) info type 
Language not supported

This is due to missing support of language_pascal in the
  c_typedef_print function in c-typeprint.c source.
However this function is not C specific at all, thus my patch
removes c_typedef_print from c-typeprint.c and replaces it by
a new function typedef_print in typeprint.c source.
(typedef_print function is just the old c_typedef_print function 
with pascal language support added !)


ChangeLog entry:

2000-08-31 Pierre Muller <muller@ics.u-strasbg.fr>
    * c-typeprint.c (c_typedef_print): remove (replaced by typedef_print in
typeprint.c).
    * typeprint.c (typedef_print): new function. (old c_typedef_print
function with pascal language support added).
    * value.h (c_printdef_print): removed.
    (typedef_print): declare.
     * symtab.c (print_symbol_info): call to c_typedef_print replaced by
call to typedef_print.


Index: c-typeprint.c
===================================================================
RCS file: /cvs/src/src/gdb/c-typeprint.c,v
retrieving revision 1.2
diff -b -c -r1.2 c-typeprint.c
*** c-typeprint.c	2000/07/30 01:48:24	1.2
--- c-typeprint.c	2000/08/31 08:22:10
***************
*** 58,111 ****
  
  
  
- /* Print a description of a type in the format of a 
-    typedef for the current language.
-    NEW is the new name for a type TYPE. */
- 
- void
- c_typedef_print (struct type *type, struct symbol *new, struct ui_file
*stream)
- {
-   CHECK_TYPEDEF (type);
-   switch (current_language->la_language)
-     {
- #ifdef _LANG_c
-     case language_c:
-     case language_cplus:
-       fprintf_filtered (stream, "typedef ");
-       type_print (type, "", stream, 0);
-       if (TYPE_NAME ((SYMBOL_TYPE (new))) == 0
- 	  || !STREQ (TYPE_NAME ((SYMBOL_TYPE (new))), SYMBOL_NAME (new)))
- 	fprintf_filtered (stream, " %s", SYMBOL_SOURCE_NAME (new));
-       break;
- #endif
- #ifdef _LANG_m2
-     case language_m2:
-       fprintf_filtered (stream, "TYPE ");
-       if (!TYPE_NAME (SYMBOL_TYPE (new)) ||
- 	  !STREQ (TYPE_NAME (SYMBOL_TYPE (new)), SYMBOL_NAME (new)))
- 	fprintf_filtered (stream, "%s = ", SYMBOL_SOURCE_NAME (new));
-       else
- 	fprintf_filtered (stream, "<builtin> = ");
-       type_print (type, "", stream, 0);
-       break;
- #endif
- #ifdef _LANG_chill
-     case language_chill:
-       fprintf_filtered (stream, "SYNMODE ");
-       if (!TYPE_NAME (SYMBOL_TYPE (new)) ||
- 	  !STREQ (TYPE_NAME (SYMBOL_TYPE (new)), SYMBOL_NAME (new)))
- 	fprintf_filtered (stream, "%s = ", SYMBOL_SOURCE_NAME (new));
-       else
- 	fprintf_filtered (stream, "<builtin> = ");
-       type_print (type, "", stream, 0);
-       break;
- #endif
-     default:
-       error ("Language not supported.");
-     }
-   fprintf_filtered (stream, ";\n");
- }
- 
  
  /* LEVEL is the depth to indent lines by.  */
  
--- 58,63 ----
Index: symtab.c
===================================================================
RCS file: /cvs/src/src/gdb/symtab.c,v
retrieving revision 1.13
diff -b -c -r1.13 symtab.c
*** symtab.c	2000/08/25 20:51:19	1.13
--- symtab.c	2000/08/31 08:22:34
***************
*** 3829,3835 ****
    /* Typedef that is not a C++ class */
    if (kind == TYPES_NAMESPACE
        && SYMBOL_NAMESPACE (sym) != STRUCT_NAMESPACE)
!     c_typedef_print (SYMBOL_TYPE (sym), sym, gdb_stdout);
    /* variable, func, or typedef-that-is-c++-class */
    else if (kind < TYPES_NAMESPACE ||
  	   (kind == TYPES_NAMESPACE &&
--- 3829,3835 ----
    /* Typedef that is not a C++ class */
    if (kind == TYPES_NAMESPACE
        && SYMBOL_NAMESPACE (sym) != STRUCT_NAMESPACE)
!     typedef_print (SYMBOL_TYPE (sym), sym, gdb_stdout);
    /* variable, func, or typedef-that-is-c++-class */
    else if (kind < TYPES_NAMESPACE ||
  	   (kind == TYPES_NAMESPACE &&
Index: typeprint.c
===================================================================
RCS file: /cvs/src/src/gdb/typeprint.c,v
retrieving revision 1.5
diff -b -c -r1.5 typeprint.c
*** typeprint.c	2000/07/30 01:48:27	1.5
--- typeprint.c	2000/08/31 08:22:35
***************
*** 49,54 ****
--- 49,109 ----
  
  static void whatis_exp (char *, int);
  
+ /* Print a description of a type in the format of a 
+    typedef for the current language.
+    NEW is the new name for a type TYPE. */
+ 
+ void
+ typedef_print (struct type *type, struct symbol *new, struct ui_file
*stream)
+ {
+   CHECK_TYPEDEF (type);
+   switch (current_language->la_language)
+     {
+ #ifdef _LANG_c
+     case language_c:
+     case language_cplus:
+       fprintf_filtered (stream, "typedef ");
+       type_print (type, "", stream, 0);
+       if (TYPE_NAME ((SYMBOL_TYPE (new))) == 0
+ 	  || !STREQ (TYPE_NAME ((SYMBOL_TYPE (new))), SYMBOL_NAME (new)))
+ 	fprintf_filtered (stream, " %s", SYMBOL_SOURCE_NAME (new));
+       break;
+ #endif
+ #ifdef _LANG_m2
+     case language_m2:
+       fprintf_filtered (stream, "TYPE ");
+       if (!TYPE_NAME (SYMBOL_TYPE (new)) ||
+ 	  !STREQ (TYPE_NAME (SYMBOL_TYPE (new)), SYMBOL_NAME (new)))
+ 	fprintf_filtered (stream, "%s = ", SYMBOL_SOURCE_NAME (new));
+       else
+ 	fprintf_filtered (stream, "<builtin> = ");
+       type_print (type, "", stream, 0);
+       break;
+ #endif
+ #ifdef _LANG_pascal
+     case language_pascal:
+       fprintf_filtered (stream, "type ");
+       fprintf_filtered (stream, "%s = ", SYMBOL_SOURCE_NAME (new));
+       type_print (type, "", stream, 0);
+       break;
+ #endif
+ #ifdef _LANG_chill
+     case language_chill:
+       fprintf_filtered (stream, "SYNMODE ");
+       if (!TYPE_NAME (SYMBOL_TYPE (new)) ||
+ 	  !STREQ (TYPE_NAME (SYMBOL_TYPE (new)), SYMBOL_NAME (new)))
+ 	fprintf_filtered (stream, "%s = ", SYMBOL_SOURCE_NAME (new));
+       else
+ 	fprintf_filtered (stream, "<builtin> = ");
+       type_print (type, "", stream, 0);
+       break;
+ #endif
+     default:
+       error ("Language not supported.");
+     }
+   fprintf_filtered (stream, ";\n");
+ }
+ 
  /* Print a description of a type TYPE in the form of a declaration of a
     variable named VARSTRING.  (VARSTRING is demangled if necessary.)
     Output goes to STREAM (via stdio).
Index: value.h
===================================================================
RCS file: /cvs/src/src/gdb/value.h,v
retrieving revision 1.9
diff -b -c -r1.9 value.h
*** value.h	2000/08/25 21:03:00	1.9
--- value.h	2000/08/31 08:22:35
***************
*** 536,542 ****
  
  extern int check_field (value_ptr, const char *);
  
! extern void c_typedef_print (struct type * type, struct symbol * news,
  			     struct ui_file * stream);
  
  extern char *internalvar_name (struct internalvar *var);
--- 536,542 ----
  
  extern int check_field (value_ptr, const char *);
  
! extern void typedef_print (struct type * type, struct symbol * news,
  			     struct ui_file * stream);
  
  extern char *internalvar_name (struct internalvar *var);



Pierre Muller
Institut Charles Sadron
6,rue Boussingault
F 67083 STRASBOURG CEDEX (France)
mailto:muller@ics.u-strasbg.fr
Phone : (33)-3-88-41-40-07  Fax : (33)-3-88-41-40-99

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