From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Taylor To: Jim Blandy Cc: gdb-patches@sources.redhat.com Subject: Re: RFA: addresses and pointers may be different sizes while printing Date: Mon, 09 Jul 2001 19:49:00 -0000 Message-id: <200107100249.WAA09842@houston.candd.org> X-SW-Source: 2001-07/msg00227.html From: Jim Blandy To: gdb-patches@sources.redhat.com Date: Thu, 28 Jun 2001 17:35:46 -0500 (EST) This is a preparatory patch for removing the D10V dependencies that have crept into the core of GDB (for example: value_at in valops.c). The D10V uses 16-bit pointers to index 256k code space. Since all D10V instructions are 32 bits long, and naturally aligned, the PC is really 18 bits long, and the bottom two bits are always zero. Within GDB, we model this by using 32-bit *addresses*, and converting *pointers* (which are 16 bits long) to *addresses* at the appropriate points. Without this conversion (which is necessary for some other architectures as well), the alternative is for GDB to think that pointers are 32 bits long, while the program being debugged thinks they're 16 bits long. As you'd expect, chaos results. In any case, print_scalar_formatted assumes that pointers and the addresses they represent are the same length. This isn't true for the D10V, so we need to remove that assumption. That's what this patch is supposed to do. There are probably similar problems elsewhere, but we can fix them as we find them. I found this one, so I'm fixing it. 2001-06-28 Jim Blandy * printcmd.c (print_scalar_formatted): If we are printing an address, remember that TARGET_ADDR_BIT is not always equal to TARGET_PTR_BIT. Approved.