1 /* Find a variable's value in memory, for GDB, the GNU debugger.
2 Copyright 1986, 1987, 1989, 1991 Free Software Foundation, Inc.
4 This file is part of GDB.
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
29 #if !defined (GET_SAVED_REGISTER)
31 /* Return the address in which frame FRAME's value of register REGNUM
32 has been saved in memory. Or return zero if it has not been saved.
33 If REGNUM specifies the SP, the value we return is actually
34 the SP value, not an address where it was saved. */
37 find_saved_register (frame, regnum)
41 struct frame_info *fi;
42 struct frame_saved_regs saved_regs;
44 register FRAME frame1 = 0;
45 register CORE_ADDR addr = 0;
47 if (frame == 0) /* No regs saved if want current frame */
50 #ifdef HAVE_REGISTER_WINDOWS
51 /* We assume that a register in a register window will only be saved
52 in one place (since the name changes and/or disappears as you go
53 towards inner frames), so we only call get_frame_saved_regs on
54 the current frame. This is directly in contradiction to the
55 usage below, which assumes that registers used in a frame must be
56 saved in a lower (more interior) frame. This change is a result
57 of working on a register window machine; get_frame_saved_regs
58 always returns the registers saved within a frame, within the
59 context (register namespace) of that frame. */
61 /* However, note that we don't want this to return anything if
62 nothing is saved (if there's a frame inside of this one). Also,
63 callers to this routine asking for the stack pointer want the
64 stack pointer saved for *this* frame; this is returned from the
68 if (REGISTER_IN_WINDOW_P(regnum))
70 frame1 = get_next_frame (frame);
71 if (!frame1) return 0; /* Registers of this frame are
74 /* Get the SP from the next frame in; it will be this
76 if (regnum != SP_REGNUM)
79 fi = get_frame_info (frame1);
80 get_frame_saved_regs (fi, &saved_regs);
81 return saved_regs.regs[regnum]; /* ... which might be zero */
83 #endif /* HAVE_REGISTER_WINDOWS */
85 /* Note that this next routine assumes that registers used in
86 frame x will be saved only in the frame that x calls and
87 frames interior to it. This is not true on the sparc, but the
88 above macro takes care of it, so we should be all right. */
92 frame1 = get_prev_frame (frame1);
93 if (frame1 == 0 || frame1 == frame)
95 fi = get_frame_info (frame1);
96 get_frame_saved_regs (fi, &saved_regs);
97 if (saved_regs.regs[regnum])
98 addr = saved_regs.regs[regnum];
104 /* Find register number REGNUM relative to FRAME and put its (raw,
105 target format) contents in *RAW_BUFFER. Set *OPTIMIZED if the
106 variable was optimized out (and thus can't be fetched). Set *LVAL
107 to lval_memory, lval_register, or not_lval, depending on whether
108 the value was fetched from memory, from a register, or in a strange
109 and non-modifiable way (e.g. a frame pointer which was calculated
110 rather than fetched). Set *ADDRP to the address, either in memory
111 on as a REGISTER_BYTE offset into the registers array.
113 Note that this implementation never sets *LVAL to not_lval. But
114 it can be replaced by defining GET_SAVED_REGISTER and supplying
117 The argument RAW_BUFFER must point to aligned memory. */
120 get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval)
126 enum lval_type *lval;
129 /* Normal systems don't optimize out things with register numbers. */
130 if (optimized != NULL)
132 addr = find_saved_register (frame, regnum);
137 if (regnum == SP_REGNUM)
139 if (raw_buffer != NULL)
141 *(CORE_ADDR *)raw_buffer = addr;
142 /* Put it back in target byte order. */
143 SWAP_TARGET_AND_HOST (raw_buffer, sizeof (CORE_ADDR));
149 if (raw_buffer != NULL)
150 read_memory (addr, raw_buffer, REGISTER_RAW_SIZE (regnum));
155 *lval = lval_register;
156 addr = REGISTER_BYTE (regnum);
157 if (raw_buffer != NULL)
158 read_register_gen (regnum, raw_buffer);
163 #endif /* GET_SAVED_REGISTER. */
165 /* Copy the bytes of register REGNUM, relative to the current stack frame,
166 into our memory at MYADDR, in target byte order.
167 The number of bytes copied is REGISTER_RAW_SIZE (REGNUM).
169 Returns 1 if could not be read, 0 if could. */
172 read_relative_register_raw_bytes (regnum, myaddr)
177 if (regnum == FP_REGNUM && selected_frame)
179 memcpy (myaddr, &FRAME_FP(selected_frame), REGISTER_RAW_SIZE(FP_REGNUM));
180 SWAP_TARGET_AND_HOST (myaddr, REGISTER_RAW_SIZE(FP_REGNUM)); /* in target order */
184 get_saved_register (myaddr, &optim, (CORE_ADDR *) NULL, selected_frame,
185 regnum, (enum lval_type *)NULL);
189 /* Return a `value' with the contents of register REGNUM
190 in its virtual format, with the type specified by
191 REGISTER_VIRTUAL_TYPE. */
194 value_of_register (regnum)
200 char raw_buffer[MAX_REGISTER_RAW_SIZE];
201 char virtual_buffer[MAX_REGISTER_VIRTUAL_SIZE];
204 get_saved_register (raw_buffer, &optim, &addr,
205 selected_frame, regnum, &lval);
207 REGISTER_CONVERT_TO_VIRTUAL (regnum, raw_buffer, virtual_buffer);
208 val = allocate_value (REGISTER_VIRTUAL_TYPE (regnum));
209 memcpy (VALUE_CONTENTS_RAW (val), virtual_buffer,
210 REGISTER_VIRTUAL_SIZE (regnum));
211 VALUE_LVAL (val) = lval;
212 VALUE_ADDRESS (val) = addr;
213 VALUE_REGNO (val) = regnum;
214 VALUE_OPTIMIZED_OUT (val) = optim;
218 /* Low level examining and depositing of registers.
220 The caller is responsible for making
221 sure that the inferior is stopped before calling the fetching routines,
222 or it will get garbage. (a change from GDB version 3, in which
223 the caller got the value from the last stop). */
225 /* Contents of the registers in target byte order.
226 We allocate some extra slop since we do a lot of bcopy's around `registers',
227 and failing-soft is better than failing hard. */
228 char registers[REGISTER_BYTES + /* SLOP */ 256];
230 /* Nonzero if that register has been fetched. */
231 char register_valid[NUM_REGS];
233 /* Indicate that registers may have changed, so invalidate the cache. */
238 for (i = 0; i < NUM_REGS; i++)
239 register_valid[i] = 0;
242 /* Indicate that all registers have been fetched, so mark them all valid. */
247 for (i = 0; i < NUM_REGS; i++)
248 register_valid[i] = 1;
251 /* Copy LEN bytes of consecutive data from registers
252 starting with the REGBYTE'th byte of register data
253 into memory at MYADDR. */
256 read_register_bytes (regbyte, myaddr, len)
261 /* Fetch all registers. */
263 for (i = 0; i < NUM_REGS; i++)
264 if (!register_valid[i])
266 target_fetch_registers (-1);
270 memcpy (myaddr, ®isters[regbyte], len);
273 /* Read register REGNO into memory at MYADDR, which must be large enough
274 for REGISTER_RAW_BYTES (REGNO). Target byte-order.
275 If the register is known to be the size of a CORE_ADDR or smaller,
276 read_register can be used instead. */
278 read_register_gen (regno, myaddr)
282 if (!register_valid[regno])
283 target_fetch_registers (regno);
284 memcpy (myaddr, ®isters[REGISTER_BYTE (regno)],
285 REGISTER_RAW_SIZE (regno));
288 /* Copy LEN bytes of consecutive data from memory at MYADDR
289 into registers starting with the REGBYTE'th byte of register data. */
292 write_register_bytes (regbyte, myaddr, len)
297 /* Make sure the entire registers array is valid. */
298 read_register_bytes (0, (char *)NULL, REGISTER_BYTES);
299 memcpy (®isters[regbyte], myaddr, len);
300 target_store_registers (-1);
303 /* Return the contents of register REGNO, regarding it as an integer. */
304 /* FIXME, this loses when the REGISTER_VIRTUAL (REGNO) is true. Also,
305 why is the return type CORE_ADDR rather than some integer type? */
308 read_register (regno)
318 if (!register_valid[regno])
319 target_fetch_registers (regno);
321 size = REGISTER_RAW_SIZE(regno);
323 if (size == sizeof (unsigned char))
324 return registers[REGISTER_BYTE (regno)];
325 else if (size == sizeof (sval))
327 memcpy (&sval, ®isters[REGISTER_BYTE (regno)], sizeof (sval));
328 SWAP_TARGET_AND_HOST (&sval, sizeof (sval));
331 else if (size == sizeof (ival))
333 memcpy (&ival, ®isters[REGISTER_BYTE (regno)], sizeof (ival));
334 SWAP_TARGET_AND_HOST (&ival, sizeof (ival));
337 else if (size == sizeof (lval))
339 memcpy (&lval, ®isters[REGISTER_BYTE (regno)], sizeof (lval));
340 SWAP_TARGET_AND_HOST (&lval, sizeof (lval));
343 else if (size == sizeof (llval))
345 memcpy (&llval, ®isters[REGISTER_BYTE (regno)], sizeof (llval));
346 SWAP_TARGET_AND_HOST (&llval, sizeof (llval));
351 error ("GDB Internal Error in read_register() for register %d, size %d",
352 regno, REGISTER_RAW_SIZE(regno));
356 /* Registers we shouldn't try to store. */
357 #if !defined (CANNOT_STORE_REGISTER)
358 #define CANNOT_STORE_REGISTER(regno) 0
361 /* Store VALUE in the register number REGNO, regarded as an integer. */
362 /* FIXME, this loses when REGISTER_VIRTUAL (REGNO) is true. Also,
363 shouldn't the val arg be a LONGEST or something? */
366 write_register (regno, val)
377 /* On the sparc, writing %g0 is a no-op, so we don't even want to change
378 the registers array if something writes to this register. */
379 if (CANNOT_STORE_REGISTER (regno))
382 /* If we have a valid copy of the register, and new value == old value,
383 then don't bother doing the actual store. */
385 size = REGISTER_RAW_SIZE(regno);
387 if (size == sizeof(cval))
392 else if (size == sizeof(sval))
397 else if (size == sizeof(ival))
402 else if (size == sizeof(lval))
407 else if (size == sizeof(llval))
414 error ("GDB Internal Error in write_register() for register %d, size %d",
418 SWAP_TARGET_AND_HOST (ptr, size);
419 if (register_valid [regno])
421 if (memcmp (®isters[REGISTER_BYTE (regno)],
426 target_prepare_to_store ();
428 memcpy (®isters[REGISTER_BYTE (regno)], ptr, size);
430 register_valid [regno] = 1;
432 target_store_registers (regno);
435 /* Record that register REGNO contains VAL.
436 This is used when the value is obtained from the inferior or core dump,
437 so there is no need to store the value there. */
440 supply_register (regno, val)
444 register_valid[regno] = 1;
445 memcpy (®isters[REGISTER_BYTE (regno)], val, REGISTER_RAW_SIZE (regno));
447 /* On some architectures, e.g. HPPA, there are a few stray bits in some
448 registers, that the rest of the code would like to ignore. */
449 #ifdef CLEAN_UP_REGISTER_VALUE
450 CLEAN_UP_REGISTER_VALUE(regno, ®isters[REGISTER_BYTE(regno)]);
454 /* Given a struct symbol for a variable,
455 and a stack frame id, read the value of the variable
456 and return a (pointer to a) struct value containing the value.
457 If the variable cannot be found, return a zero pointer.
458 If FRAME is NULL, use the selected_frame. */
461 read_var_value (var, frame)
462 register struct symbol *var;
466 struct frame_info *fi;
467 struct type *type = SYMBOL_TYPE (var);
471 v = allocate_value (type);
472 VALUE_LVAL (v) = lval_memory; /* The most likely possibility. */
473 len = TYPE_LENGTH (type);
475 if (frame == 0) frame = selected_frame;
477 switch (SYMBOL_CLASS (var))
480 memcpy (VALUE_CONTENTS_RAW (v), &SYMBOL_VALUE (var), len);
481 SWAP_TARGET_AND_HOST (VALUE_CONTENTS_RAW (v), len);
482 VALUE_LVAL (v) = not_lval;
486 addr = SYMBOL_VALUE_ADDRESS (var);
487 memcpy (VALUE_CONTENTS_RAW (v), &addr, len);
488 SWAP_TARGET_AND_HOST (VALUE_CONTENTS_RAW (v), len);
489 VALUE_LVAL (v) = not_lval;
492 case LOC_CONST_BYTES:
495 bytes_addr = SYMBOL_VALUE_BYTES (var);
496 memcpy (VALUE_CONTENTS_RAW (v), bytes_addr, len);
497 VALUE_LVAL (v) = not_lval;
502 addr = SYMBOL_VALUE_ADDRESS (var);
506 if (SYMBOL_BASEREG_VALID (var))
508 addr = FRAME_GET_BASEREG_VALUE (frame, SYMBOL_BASEREG (var));
512 fi = get_frame_info (frame);
515 addr = FRAME_ARGS_ADDRESS (fi);
521 addr += SYMBOL_VALUE (var);
525 if (SYMBOL_BASEREG_VALID (var))
527 addr = FRAME_GET_BASEREG_VALUE (frame, SYMBOL_BASEREG (var));
531 fi = get_frame_info (frame);
534 addr = FRAME_ARGS_ADDRESS (fi);
540 addr += SYMBOL_VALUE (var);
541 read_memory (addr, (char *) &addr, sizeof (CORE_ADDR));
546 if (SYMBOL_BASEREG_VALID (var))
548 addr = FRAME_GET_BASEREG_VALUE (frame, SYMBOL_BASEREG (var));
552 fi = get_frame_info (frame);
555 addr = FRAME_LOCALS_ADDRESS (fi);
557 addr += SYMBOL_VALUE (var);
561 error ("Cannot look up value of a typedef");
565 VALUE_ADDRESS (v) = BLOCK_START (SYMBOL_BLOCK_VALUE (var));
570 case LOC_REGPARM_ADDR:
576 b = get_frame_block (frame);
578 v = value_from_register (type, SYMBOL_VALUE (var), frame);
580 if (SYMBOL_CLASS (var) == LOC_REGPARM_ADDR)
582 addr = *(CORE_ADDR *)VALUE_CONTENTS (v);
583 VALUE_LVAL (v) = lval_memory;
590 case LOC_OPTIMIZED_OUT:
591 VALUE_LVAL (v) = not_lval;
592 VALUE_OPTIMIZED_OUT (v) = 1;
596 error ("Cannot look up value of a botched symbol.");
600 VALUE_ADDRESS (v) = addr;
605 /* Return a value of type TYPE, stored in register REGNUM, in frame
609 value_from_register (type, regnum, frame)
614 char raw_buffer [MAX_REGISTER_RAW_SIZE];
615 char virtual_buffer[MAX_REGISTER_VIRTUAL_SIZE];
618 value v = allocate_value (type);
619 int len = TYPE_LENGTH (type);
620 char *value_bytes = 0;
621 int value_bytes_copied = 0;
622 int num_storage_locs;
625 VALUE_REGNO (v) = regnum;
627 num_storage_locs = (len > REGISTER_VIRTUAL_SIZE (regnum) ?
628 ((len - 1) / REGISTER_RAW_SIZE (regnum)) + 1 :
631 if (num_storage_locs > 1
632 #ifdef GDB_TARGET_IS_H8500
633 || TYPE_CODE (type) == TYPE_CODE_PTR
637 /* Value spread across multiple storage locations. */
640 int mem_stor = 0, reg_stor = 0;
641 int mem_tracking = 1;
642 CORE_ADDR last_addr = 0;
643 CORE_ADDR first_addr;
645 value_bytes = (char *) alloca (len + MAX_REGISTER_RAW_SIZE);
647 /* Copy all of the data out, whereever it may be. */
649 #ifdef GDB_TARGET_IS_H8500
650 /* This piece of hideosity is required because the H8500 treats registers
651 differently depending upon whether they are used as pointers or not. As a
652 pointer, a register needs to have a page register tacked onto the front.
653 An alternate way to do this would be to have gcc output different register
654 numbers for the pointer & non-pointer form of the register. But, it
655 doesn't, so we're stuck with this. */
657 if (TYPE_CODE (type) == TYPE_CODE_PTR
664 case R0_REGNUM: case R1_REGNUM: case R2_REGNUM: case R3_REGNUM:
665 page_regnum = SEG_D_REGNUM;
667 case R4_REGNUM: case R5_REGNUM:
668 page_regnum = SEG_E_REGNUM;
670 case R6_REGNUM: case R7_REGNUM:
671 page_regnum = SEG_T_REGNUM;
676 get_saved_register (value_bytes + 1,
683 if (lval == lval_register)
690 get_saved_register (value_bytes + 2,
697 if (lval == lval_register)
702 mem_tracking = mem_tracking && (addr == last_addr);
707 #endif /* GDB_TARGET_IS_H8500 */
708 for (local_regnum = regnum;
709 value_bytes_copied < len;
710 (value_bytes_copied += REGISTER_RAW_SIZE (local_regnum),
713 get_saved_register (value_bytes + value_bytes_copied,
720 if (regnum == local_regnum)
722 if (lval == lval_register)
730 && (regnum == local_regnum
731 || addr == last_addr));
736 if ((reg_stor && mem_stor)
737 || (mem_stor && !mem_tracking))
738 /* Mixed storage; all of the hassle we just went through was
739 for some good purpose. */
741 VALUE_LVAL (v) = lval_reg_frame_relative;
742 VALUE_FRAME (v) = FRAME_FP (frame);
743 VALUE_FRAME_REGNUM (v) = regnum;
747 VALUE_LVAL (v) = lval_memory;
748 VALUE_ADDRESS (v) = first_addr;
752 VALUE_LVAL (v) = lval_register;
753 VALUE_ADDRESS (v) = first_addr;
756 fatal ("value_from_register: Value not stored anywhere!");
758 VALUE_OPTIMIZED_OUT (v) = optim;
760 /* Any structure stored in more than one register will always be
761 an integral number of registers. Otherwise, you'd need to do
762 some fiddling with the last register copied here for little
765 /* Copy into the contents section of the value. */
766 memcpy (VALUE_CONTENTS_RAW (v), value_bytes, len);
768 /* Finally do any conversion necessary when extracting this
769 type from more than one register. */
770 #ifdef REGISTER_CONVERT_TO_TYPE
771 REGISTER_CONVERT_TO_TYPE(regnum, type, VALUE_CONTENTS_RAW(v));
776 /* Data is completely contained within a single register. Locate the
777 register's contents in a real register or in core;
778 read the data in raw format. */
780 get_saved_register (raw_buffer, &optim, &addr, frame, regnum, &lval);
781 VALUE_OPTIMIZED_OUT (v) = optim;
782 VALUE_LVAL (v) = lval;
783 VALUE_ADDRESS (v) = addr;
785 /* Convert the raw contents to virtual contents.
786 (Just copy them if the formats are the same.) */
788 REGISTER_CONVERT_TO_VIRTUAL (regnum, raw_buffer, virtual_buffer);
790 if (REGISTER_CONVERTIBLE (regnum))
792 /* When the raw and virtual formats differ, the virtual format
793 corresponds to a specific data type. If we want that type,
794 copy the data into the value.
795 Otherwise, do a type-conversion. */
797 if (type != REGISTER_VIRTUAL_TYPE (regnum))
799 /* eg a variable of type `float' in a 68881 register
800 with raw type `extended' and virtual type `double'.
801 Fetch it as a `double' and then convert to `float'. */
802 v = allocate_value (REGISTER_VIRTUAL_TYPE (regnum));
803 memcpy (VALUE_CONTENTS_RAW (v), virtual_buffer, len);
804 v = value_cast (type, v);
807 memcpy (VALUE_CONTENTS_RAW (v), virtual_buffer, len);
811 /* Raw and virtual formats are the same for this register. */
813 #if TARGET_BYTE_ORDER == BIG_ENDIAN
814 if (len < REGISTER_RAW_SIZE (regnum))
816 /* Big-endian, and we want less than full size. */
817 VALUE_OFFSET (v) = REGISTER_RAW_SIZE (regnum) - len;
821 memcpy (VALUE_CONTENTS_RAW (v), virtual_buffer + VALUE_OFFSET (v), len);
827 /* Given a struct symbol for a variable or function,
828 and a stack frame id,
829 return a (pointer to a) struct value containing the properly typed
833 locate_var_value (var, frame)
834 register struct symbol *var;
838 struct type *type = SYMBOL_TYPE (var);
841 /* Evaluate it first; if the result is a memory address, we're fine.
842 Lazy evaluation pays off here. */
844 lazy_value = read_var_value (var, frame);
846 error ("Address of \"%s\" is unknown.", SYMBOL_SOURCE_NAME (var));
848 if (VALUE_LAZY (lazy_value)
849 || TYPE_CODE (type) == TYPE_CODE_FUNC)
851 addr = VALUE_ADDRESS (lazy_value);
852 return value_from_longest (lookup_pointer_type (type), (LONGEST) addr);
855 /* Not a memory address; check what the problem was. */
856 switch (VALUE_LVAL (lazy_value))
859 case lval_reg_frame_relative:
860 error ("Address requested for identifier \"%s\" which is in a register.",
861 SYMBOL_SOURCE_NAME (var));
865 error ("Can't take address of \"%s\" which isn't an lvalue.",
866 SYMBOL_SOURCE_NAME (var));
869 return 0; /* For lint -- never reached */