This is the mail archive of the gdb-patches@sourceware.org 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: Fwd: Obvious: doc fix for 'struct memrange' in tracepoints.c


On 11/19/05, Eli Zaretskii <eliz@gnu.org> wrote:
> How about introducing a macro, so that the code speaks for itself?

How does this look?

gdb/ChangeLog:
2005-11-19  Jim Blandy  <jimb@redhat.com>

	* tracepoint.c (memrange_absolute): New enum constant.
	(struct memrange, memrange_cmp, add_memrange, collect_symbol,
	stringify_collection_list, encode_actions): Use it instead of '-1'
	to indicate an fixed-address memory range.
	(Suggested by Eli Zaretskii.)
gdb/ChangeLog:
2005-11-19  Jim Blandy  <jimb@redhat.com>

	* tracepoint.c (memrange_absolute): New enum constant.
	(struct memrange, memrange_cmp, add_memrange, collect_symbol,
	stringify_collection_list, encode_actions): Use it instead of '-1'
	to indicate an fixed-address memory range.
	(Suggested by Eli Zaretskii.)

Index: gdb/tracepoint.c
===================================================================
RCS file: /cvs/src/src/gdb/tracepoint.c,v
retrieving revision 1.81
diff -c -p -r1.81 tracepoint.c
*** gdb/tracepoint.c	19 Nov 2005 18:57:28 -0000	1.81
--- gdb/tracepoint.c	19 Nov 2005 19:13:29 -0000
*************** make_cleanup_free_actions (struct tracep
*** 1069,1077 ****
    return make_cleanup (do_free_actions_cleanup, t);
  }
  
  struct memrange
  {
!   int type;		/* -1 for absolute memory range, else basereg number */
    bfd_signed_vma start;
    bfd_signed_vma end;
  };
--- 1069,1082 ----
    return make_cleanup (do_free_actions_cleanup, t);
  }
  
+ enum {
+   memrange_absolute = -1
+ };
+ 
  struct memrange
  {
!   int type;		/* memrange_absolute for absolute memory range,
!                            else basereg number */
    bfd_signed_vma start;
    bfd_signed_vma end;
  };
*************** memrange_cmp (const void *va, const void
*** 1103,1109 ****
      return -1;
    if (a->type > b->type)
      return 1;
!   if (a->type == 0)
      {
        if ((bfd_vma) a->start < (bfd_vma) b->start)
  	return -1;
--- 1108,1114 ----
      return -1;
    if (a->type > b->type)
      return 1;
!   if (a->type == memrange_absolute)
      {
        if ((bfd_vma) a->start < (bfd_vma) b->start)
  	return -1;
*************** add_memrange (struct collection_list *me
*** 1175,1181 ****
        printf_filtered (",%ld)\n", len);
      }
  
!   /* type: -1 == memory, n == basereg */
    memranges->list[memranges->next_memrange].type = type;
    /* base: addr if memory, offset if reg relative.  */
    memranges->list[memranges->next_memrange].start = base;
--- 1180,1186 ----
        printf_filtered (",%ld)\n", len);
      }
  
!   /* type: memrange_absolute == memory, other n == basereg */
    memranges->list[memranges->next_memrange].type = type;
    /* base: addr if memory, offset if reg relative.  */
    memranges->list[memranges->next_memrange].start = base;
*************** add_memrange (struct collection_list *me
*** 1189,1195 ****
  				  memranges->listsize);
      }
  
!   if (type != -1)		/* Better collect the base register!  */
      add_register (memranges, type);
  }
  
--- 1194,1200 ----
  				  memranges->listsize);
      }
  
!   if (type != memrange_absolute)		/* Better collect the base register!  */
      add_register (memranges, type);
  }
  
*************** collect_symbol (struct collection_list *
*** 1226,1232 ****
  			   DEPRECATED_SYMBOL_NAME (sym), len, 
  			   tmp /* address */);
  	}
!       add_memrange (collect, -1, offset, len);	/* -1 == memory */
        break;
      case LOC_REGISTER:
      case LOC_REGPARM:
--- 1231,1237 ----
  			   DEPRECATED_SYMBOL_NAME (sym), len, 
  			   tmp /* address */);
  	}
!       add_memrange (collect, memrange_absolute, offset, len);
        break;
      case LOC_REGISTER:
      case LOC_REGPARM:
*************** stringify_collection_list (struct collec
*** 1441,1449 ****
          bfd_signed_vma length = list->list[i].end - list->list[i].start;
  
          /* The "%X" conversion specifier expects an unsigned argument,
!            so passing -1 to it directly gives you "FFFFFFFF" (or more,
!            depending on sizeof (unsigned)).  Special-case it.  */
!         if (list->list[i].type == -1)
            sprintf (end, "M-1,%s,%lX", tmp2, (long) length);
          else
            sprintf (end, "M%X,%s,%lX", list->list[i].type, tmp2, (long) length);
--- 1446,1455 ----
          bfd_signed_vma length = list->list[i].end - list->list[i].start;
  
          /* The "%X" conversion specifier expects an unsigned argument,
!            so passing -1 (memrange_absolute) to it directly gives you
!            "FFFFFFFF" (or more, depending on sizeof (unsigned)).
!            Special-case it.  */
!         if (list->list[i].type == memrange_absolute)
            sprintf (end, "M-1,%s,%lX", tmp2, (long) length);
          else
            sprintf (end, "M%X,%s,%lX", list->list[i].type, tmp2, (long) length);
*************** encode_actions (struct tracepoint *t, ch
*** 1605,1611 ****
  		      tempval = evaluate_expression (exp);
  		      addr = VALUE_ADDRESS (tempval) + value_offset (tempval);
  		      len = TYPE_LENGTH (check_typedef (exp->elts[1].type));
! 		      add_memrange (collect, -1, addr, len);
  		      break;
  
  		    case OP_VAR_VALUE:
--- 1611,1617 ----
  		      tempval = evaluate_expression (exp);
  		      addr = VALUE_ADDRESS (tempval) + value_offset (tempval);
  		      len = TYPE_LENGTH (check_typedef (exp->elts[1].type));
! 		      add_memrange (collect, memrange_absolute, addr, len);
  		      break;
  
  		    case OP_VAR_VALUE:

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