2010-02-10 Sterling Augustine <sterling@tensilica.com>
[deliverable/binutils-gdb.git] / gdb / p-valprint.c
index ec90016b55db1a4e4043facfe04a480278ac22ec..260b97d09d0bc8d63b42f46fda72e82155d420f2 100644 (file)
@@ -1,6 +1,6 @@
 /* Support for printing Pascal values for GDB, the GNU debugger.
 
-   Copyright (C) 2000, 2001, 2003, 2005, 2006, 2007, 2008, 2009
+   Copyright (C) 2000, 2001, 2003, 2005, 2006, 2007, 2008, 2009, 2010
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -57,6 +57,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
                  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;
@@ -95,14 +96,15 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
                  /* Look for a NULL char. */
                  for (temp_len = 0;
                       extract_unsigned_integer (valaddr + embedded_offset +
-                                                temp_len * eltlen, eltlen)
+                                                temp_len * eltlen, eltlen,
+                                                byte_order)
                       && temp_len < len && temp_len < options->print_max;
                       temp_len++);
                  len = temp_len;
                }
 
              LA_PRINT_STRING (stream, TYPE_TARGET_TYPE (type),
-                              valaddr + embedded_offset, len, 0,
+                              valaddr + embedded_offset, len, NULL, 0,
                               options);
              i = len;
            }
@@ -143,9 +145,9 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
          /* Print vtable entry - we only get here if we ARE using
             -fvtable_thunks.  (Otherwise, look under TYPE_CODE_STRUCT.) */
          /* Extract the address, assume that it is unsigned.  */
-         print_address_demangle (gdbarch,
-                                 extract_unsigned_integer (valaddr + embedded_offset, TYPE_LENGTH (type)),
-                                 stream, demangle);
+         addr = extract_unsigned_integer (valaddr + embedded_offset,
+                                          TYPE_LENGTH (type), byte_order);
+         print_address_demangle (gdbarch, addr, stream, demangle);
          break;
        }
       elttype = check_typedef (TYPE_TARGET_TYPE (type));
@@ -193,7 +195,8 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
               void *buffer;
               buffer = xmalloc (length_size);
               read_memory (addr + length_pos, buffer, length_size);
-             string_length = extract_unsigned_integer (buffer, length_size);
+             string_length = extract_unsigned_integer (buffer, length_size,
+                                                       byte_order);
               xfree (buffer);
               i = val_print_string (char_type ,addr + string_pos, string_length, stream, options);
            }
@@ -294,7 +297,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
          print_address_demangle
            (gdbarch,
             extract_unsigned_integer (valaddr + embedded_offset + TYPE_FIELD_BITPOS (type, VTBL_FNADDR_OFFSET) / 8,
-                                      TYPE_LENGTH (TYPE_FIELD_TYPE (type, VTBL_FNADDR_OFFSET))),
+                                      TYPE_LENGTH (TYPE_FIELD_TYPE (type, VTBL_FNADDR_OFFSET)), byte_order),
             stream, demangle);
        }
       else
@@ -302,8 +305,10 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
           if (is_pascal_string_type (type, &length_pos, &length_size,
                                      &string_pos, &char_type, NULL))
            {
-             len = extract_unsigned_integer (valaddr + embedded_offset + length_pos, length_size);
-             LA_PRINT_STRING (stream, char_type, valaddr + embedded_offset + string_pos, len, 0, options);
+             len = extract_unsigned_integer (valaddr + embedded_offset + length_pos, length_size, byte_order);
+             LA_PRINT_STRING (stream, char_type, 
+                              valaddr + embedded_offset + string_pos,
+                              len, NULL, 0, options);
            }
          else
            pascal_object_print_value_fields (type, valaddr + embedded_offset, address, stream,
This page took 0.028724 seconds and 4 git commands to generate.