[1/2] Allow really large fortran array bounds: TYPE_LENGTH to ULONGEST
Commit Message
This series is revisit of Siddhesh Poyarekar's patch from back in
2012. The last status on the patch is in the following gdb-patches
thread:
https://sourceware.org/ml/gdb-patches/2012-08/msg00562.html
It appears that Tom approved the patch, but Jan had some issues
with a compiler error that made the test fail on -m32 test runs.
He wrote up a hand-tweaked .S file to deal with it. Siddesh said
he would update tests. Then nothing.
Siddesh and Jan have both moved on since.
The patch originally required a large precursor patch to work.
I have whittled this down to/rewritten the bare minimum, and this
first patch is the result, changing the type of TYPE_LENGTH
to ULONGEST from unsigned int.
The majority of the changes involve changing printf format
strings to use %s and pulongest instead of %d.
gdb/ChangeLog:
* ada-lang.c (ada_template_to_fixed_record_type_1): Use
%s/pulongest for TYPE_LENGTH instead of %d in format
strings.
* ada-typerint.c (ada_print_type): Likewise.
* amd64-windows-tdep.c (amd64_windows_store_arg_in_reg): Likewise.
* compile/compile-c-support.c (generate_register_struct): Likewise.
* gdbtypes.c (recursive_dump_type): Likewise.
* gdbtypes.h (struct type) <length>: Change type to ULONGEST.
* m2-typeprint.c (m2_array): Use %s/pulongest for TYPE_LENGTH
instead of %d in format strings.
* riscv-tdep.c (riscv_type_alignment): Cast second argument
to std::min to ULONGEST.
* symmisc.c (print_symbol): Use %s/pulongest for TYPE_LENGTH
instead of %d in format strings.
* tracepoint.c (info_scope_command): Likewise.
* typeprint.c (print_offset_data::update)
(print_offset_data::finish): Likewise.
* xtensa-tdep.c (xtensa_store_return_value)
(xtensa_push_dummy_call): Likewise.
---
gdb/ada-lang.c | 8 ++++----
gdb/ada-typeprint.c | 7 ++++---
gdb/amd64-windows-tdep.c | 2 +-
gdb/compile/compile-c-support.c | 4 ++--
gdb/gdbtypes.c | 2 +-
gdb/gdbtypes.h | 2 +-
gdb/m2-typeprint.c | 6 +++---
gdb/riscv-tdep.c | 2 +-
gdb/symmisc.c | 4 ++--
gdb/tracepoint.c | 7 +++++--
gdb/typeprint.c | 7 ++++---
gdb/xtensa-tdep.c | 8 ++++----
12 files changed, 32 insertions(+), 27 deletions(-)
Comments
* Keith Seitz <keiths@redhat.com> [2019-03-15 13:25:49 -0700]:
> This series is revisit of Siddhesh Poyarekar's patch from back in
> 2012. The last status on the patch is in the following gdb-patches
> thread:
>
> https://sourceware.org/ml/gdb-patches/2012-08/msg00562.html
>
> It appears that Tom approved the patch, but Jan had some issues
> with a compiler error that made the test fail on -m32 test runs.
> He wrote up a hand-tweaked .S file to deal with it. Siddesh said
> he would update tests. Then nothing.
>
> Siddesh and Jan have both moved on since.
>
> The patch originally required a large precursor patch to work.
> I have whittled this down to/rewritten the bare minimum, and this
> first patch is the result, changing the type of TYPE_LENGTH
> to ULONGEST from unsigned int.
>
> The majority of the changes involve changing printf format
> strings to use %s and pulongest instead of %d.
>
> gdb/ChangeLog:
>
> * ada-lang.c (ada_template_to_fixed_record_type_1): Use
> %s/pulongest for TYPE_LENGTH instead of %d in format
> strings.
> * ada-typerint.c (ada_print_type): Likewise.
> * amd64-windows-tdep.c (amd64_windows_store_arg_in_reg): Likewise.
> * compile/compile-c-support.c (generate_register_struct): Likewise.
> * gdbtypes.c (recursive_dump_type): Likewise.
> * gdbtypes.h (struct type) <length>: Change type to ULONGEST.
> * m2-typeprint.c (m2_array): Use %s/pulongest for TYPE_LENGTH
> instead of %d in format strings.
> * riscv-tdep.c (riscv_type_alignment): Cast second argument
> to std::min to ULONGEST.
> * symmisc.c (print_symbol): Use %s/pulongest for TYPE_LENGTH
> instead of %d in format strings.
> * tracepoint.c (info_scope_command): Likewise.
> * typeprint.c (print_offset_data::update)
> (print_offset_data::finish): Likewise.
> * xtensa-tdep.c (xtensa_store_return_value)
> (xtensa_push_dummy_call): Likewise.
I took a look through and all of these changes seem reasonable. You
might want to wait a few more days to see if there's any additional
feedback from anyone else, but otherwise I think this could be merged.
Thanks,
Andrew
> ---
> gdb/ada-lang.c | 8 ++++----
> gdb/ada-typeprint.c | 7 ++++---
> gdb/amd64-windows-tdep.c | 2 +-
> gdb/compile/compile-c-support.c | 4 ++--
> gdb/gdbtypes.c | 2 +-
> gdb/gdbtypes.h | 2 +-
> gdb/m2-typeprint.c | 6 +++---
> gdb/riscv-tdep.c | 2 +-
> gdb/symmisc.c | 4 ++--
> gdb/tracepoint.c | 7 +++++--
> gdb/typeprint.c | 7 ++++---
> gdb/xtensa-tdep.c | 8 ++++----
> 12 files changed, 32 insertions(+), 27 deletions(-)
>
> diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
> index a6fadc846e..37b0cb4b83 100644
> --- a/gdb/ada-lang.c
> +++ b/gdb/ada-lang.c
> @@ -8497,11 +8497,11 @@ ada_template_to_fixed_record_type_1 (struct type *type,
> if (TYPE_LENGTH (type) <= 0)
> {
> if (TYPE_NAME (rtype))
> - warning (_("Invalid type size for `%s' detected: %d."),
> - TYPE_NAME (rtype), TYPE_LENGTH (type));
> + warning (_("Invalid type size for `%s' detected: %s."),
> + TYPE_NAME (rtype), pulongest (TYPE_LENGTH (type)));
> else
> - warning (_("Invalid type size for <unnamed> detected: %d."),
> - TYPE_LENGTH (type));
> + warning (_("Invalid type size for <unnamed> detected: %s."),
> + pulongest (TYPE_LENGTH (type)));
> }
> else
> {
> diff --git a/gdb/ada-typeprint.c b/gdb/ada-typeprint.c
> index 8c42e8140d..efcd14bedc 100644
> --- a/gdb/ada-typeprint.c
> +++ b/gdb/ada-typeprint.c
> @@ -895,8 +895,8 @@ ada_print_type (struct type *type0, const char *varstring,
> const char *name = ada_type_name (type);
>
> if (!ada_is_range_type_name (name))
> - fprintf_filtered (stream, _("<%d-byte integer>"),
> - TYPE_LENGTH (type));
> + fprintf_filtered (stream, _("<%s-byte integer>"),
> + pulongest (TYPE_LENGTH (type)));
> else
> {
> fprintf_filtered (stream, "range ");
> @@ -917,7 +917,8 @@ ada_print_type (struct type *type0, const char *varstring,
> }
> break;
> case TYPE_CODE_FLT:
> - fprintf_filtered (stream, _("<%d-byte float>"), TYPE_LENGTH (type));
> + fprintf_filtered (stream, _("<%s-byte float>"),
> + pulongest (TYPE_LENGTH (type)));
> break;
> case TYPE_CODE_ENUM:
> if (show < 0)
> diff --git a/gdb/amd64-windows-tdep.c b/gdb/amd64-windows-tdep.c
> index 65c05c645a..922da9e48b 100644
> --- a/gdb/amd64-windows-tdep.c
> +++ b/gdb/amd64-windows-tdep.c
> @@ -144,7 +144,7 @@ amd64_windows_store_arg_in_reg (struct regcache *regcache,
>
> gdb_assert (TYPE_LENGTH (type) <= 8);
> memset (buf, 0, sizeof buf);
> - memcpy (buf, valbuf, std::min (TYPE_LENGTH (type), (unsigned int) 8));
> + memcpy (buf, valbuf, std::min (TYPE_LENGTH (type), (ULONGEST) 8));
> regcache->cooked_write (regno, buf);
> }
>
> diff --git a/gdb/compile/compile-c-support.c b/gdb/compile/compile-c-support.c
> index 3d2913cd14..d1947da657 100644
> --- a/gdb/compile/compile-c-support.c
> +++ b/gdb/compile/compile-c-support.c
> @@ -270,11 +270,11 @@ generate_register_struct (struct ui_file *stream, struct gdbarch *gdbarch,
>
> default:
> fprintf_unfiltered (stream,
> - " unsigned char %s[%d]"
> + " unsigned char %s[%s]"
> " __attribute__((__aligned__("
> "__BIGGEST_ALIGNMENT__)))",
> regname.c_str (),
> - TYPE_LENGTH (regtype));
> + pulongest (TYPE_LENGTH (regtype)));
> }
> fputs_unfiltered (";\n", stream);
> }
> diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
> index 09284ef259..0fac740d0d 100644
> --- a/gdb/gdbtypes.c
> +++ b/gdb/gdbtypes.c
> @@ -4607,7 +4607,7 @@ recursive_dump_type (struct type *type, int spaces)
> break;
> }
> puts_filtered ("\n");
> - printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type));
> + printfi_filtered (spaces, "length %s\n", pulongest (TYPE_LENGTH (type)));
> if (TYPE_OBJFILE_OWNED (type))
> {
> printfi_filtered (spaces, "objfile ");
> diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
> index a6d4f64e9b..7795143ba0 100644
> --- a/gdb/gdbtypes.h
> +++ b/gdb/gdbtypes.h
> @@ -859,7 +859,7 @@ struct type
> type_length_units function should be used in order to get the length
> expressed in target addressable memory units. */
>
> - unsigned int length;
> + ULONGEST length;
>
> /* * Core type, shared by a group of qualified types. */
>
> diff --git a/gdb/m2-typeprint.c b/gdb/m2-typeprint.c
> index 754fb657af..dae07d1c53 100644
> --- a/gdb/m2-typeprint.c
> +++ b/gdb/m2-typeprint.c
> @@ -234,9 +234,9 @@ static void m2_array (struct type *type, struct ui_file *stream,
> m2_print_bounds (TYPE_INDEX_TYPE (type), stream, show, -1, 1);
> }
> else
> - fprintf_filtered (stream, "%d",
> - (TYPE_LENGTH (type)
> - / TYPE_LENGTH (TYPE_TARGET_TYPE (type))));
> + fputs_filtered (pulongest ((TYPE_LENGTH (type)
> + / TYPE_LENGTH (TYPE_TARGET_TYPE (type)))),
> + stream);
> }
> fprintf_filtered (stream, "] OF ");
> m2_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level, flags);
> diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c
> index 8a996f32d3..ff5f36e762 100644
> --- a/gdb/riscv-tdep.c
> +++ b/gdb/riscv-tdep.c
> @@ -1645,7 +1645,7 @@ riscv_type_alignment (struct type *t)
>
> case TYPE_CODE_ARRAY:
> if (TYPE_VECTOR (t))
> - return std::min (TYPE_LENGTH (t), (unsigned) BIGGEST_ALIGNMENT);
> + return std::min (TYPE_LENGTH (t), (ULONGEST) BIGGEST_ALIGNMENT);
> /* FALLTHROUGH */
>
> case TYPE_CODE_COMPLEX:
> diff --git a/gdb/symmisc.c b/gdb/symmisc.c
> index cb0b5a52e4..6ce799009a 100644
> --- a/gdb/symmisc.c
> +++ b/gdb/symmisc.c
> @@ -587,8 +587,8 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
> unsigned i;
> struct type *type = check_typedef (SYMBOL_TYPE (symbol));
>
> - fprintf_filtered (outfile, "const %u hex bytes:",
> - TYPE_LENGTH (type));
> + fprintf_filtered (outfile, "const %s hex bytes:",
> + pulongest (TYPE_LENGTH (type)));
> for (i = 0; i < TYPE_LENGTH (type); i++)
> fprintf_filtered (outfile, " %02x",
> (unsigned) SYMBOL_VALUE_BYTES (symbol)[i]);
> diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
> index 8cdda7aeed..c7585c6783 100644
> --- a/gdb/tracepoint.c
> +++ b/gdb/tracepoint.c
> @@ -2636,8 +2636,11 @@ info_scope_command (const char *args_in, int from_tty)
> }
> }
> if (SYMBOL_TYPE (sym))
> - printf_filtered (", length %d.\n",
> - TYPE_LENGTH (check_typedef (SYMBOL_TYPE (sym))));
> + {
> + struct type *t = check_typedef (SYMBOL_TYPE (sym));
> +
> + printf_filtered (", length %s.\n", pulongest (TYPE_LENGTH (t)));
> + }
> }
> if (BLOCK_FUNCTION (block))
> break;
> diff --git a/gdb/typeprint.c b/gdb/typeprint.c
> index 114725bc69..0a93a831b8 100644
> --- a/gdb/typeprint.c
> +++ b/gdb/typeprint.c
> @@ -120,7 +120,8 @@ print_offset_data::update (struct type *type, unsigned int field_idx,
> {
> /* Since union fields don't have the concept of offsets, we just
> print their sizes. */
> - fprintf_filtered (stream, "/* %4u */", TYPE_LENGTH (ftype));
> + fprintf_filtered (stream, "/* %4s */",
> + pulongest (TYPE_LENGTH (ftype)));
> return;
> }
>
> @@ -183,8 +184,8 @@ print_offset_data::finish (struct type *type, int level,
>
> fputs_filtered ("\n", stream);
> print_spaces_filtered (level + 4 + print_offset_data::indentation, stream);
> - fprintf_filtered (stream, "/* total size (bytes): %4u */\n",
> - TYPE_LENGTH (type));
> + fprintf_filtered (stream, "/* total size (bytes): %4s */\n",
> + pulongest (TYPE_LENGTH (type)));
> }
>
>
> diff --git a/gdb/xtensa-tdep.c b/gdb/xtensa-tdep.c
> index fcec9961ee..efa0bcb1dc 100644
> --- a/gdb/xtensa-tdep.c
> +++ b/gdb/xtensa-tdep.c
> @@ -1615,8 +1615,8 @@ xtensa_store_return_value (struct type *type,
>
> if (len > (callsize > 8 ? 8 : 16))
> internal_error (__FILE__, __LINE__,
> - _("unimplemented for this length: %d"),
> - TYPE_LENGTH (type));
> + _("unimplemented for this length: %s"),
> + pulongest (TYPE_LENGTH (type)));
> areg = arreg_number (gdbarch,
> gdbarch_tdep (gdbarch)->a0_base + 2 + callsize, wb);
>
> @@ -1723,9 +1723,9 @@ xtensa_push_dummy_call (struct gdbarch *gdbarch,
> {
> struct value *arg = args[i];
> struct type *arg_type = check_typedef (value_type (arg));
> - fprintf_unfiltered (gdb_stdlog, "%2d: %s %3d ", i,
> + fprintf_unfiltered (gdb_stdlog, "%2d: %s %3s ", i,
> host_address_to_string (arg),
> - TYPE_LENGTH (arg_type));
> + pulongest (TYPE_LENGTH (arg_type)));
> switch (TYPE_CODE (arg_type))
> {
> case TYPE_CODE_INT:
> --
> 2.20.1
>
On Fri, 15 Mar 2019 13:25:49 -0700
Keith Seitz <keiths@redhat.com> wrote:
> This series is revisit of Siddhesh Poyarekar's patch from back in
> 2012. The last status on the patch is in the following gdb-patches
> thread:
>
> https://sourceware.org/ml/gdb-patches/2012-08/msg00562.html
>
> It appears that Tom approved the patch, but Jan had some issues
> with a compiler error that made the test fail on -m32 test runs.
> He wrote up a hand-tweaked .S file to deal with it. Siddesh said
> he would update tests. Then nothing.
>
> Siddesh and Jan have both moved on since.
>
> The patch originally required a large precursor patch to work.
> I have whittled this down to/rewritten the bare minimum, and this
> first patch is the result, changing the type of TYPE_LENGTH
> to ULONGEST from unsigned int.
>
> The majority of the changes involve changing printf format
> strings to use %s and pulongest instead of %d.
>
> gdb/ChangeLog:
>
> * ada-lang.c (ada_template_to_fixed_record_type_1): Use
> %s/pulongest for TYPE_LENGTH instead of %d in format
> strings.
> * ada-typerint.c (ada_print_type): Likewise.
> * amd64-windows-tdep.c (amd64_windows_store_arg_in_reg): Likewise.
> * compile/compile-c-support.c (generate_register_struct): Likewise.
> * gdbtypes.c (recursive_dump_type): Likewise.
> * gdbtypes.h (struct type) <length>: Change type to ULONGEST.
> * m2-typeprint.c (m2_array): Use %s/pulongest for TYPE_LENGTH
> instead of %d in format strings.
> * riscv-tdep.c (riscv_type_alignment): Cast second argument
> to std::min to ULONGEST.
> * symmisc.c (print_symbol): Use %s/pulongest for TYPE_LENGTH
> instead of %d in format strings.
> * tracepoint.c (info_scope_command): Likewise.
> * typeprint.c (print_offset_data::update)
> (print_offset_data::finish): Likewise.
> * xtensa-tdep.c (xtensa_store_return_value)
> (xtensa_push_dummy_call): Likewise.
Okay.
Kevin
@@ -8497,11 +8497,11 @@ ada_template_to_fixed_record_type_1 (struct type *type,
if (TYPE_LENGTH (type) <= 0)
{
if (TYPE_NAME (rtype))
- warning (_("Invalid type size for `%s' detected: %d."),
- TYPE_NAME (rtype), TYPE_LENGTH (type));
+ warning (_("Invalid type size for `%s' detected: %s."),
+ TYPE_NAME (rtype), pulongest (TYPE_LENGTH (type)));
else
- warning (_("Invalid type size for <unnamed> detected: %d."),
- TYPE_LENGTH (type));
+ warning (_("Invalid type size for <unnamed> detected: %s."),
+ pulongest (TYPE_LENGTH (type)));
}
else
{
@@ -895,8 +895,8 @@ ada_print_type (struct type *type0, const char *varstring,
const char *name = ada_type_name (type);
if (!ada_is_range_type_name (name))
- fprintf_filtered (stream, _("<%d-byte integer>"),
- TYPE_LENGTH (type));
+ fprintf_filtered (stream, _("<%s-byte integer>"),
+ pulongest (TYPE_LENGTH (type)));
else
{
fprintf_filtered (stream, "range ");
@@ -917,7 +917,8 @@ ada_print_type (struct type *type0, const char *varstring,
}
break;
case TYPE_CODE_FLT:
- fprintf_filtered (stream, _("<%d-byte float>"), TYPE_LENGTH (type));
+ fprintf_filtered (stream, _("<%s-byte float>"),
+ pulongest (TYPE_LENGTH (type)));
break;
case TYPE_CODE_ENUM:
if (show < 0)
@@ -144,7 +144,7 @@ amd64_windows_store_arg_in_reg (struct regcache *regcache,
gdb_assert (TYPE_LENGTH (type) <= 8);
memset (buf, 0, sizeof buf);
- memcpy (buf, valbuf, std::min (TYPE_LENGTH (type), (unsigned int) 8));
+ memcpy (buf, valbuf, std::min (TYPE_LENGTH (type), (ULONGEST) 8));
regcache->cooked_write (regno, buf);
}
@@ -270,11 +270,11 @@ generate_register_struct (struct ui_file *stream, struct gdbarch *gdbarch,
default:
fprintf_unfiltered (stream,
- " unsigned char %s[%d]"
+ " unsigned char %s[%s]"
" __attribute__((__aligned__("
"__BIGGEST_ALIGNMENT__)))",
regname.c_str (),
- TYPE_LENGTH (regtype));
+ pulongest (TYPE_LENGTH (regtype)));
}
fputs_unfiltered (";\n", stream);
}
@@ -4607,7 +4607,7 @@ recursive_dump_type (struct type *type, int spaces)
break;
}
puts_filtered ("\n");
- printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type));
+ printfi_filtered (spaces, "length %s\n", pulongest (TYPE_LENGTH (type)));
if (TYPE_OBJFILE_OWNED (type))
{
printfi_filtered (spaces, "objfile ");
@@ -859,7 +859,7 @@ struct type
type_length_units function should be used in order to get the length
expressed in target addressable memory units. */
- unsigned int length;
+ ULONGEST length;
/* * Core type, shared by a group of qualified types. */
@@ -234,9 +234,9 @@ static void m2_array (struct type *type, struct ui_file *stream,
m2_print_bounds (TYPE_INDEX_TYPE (type), stream, show, -1, 1);
}
else
- fprintf_filtered (stream, "%d",
- (TYPE_LENGTH (type)
- / TYPE_LENGTH (TYPE_TARGET_TYPE (type))));
+ fputs_filtered (pulongest ((TYPE_LENGTH (type)
+ / TYPE_LENGTH (TYPE_TARGET_TYPE (type)))),
+ stream);
}
fprintf_filtered (stream, "] OF ");
m2_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level, flags);
@@ -1645,7 +1645,7 @@ riscv_type_alignment (struct type *t)
case TYPE_CODE_ARRAY:
if (TYPE_VECTOR (t))
- return std::min (TYPE_LENGTH (t), (unsigned) BIGGEST_ALIGNMENT);
+ return std::min (TYPE_LENGTH (t), (ULONGEST) BIGGEST_ALIGNMENT);
/* FALLTHROUGH */
case TYPE_CODE_COMPLEX:
@@ -587,8 +587,8 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
unsigned i;
struct type *type = check_typedef (SYMBOL_TYPE (symbol));
- fprintf_filtered (outfile, "const %u hex bytes:",
- TYPE_LENGTH (type));
+ fprintf_filtered (outfile, "const %s hex bytes:",
+ pulongest (TYPE_LENGTH (type)));
for (i = 0; i < TYPE_LENGTH (type); i++)
fprintf_filtered (outfile, " %02x",
(unsigned) SYMBOL_VALUE_BYTES (symbol)[i]);
@@ -2636,8 +2636,11 @@ info_scope_command (const char *args_in, int from_tty)
}
}
if (SYMBOL_TYPE (sym))
- printf_filtered (", length %d.\n",
- TYPE_LENGTH (check_typedef (SYMBOL_TYPE (sym))));
+ {
+ struct type *t = check_typedef (SYMBOL_TYPE (sym));
+
+ printf_filtered (", length %s.\n", pulongest (TYPE_LENGTH (t)));
+ }
}
if (BLOCK_FUNCTION (block))
break;
@@ -120,7 +120,8 @@ print_offset_data::update (struct type *type, unsigned int field_idx,
{
/* Since union fields don't have the concept of offsets, we just
print their sizes. */
- fprintf_filtered (stream, "/* %4u */", TYPE_LENGTH (ftype));
+ fprintf_filtered (stream, "/* %4s */",
+ pulongest (TYPE_LENGTH (ftype)));
return;
}
@@ -183,8 +184,8 @@ print_offset_data::finish (struct type *type, int level,
fputs_filtered ("\n", stream);
print_spaces_filtered (level + 4 + print_offset_data::indentation, stream);
- fprintf_filtered (stream, "/* total size (bytes): %4u */\n",
- TYPE_LENGTH (type));
+ fprintf_filtered (stream, "/* total size (bytes): %4s */\n",
+ pulongest (TYPE_LENGTH (type)));
}
@@ -1615,8 +1615,8 @@ xtensa_store_return_value (struct type *type,
if (len > (callsize > 8 ? 8 : 16))
internal_error (__FILE__, __LINE__,
- _("unimplemented for this length: %d"),
- TYPE_LENGTH (type));
+ _("unimplemented for this length: %s"),
+ pulongest (TYPE_LENGTH (type)));
areg = arreg_number (gdbarch,
gdbarch_tdep (gdbarch)->a0_base + 2 + callsize, wb);
@@ -1723,9 +1723,9 @@ xtensa_push_dummy_call (struct gdbarch *gdbarch,
{
struct value *arg = args[i];
struct type *arg_type = check_typedef (value_type (arg));
- fprintf_unfiltered (gdb_stdlog, "%2d: %s %3d ", i,
+ fprintf_unfiltered (gdb_stdlog, "%2d: %s %3s ", i,
host_address_to_string (arg),
- TYPE_LENGTH (arg_type));
+ pulongest (TYPE_LENGTH (arg_type)));
switch (TYPE_CODE (arg_type))
{
case TYPE_CODE_INT: