gdb/ChangeLog: 2005-11-19 Jim Blandy * 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: