* nto-tdep.h: Include osabi.h. Prototypes for generic Neutrino
[deliverable/binutils-gdb.git] / gdb / findvar.c
index 5ebc6e5f7bd58dbafa48451a047a9e306bc3bbe1..cc7d7a5b65bcb3190705c7fee08877112c3cd7d3 100644 (file)
@@ -286,8 +286,9 @@ value_of_register (int regnum, struct frame_info *frame)
          register_size (current_gdbarch, regnum));
   VALUE_LVAL (reg_val) = lval;
   VALUE_ADDRESS (reg_val) = addr;
-  VALUE_REGNO (reg_val) = regnum;
+  VALUE_REGNUM (reg_val) = regnum;
   VALUE_OPTIMIZED_OUT (reg_val) = optim;
+  VALUE_FRAME_ID (reg_val) = get_frame_id (frame);
   return reg_val;
 }
 
@@ -622,7 +623,7 @@ value_from_register (struct type *type, int regnum, struct frame_info *frame)
          We'll just attribute the value to the original register.  */
       VALUE_LVAL (v) = lval_register;
       VALUE_ADDRESS (v) = regnum;
-      VALUE_REGNO (v) = regnum;
+      VALUE_REGNUM (v) = regnum;
     }
   else if (CONVERT_REGISTER_P (regnum, type))
     {
@@ -634,9 +635,9 @@ value_from_register (struct type *type, int regnum, struct frame_info *frame)
          is that REGISTER_TO_VALUE populates the entire value
          including the location.  */
       REGISTER_TO_VALUE (frame, regnum, type, VALUE_CONTENTS_RAW (v));
-      VALUE_LVAL (v) = lval_reg_frame_relative;
+      VALUE_LVAL (v) = lval_register;
       VALUE_FRAME_ID (v) = get_frame_id (frame);
-      VALUE_FRAME_REGNUM (v) = regnum;
+      VALUE_REGNUM (v) = regnum;
     }
   else
     {
@@ -678,6 +679,9 @@ value_from_register (struct type *type, int regnum, struct frame_info *frame)
            {
              mem_stor++;
              
+             /* FIXME: cagney/2004-11-12: I think this is trying to
+                check that the stored registers are adjacent in
+                memory.  It isn't doing a good job?  */
              mem_tracking = (mem_tracking
                              && (regnum == local_regnum
                                  || addr == last_addr));
@@ -685,33 +689,17 @@ value_from_register (struct type *type, int regnum, struct frame_info *frame)
          last_addr = addr;
        }
       
-      /* FIXME: cagney/2003-06-04: Shouldn't this always use
-         lval_reg_frame_relative?  If it doesn't and the register's
-         location changes (say after a resume) then this value is
-         going to have wrong information.  */
-      if ((reg_stor && mem_stor)
-         || (mem_stor && !mem_tracking))
-       /* Mixed storage; all of the hassle we just went through was
-          for some good purpose.  */
-       {
-         VALUE_LVAL (v) = lval_reg_frame_relative;
-         VALUE_FRAME_ID (v) = get_frame_id (frame);
-         VALUE_FRAME_REGNUM (v) = regnum;
-       }
-      else if (mem_stor)
+      if (mem_tracking && mem_stor && !reg_stor)
        {
          VALUE_LVAL (v) = lval_memory;
          VALUE_ADDRESS (v) = first_addr;
        }
-      else if (reg_stor)
+      else
        {
          VALUE_LVAL (v) = lval_register;
-         VALUE_ADDRESS (v) = first_addr;
-         VALUE_REGNO (v) = first_realnum;
+         VALUE_FRAME_ID (v) = get_frame_id (frame);
+         VALUE_REGNUM (v) = regnum;
        }
-      else
-       internal_error (__FILE__, __LINE__,
-                       "value_from_register: Value not stored anywhere!");
       
       VALUE_OPTIMIZED_OUT (v) = optimized;
       
@@ -764,21 +752,12 @@ locate_var_value (struct symbol *var, struct frame_info *frame)
   switch (VALUE_LVAL (lazy_value))
     {
     case lval_register:
-       gdb_assert (REGISTER_NAME (VALUE_REGNO (lazy_value)) != NULL
-                   && *REGISTER_NAME (VALUE_REGNO (lazy_value)) != '\0');
+      gdb_assert (REGISTER_NAME (VALUE_REGNUM (lazy_value)) != NULL
+                 && *REGISTER_NAME (VALUE_REGNUM (lazy_value)) != '\0');
       error("Address requested for identifier "
            "\"%s\" which is in register $%s",
             SYMBOL_PRINT_NAME (var), 
-           REGISTER_NAME (VALUE_REGNO (lazy_value)));
-      break;
-
-    case lval_reg_frame_relative:
-       gdb_assert (REGISTER_NAME (VALUE_FRAME_REGNUM (lazy_value)) != NULL
-                   && *REGISTER_NAME (VALUE_FRAME_REGNUM (lazy_value)) != '\0');
-      error("Address requested for identifier "
-           "\"%s\" which is in frame register $%s",
-            SYMBOL_PRINT_NAME (var), 
-           REGISTER_NAME (VALUE_FRAME_REGNUM (lazy_value)));
+           REGISTER_NAME (VALUE_REGNUM (lazy_value)));
       break;
 
     default:
This page took 0.025852 seconds and 4 git commands to generate.