(cr16c_elf_final_link_relocate): Remove duplicated return statements and
[deliverable/binutils-gdb.git] / gdb / findvar.c
index 3d5d3f3a7295213d820581d51fe288c05a439514..84964f31a22b95c327f328a75c756649b66ed621 100644 (file)
@@ -1,8 +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, 2003, 2004 Free Software
-   Foundation, Inc.
+   1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 Free
+   Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -57,8 +57,8 @@ extract_signed_integer (const void *addr, int len)
   const unsigned char *endaddr = startaddr + len;
 
   if (len > (int) sizeof (LONGEST))
-    error ("\
-That operation is not available on integers of more than %d bytes.",
+    error (_("\
+That operation is not available on integers of more than %d bytes."),
           (int) sizeof (LONGEST));
 
   /* Start at the most significant end of the integer, and work towards
@@ -91,8 +91,8 @@ extract_unsigned_integer (const void *addr, int len)
   const unsigned char *endaddr = startaddr + len;
 
   if (len > (int) sizeof (ULONGEST))
-    error ("\
-That operation is not available on integers of more than %d bytes.",
+    error (_("\
+That operation is not available on integers of more than %d bytes."),
           (int) sizeof (ULONGEST));
 
   /* Start at the most significant end of the integer, and work towards
@@ -169,8 +169,8 @@ extract_typed_address (const void *buf, struct type *type)
   if (TYPE_CODE (type) != TYPE_CODE_PTR
       && TYPE_CODE (type) != TYPE_CODE_REF)
     internal_error (__FILE__, __LINE__,
-                   "extract_typed_address: "
-                   "type is not a pointer or reference");
+                   _("extract_typed_address: "
+                   "type is not a pointer or reference"));
 
   return POINTER_TO_ADDRESS (type, buf);
 }
@@ -238,8 +238,8 @@ store_typed_address (void *buf, struct type *type, CORE_ADDR addr)
   if (TYPE_CODE (type) != TYPE_CODE_PTR
       && TYPE_CODE (type) != TYPE_CODE_REF)
     internal_error (__FILE__, __LINE__,
-                   "store_typed_address: "
-                   "type is not a pointer or reference");
+                   _("store_typed_address: "
+                   "type is not a pointer or reference"));
 
   ADDRESS_TO_POINTER (type, buf, addr);
 }
@@ -282,12 +282,13 @@ value_of_register (int regnum, struct frame_info *frame)
 
   reg_val = allocate_value (register_type (current_gdbarch, regnum));
 
-  memcpy (VALUE_CONTENTS_RAW (reg_val), raw_buffer,
+  memcpy (value_contents_raw (reg_val), raw_buffer,
          register_size (current_gdbarch, regnum));
   VALUE_LVAL (reg_val) = lval;
   VALUE_ADDRESS (reg_val) = addr;
-  VALUE_REGNO (reg_val) = regnum;
-  VALUE_OPTIMIZED_OUT (reg_val) = optim;
+  VALUE_REGNUM (reg_val) = regnum;
+  set_value_optimized_out (reg_val, optim);
+  VALUE_FRAME_ID (reg_val) = get_frame_id (frame);
   return reg_val;
 }
 
@@ -386,7 +387,6 @@ read_var_value (struct symbol *var, struct frame_info *frame)
 
   v = allocate_value (type);
   VALUE_LVAL (v) = lval_memory;        /* The most likely possibility.  */
-  VALUE_BFD_SECTION (v) = SYMBOL_BFD_SECTION (var);
 
   len = TYPE_LENGTH (type);
 
@@ -400,7 +400,7 @@ read_var_value (struct symbol *var, struct frame_info *frame)
     {
     case LOC_CONST:
       /* Put the constant back in target format.  */
-      store_signed_integer (VALUE_CONTENTS_RAW (v), len,
+      store_signed_integer (value_contents_raw (v), len,
                            (LONGEST) SYMBOL_VALUE (var));
       VALUE_LVAL (v) = not_lval;
       return v;
@@ -412,10 +412,10 @@ read_var_value (struct symbol *var, struct frame_info *frame)
          CORE_ADDR addr
            = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var),
                                        SYMBOL_BFD_SECTION (var));
-         store_typed_address (VALUE_CONTENTS_RAW (v), type, addr);
+         store_typed_address (value_contents_raw (v), type, addr);
        }
       else
-       store_typed_address (VALUE_CONTENTS_RAW (v), type,
+       store_typed_address (value_contents_raw (v), type,
                              SYMBOL_VALUE_ADDRESS (var));
       VALUE_LVAL (v) = not_lval;
       return v;
@@ -424,7 +424,7 @@ read_var_value (struct symbol *var, struct frame_info *frame)
       {
        char *bytes_addr;
        bytes_addr = SYMBOL_VALUE_BYTES (var);
-       memcpy (VALUE_CONTENTS_RAW (v), bytes_addr, len);
+       memcpy (value_contents_raw (v), bytes_addr, len);
        VALUE_LVAL (v) = not_lval;
        return v;
       }
@@ -445,12 +445,12 @@ read_var_value (struct symbol *var, struct frame_info *frame)
        CORE_ADDR locaddr;
        struct value *loc;
        if (!target_has_execution)
-         error ("\
+         error (_("\
 Attempt to access variable defined in different shared object or load module when\n\
-addresses have not been bound by the dynamic loader. Try again when executable is running.");
+addresses have not been bound by the dynamic loader. Try again when executable is running."));
 
        locaddr = SYMBOL_VALUE_ADDRESS (var);
-       loc = value_at (lookup_pointer_type (type), locaddr, NULL);
+       loc = value_at (lookup_pointer_type (type), locaddr);
        addr = value_as_address (loc);
       }
 
@@ -473,7 +473,7 @@ addresses have not been bound by the dynamic loader. Try again when executable i
        if (!argref)
          return 0;
        argref += SYMBOL_VALUE (var);
-       ref = value_at (lookup_pointer_type (type), argref, NULL);
+       ref = value_at (lookup_pointer_type (type), argref);
        addr = value_as_address (ref);
        break;
       }
@@ -495,14 +495,14 @@ addresses have not been bound by the dynamic loader. Try again when executable i
        regval = value_from_register (lookup_pointer_type (type),
                                      SYMBOL_BASEREG (var), frame);
        if (regval == NULL)
-         error ("Value of base register not available.");
+         error (_("Value of base register not available."));
        addr = value_as_address (regval);
        addr += SYMBOL_VALUE (var);
        break;
       }
 
     case LOC_TYPEDEF:
-      error ("Cannot look up value of a typedef");
+      error (_("Cannot look up value of a typedef"));
       break;
 
     case LOC_BLOCK:
@@ -532,7 +532,7 @@ addresses have not been bound by the dynamic loader. Try again when executable i
                                          frame);
 
            if (regval == NULL)
-             error ("Value of register variable not available.");
+             error (_("Value of register variable not available."));
 
            addr = value_as_address (regval);
            VALUE_LVAL (v) = lval_memory;
@@ -542,7 +542,7 @@ addresses have not been bound by the dynamic loader. Try again when executable i
            regval = value_from_register (type, regno, frame);
 
            if (regval == NULL)
-             error ("Value of register variable not available.");
+             error (_("Value of register variable not available."));
            return regval;
          }
       }
@@ -576,16 +576,16 @@ addresses have not been bound by the dynamic loader. Try again when executable i
 
     case LOC_OPTIMIZED_OUT:
       VALUE_LVAL (v) = not_lval;
-      VALUE_OPTIMIZED_OUT (v) = 1;
+      set_value_optimized_out (v, 1);
       return v;
 
     default:
-      error ("Cannot look up value of a botched symbol.");
+      error (_("Cannot look up value of a botched symbol."));
       break;
     }
 
   VALUE_ADDRESS (v) = addr;
-  VALUE_LAZY (v) = 1;
+  set_value_lazy (v, 1);
   return v;
 }
 
@@ -623,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,10 +634,10 @@ value_from_register (struct type *type, int regnum, struct frame_info *frame)
          the corresponding [integer] type (see Alpha).  The assumption
          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;
+      REGISTER_TO_VALUE (frame, regnum, type, value_contents_raw (v));
+      VALUE_LVAL (v) = lval_register;
       VALUE_FRAME_ID (v) = get_frame_id (frame);
-      VALUE_FRAME_REGNUM (v) = regnum;
+      VALUE_REGNUM (v) = regnum;
     }
   else
     {
@@ -679,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));
@@ -686,35 +689,19 @@ 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;
+      set_value_optimized_out (v, optimized);
       
       /* Any structure stored in more than one register will always be
          an integral number of registers.  Otherwise, you need to do
@@ -723,10 +710,10 @@ value_from_register (struct type *type, int regnum, struct frame_info *frame)
       if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
          && len < register_size (current_gdbarch, regnum))
        /* Big-endian, and we want less than full size.  */
-       VALUE_OFFSET (v) = register_size (current_gdbarch, regnum) - len;
+       set_value_offset (v, register_size (current_gdbarch, regnum) - len);
       else
-       VALUE_OFFSET (v) = 0;
-      memcpy (VALUE_CONTENTS_RAW (v), value_bytes + VALUE_OFFSET (v), len);
+       set_value_offset (v, 0);
+      memcpy (value_contents_raw (v), value_bytes + value_offset (v), len);
     }
   return v;
 }
@@ -749,16 +736,15 @@ locate_var_value (struct symbol *var, struct frame_info *frame)
 
   lazy_value = read_var_value (var, frame);
   if (lazy_value == 0)
-    error ("Address of \"%s\" is unknown.", SYMBOL_PRINT_NAME (var));
+    error (_("Address of \"%s\" is unknown."), SYMBOL_PRINT_NAME (var));
 
-  if (VALUE_LAZY (lazy_value)
+  if (value_lazy (lazy_value)
       || TYPE_CODE (type) == TYPE_CODE_FUNC)
     {
       struct value *val;
 
       addr = VALUE_ADDRESS (lazy_value);
       val = value_from_pointer (lookup_pointer_type (type), addr);
-      VALUE_BFD_SECTION (val) = VALUE_BFD_SECTION (lazy_value);
       return val;
     }
 
@@ -766,25 +752,16 @@ 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');
-      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",
+      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_FRAME_REGNUM (lazy_value)));
+           REGISTER_NAME (VALUE_REGNUM (lazy_value)));
       break;
 
     default:
-      error ("Can't take address of \"%s\" which isn't an lvalue.",
+      error (_("Can't take address of \"%s\" which isn't an lvalue."),
             SYMBOL_PRINT_NAME (var));
       break;
     }
This page took 0.02941 seconds and 4 git commands to generate.