X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Ffindvar.c;h=577b8afa083e092beff26e7c2b3ac8ba32a8a645;hb=fe898f56a1df2d8a610899df50e38d1590f3e57a;hp=980bb57880eb35da1713ac25c2fcd45884218b1b;hpb=66140c26166febde29e6e7f2001674a930967545;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/findvar.c b/gdb/findvar.c index 980bb57880..577b8afa08 100644 --- a/gdb/findvar.c +++ b/gdb/findvar.c @@ -1,7 +1,8 @@ /* Find a variable's value in memory, for GDB, the GNU debugger. - Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, - 1996, 1997, 1998, 1999, 2000, 2001 - Free Software Foundation, Inc. + + Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, + 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003 Free Software + Foundation, Inc. This file is part of GDB. @@ -34,6 +35,7 @@ #include "symfile.h" /* for overlay functions */ #include "regcache.h" #include "builtin-regs.h" +#include "block.h" /* Basic byte-swapping routines. GDB has needed these for a long time... All extract a target-format integer at ADDR which is LEN bytes long. */ @@ -662,8 +664,10 @@ value_from_register (struct type *type, int regnum, struct frame_info *frame) 1); if (num_storage_locs > 1 -#ifdef GDB_TARGET_IS_H8500 - || TYPE_CODE (type) == TYPE_CODE_PTR +#if 0 + // OBSOLETE #ifdef GDB_TARGET_IS_H8500 + // OBSOLETE || TYPE_CODE (type) == TYPE_CODE_PTR + // OBSOLETE #endif #endif ) { @@ -679,76 +683,78 @@ value_from_register (struct type *type, int regnum, struct frame_info *frame) /* Copy all of the data out, whereever it may be. */ -#ifdef GDB_TARGET_IS_H8500 -/* This piece of hideosity is required because the H8500 treats registers - differently depending upon whether they are used as pointers or not. As a - pointer, a register needs to have a page register tacked onto the front. - An alternate way to do this would be to have gcc output different register - numbers for the pointer & non-pointer form of the register. But, it - doesn't, so we're stuck with this. */ - - if (TYPE_CODE (type) == TYPE_CODE_PTR - && len > 2) - { - int page_regnum; - - switch (regnum) - { - case R0_REGNUM: - case R1_REGNUM: - case R2_REGNUM: - case R3_REGNUM: - page_regnum = SEG_D_REGNUM; - break; - case R4_REGNUM: - case R5_REGNUM: - page_regnum = SEG_E_REGNUM; - break; - case R6_REGNUM: - case R7_REGNUM: - page_regnum = SEG_T_REGNUM; - break; - } - - value_bytes[0] = 0; - get_saved_register (value_bytes + 1, - &optim, - &addr, - frame, - page_regnum, - &lval); - - if (register_cached (page_regnum) == -1) - return NULL; /* register value not available */ - - if (lval == lval_register) - reg_stor++; - else - mem_stor++; - first_addr = addr; - last_addr = addr; - - get_saved_register (value_bytes + 2, - &optim, - &addr, - frame, - regnum, - &lval); - - if (register_cached (regnum) == -1) - return NULL; /* register value not available */ - - if (lval == lval_register) - reg_stor++; - else - { - mem_stor++; - mem_tracking = mem_tracking && (addr == last_addr); - } - last_addr = addr; - } - else -#endif /* GDB_TARGET_IS_H8500 */ +#if 0 + // OBSOLETE #ifdef GDB_TARGET_IS_H8500 + // OBSOLETE /* This piece of hideosity is required because the H8500 treats registers + // OBSOLETE differently depending upon whether they are used as pointers or not. As a + // OBSOLETE pointer, a register needs to have a page register tacked onto the front. + // OBSOLETE An alternate way to do this would be to have gcc output different register + // OBSOLETE numbers for the pointer & non-pointer form of the register. But, it + // OBSOLETE doesn't, so we're stuck with this. */ + // OBSOLETE + // OBSOLETE if (TYPE_CODE (type) == TYPE_CODE_PTR + // OBSOLETE && len > 2) + // OBSOLETE { + // OBSOLETE int page_regnum; + // OBSOLETE + // OBSOLETE switch (regnum) + // OBSOLETE { + // OBSOLETE case R0_REGNUM: + // OBSOLETE case R1_REGNUM: + // OBSOLETE case R2_REGNUM: + // OBSOLETE case R3_REGNUM: + // OBSOLETE page_regnum = SEG_D_REGNUM; + // OBSOLETE break; + // OBSOLETE case R4_REGNUM: + // OBSOLETE case R5_REGNUM: + // OBSOLETE page_regnum = SEG_E_REGNUM; + // OBSOLETE break; + // OBSOLETE case R6_REGNUM: + // OBSOLETE case R7_REGNUM: + // OBSOLETE page_regnum = SEG_T_REGNUM; + // OBSOLETE break; + // OBSOLETE } + // OBSOLETE + // OBSOLETE value_bytes[0] = 0; + // OBSOLETE get_saved_register (value_bytes + 1, + // OBSOLETE &optim, + // OBSOLETE &addr, + // OBSOLETE frame, + // OBSOLETE page_regnum, + // OBSOLETE &lval); + // OBSOLETE + // OBSOLETE if (register_cached (page_regnum) == -1) + // OBSOLETE return NULL; /* register value not available */ + // OBSOLETE + // OBSOLETE if (lval == lval_register) + // OBSOLETE reg_stor++; + // OBSOLETE else + // OBSOLETE mem_stor++; + // OBSOLETE first_addr = addr; + // OBSOLETE last_addr = addr; + // OBSOLETE + // OBSOLETE get_saved_register (value_bytes + 2, + // OBSOLETE &optim, + // OBSOLETE &addr, + // OBSOLETE frame, + // OBSOLETE regnum, + // OBSOLETE &lval); + // OBSOLETE + // OBSOLETE if (register_cached (regnum) == -1) + // OBSOLETE return NULL; /* register value not available */ + // OBSOLETE + // OBSOLETE if (lval == lval_register) + // OBSOLETE reg_stor++; + // OBSOLETE else + // OBSOLETE { + // OBSOLETE mem_stor++; + // OBSOLETE mem_tracking = mem_tracking && (addr == last_addr); + // OBSOLETE } + // OBSOLETE last_addr = addr; + // OBSOLETE } + // OBSOLETE else + // OBSOLETE #endif /* GDB_TARGET_IS_H8500 */ +#endif for (local_regnum = regnum; value_bytes_copied < len; (value_bytes_copied += REGISTER_RAW_SIZE (local_regnum),