gdb/
[deliverable/binutils-gdb.git] / gdb / c-valprint.c
index b2020f3c1ed7a7a329beb720d0683c7b7004d510..dc391ee224492dee491c4ed105bc578ccc97283e 100644 (file)
    stream STREAM.  */
 
 static void
-print_function_pointer_address (CORE_ADDR address, struct ui_file *stream,
-                               int addressprint)
+print_function_pointer_address (struct gdbarch *gdbarch, CORE_ADDR address,
+                               struct ui_file *stream, int addressprint)
 {
-  CORE_ADDR func_addr = gdbarch_convert_from_func_ptr_addr (current_gdbarch,
-                                                           address,
+  CORE_ADDR func_addr = gdbarch_convert_from_func_ptr_addr (gdbarch, address,
                                                            &current_target);
 
   /* If the function pointer is represented by a description, print the
@@ -48,10 +47,10 @@ print_function_pointer_address (CORE_ADDR address, struct ui_file *stream,
   if (addressprint && func_addr != address)
     {
       fputs_filtered ("@", stream);
-      fputs_filtered (paddress (address), stream);
+      fputs_filtered (paddress (gdbarch, address), stream);
       fputs_filtered (": ", stream);
     }
-  print_address_demangle (func_addr, stream, demangle);
+  print_address_demangle (gdbarch, func_addr, stream, demangle);
 }
 
 
@@ -153,6 +152,8 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
             CORE_ADDR address, struct ui_file *stream, int recurse,
             const struct value_print_options *options)
 {
+  struct gdbarch *gdbarch = get_type_arch (type);
+  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   unsigned int i = 0;  /* Number of characters printed */
   unsigned len;
   struct type *elttype, *unresolved_elttype;
@@ -190,7 +191,7 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
                        && temp_len < options->print_max
                        && extract_unsigned_integer (valaddr + embedded_offset
                                                     + temp_len * eltlen,
-                                                    eltlen) == 0);
+                                                    eltlen, byte_order) == 0);
                       ++temp_len)
                    ;
                  len = temp_len;
@@ -252,7 +253,8 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
             -fvtable_thunks.  (Otherwise, look under TYPE_CODE_STRUCT.) */
          CORE_ADDR addr
            = extract_typed_address (valaddr + embedded_offset, type);
-         print_function_pointer_address (addr, stream, options->addressprint);
+         print_function_pointer_address (gdbarch, addr, stream,
+                                         options->addressprint);
          break;
        }
       unresolved_elttype = TYPE_TARGET_TYPE (type);
@@ -264,14 +266,14 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
          if (TYPE_CODE (elttype) == TYPE_CODE_FUNC)
            {
              /* Try to print what function it points to.  */
-             print_function_pointer_address (addr, stream,
+             print_function_pointer_address (gdbarch, addr, stream,
                                              options->addressprint);
              /* Return value is irrelevant except for string pointers.  */
              return (0);
            }
 
          if (options->addressprint)
-           fputs_filtered (paddress (addr), stream);
+           fputs_filtered (paddress (gdbarch, addr), stream);
 
          /* For a pointer to a textual type, also print the string
             pointed to, unless pointer is null.  */
@@ -341,7 +343,7 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
          CORE_ADDR addr
            = extract_typed_address (valaddr + embedded_offset, type);
          fprintf_filtered (stream, "@");
-         fputs_filtered (paddress (addr), stream);
+         fputs_filtered (paddress (gdbarch, addr), stream);
          if (options->deref_ref)
            fputs_filtered (": ", stream);
        }
@@ -382,7 +384,8 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
          CORE_ADDR addr
            = extract_typed_address (valaddr + offset, field_type);
 
-         print_function_pointer_address (addr, stream, options->addressprint);
+         print_function_pointer_address (gdbarch, addr, stream,
+                                         options->addressprint);
        }
       else
        cp_print_value_fields (type, type, valaddr, embedded_offset, address, stream,
@@ -438,7 +441,7 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
       type_print (type, "", stream, -1);
       fprintf_filtered (stream, "} ");
       /* Try to print what function it points to, and its address.  */
-      print_address_demangle (address, stream, demangle);
+      print_address_demangle (gdbarch, address, stream, demangle);
       break;
 
     case TYPE_CODE_BOOL:
This page took 0.025874 seconds and 4 git commands to generate.