Re: Consistent format for memory addresses

Nick Roberts
2005-05-25T21:10:55Z

Eli Zaretskii writes:
> > From: Nick Roberts <nickrob@snap.net.nz>
> > Date: Wed, 25 May 2005 15:52:47 +1200
> > Cc: gdb@sources.redhat.com
> >
> > In truth I don't mind seven or eight digits. What makes it difficult for me
> > is if the output of the CLI commands constantly change.
>
> But this (and similar) changes should not be very hard to accommodate
> for in Emacs, even if you search for the address as a string. For
> instance, you could use a regexp that allows for an arbitrary number
> of leading zeroes, right?
>
> Or am I missing something?

Sure all differences can be accommodated if I know what the rules are. But as
Mark pointed out there are different systems. Presumably they might have
different rules. However, if the same function is used to print out all the
addresses, I don't need to know what format the address has. Since the output
address the two commands would be identical, I can simply record it from one
command and look for it in the other.

The discrepancy in the example I referred to arises because disassemble now
uses ui_out_field_core_addr while "info frame" still uses
deprecated_print_address_numeric. The deprecated prefix suggests that this
arrangement is not permanent. I would like to make changes now like the one
below. Clearly it would be sensible to change the other calls to
deprecated_print_address_numeric and, as it stands, it probably introduces a
memory leak and it might conflict with MI. However, I would like some
re-assurance that such a change would be accepted before going to the trouble
of providing a proper patch.

Nick

*** /home/nick/src/gdb/stack.c.~1.132.~ 2005-05-18 20:17:24.000000000 +1200
--- /home/nick/src/gdb/stack.c 2005-05-26 09:09:17.000000000 +1200
***************
*** 958,964 ****
printf_filtered (":\n");
}
printf_filtered (" %s = ", pc_regname);
! deprecated_print_address_numeric (get_frame_pc (fi), 1, gdb_stdout);

wrap_here (" ");
if (funname)
--- 958,964 ----
printf_filtered (":\n");
}
printf_filtered (" %s = ", pc_regname);
! ui_out_field_core_addr (uiout, "addr", get_frame_pc (fi));

wrap_here (" ");
if (funname)