mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-16 12:24:19 +08:00
Fix problems translating messages when a percentage sign appears at the end of a string.
PR 28051 gas * config/tc-i386.c (offset_in_range): Reformat error messages in order to fix problems when translating. (md_assemble): Likewise. * messages.c (as_internal_value_out_of_range): Likewise. * read.c (emit_expr_with_reloc): Likewise. * testsuite/gas/all/overflow.l Change expected output format. * po/gas.pot: Regenerate. bfd * coff-rs6000.c (xcoff_reloc_type_tls): Reformat error messages in order to fix problems when translating. * cofflink.c (_bfd_coff_write_global_sym): Likewise. * elfnn-aarch64.c (_bfd_aarch64_erratum_843419_branch_to_stub): Likewise. * po/bfd.pot: Regenerate.
This commit is contained in:
@ -366,9 +366,15 @@ as_internal_value_out_of_range (const char *prefix,
|
||||
offsetT max,
|
||||
const char *file,
|
||||
unsigned line,
|
||||
int bad)
|
||||
bool bad)
|
||||
{
|
||||
const char * err;
|
||||
/* These buffer sizes are excessive, but better to be safe than sorry.
|
||||
Note - these buffers are used in order to make the error message
|
||||
string translateable. */
|
||||
char val_buf [128];
|
||||
char min_buf [128];
|
||||
char max_buf [128];
|
||||
|
||||
if (prefix == NULL)
|
||||
prefix = "";
|
||||
@ -380,41 +386,38 @@ as_internal_value_out_of_range (const char *prefix,
|
||||
if (max <= 1)
|
||||
abort ();
|
||||
|
||||
sprintf (val_buf, "%" BFD_VMA_FMT "d", val);
|
||||
sprintf (min_buf, "%" BFD_VMA_FMT "d", right);
|
||||
|
||||
/* xgettext:c-format */
|
||||
err = _("%s out of domain (%" BFD_VMA_FMT "d is not a multiple of %" \
|
||||
BFD_VMA_FMT "d)");
|
||||
err = _("%s out of domain (%s is not a multiple of %s)");
|
||||
|
||||
if (bad)
|
||||
as_bad_where (file, line, err, prefix, val, right);
|
||||
as_bad_where (file, line, err, prefix, val_buf, min_buf);
|
||||
else
|
||||
as_warn_where (file, line, err, prefix, val, right);
|
||||
return;
|
||||
as_warn_where (file, line, err, prefix, val_buf, min_buf);
|
||||
}
|
||||
|
||||
if ( val < HEX_MAX_THRESHOLD
|
||||
&& min < HEX_MAX_THRESHOLD
|
||||
&& max < HEX_MAX_THRESHOLD
|
||||
&& val > HEX_MIN_THRESHOLD
|
||||
&& min > HEX_MIN_THRESHOLD
|
||||
&& max > HEX_MIN_THRESHOLD)
|
||||
else if ( val < HEX_MAX_THRESHOLD
|
||||
&& min < HEX_MAX_THRESHOLD
|
||||
&& max < HEX_MAX_THRESHOLD
|
||||
&& val > HEX_MIN_THRESHOLD
|
||||
&& min > HEX_MIN_THRESHOLD
|
||||
&& max > HEX_MIN_THRESHOLD)
|
||||
{
|
||||
/* xgettext:c-format */
|
||||
err = _("%s out of range (%" BFD_VMA_FMT "d is not between %" \
|
||||
BFD_VMA_FMT "d and %" BFD_VMA_FMT "d)");
|
||||
sprintf (val_buf, "%" BFD_VMA_FMT "d", val);
|
||||
sprintf (min_buf, "%" BFD_VMA_FMT "d", min);
|
||||
sprintf (max_buf, "%" BFD_VMA_FMT "d", max);
|
||||
|
||||
/* xgettext:c-format. */
|
||||
err = _("%s out of range (%s is not between %s and %s)");
|
||||
|
||||
if (bad)
|
||||
as_bad_where (file, line, err, prefix, val, min, max);
|
||||
as_bad_where (file, line, err, prefix, val_buf, min_buf, max_buf);
|
||||
else
|
||||
as_warn_where (file, line, err, prefix, val, min, max);
|
||||
as_warn_where (file, line, err, prefix, val_buf, min_buf, max_buf);
|
||||
}
|
||||
else
|
||||
{
|
||||
char val_buf [sizeof (val) * 3 + 2];
|
||||
char min_buf [sizeof (val) * 3 + 2];
|
||||
char max_buf [sizeof (val) * 3 + 2];
|
||||
|
||||
if (sizeof (val) > sizeof (bfd_vma))
|
||||
abort ();
|
||||
|
||||
sprintf_vma (val_buf, (bfd_vma) val);
|
||||
sprintf_vma (min_buf, (bfd_vma) min);
|
||||
sprintf_vma (max_buf, (bfd_vma) max);
|
||||
@ -437,7 +440,7 @@ as_warn_value_out_of_range (const char *prefix,
|
||||
const char *file,
|
||||
unsigned line)
|
||||
{
|
||||
as_internal_value_out_of_range (prefix, value, min, max, file, line, 0);
|
||||
as_internal_value_out_of_range (prefix, value, min, max, file, line, false);
|
||||
}
|
||||
|
||||
void
|
||||
@ -448,5 +451,5 @@ as_bad_value_out_of_range (const char *prefix,
|
||||
const char *file,
|
||||
unsigned line)
|
||||
{
|
||||
as_internal_value_out_of_range (prefix, value, min, max, file, line, 1);
|
||||
as_internal_value_out_of_range (prefix, value, min, max, file, line, true);
|
||||
}
|
||||
|
Reference in New Issue
Block a user