[rfc][2/3] Eliminate LOC_LOCAL_ARG

Ulrich Weigand uweigand@de.ibm.com
Mon May 19 18:38:00 GMT 2008


Hello,

while looking at the address classes, I noticed that LOC_LOCAL_ARG
also is not used anywhere anymore.  The comment in symtab.h says
it used to be used with the i960 target -- which is no longer 
supported by GDB.

This patch therefore removes the code related to LOC_LOCAL_ARG.
Any objections to removing this address class?

Bye,
Ulrich


ChangeLog:

	* symtab.h (enum address_class): Remove LOC_LOCAL_ARG.

	* ada-exp.y (select_possible_type_sym): Do not handle LOC_LOCAL_ARG.
	* ada-lang.c (resolve_subexp, symtab_for_sym): Likewise.
	(ada_add_block_symbols): Likewise.
	* ax-gdb.c (gen_var_ref): Likewise.
	* buildsyms.c (finish_block): Likewise.
	* findvar.c (symbol_read_needs_frame, read_var_value): Likewise.
	* m2-exp.y (yylex): Likewise.
	* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
	* printcmd.c (address_info): Likewise.
	* stack.c (print_frame_args, print_frame_arg_vars): Likewise.
	* symmisc.c (print_symbol, print_partial_symbols): Likewise.
	* symtab.c (lookup_block_symbol): Likewise.
	* tracepoint.c (collect_symbol, add_local_symbols): Likewise.
	(scope_info): Likewise.


diff -urNp gdb-orig/gdb/ada-exp.y gdb-head/gdb/ada-exp.y
--- gdb-orig/gdb/ada-exp.y	2008-05-19 17:48:16.663436000 +0200
+++ gdb-head/gdb/ada-exp.y	2008-05-19 18:08:21.836045065 +0200
@@ -1059,7 +1059,6 @@ select_possible_type_sym (struct ada_sym
       case LOC_REGPARM:
       case LOC_REGPARM_ADDR:
       case LOC_LOCAL:
-      case LOC_LOCAL_ARG:
       case LOC_BASEREG:
       case LOC_BASEREG_ARG:
       case LOC_COMPUTED:
diff -urNp gdb-orig/gdb/ada-lang.c gdb-head/gdb/ada-lang.c
--- gdb-orig/gdb/ada-lang.c	2008-05-19 17:49:26.881032000 +0200
+++ gdb-head/gdb/ada-lang.c	2008-05-19 18:06:53.960314963 +0200
@@ -2893,7 +2893,6 @@ resolve_subexp (struct expression **expp
                   case LOC_REGPARM:
                   case LOC_REGPARM_ADDR:
                   case LOC_LOCAL:
-                  case LOC_LOCAL_ARG:
                   case LOC_BASEREG:
                   case LOC_BASEREG_ARG:
                   case LOC_COMPUTED:
@@ -4322,7 +4321,6 @@ symtab_for_sym (struct symbol *sym)
       case LOC_REGPARM_ADDR:
       case LOC_LOCAL:
       case LOC_TYPEDEF:
-      case LOC_LOCAL_ARG:
       case LOC_BASEREG:
       case LOC_BASEREG_ARG:
       case LOC_COMPUTED:
@@ -5222,7 +5220,6 @@ ada_add_block_symbols (struct obstack *o
             switch (SYMBOL_CLASS (sym))
               {
               case LOC_ARG:
-              case LOC_LOCAL_ARG:
               case LOC_REF_ARG:
               case LOC_REGPARM:
               case LOC_REGPARM_ADDR:
@@ -5256,7 +5253,6 @@ ada_add_block_symbols (struct obstack *o
                 switch (SYMBOL_CLASS (sym))
                   {
                   case LOC_ARG:
-                  case LOC_LOCAL_ARG:
                   case LOC_REF_ARG:
                   case LOC_REGPARM:
                   case LOC_REGPARM_ADDR:
@@ -5312,7 +5308,6 @@ ada_add_block_symbols (struct obstack *o
                 switch (SYMBOL_CLASS (sym))
                   {
                   case LOC_ARG:
-                  case LOC_LOCAL_ARG:
                   case LOC_REF_ARG:
                   case LOC_REGPARM:
                   case LOC_REGPARM_ADDR:
diff -urNp gdb-orig/gdb/ax-gdb.c gdb-head/gdb/ax-gdb.c
--- gdb-orig/gdb/ax-gdb.c	2008-02-05 16:54:34.000000000 +0100
+++ gdb-head/gdb/ax-gdb.c	2008-05-19 18:07:54.734798488 +0200
@@ -564,7 +564,6 @@ gen_var_ref (struct agent_expr *ax, stru
       break;
 
     case LOC_LOCAL:		/* var lives in locals area of frame */
-    case LOC_LOCAL_ARG:
       gen_frame_locals_address (ax);
       gen_sym_offset (ax, var);
       value->kind = axs_lvalue_memory;
diff -urNp gdb-orig/gdb/buildsym.c gdb-head/gdb/buildsym.c
--- gdb-orig/gdb/buildsym.c	2008-05-19 18:08:43.618253079 +0200
+++ gdb-head/gdb/buildsym.c	2008-05-19 18:05:56.483757927 +0200
@@ -290,7 +290,6 @@ finish_block (struct symbol *symbol, str
 		case LOC_REGPARM:
 		case LOC_REGPARM_ADDR:
 		case LOC_BASEREG_ARG:
-		case LOC_LOCAL_ARG:
 		case LOC_COMPUTED_ARG:
 		  nparams++;
 		  break;
@@ -330,7 +329,6 @@ finish_block (struct symbol *symbol, str
 		    case LOC_REGPARM:
 		    case LOC_REGPARM_ADDR:
 		    case LOC_BASEREG_ARG:
-		    case LOC_LOCAL_ARG:
 		    case LOC_COMPUTED_ARG:
 		      TYPE_FIELD_TYPE (ftype, iparams) = SYMBOL_TYPE (sym);
 		      TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
diff -urNp gdb-orig/gdb/findvar.c gdb-head/gdb/findvar.c
--- gdb-orig/gdb/findvar.c	2008-05-19 18:08:43.624252221 +0200
+++ gdb-head/gdb/findvar.c	2008-05-19 18:04:56.565285399 +0200
@@ -359,7 +359,6 @@ symbol_read_needs_frame (struct symbol *
     case LOC_REGPARM:
     case LOC_REGPARM_ADDR:
     case LOC_LOCAL:
-    case LOC_LOCAL_ARG:
     case LOC_BASEREG:
     case LOC_BASEREG_ARG:
       return 1;
@@ -480,7 +479,6 @@ read_var_value (struct symbol *var, stru
       }
 
     case LOC_LOCAL:
-    case LOC_LOCAL_ARG:
       if (frame == NULL)
 	return 0;
       addr = get_frame_locals_address (frame);
diff -urNp gdb-orig/gdb/m2-exp.y gdb-head/gdb/m2-exp.y
--- gdb-orig/gdb/m2-exp.y	2008-05-19 17:49:26.968020000 +0200
+++ gdb-head/gdb/m2-exp.y	2008-05-19 18:07:37.260637199 +0200
@@ -1044,7 +1044,6 @@ yylex ()
        case LOC_REGPARM:
        case LOC_REGPARM_ADDR:
        case LOC_LOCAL:
-       case LOC_LOCAL_ARG:
        case LOC_BASEREG:
        case LOC_BASEREG_ARG:
        case LOC_CONST:
diff -urNp gdb-orig/gdb/mi/mi-cmd-stack.c gdb-head/gdb/mi/mi-cmd-stack.c
--- gdb-orig/gdb/mi/mi-cmd-stack.c	2008-05-19 17:49:26.986017000 +0200
+++ gdb-head/gdb/mi/mi-cmd-stack.c	2008-05-19 18:04:38.771037711 +0200
@@ -254,7 +254,6 @@ list_args_or_locals (int locals, int val
 	    case LOC_REF_ARG:	/* reference arg         */
 	    case LOC_REGPARM:	/* register arg          */
 	    case LOC_REGPARM_ADDR:	/* indirect register arg */
-	    case LOC_LOCAL_ARG:	/* stack arg             */
 	    case LOC_BASEREG_ARG:	/* basereg arg           */
 	    case LOC_COMPUTED_ARG:	/* arg with computed location */
 	      if (!locals)
diff -urNp gdb-orig/gdb/printcmd.c gdb-head/gdb/printcmd.c
--- gdb-orig/gdb/printcmd.c	2008-05-19 18:08:43.639250076 +0200
+++ gdb-head/gdb/printcmd.c	2008-05-19 18:08:07.303995134 +0200
@@ -1164,10 +1164,6 @@ address_info (char *exp, int from_tty)
       printf_filtered (_("an argument at offset %ld"), val);
       break;
 
-    case LOC_LOCAL_ARG:
-      printf_filtered (_("an argument at frame offset %ld"), val);
-      break;
-
     case LOC_LOCAL:
       printf_filtered (_("a local variable at frame offset %ld"), val);
       break;
diff -urNp gdb-orig/gdb/stack.c gdb-head/gdb/stack.c
--- gdb-orig/gdb/stack.c	2008-05-19 17:49:27.049142000 +0200
+++ gdb-head/gdb/stack.c	2008-05-19 18:05:25.542528676 +0200
@@ -264,7 +264,6 @@ print_frame_args (struct symbol *func, s
 		 keep track of stack offsets in them.  */
 	    case LOC_REGPARM:
 	    case LOC_REGPARM_ADDR:
-	    case LOC_LOCAL_ARG:
 	    case LOC_BASEREG_ARG:
 	    case LOC_COMPUTED_ARG:
 	      break;
@@ -1577,7 +1576,6 @@ print_frame_arg_vars (struct frame_info 
       switch (SYMBOL_CLASS (sym))
 	{
 	case LOC_ARG:
-	case LOC_LOCAL_ARG:
 	case LOC_REF_ARG:
 	case LOC_REGPARM:
 	case LOC_REGPARM_ADDR:
diff -urNp gdb-orig/gdb/symmisc.c gdb-head/gdb/symmisc.c
--- gdb-orig/gdb/symmisc.c	2008-05-19 18:08:43.681244070 +0200
+++ gdb-head/gdb/symmisc.c	2008-05-19 18:05:43.901695679 +0200
@@ -651,11 +651,6 @@ print_symbol (void *args)
 			    SYMBOL_VALUE (symbol));
 	  break;
 
-	case LOC_LOCAL_ARG:
-	  fprintf_filtered (outfile, "arg at offset 0x%lx from fp",
-			    SYMBOL_VALUE (symbol));
-	  break;
-
 	case LOC_REF_ARG:
 	  fprintf_filtered (outfile, "reference arg at 0x%lx", SYMBOL_VALUE (symbol));
 	  break;
@@ -856,9 +851,6 @@ print_partial_symbols (struct partial_sy
 	case LOC_CONST_BYTES:
 	  fputs_filtered ("constant bytes", outfile);
 	  break;
-	case LOC_LOCAL_ARG:
-	  fputs_filtered ("shuffled arg", outfile);
-	  break;
 	case LOC_UNRESOLVED:
 	  fputs_filtered ("unresolved", outfile);
 	  break;
diff -urNp gdb-orig/gdb/symtab.c gdb-head/gdb/symtab.c
--- gdb-orig/gdb/symtab.c	2008-05-19 18:08:43.693242355 +0200
+++ gdb-head/gdb/symtab.c	2008-05-19 18:06:16.456959660 +0200
@@ -1958,7 +1958,6 @@ lookup_block_symbol (const struct block 
 	    {
 	      sym_found = sym;
 	      if (SYMBOL_CLASS (sym) != LOC_ARG &&
-		  SYMBOL_CLASS (sym) != LOC_LOCAL_ARG &&
 		  SYMBOL_CLASS (sym) != LOC_REF_ARG &&
 		  SYMBOL_CLASS (sym) != LOC_REGPARM &&
 		  SYMBOL_CLASS (sym) != LOC_REGPARM_ADDR &&
diff -urNp gdb-orig/gdb/symtab.h gdb-head/gdb/symtab.h
--- gdb-orig/gdb/symtab.h	2008-05-19 18:08:43.718238780 +0200
+++ gdb-head/gdb/symtab.h	2008-05-19 18:06:31.838153706 +0200
@@ -485,14 +485,6 @@ enum address_class
 
   LOC_CONST_BYTES,
 
-  /* Value is arg at SYMBOL_VALUE offset in stack frame. Differs from
-     LOC_LOCAL in that symbol is an argument; differs from LOC_ARG in
-     that we find it in the frame (get_frame_locals_address), not in
-     the arglist (get_frame_args_address).  Added for i960, which
-     passes args in regs then copies to frame.  */
-
-  LOC_LOCAL_ARG,
-
   /* Value is at SYMBOL_VALUE offset from the current value of
      register number SYMBOL_BASEREG.  This exists mainly for the same
      things that LOC_LOCAL and LOC_ARG do; but we need to do this
diff -urNp gdb-orig/gdb/tracepoint.c gdb-head/gdb/tracepoint.c
--- gdb-orig/gdb/tracepoint.c	2008-05-19 18:08:43.730237064 +0200
+++ gdb-head/gdb/tracepoint.c	2008-05-19 18:07:27.487572931 +0200
@@ -1279,7 +1279,6 @@ collect_symbol (struct collection_list *
       add_memrange (collect, reg, offset, len);
       break;
     case LOC_LOCAL:
-    case LOC_LOCAL_ARG:
       reg = frame_regno;
       offset = frame_offset + SYMBOL_VALUE (sym);
       if (info_verbose)
@@ -1348,7 +1347,6 @@ add_local_symbols (struct collection_lis
 		}
 	      break;
 	    case LOC_ARG:
-	    case LOC_LOCAL_ARG:
 	    case LOC_REF_ARG:
 	    case LOC_REGPARM:
 	    case LOC_REGPARM_ADDR:
@@ -2461,7 +2459,6 @@ scope_info (char *args, int from_tty)
 				 (current_gdbarch, SYMBOL_VALUE (sym)));
 	      break;
 	    case LOC_ARG:
-	    case LOC_LOCAL_ARG:
 	      printf_filtered ("an argument at stack/frame offset %ld",
 			       SYMBOL_VALUE (sym));
 	      break;
-- 
  Dr. Ulrich Weigand
  GNU Toolchain for Linux on System z and Cell BE
  Ulrich.Weigand@de.ibm.com



More information about the Gdb-patches mailing list