Hurd: Adjust to changes to "push pruning old threads down to the target"
[deliverable/binutils-gdb.git] / gdb / valops.c
index 7f9cb93e1fad89c3fe850ff03c359d0d1b5b926a..3a7550dfdb504050e518e3a194db27944394c1f8 100644 (file)
@@ -51,7 +51,7 @@ static struct value *search_struct_field (const char *, struct value *,
 
 static struct value *search_struct_method (const char *, struct value **,
                                           struct value **,
-                                          int, int *, struct type *);
+                                          LONGEST, int *, struct type *);
 
 static int find_oload_champ_namespace (struct value **, int,
                                       const char *, const char *,
@@ -96,9 +96,9 @@ static CORE_ADDR allocate_space_in_inferior (int);
 static struct value *cast_into_complex (struct type *, struct value *);
 
 static void find_method_list (struct value **, const char *,
-                             int, struct type *, struct fn_field **, int *,
+                             LONGEST, struct type *, struct fn_field **, int *,
                              VEC (xmethod_worker_ptr) **,
-                             struct type **, int *);
+                             struct type **, LONGEST *);
 
 void _initialize_valops (void);
 
@@ -256,7 +256,8 @@ value_cast_structs (struct type *type, struct value *v2)
   if (TYPE_NAME (t2) != NULL)
     {
       /* Try downcasting using the run-time type of the value.  */
-      int full, top, using_enc;
+      int full, using_enc;
+      LONGEST top;
       struct type *real_type;
 
       real_type = value_rtti_type (v2, &full, &top, &using_enc);
@@ -635,7 +636,7 @@ value_reinterpret_cast (struct type *type, struct value *arg)
 static int
 dynamic_cast_check_1 (struct type *desired_type,
                      const gdb_byte *valaddr,
-                     int embedded_offset,
+                     LONGEST embedded_offset,
                      CORE_ADDR address,
                      struct value *val,
                      struct type *search_type,
@@ -647,8 +648,9 @@ dynamic_cast_check_1 (struct type *desired_type,
 
   for (i = 0; i < TYPE_N_BASECLASSES (search_type) && result_count < 2; ++i)
     {
-      int offset = baseclass_offset (search_type, i, valaddr, embedded_offset,
-                                    address, val);
+      LONGEST offset = baseclass_offset (search_type, i, valaddr,
+                                        embedded_offset,
+                                        address, val);
 
       if (class_types_same_p (desired_type, TYPE_BASECLASS (search_type, i)))
        {
@@ -682,7 +684,7 @@ dynamic_cast_check_1 (struct type *desired_type,
 static int
 dynamic_cast_check_2 (struct type *desired_type,
                      const gdb_byte *valaddr,
-                     int embedded_offset,
+                     LONGEST embedded_offset,
                      CORE_ADDR address,
                      struct value *val,
                      struct type *search_type,
@@ -692,7 +694,7 @@ dynamic_cast_check_2 (struct type *desired_type,
 
   for (i = 0; i < TYPE_N_BASECLASSES (search_type) && result_count < 2; ++i)
     {
-      int offset;
+      LONGEST offset;
 
       if (! BASETYPE_VIA_PUBLIC (search_type, i))
        continue;
@@ -723,7 +725,8 @@ dynamic_cast_check_2 (struct type *desired_type,
 struct value *
 value_dynamic_cast (struct type *type, struct value *arg)
 {
-  int full, top, using_enc;
+  int full, using_enc;
+  LONGEST top;
   struct type *resolved_type = check_typedef (type);
   struct type *arg_type = check_typedef (value_type (arg));
   struct type *class_type, *rtti_type;
@@ -954,7 +957,7 @@ value_at_lazy (struct type *type, CORE_ADDR addr)
 }
 
 void
-read_value_memory (struct value *val, int embedded_offset,
+read_value_memory (struct value *val, LONGEST embedded_offset,
                   int stack, CORE_ADDR memaddr,
                   gdb_byte *buffer, size_t length)
 {
@@ -1034,7 +1037,7 @@ value_assign (struct value *toval, struct value *fromval)
 
     case lval_internalvar_component:
       {
-       int offset = value_offset (toval);
+       LONGEST offset = value_offset (toval);
 
        /* Are we dealing with a bitfield?
 
@@ -1109,8 +1112,15 @@ value_assign (struct value *toval, struct value *fromval)
        struct gdbarch *gdbarch;
        int value_reg;
 
-       /* Figure out which frame this is in currently.  */
+       /* Figure out which frame this is in currently.
+       
+          We use VALUE_FRAME_ID for obtaining the value's frame id instead of
+          VALUE_NEXT_FRAME_ID due to requiring a frame which may be passed to
+          put_frame_register_bytes() below.  That function will (eventually)
+          perform the necessary unwind operation by first obtaining the next
+          frame.  */
        frame = frame_find_by_id (VALUE_FRAME_ID (toval));
+
        value_reg = VALUE_REGNUM (toval);
 
        if (!frame)
@@ -1121,7 +1131,7 @@ value_assign (struct value *toval, struct value *fromval)
        if (value_bitsize (toval))
          {
            struct value *parent = value_parent (toval);
-           int offset = value_offset (parent) + value_offset (toval);
+           LONGEST offset = value_offset (parent) + value_offset (toval);
            int changed_len;
            gdb_byte buffer[sizeof (LONGEST)];
            int optim, unavail;
@@ -1330,7 +1340,7 @@ address_of_variable (struct symbol *var, const struct block *b)
        struct frame_info *frame;
        const char *regname;
 
-       frame = frame_find_by_id (VALUE_FRAME_ID (val));
+       frame = frame_find_by_id (VALUE_NEXT_FRAME_ID (val));
        gdb_assert (frame);
 
        regname = gdbarch_register_name (get_frame_arch (frame),
@@ -1600,7 +1610,7 @@ value_array (int lowbound, int highbound, struct value **elemvec)
 {
   int nelem;
   int idx;
-  unsigned int typelength;
+  ULONGEST typelength;
   struct value *val;
   struct type *arraytype;
 
@@ -1776,7 +1786,7 @@ typecmp (int staticp, int varargs, int nargs,
 
 static void
 update_search_result (struct value **result_ptr, struct value *v,
-                     int *last_boffset, int boffset,
+                     LONGEST *last_boffset, LONGEST boffset,
                      const char *name, struct type *type)
 {
   if (v != NULL)
@@ -1800,10 +1810,10 @@ update_search_result (struct value **result_ptr, struct value *v,
    lookup is ambiguous.  */
 
 static void
-do_search_struct_field (const char *name, struct value *arg1, int offset,
+do_search_struct_field (const char *name, struct value *arg1, LONGEST offset,
                        struct type *type, int looking_for_baseclass,
                        struct value **result_ptr,
-                       int *last_boffset,
+                       LONGEST *last_boffset,
                        struct type *outermost_type)
 {
   int i;
@@ -1850,7 +1860,7 @@ do_search_struct_field (const char *name, struct value *arg1, int offset,
                   <variant field>.  */
 
                struct value *v = NULL;
-               int new_offset = offset;
+               LONGEST new_offset = offset;
 
                /* This is pretty gross.  In G++, the offset in an
                   anonymous union is relative to the beginning of the
@@ -1889,7 +1899,7 @@ do_search_struct_field (const char *name, struct value *arg1, int offset,
                             && (strcmp_iw (name, 
                                            TYPE_BASECLASS_NAME (type, 
                                                                 i)) == 0));
-      int boffset = value_embedded_offset (arg1) + offset;
+      LONGEST boffset = value_embedded_offset (arg1) + offset;
 
       if (BASETYPE_VIA_VIRTUAL (type, i))
        {
@@ -1965,7 +1975,7 @@ search_struct_field (const char *name, struct value *arg1,
                     struct type *type, int looking_for_baseclass)
 {
   struct value *result = NULL;
-  int boffset = 0;
+  LONGEST boffset = 0;
 
   do_search_struct_field (name, arg1, 0, type, looking_for_baseclass,
                          &result, &boffset, type);
@@ -1982,7 +1992,7 @@ search_struct_field (const char *name, struct value *arg1,
 
 static struct value *
 search_struct_method (const char *name, struct value **arg1p,
-                     struct value **args, int offset,
+                     struct value **args, LONGEST offset,
                      int *static_memfuncp, struct type *type)
 {
   int i;
@@ -2046,8 +2056,8 @@ search_struct_method (const char *name, struct value **arg1p,
 
   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
     {
-      int base_offset;
-      int this_offset;
+      LONGEST base_offset;
+      LONGEST this_offset;
 
       if (BASETYPE_VIA_VIRTUAL (type, i))
        {
@@ -2280,10 +2290,10 @@ value_struct_elt_bitpos (struct value **argp, int bitpos, struct type *ftype,
 
 static void
 find_method_list (struct value **argp, const char *method,
-                 int offset, struct type *type,
+                 LONGEST offset, struct type *type,
                  struct fn_field **fn_list, int *num_fns,
                  VEC (xmethod_worker_ptr) **xm_worker_vec,
-                 struct type **basetype, int *boffset)
+                 struct type **basetype, LONGEST *boffset)
 {
   int i;
   struct fn_field *f = NULL;
@@ -2340,7 +2350,7 @@ find_method_list (struct value **argp, const char *method,
      extension methods.  */
   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
     {
-      int base_offset;
+      LONGEST base_offset;
 
       if (BASETYPE_VIA_VIRTUAL (type, i))
        {
@@ -2380,10 +2390,10 @@ find_method_list (struct value **argp, const char *method,
 
 static void
 value_find_oload_method_list (struct value **argp, const char *method,
-                              int offset, struct fn_field **fn_list,
+                              LONGEST offset, struct fn_field **fn_list,
                               int *num_fns,
                               VEC (xmethod_worker_ptr) **xm_worker_vec,
-                             struct type **basetype, int *boffset)
+                             struct type **basetype, LONGEST *boffset)
 {
   struct type *t;
 
@@ -2493,7 +2503,7 @@ find_overload_match (struct value **args, int nargs,
   /* Number of overloaded instances being considered.  */
   int num_fns = 0;
   struct type *basetype = NULL;
-  int boffset;
+  LONGEST boffset;
 
   struct cleanup *all_cleanups = make_cleanup (null_cleanup, NULL);
 
@@ -3588,7 +3598,7 @@ value_maybe_namespace_elt (const struct type *curtype,
 
 struct type *
 value_rtti_indirect_type (struct value *v, int *full, 
-                         int *top, int *using_enc)
+                         LONGEST *top, int *using_enc)
 {
   struct value *target = NULL;
   struct type *type, *real_type, *target_type;
@@ -3661,7 +3671,7 @@ value_full_object (struct value *argp,
 {
   struct type *real_type;
   int full = 0;
-  int top = -1;
+  LONGEST top = -1;
   int using_enc = 0;
   struct value *new_val;
 
@@ -3817,7 +3827,6 @@ value_slice (struct value *array, int lowbound, int length)
       }
 
     set_value_component_location (slice, array);
-    VALUE_FRAME_ID (slice) = VALUE_FRAME_ID (array);
     set_value_offset (slice, value_offset (array) + offset);
   }
 
This page took 0.028981 seconds and 4 git commands to generate.