Add mingw I64 support for printing long and long long values

This commit is contained in:
Nick Clifton 2008-01-25 16:18:41 +00:00
parent 53d25da64b
commit 6e3d6dc1ed
11 changed files with 179 additions and 45 deletions

View File

@ -1,3 +1,9 @@
2008-01-25 Kai Tietz <kai.tietz@onevision.com>
* bfd-in.h: Add mingw I64 support.
* bfd-in2.h: Regenerated.
* bfd.c: (bfd_get_sign_extend_vma): Add pe-x86-64 and pei-x86-64.
2008-01-21 Alan Modra <amodra@bigpond.net.au> 2008-01-21 Alan Modra <amodra@bigpond.net.au>
PR 4453 PR 4453

View File

@ -1,7 +1,7 @@
/* Main header file for the bfd library -- portable access to object files. /* Main header file for the bfd library -- portable access to object files.
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc. Free Software Foundation, Inc.
Contributed by Cygnus Support. Contributed by Cygnus Support.
@ -133,9 +133,14 @@ typedef BFD_HOST_U_64_BIT symvalue;
#define sprintf_vma(s,x) sprintf (s, "%016lx", x) #define sprintf_vma(s,x) sprintf (s, "%016lx", x)
#define fprintf_vma(f,x) fprintf (f, "%016lx", x) #define fprintf_vma(f,x) fprintf (f, "%016lx", x)
#elif BFD_HOST_64BIT_LONG_LONG #elif BFD_HOST_64BIT_LONG_LONG
#ifndef __MSVCRT__
#define sprintf_vma(s,x) sprintf (s, "%016llx", x) #define sprintf_vma(s,x) sprintf (s, "%016llx", x)
#define fprintf_vma(f,x) fprintf (f, "%016llx", x) #define fprintf_vma(f,x) fprintf (f, "%016llx", x)
#else #else
#define sprintf_vma(s,x) sprintf (s, "%016I64x", x)
#define fprintf_vma(f,x) fprintf (f, "%016I64x", x)
#endif
#else
#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff))) #define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff)) #define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
#define fprintf_vma(s,x) \ #define fprintf_vma(s,x) \

View File

@ -140,9 +140,14 @@ typedef BFD_HOST_U_64_BIT symvalue;
#define sprintf_vma(s,x) sprintf (s, "%016lx", x) #define sprintf_vma(s,x) sprintf (s, "%016lx", x)
#define fprintf_vma(f,x) fprintf (f, "%016lx", x) #define fprintf_vma(f,x) fprintf (f, "%016lx", x)
#elif BFD_HOST_64BIT_LONG_LONG #elif BFD_HOST_64BIT_LONG_LONG
#ifndef __MSVCRT__
#define sprintf_vma(s,x) sprintf (s, "%016llx", x) #define sprintf_vma(s,x) sprintf (s, "%016llx", x)
#define fprintf_vma(f,x) fprintf (f, "%016llx", x) #define fprintf_vma(f,x) fprintf (f, "%016llx", x)
#else #else
#define sprintf_vma(s,x) sprintf (s, "%016I64x", x)
#define fprintf_vma(f,x) fprintf (f, "%016I64x", x)
#endif
#else
#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff))) #define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff)) #define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
#define fprintf_vma(s,x) \ #define fprintf_vma(s,x) \

View File

@ -1,6 +1,6 @@
/* Generic BFD library interface and support routines. /* Generic BFD library interface and support routines.
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc. Free Software Foundation, Inc.
Written by Cygnus Support. Written by Cygnus Support.
@ -916,6 +916,8 @@ bfd_get_sign_extend_vma (bfd *abfd)
if (CONST_STRNEQ (name, "coff-go32") if (CONST_STRNEQ (name, "coff-go32")
|| strcmp (name, "pe-i386") == 0 || strcmp (name, "pe-i386") == 0
|| strcmp (name, "pei-i386") == 0 || strcmp (name, "pei-i386") == 0
|| strcmp (name, "pe-x86-64") == 0
|| strcmp (name, "pei-x86-64") == 0
|| strcmp (name, "pe-arm-wince-little") == 0 || strcmp (name, "pe-arm-wince-little") == 0
|| strcmp (name, "pei-arm-wince-little") == 0) || strcmp (name, "pei-arm-wince-little") == 0)
return 1; return 1;

View File

@ -1,3 +1,9 @@
2008-01-25 Kai Tietz <kai.tietz@onevision.com>
* prdbg.c: Correct formatter style use.
* readelf.c: Likewise.
* strings.c: Likewise.
2008-01-25 Nick Clifton <nickc@redhat.com> 2008-01-25 Nick Clifton <nickc@redhat.com>
* po/ru.po: Updated Russian translation. * po/ru.po: Updated Russian translation.

View File

@ -1007,19 +1007,20 @@ decode_location_expression (unsigned char * data,
} }
static unsigned char * static unsigned char *
read_and_display_attr_value (unsigned long attribute, read_and_display_attr_value (unsigned long attribute,
unsigned long form, unsigned long form,
unsigned char * data, unsigned char * data,
unsigned long cu_offset, unsigned long cu_offset,
unsigned long pointer_size, unsigned long pointer_size,
unsigned long offset_size, unsigned long offset_size,
int dwarf_version, int dwarf_version,
debug_info * debug_info_p, debug_info * debug_info_p,
int do_loc, int do_loc,
unsigned char * section_start) struct dwarf_section * section)
{ {
unsigned long uvalue = 0; unsigned long uvalue = 0;
unsigned char *block_start = NULL; unsigned char *block_start = NULL;
unsigned char * orig_data = data;
unsigned int bytes_read; unsigned int bytes_read;
switch (form) switch (form)
@ -1092,7 +1093,7 @@ read_and_display_attr_value (unsigned long attribute,
cu_offset, pointer_size, cu_offset, pointer_size,
offset_size, dwarf_version, offset_size, dwarf_version,
debug_info_p, do_loc, debug_info_p, do_loc,
section_start); section);
} }
switch (form) switch (form)
@ -1479,23 +1480,29 @@ read_and_display_attr_value (unsigned long attribute,
case DW_AT_import: case DW_AT_import:
{ {
unsigned long abbrev_number;
abbrev_entry * entry;
if (form == DW_FORM_ref1 if (form == DW_FORM_ref1
|| form == DW_FORM_ref2 || form == DW_FORM_ref2
|| form == DW_FORM_ref4) || form == DW_FORM_ref4)
uvalue += cu_offset; uvalue += cu_offset;
abbrev_number = read_leb128 (section_start + uvalue, NULL, 0); if (uvalue >= section->size)
warn (_("Offset %lx used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"),
uvalue, (long int)(orig_data - section->start));
else
{
unsigned long abbrev_number;
abbrev_entry * entry;
abbrev_number = read_leb128 (section->start + uvalue, NULL, 0);
printf ("[Abbrev Number: %ld", abbrev_number); printf ("[Abbrev Number: %ld", abbrev_number);
for (entry = first_abbrev; entry != NULL; entry = entry->next) for (entry = first_abbrev; entry != NULL; entry = entry->next)
if (entry->entry == abbrev_number) if (entry->entry == abbrev_number)
break; break;
if (entry != NULL) if (entry != NULL)
printf (" (%s)", get_TAG_name (entry->tag)); printf (" (%s)", get_TAG_name (entry->tag));
printf ("]"); printf ("]");
}
} }
break; break;
@ -1661,23 +1668,23 @@ get_AT_name (unsigned long attribute)
} }
static unsigned char * static unsigned char *
read_and_display_attr (unsigned long attribute, read_and_display_attr (unsigned long attribute,
unsigned long form, unsigned long form,
unsigned char * data, unsigned char * data,
unsigned long cu_offset, unsigned long cu_offset,
unsigned long pointer_size, unsigned long pointer_size,
unsigned long offset_size, unsigned long offset_size,
int dwarf_version, int dwarf_version,
debug_info * debug_info_p, debug_info * debug_info_p,
int do_loc, int do_loc,
unsigned char * section_start) struct dwarf_section * section)
{ {
if (!do_loc) if (!do_loc)
printf (" %-18s:", get_AT_name (attribute)); printf (" %-18s:", get_AT_name (attribute));
data = read_and_display_attr_value (attribute, form, data, cu_offset, data = read_and_display_attr_value (attribute, form, data, cu_offset,
pointer_size, offset_size, pointer_size, offset_size,
dwarf_version, debug_info_p, dwarf_version, debug_info_p,
do_loc, section_start); do_loc, section);
if (!do_loc) if (!do_loc)
printf ("\n"); printf ("\n");
return data; return data;
@ -1689,7 +1696,8 @@ read_and_display_attr (unsigned long attribute,
anything to the user. */ anything to the user. */
static int static int
process_debug_info (struct dwarf_section *section, void *file, process_debug_info (struct dwarf_section *section,
void *file,
int do_loc) int do_loc)
{ {
unsigned char *start = section->start; unsigned char *start = section->start;
@ -1954,7 +1962,7 @@ process_debug_info (struct dwarf_section *section, void *file,
offset_size, offset_size,
compunit.cu_version, compunit.cu_version,
debug_information + unit, debug_information + unit,
do_loc, section->start); do_loc, section);
} }
if (entry->children) if (entry->children)
@ -2289,6 +2297,21 @@ display_debug_lines (struct dwarf_section *section, void *file)
return 1; return 1;
} }
static debug_info *
find_debug_info_for_offset (unsigned long offset)
{
unsigned int i;
if (num_debug_info_entries == DEBUG_INFO_UNAVAILABLE)
return NULL;
for (i = 0; i < num_debug_info_entries; i++)
if (debug_information[i].cu_offset == offset)
return debug_information + i;
return NULL;
}
static int static int
display_debug_pubnames (struct dwarf_section *section, display_debug_pubnames (struct dwarf_section *section,
void *file ATTRIBUTE_UNUSED) void *file ATTRIBUTE_UNUSED)
@ -2297,6 +2320,10 @@ display_debug_pubnames (struct dwarf_section *section,
unsigned char *start = section->start; unsigned char *start = section->start;
unsigned char *end = start + section->size; unsigned char *end = start + section->size;
/* It does not matter if this load fails,
we test for that later on. */
load_debug_info (file);
printf (_("Contents of the %s section:\n\n"), section->name); printf (_("Contents of the %s section:\n\n"), section->name);
while (start < end) while (start < end)
@ -2324,8 +2351,16 @@ display_debug_pubnames (struct dwarf_section *section,
pubnames.pn_version = byte_get (data, 2); pubnames.pn_version = byte_get (data, 2);
data += 2; data += 2;
pubnames.pn_offset = byte_get (data, offset_size); pubnames.pn_offset = byte_get (data, offset_size);
data += offset_size; data += offset_size;
if (num_debug_info_entries != DEBUG_INFO_UNAVAILABLE
&& num_debug_info_entries > 0
&& find_debug_info_for_offset (pubnames.pn_offset) == NULL)
warn (_(".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"),
pubnames.pn_offset, section->name);
pubnames.pn_size = byte_get (data, offset_size); pubnames.pn_size = byte_get (data, offset_size);
data += offset_size; data += offset_size;
@ -2348,7 +2383,7 @@ display_debug_pubnames (struct dwarf_section *section,
pubnames.pn_length); pubnames.pn_length);
printf (_(" Version: %d\n"), printf (_(" Version: %d\n"),
pubnames.pn_version); pubnames.pn_version);
printf (_(" Offset into .debug_info section: %ld\n"), printf (_(" Offset into .debug_info section: 0x%lx\n"),
pubnames.pn_offset); pubnames.pn_offset);
printf (_(" Size of area in .debug_info section: %ld\n"), printf (_(" Size of area in .debug_info section: %ld\n"),
pubnames.pn_size); pubnames.pn_size);
@ -2770,6 +2805,10 @@ display_debug_aranges (struct dwarf_section *section,
printf (_("The section %s contains:\n\n"), section->name); printf (_("The section %s contains:\n\n"), section->name);
/* It does not matter if this load fails,
we test for that later on. */
load_debug_info (file);
while (start < end) while (start < end)
{ {
unsigned char *hdrptr; unsigned char *hdrptr;
@ -2806,6 +2845,12 @@ display_debug_aranges (struct dwarf_section *section,
arange.ar_info_offset = byte_get (hdrptr, offset_size); arange.ar_info_offset = byte_get (hdrptr, offset_size);
hdrptr += offset_size; hdrptr += offset_size;
if (num_debug_info_entries != DEBUG_INFO_UNAVAILABLE
&& num_debug_info_entries > 0
&& find_debug_info_for_offset (arange.ar_info_offset) == NULL)
warn (_(".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"),
arange.ar_info_offset, section->name);
arange.ar_pointer_size = byte_get (hdrptr, 1); arange.ar_pointer_size = byte_get (hdrptr, 1);
hdrptr += 1; hdrptr += 1;
@ -2820,7 +2865,7 @@ display_debug_aranges (struct dwarf_section *section,
printf (_(" Length: %ld\n"), arange.ar_length); printf (_(" Length: %ld\n"), arange.ar_length);
printf (_(" Version: %d\n"), arange.ar_version); printf (_(" Version: %d\n"), arange.ar_version);
printf (_(" Offset into .debug_info: %lx\n"), arange.ar_info_offset); printf (_(" Offset into .debug_info: 0x%lx\n"), arange.ar_info_offset);
printf (_(" Pointer Size: %d\n"), arange.ar_pointer_size); printf (_(" Pointer Size: %d\n"), arange.ar_pointer_size);
printf (_(" Segment Size: %d\n"), arange.ar_segment_size); printf (_(" Segment Size: %d\n"), arange.ar_segment_size);

View File

@ -502,12 +502,21 @@ print_vma (bfd_vma vma, char *buf, bfd_boolean unsignedp, bfd_boolean hexp)
#if BFD_HOST_64BIT_LONG_LONG #if BFD_HOST_64BIT_LONG_LONG
else if (sizeof (vma) <= sizeof (unsigned long long)) else if (sizeof (vma) <= sizeof (unsigned long long))
{ {
#ifndef __MSVCRT__
if (hexp) if (hexp)
sprintf (buf, "0x%llx", (unsigned long long) vma); sprintf (buf, "0x%llx", (unsigned long long) vma);
else if (unsignedp) else if (unsignedp)
sprintf (buf, "%llu", (unsigned long long) vma); sprintf (buf, "%llu", (unsigned long long) vma);
else else
sprintf (buf, "%lld", (long long) vma); sprintf (buf, "%lld", (long long) vma);
#else
if (hexp)
sprintf (buf, "0x%I64x", (unsigned long long) vma);
else if (unsignedp)
sprintf (buf, "%I64u", (unsigned long long) vma);
else
sprintf (buf, "%I64d", (long long) vma);
#endif
} }
#endif #endif
else else
@ -1942,8 +1951,6 @@ tg_start_compilation_unit (void * p, const char *filename ATTRIBUTE_UNUSED)
{ {
struct pr_handle *info = (struct pr_handle *) p; struct pr_handle *info = (struct pr_handle *) p;
fprintf (stderr, "New compilation unit: %s\n", filename);
free (info->filename); free (info->filename);
/* Should it be relative? best way to do it here?. */ /* Should it be relative? best way to do it here?. */
info->filename = strdup (filename); info->filename = strdup (filename);

View File

@ -1,6 +1,6 @@
/* readelf.c -- display contents of an ELF format file /* readelf.c -- display contents of an ELF format file
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
Free Software Foundation, Inc. 2008 Free Software Foundation, Inc.
Originally developed by Eric Youngdale <eric@andante.jic.com> Originally developed by Eric Youngdale <eric@andante.jic.com>
Modifications by Nick Clifton <nickc@redhat.com> Modifications by Nick Clifton <nickc@redhat.com>
@ -493,7 +493,11 @@ print_vma (bfd_vma vma, print_mode mode)
#if BFD_HOST_64BIT_LONG #if BFD_HOST_64BIT_LONG
return nc + printf ("%lx", vma); return nc + printf ("%lx", vma);
#elif BFD_HOST_64BIT_LONG_LONG #elif BFD_HOST_64BIT_LONG_LONG
#ifndef __MSVCRT__
return nc + printf ("%llx", vma); return nc + printf ("%llx", vma);
#else
return nc + printf ("%I64x", vma);
#endif
#else #else
return nc + print_hex_vma (vma); return nc + print_hex_vma (vma);
#endif #endif
@ -502,7 +506,11 @@ print_vma (bfd_vma vma, print_mode mode)
#if BFD_HOST_64BIT_LONG #if BFD_HOST_64BIT_LONG
return printf ("%ld", vma); return printf ("%ld", vma);
#elif BFD_HOST_64BIT_LONG_LONG #elif BFD_HOST_64BIT_LONG_LONG
#ifndef __MSVCRT__
return printf ("%lld", vma); return printf ("%lld", vma);
#else
return printf ("%I64d", vma);
#endif
#else #else
return print_dec_vma (vma, 1); return print_dec_vma (vma, 1);
#endif #endif
@ -514,10 +522,17 @@ print_vma (bfd_vma vma, print_mode mode)
else else
return printf ("%#lx", vma); return printf ("%#lx", vma);
#elif BFD_HOST_64BIT_LONG_LONG #elif BFD_HOST_64BIT_LONG_LONG
#ifndef __MSVCRT__
if (vma <= 99999) if (vma <= 99999)
return printf ("%5lld", vma); return printf ("%5lld", vma);
else else
return printf ("%#llx", vma); return printf ("%#llx", vma);
#else
if (vma <= 99999)
return printf ("%5I64d", vma);
else
return printf ("%#I64x", vma);
#endif
#else #else
if (vma <= 99999) if (vma <= 99999)
return printf ("%5ld", _bfd_int64_low (vma)); return printf ("%5ld", _bfd_int64_low (vma));
@ -529,7 +544,11 @@ print_vma (bfd_vma vma, print_mode mode)
#if BFD_HOST_64BIT_LONG #if BFD_HOST_64BIT_LONG
return printf ("%lu", vma); return printf ("%lu", vma);
#elif BFD_HOST_64BIT_LONG_LONG #elif BFD_HOST_64BIT_LONG_LONG
#ifndef __MSVCRT__
return printf ("%llu", vma); return printf ("%llu", vma);
#else
return printf ("%I64u", vma);
#endif
#else #else
return print_dec_vma (vma, 0); return print_dec_vma (vma, 0);
#endif #endif
@ -990,10 +1009,17 @@ dump_relocations (FILE *file,
: "%12.12lx %12.12lx ", : "%12.12lx %12.12lx ",
offset, info); offset, info);
#elif BFD_HOST_64BIT_LONG_LONG #elif BFD_HOST_64BIT_LONG_LONG
#ifndef __MSVCRT__
printf (do_wide printf (do_wide
? "%16.16llx %16.16llx " ? "%16.16llx %16.16llx "
: "%12.12llx %12.12llx ", : "%12.12llx %12.12llx ",
offset, info); offset, info);
#else
printf (do_wide
? "%16.16I64x %16.16I64x "
: "%12.12I64x %12.12I64x ",
offset, info);
#endif
#else #else
printf (do_wide printf (do_wide
? "%8.8lx%8.8lx %8.8lx%8.8lx " ? "%8.8lx%8.8lx %8.8lx%8.8lx "
@ -7820,7 +7846,11 @@ dump_section_as_strings (Elf_Internal_Shdr *section, FILE *file)
if (data < end) if (data < end)
{ {
#ifndef __MSVCRT__
printf (" [%6tx] %s\n", data - start, data); printf (" [%6tx] %s\n", data - start, data);
#else
printf (" [%6Ix] %s\n", (size_t) (data - start), data);
#endif
data += strlen (data); data += strlen (data);
some_strings_shown = TRUE; some_strings_shown = TRUE;
} }

View File

@ -1,6 +1,6 @@
/* strings -- print the strings of printable characters in files /* strings -- print the strings of printable characters in files
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -593,7 +593,13 @@ print_strings (const char *filename, FILE *stream, file_off address,
case 8: case 8:
#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2) #if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
if (sizeof (start) > sizeof (long)) if (sizeof (start) > sizeof (long))
printf ("%7llo ", (unsigned long long) start); {
#ifndef __MSVCRT__
printf ("%7llo ", (unsigned long long) start);
#else
printf ("%7I64o ", (unsigned long long) start);
#endif
}
else else
#elif !BFD_HOST_64BIT_LONG #elif !BFD_HOST_64BIT_LONG
if (start != (unsigned long) start) if (start != (unsigned long) start)
@ -606,7 +612,13 @@ print_strings (const char *filename, FILE *stream, file_off address,
case 10: case 10:
#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2) #if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
if (sizeof (start) > sizeof (long)) if (sizeof (start) > sizeof (long))
printf ("%7lld ", (unsigned long long) start); {
#ifndef __MSVCRT__
printf ("%7lld ", (unsigned long long) start);
#else
printf ("%7I64d ", (unsigned long long) start);
#endif
}
else else
#elif !BFD_HOST_64BIT_LONG #elif !BFD_HOST_64BIT_LONG
if (start != (unsigned long) start) if (start != (unsigned long) start)
@ -619,7 +631,13 @@ print_strings (const char *filename, FILE *stream, file_off address,
case 16: case 16:
#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2) #if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
if (sizeof (start) > sizeof (long)) if (sizeof (start) > sizeof (long))
printf ("%7llx ", (unsigned long long) start); {
#ifndef __MSVCRT__
printf ("%7llx ", (unsigned long long) start);
#else
printf ("%7I64x ", (unsigned long long) start);
#endif
}
else else
#elif !BFD_HOST_64BIT_LONG #elif !BFD_HOST_64BIT_LONG
if (start != (unsigned long) start) if (start != (unsigned long) start)

View File

@ -1,3 +1,8 @@
2008-01-25 Kai Tietz <kai.tietz@onevision.com>
* read.c: (emit_expr): Correct for mingw use of printf size
specifier.
2008-01-24 Bob Wilson <bob.wilson@acm.org> 2008-01-24 Bob Wilson <bob.wilson@acm.org>
* doc/c-xtensa.texi (Xtensa Syntax): Clarify handling of opcodes that * doc/c-xtensa.texi (Xtensa Syntax): Clarify handling of opcodes that

View File

@ -4112,8 +4112,13 @@ emit_expr (expressionS *exp, unsigned int nbytes)
|| (get & hibit) == 0)) || (get & hibit) == 0))
{ /* Leading bits contain both 0s & 1s. */ { /* Leading bits contain both 0s & 1s. */
#if defined (BFD64) && BFD_HOST_64BIT_LONG_LONG #if defined (BFD64) && BFD_HOST_64BIT_LONG_LONG
#ifndef __MSVCRT__
as_warn (_("value 0x%llx truncated to 0x%llx"), as_warn (_("value 0x%llx truncated to 0x%llx"),
(unsigned long long) get, (unsigned long long) use); (unsigned long long) get, (unsigned long long) use);
#else
as_warn (_("value 0x%I64x truncated to 0x%I64x"),
(unsigned long long) get, (unsigned long long) use);
#endif
#else #else
as_warn (_("value 0x%lx truncated to 0x%lx"), as_warn (_("value 0x%lx truncated to 0x%lx"),
(unsigned long) get, (unsigned long) use); (unsigned long) get, (unsigned long) use);