* valprint.c (print_hex_chars, print_octal_chars, print_decimal_chars,
authorMarkus Deuling <deuling@de.ibm.com>
Fri, 23 May 2008 04:28:05 +0000 (04:28 +0000)
committerMarkus Deuling <deuling@de.ibm.com>
Fri, 23 May 2008 04:28:05 +0000 (04:28 +0000)
print_binary_chars, print_char_chars): Add byte_order parameter and
replace gdbarch_byte_order.
(print_decimal_chars): Replace START_P, NOT_END_P and NEXT_P by their
expressions and remove them.  Remove unused TWO_TO_FOURTH.
(val_print_type_code_int): Introduce gdbarch_byte_order to get at the
endianness.  Update call to print_hex_chars.
* valprint.h (print_hex_chars, print_octal_chars, print_decimal_chars,
print_binary_chars, print_char_chars): Add byte_order parameter.
* printcmd.c (print_scalar_formatted): Introduce gdbarch_byte_order to
get at the endianness.  Update print_*_char calls to use byte_order.

gdb/ChangeLog
gdb/printcmd.c
gdb/valprint.c
gdb/valprint.h

index 0cf9e53a49e8ef7231bd4980fda02bb29ff073d0..28de7bafa39ca0550b3efcb882909f2b32fbf249 100644 (file)
@@ -1,3 +1,17 @@
+2008-05-23 Markus Deuling  <deuling@de.ibm.com>
+
+       * valprint.c (print_hex_chars, print_octal_chars, print_decimal_chars,
+       print_binary_chars, print_char_chars): Add byte_order parameter and
+       replace gdbarch_byte_order.
+       (print_decimal_chars): Replace START_P, NOT_END_P and NEXT_P by their
+       expressions and remove them.  Remove unused TWO_TO_FOURTH.
+       (val_print_type_code_int): Introduce gdbarch_byte_order to get at the
+       endianness.  Update call to print_hex_chars.
+       * valprint.h (print_hex_chars, print_octal_chars, print_decimal_chars,
+       print_binary_chars, print_char_chars): Add byte_order parameter.
+       * printcmd.c (print_scalar_formatted): Introduce gdbarch_byte_order to
+       get at the endianness.  Update print_*_char calls to use byte_order.
+
 2008-05-22  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * symtab.h (struct symbol): Make "aux_value" member a void pointer
index ad658b09a54cd2454ee775d0e543ac540763f7e1..b63fbc1e9ed976a8c90740cd68ebab2a09c4dae6 100644 (file)
@@ -322,6 +322,7 @@ print_scalar_formatted (const void *valaddr, struct type *type,
 {
   LONGEST val_long = 0;
   unsigned int len = TYPE_LENGTH (type);
+  enum bfd_endian byte_order = gdbarch_byte_order (current_gdbarch);
 
   /* If we get here with a string format, try again without it.  Go
      all the way back to the language printers, which may call us
@@ -340,20 +341,20 @@ print_scalar_formatted (const void *valaddr, struct type *type,
       switch (format)
        {
        case 'o':
-         print_octal_chars (stream, valaddr, len);
+         print_octal_chars (stream, valaddr, len, byte_order);
          return;
        case 'u':
        case 'd':
-         print_decimal_chars (stream, valaddr, len);
+         print_decimal_chars (stream, valaddr, len, byte_order);
          return;
        case 't':
-         print_binary_chars (stream, valaddr, len);
+         print_binary_chars (stream, valaddr, len, byte_order);
          return;
        case 'x':
-         print_hex_chars (stream, valaddr, len);
+         print_hex_chars (stream, valaddr, len, byte_order);
          return;
        case 'c':
-         print_char_chars (stream, valaddr, len);
+         print_char_chars (stream, valaddr, len, byte_order);
          return;
        default:
          break;
index 3bab21edd9d6044ab6eb70a780894dec691e7dcf..5b00b3098e5672367939b93b18f2f156af7c3a11 100644 (file)
@@ -313,6 +313,8 @@ void
 val_print_type_code_int (struct type *type, const gdb_byte *valaddr,
                         struct ui_file *stream)
 {
+  enum bfd_endian byte_order = gdbarch_byte_order (current_gdbarch);
+
   if (TYPE_LENGTH (type) > sizeof (LONGEST))
     {
       LONGEST val;
@@ -330,7 +332,7 @@ val_print_type_code_int (struct type *type, const gdb_byte *valaddr,
             complement (a reasonable assumption, I think) and do
             better than this.  */
          print_hex_chars (stream, (unsigned char *) valaddr,
-                          TYPE_LENGTH (type));
+                          TYPE_LENGTH (type), byte_order);
        }
     }
   else
@@ -525,7 +527,7 @@ print_decimal_floating (const gdb_byte *valaddr, struct type *type,
 
 void
 print_binary_chars (struct ui_file *stream, const gdb_byte *valaddr,
-                   unsigned len)
+                   unsigned len, enum bfd_endian byte_order)
 {
 
 #define BITS_IN_BYTES 8
@@ -541,7 +543,7 @@ print_binary_chars (struct ui_file *stream, const gdb_byte *valaddr,
 
   /* FIXME: We should be not printing leading zeroes in most cases.  */
 
-  if (gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG)
+  if (byte_order == BFD_ENDIAN_BIG)
     {
       for (p = valaddr;
           p < valaddr + len;
@@ -585,7 +587,7 @@ print_binary_chars (struct ui_file *stream, const gdb_byte *valaddr,
  */
 void
 print_octal_chars (struct ui_file *stream, const gdb_byte *valaddr,
-                  unsigned len)
+                  unsigned len, enum bfd_endian byte_order)
 {
   const gdb_byte *p;
   unsigned char octa1, octa2, octa3, carry;
@@ -628,7 +630,7 @@ print_octal_chars (struct ui_file *stream, const gdb_byte *valaddr,
   carry = 0;
 
   fputs_filtered ("0", stream);
-  if (gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG)
+  if (byte_order == BFD_ENDIAN_BIG)
     {
       for (p = valaddr;
           p < valaddr + len;
@@ -733,19 +735,12 @@ print_octal_chars (struct ui_file *stream, const gdb_byte *valaddr,
  */
 void
 print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
-                    unsigned len)
+                    unsigned len, enum bfd_endian byte_order)
 {
 #define TEN             10
-#define TWO_TO_FOURTH   16
 #define CARRY_OUT(  x ) ((x) / TEN)    /* extend char to int */
 #define CARRY_LEFT( x ) ((x) % TEN)
 #define SHIFT( x )      ((x) << 4)
-#define START_P \
-        ((gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG) ? valaddr : valaddr + len - 1)
-#define NOT_END_P \
-        ((gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG) ? (p < valaddr + len) : (p >= valaddr))
-#define NEXT_P \
-        ((gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG) ? p++ : p-- )
 #define LOW_NIBBLE(  x ) ( (x) & 0x00F)
 #define HIGH_NIBBLE( x ) (((x) & 0x0F0) >> 4)
 
@@ -782,9 +777,9 @@ print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
    * LSD end.
    */
   decimal_digits = 0;          /* Number of decimal digits so far */
-  p = START_P;
+  p = (byte_order == BFD_ENDIAN_BIG) ? valaddr : valaddr + len - 1;
   flip = 0;
-  while (NOT_END_P)
+  while ((byte_order == BFD_ENDIAN_BIG) ? (p < valaddr + len) : (p >= valaddr))
     {
       /*
        * Multiply current base-ten number by 16 in place.
@@ -814,7 +809,10 @@ print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
          /* Take low nibble and bump our pointer "p".
           */
          digits[0] += LOW_NIBBLE (*p);
-         NEXT_P;
+          if (byte_order == BFD_ENDIAN_BIG)
+           p++;
+         else
+           p--;
          flip = 0;
        }
 
@@ -868,14 +866,14 @@ print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
 
 void
 print_hex_chars (struct ui_file *stream, const gdb_byte *valaddr,
-                unsigned len)
+                unsigned len, enum bfd_endian byte_order)
 {
   const gdb_byte *p;
 
   /* FIXME: We should be not printing leading zeroes in most cases.  */
 
   fputs_filtered ("0x", stream);
-  if (gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG)
+  if (byte_order == BFD_ENDIAN_BIG)
     {
       for (p = valaddr;
           p < valaddr + len;
@@ -900,11 +898,11 @@ print_hex_chars (struct ui_file *stream, const gdb_byte *valaddr,
 
 void
 print_char_chars (struct ui_file *stream, const gdb_byte *valaddr,
-                 unsigned len)
+                 unsigned len, enum bfd_endian byte_order)
 {
   const gdb_byte *p;
 
-  if (gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG)
+  if (byte_order == BFD_ENDIAN_BIG)
     {
       p = valaddr;
       while (p < valaddr + len - 1 && *p == 0)
index ed18490d59721e5fbf5a15a126024f1cc7bbd325..669f59dc0612ed3b008647e0d02cafe53490bb10 100644 (file)
@@ -69,17 +69,17 @@ extern void val_print_type_code_flags (struct type *type,
                                       struct ui_file *stream);
 
 extern void print_binary_chars (struct ui_file *, const gdb_byte *,
-                               unsigned int);
+                               unsigned int, enum bfd_endian);
 
 extern void print_octal_chars (struct ui_file *, const gdb_byte *,
-                              unsigned int);
+                              unsigned int, enum bfd_endian);
 
 extern void print_decimal_chars (struct ui_file *, const gdb_byte *,
-                                unsigned int);
+                                unsigned int, enum bfd_endian);
 
 extern void print_hex_chars (struct ui_file *, const gdb_byte *,
-                            unsigned int);
+                            unsigned int, enum bfd_endian);
 
 extern void print_char_chars (struct ui_file *, const gdb_byte *,
-                             unsigned int);
+                             unsigned int, enum bfd_endian);
 #endif