From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Snyder To: Ed Satterthwaite Cc: gdb-patches@sources.redhat.com, cagney@cygnus.com Subject: Re: [RFA] info breakpoints: handle 64-bit addresses Date: Fri, 16 Mar 2001 11:25:00 -0000 Message-id: <3AB265E3.3C510856@cygnus.com> References: <20010316013348.A6253DF21@wagner.sibyte.com> X-SW-Source: 2001-03/msg00285.html Ed Satterthwaite wrote: > > As written, this patch has a slightly unfortunate side effect for MIPS > targets. > > Michael Snyder wrote > > > 2001-03-14 Michael Snyder > > > > * breakpoint.c (print_one_breakpoint): Handle 64-bit addresses. > > In the code below, b->address is a CORE_ADDR, which is 64 bits when > gdb is configured to support 64-bit MIPS targets. TARGET_ADDR_BIT is > implicitly set in mips-tdep.c according to the ABI deduced from the > object file. For 32-bit or unknown ABI's, that will be 32. In the > MIPS architecture, a 64-bit CPU sign-extends 32-bit addresses. > > At least on some hosts, the output conversion is done by sprintf. > Thus 32-bit addresses with bit 31 clear will print as 8 hex digits, > while those with bit 31 set (e.g., kseg0 and kseg1) will spill into 16 > hex digits, thereby spoiling the intended column alignment. > > Here's a possible alternative for the first arm of the new > conditional. It's similar to usage in mips-tdep.c. It avoids the > cast to unsigned long in the original code but does assume ANSI C. > > tmp = longest_local_hex_string_custom ((b->address > & (CORE_ADDR) 0xffffffff), > "08l"); Ah -- OK, this is reasonable. Thanks for the suggestion.