Rewrite bfd error handler

This steals _doprnt from libiberty, extended to handle %A and %B.
Which lets us do away with the current horrible %A and %B handling
that requires all %A and %B arguments to be passed first, rather than
in the natural order.

	* bfd.c (PRINT_TYPE): Define.
	(_doprnt): New function.
	(error_handler_internal): Use _doprnt.
	* coff-arm.c: Put %A and %B arguments to _bfd_error_handler
	calls in their natural order, throughout file.
	* coff-mcore.c: Likewise.
	* coff-ppc.c: Likewise.
	* coff-tic80.c: Likewise.
	* cofflink.c: Likewise.
	* elf-s390-common.c: Likewise.
	* elf.c: Likewise.
	* elf32-arm.c: Likewise.
	* elf32-i386.c: Likewise.
	* elf32-m32r.c: Likewise.
	* elf32-msp430.c: Likewise.
	* elf32-spu.c: Likewise.
	* elf64-ia64-vms.c: Likewise.
	* elf64-sparc.c: Likewise.
	* elf64-x86-64.c: Likewise.
	* elflink.c: Likewise.
	* elfnn-aarch64.c: Likewise.
	* elfnn-ia64.c: Likewise.
	* elfxx-mips.c: Likewise.
This commit is contained in:
Alan Modra 2017-04-13 10:58:40 +09:30
parent 10463f39c7
commit c08bb8dd9b
21 changed files with 367 additions and 277 deletions

View File

@ -1,3 +1,29 @@
2017-04-13 Alan Modra <amodra@gmail.com>
* bfd.c (PRINT_TYPE): Define.
(_doprnt): New function.
(error_handler_internal): Use _doprnt.
* coff-arm.c: Put %A and %B arguments to _bfd_error_handler
calls in their natural order, throughout file.
* coff-mcore.c: Likewise.
* coff-ppc.c: Likewise.
* coff-tic80.c: Likewise.
* cofflink.c: Likewise.
* elf-s390-common.c: Likewise.
* elf.c: Likewise.
* elf32-arm.c: Likewise.
* elf32-i386.c: Likewise.
* elf32-m32r.c: Likewise.
* elf32-msp430.c: Likewise.
* elf32-spu.c: Likewise.
* elf64-ia64-vms.c: Likewise.
* elf64-sparc.c: Likewise.
* elf64-x86-64.c: Likewise.
* elflink.c: Likewise.
* elfnn-aarch64.c: Likewise.
* elfnn-ia64.c: Likewise.
* elfxx-mips.c: Likewise.
2017-04-13 Alan Modra <amodra@gmail.com>
* elf32-arm.c (arm_type_of_stub): Supply missing args to "long

372
bfd/bfd.c
View File

@ -611,38 +611,231 @@ CODE_FRAGMENT
static const char *_bfd_error_program_name;
/* This macro and _doprnt taken from libiberty _doprnt.c, tidied a
little and extended to handle '%A' and '%B'. */
#define PRINT_TYPE(TYPE) \
do \
{ \
TYPE value = va_arg (ap, TYPE); \
result = fprintf (stream, specifier, value); \
} while (0)
static int
_doprnt (FILE *stream, const char *format, va_list ap)
{
const char *ptr = format;
char specifier[128];
int total_printed = 0;
while (*ptr != '\0')
{
int result;
if (*ptr != '%')
{
/* While we have regular characters, print them. */
char *end = strchr (ptr, '%');
if (end != NULL)
result = fprintf (stream, "%.*s", (int) (end - ptr), ptr);
else
result = fprintf (stream, "%s", ptr);
ptr += result;
}
else
{
/* We have a format specifier! */
char *sptr = specifier;
int wide_width = 0, short_width = 0;
/* Copy the % and move forward. */
*sptr++ = *ptr++;
/* Move past flags. */
while (strchr ("-+ #0", *ptr))
*sptr++ = *ptr++;
if (*ptr == '*')
{
int value = abs (va_arg (ap, int));
sptr += sprintf (sptr, "%d", value);
ptr++;
}
else
/* Handle explicit numeric value. */
while (ISDIGIT (*ptr))
*sptr++ = *ptr++;
if (*ptr == '.')
{
/* Copy and go past the period. */
*sptr++ = *ptr++;
if (*ptr == '*')
{
int value = abs (va_arg (ap, int));
sptr += sprintf (sptr, "%d", value);
ptr++;
}
else
/* Handle explicit numeric value. */
while (ISDIGIT (*ptr))
*sptr++ = *ptr++;
}
while (strchr ("hlL", *ptr))
{
switch (*ptr)
{
case 'h':
short_width = 1;
break;
case 'l':
wide_width++;
break;
case 'L':
wide_width = 2;
break;
default:
abort();
}
*sptr++ = *ptr++;
}
/* Copy the type specifier, and NULL terminate. */
*sptr++ = *ptr++;
*sptr = '\0';
switch (ptr[-1])
{
case 'd':
case 'i':
case 'o':
case 'u':
case 'x':
case 'X':
case 'c':
{
/* Short values are promoted to int, so just copy it
as an int and trust the C library printf to cast it
to the right width. */
if (short_width)
PRINT_TYPE (int);
else
{
switch (wide_width)
{
case 0:
PRINT_TYPE (int);
break;
case 1:
PRINT_TYPE (long);
break;
case 2:
default:
#if defined(__GNUC__) || defined(HAVE_LONG_LONG)
PRINT_TYPE (long long);
#else
/* Fake it and hope for the best. */
PRINT_TYPE (long);
#endif
break;
}
}
}
break;
case 'f':
case 'e':
case 'E':
case 'g':
case 'G':
{
if (wide_width == 0)
PRINT_TYPE (double);
else
{
#if defined(__GNUC__) || defined(HAVE_LONG_DOUBLE)
PRINT_TYPE (long double);
#else
/* Fake it and hope for the best. */
PRINT_TYPE (double);
#endif
}
}
break;
case 's':
PRINT_TYPE (char *);
break;
case 'p':
PRINT_TYPE (void *);
break;
case '%':
fputc ('%', stream);
result = 1;
break;
case 'A':
{
asection *sec = va_arg (ap, asection *);
bfd *abfd;
const char *group = NULL;
struct coff_comdat_info *ci;
if (sec == NULL)
/* Invoking %A with a null section pointer is an
internal error. */
abort ();
abfd = sec->owner;
if (abfd != NULL
&& bfd_get_flavour (abfd) == bfd_target_elf_flavour
&& elf_next_in_group (sec) != NULL
&& (sec->flags & SEC_GROUP) == 0)
group = elf_group_name (sec);
else if (abfd != NULL
&& bfd_get_flavour (abfd) == bfd_target_coff_flavour
&& (ci = bfd_coff_get_comdat_section (sec->owner,
sec)) != NULL)
group = ci->name;
if (group != NULL)
result = fprintf (stream, "%s[%s]", sec->name, group);
else
result = fprintf (stream, "%s", sec->name);
}
break;
case 'B':
{
bfd *abfd = va_arg (ap, bfd *);
if (abfd == NULL)
/* Invoking %B with a null bfd pointer is an
internal error. */
abort ();
else if (abfd->my_archive
&& !bfd_is_thin_archive (abfd->my_archive))
result = fprintf (stream, "%s(%s)",
abfd->my_archive->filename, abfd->filename);
else
result = fprintf (stream, "%s", abfd->filename);
}
break;
default:
abort();
}
}
if (result == -1)
return -1;
total_printed += result;
}
return total_printed;
}
/* This is the default routine to handle BFD error messages.
Like fprintf (stderr, ...), but also handles some extra format specifiers.
%A section name from section. For group components, print group name too.
%B file name from bfd. For archive components, prints archive too.
Note - because these two extra format specifiers require special handling
they are scanned for and processed in this function, before calling
vfprintf. This means that the *arguments* for these format specifiers
must be the first ones in the variable argument list, regardless of where
the specifiers appear in the format string. Thus for example calling
this function with a format string of:
"blah %s blah %A blah %d blah %B"
would involve passing the arguments as:
"blah %s blah %A blah %d blah %B",
asection_for_the_%A,
bfd_for_the_%B,
string_for_the_%s,
integer_for_the_%d);
*/
%B file name from bfd. For archive components, prints archive too. */
static void
error_handler_internal (const char *fmt, va_list ap)
{
char *bufp;
const char *new_fmt, *p;
size_t avail = 1000;
char buf[1000];
/* PR 4992: Don't interrupt output being sent to stdout. */
fflush (stdout);
@ -651,136 +844,7 @@ error_handler_internal (const char *fmt, va_list ap)
else
fprintf (stderr, "BFD: ");
new_fmt = fmt;
bufp = buf;
/* Reserve enough space for the existing format string. */
avail -= strlen (fmt) + 1;
if (avail > 1000)
_exit (EXIT_FAILURE);
p = fmt;
while (1)
{
char *q;
size_t len, extra, trim;
p = strchr (p, '%');
if (p == NULL || p[1] == '\0')
{
if (new_fmt == buf)
{
len = strlen (fmt);
memcpy (bufp, fmt, len + 1);
}
break;
}
if (p[1] == 'A' || p[1] == 'B')
{
len = p - fmt;
memcpy (bufp, fmt, len);
bufp += len;
fmt = p + 2;
new_fmt = buf;
/* If we run out of space, tough, you lose your ridiculously
long file or section name. It's not safe to try to alloc
memory here; We might be printing an out of memory message. */
if (avail == 0)
{
*bufp++ = '*';
*bufp++ = '*';
*bufp = '\0';
}
else
{
if (p[1] == 'B')
{
bfd *abfd = va_arg (ap, bfd *);
if (abfd == NULL)
/* Invoking %B with a null bfd pointer is an internal error. */
abort ();
else if (abfd->my_archive
&& !bfd_is_thin_archive (abfd->my_archive))
snprintf (bufp, avail, "%s(%s)",
abfd->my_archive->filename, abfd->filename);
else
snprintf (bufp, avail, "%s", abfd->filename);
}
else
{
asection *sec = va_arg (ap, asection *);
bfd *abfd;
const char *group = NULL;
struct coff_comdat_info *ci;
if (sec == NULL)
/* Invoking %A with a null section pointer is an internal error. */
abort ();
abfd = sec->owner;
if (abfd != NULL
&& bfd_get_flavour (abfd) == bfd_target_elf_flavour
&& elf_next_in_group (sec) != NULL
&& (sec->flags & SEC_GROUP) == 0)
group = elf_group_name (sec);
else if (abfd != NULL
&& bfd_get_flavour (abfd) == bfd_target_coff_flavour
&& (ci = bfd_coff_get_comdat_section (sec->owner,
sec)) != NULL)
group = ci->name;
if (group != NULL)
snprintf (bufp, avail, "%s[%s]", sec->name, group);
else
snprintf (bufp, avail, "%s", sec->name);
}
len = strlen (bufp);
avail = avail - len + 2;
/* We need to replace any '%' we printed by "%%".
First count how many. */
q = bufp;
bufp += len;
extra = 0;
while ((q = strchr (q, '%')) != NULL)
{
++q;
++extra;
}
/* If there isn't room, trim off the end of the string. */
q = bufp;
bufp += extra;
if (extra > avail)
{
trim = extra - avail;
bufp -= trim;
do
{
if (*--q == '%')
--extra;
}
while (--trim != 0);
*q = '\0';
avail = extra;
}
avail -= extra;
/* Now double all '%' chars, shuffling the string as we go. */
while (extra != 0)
{
while ((q[extra] = *q) != '%')
--q;
q[--extra] = '%';
--q;
}
}
}
p = p + 2;
}
vfprintf (stderr, new_fmt, ap);
_doprnt (stderr, fmt, ap);
/* On AIX, putc is implemented as a macro that triggers a -Wunused-value
warning, so use the fputc function to avoid it. */

View File

@ -1362,7 +1362,7 @@ coff_arm_relocate_section (bfd *output_bfd,
/* xgettext:c-format */
(_("%B(%s): warning: interworking not enabled.\n"
" first occurrence: %B: arm call to thumb"),
h_sec->owner, input_bfd, name);
h_sec->owner, name, input_bfd);
--my_offset;
myh->root.u.def.value = my_offset;
@ -1453,7 +1453,7 @@ coff_arm_relocate_section (bfd *output_bfd,
(_("%B(%s): warning: interworking not enabled.\n"
" first occurrence: %B: thumb call to arm\n"
" consider relinking with --support-old-code enabled"),
h_sec->owner, input_bfd, name);
h_sec->owner, name, input_bfd);
-- my_offset;
myh->root.u.def.value = my_offset;
@ -1744,7 +1744,7 @@ coff_arm_relocate_section (bfd *output_bfd,
_bfd_error_handler
/* xgettext:c-format */
(_("%B: bad reloc address 0x%lx in section `%A'"),
input_bfd, input_section, (unsigned long) rel->r_vaddr);
input_bfd, (unsigned long) rel->r_vaddr, input_section);
return FALSE;
case bfd_reloc_overflow:
{
@ -2201,9 +2201,8 @@ coff_arm_merge_private_bfd_data (bfd * ibfd, struct bfd_link_info *info)
_bfd_error_handler
/* xgettext: c-format */
(_("error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d"),
ibfd, obfd,
APCS_26_FLAG (ibfd) ? 26 : 32,
APCS_26_FLAG (obfd) ? 26 : 32
ibfd, APCS_26_FLAG (ibfd) ? 26 : 32,
obfd, APCS_26_FLAG (obfd) ? 26 : 32
);
bfd_set_error (bfd_error_wrong_format);

View File

@ -480,7 +480,7 @@ coff_mcore_relocate_section (bfd * output_bfd,
/* xgettext: c-format */
(_("Warning: unsupported reloc %s <file %B, section %A>\n"
"sym %ld (%s), r_vaddr %ld (%lx)"),
input_bfd, input_section, howto->name,
howto->name, input_bfd, input_section,
rel->r_symndx, my_name, (long) rel->r_vaddr,
(unsigned long) rel->r_vaddr);
break;

View File

@ -1243,7 +1243,7 @@ coff_ppc_relocate_section (bfd *output_bfd,
/* xgettext: c-format */
(_("Warning: unsupported reloc %s <file %B, section %A>\n"
"sym %ld (%s), r_vaddr %ld (%lx)"),
input_bfd, input_section, howto->name,
howto->name, input_bfd, input_section,
rel->r_symndx, my_name, (long) rel->r_vaddr,
(unsigned long) rel->r_vaddr);
}

View File

@ -668,7 +668,7 @@ coff_tic80_relocate_section (bfd *output_bfd,
_bfd_error_handler
/* xgettext: c-format */
(_("%B: bad reloc address 0x%lx in section `%A'"),
input_bfd, input_section, (unsigned long) rel->r_vaddr);
input_bfd, (unsigned long) rel->r_vaddr, input_section);
return FALSE;
case bfd_reloc_overflow:
{

View File

@ -447,8 +447,9 @@ coff_link_add_symbols (bfd *abfd,
|| BTYPE (sym.n_type) == T_NULL)))
_bfd_error_handler
/* xgettext: c-format */
(_("Warning: type of symbol `%s' changed from %d to %d in %B"),
abfd, name, (*sym_hash)->type, sym.n_type);
(_("Warning: type of symbol `%s' changed"
" from %d to %d in %B"),
name, (*sym_hash)->type, sym.n_type, abfd);
/* We don't want to change from a meaningful
base type to a null one, but if we know
@ -3124,7 +3125,7 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd,
_bfd_error_handler
/* xgettext: c-format */
(_("%B: bad reloc address 0x%lx in section `%A'"),
input_bfd, input_section, (unsigned long) rel->r_vaddr);
input_bfd, (unsigned long) rel->r_vaddr, input_section);
return FALSE;
case bfd_reloc_overflow:
{

View File

@ -306,7 +306,7 @@ elf_s390_merge_obj_attributes (bfd *ibfd, struct bfd_link_info *info)
_bfd_error_handler
/* xgettext:c-format */
(_("Warning: %B uses vector %s ABI, %B uses %s ABI"),
ibfd, obfd, abi_str[in_attr->i], abi_str[out_attr->i]);
ibfd, abi_str[in_attr->i], obfd, abi_str[out_attr->i]);
}
if (in_attr->i > out_attr->i)
out_attr->i = in_attr->i;

View File

@ -836,7 +836,7 @@ _bfd_elf_setup_sections (bfd *abfd)
_bfd_error_handler
/* xgettext:c-format */
(_("%B: sh_link [%d] in section `%A' is incorrect"),
s->owner, s, elfsec);
s->owner, elfsec, s);
result = FALSE;
}
@ -3213,7 +3213,7 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg)
_bfd_error_handler
/* xgettext:c-format */
(_("%B: error: Alignment power %d of section `%A' is too big"),
abfd, asect, asect->alignment_power);
abfd, asect->alignment_power, asect);
arg->failed = TRUE;
return;
}

View File

@ -4092,7 +4092,7 @@ arm_type_of_stub (struct bfd_link_info *info,
_bfd_error_handler
(_("%B(%s): warning: interworking not enabled.\n"
" first occurrence: %B: Thumb call to ARM"),
sym_sec->owner, input_bfd, name);
sym_sec->owner, name, input_bfd);
}
stub_type =
@ -8810,7 +8810,7 @@ elf32_thumb_to_arm_stub (struct bfd_link_info * info,
_bfd_error_handler
(_("%B(%s): warning: interworking not enabled.\n"
" first occurrence: %B: Thumb call to ARM"),
sym_sec->owner, input_bfd, name);
sym_sec->owner, name, input_bfd);
return FALSE;
}
@ -8900,7 +8900,7 @@ elf32_arm_create_thumb_stub (struct bfd_link_info * info,
_bfd_error_handler
(_("%B(%s): warning: interworking not enabled.\n"
" first occurrence: %B: arm call to thumb"),
sym_sec->owner, input_bfd, name);
sym_sec->owner, name, input_bfd);
}
--my_offset;
@ -19697,9 +19697,8 @@ elf32_arm_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
{
_bfd_error_handler
(_("error: Source object %B has EABI version %d, but target %B has EABI version %d"),
ibfd, obfd,
(in_flags & EF_ARM_EABIMASK) >> 24,
(out_flags & EF_ARM_EABIMASK) >> 24);
ibfd, (in_flags & EF_ARM_EABIMASK) >> 24,
obfd, (out_flags & EF_ARM_EABIMASK) >> 24);
return FALSE;
}
@ -19713,9 +19712,8 @@ elf32_arm_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
{
_bfd_error_handler
(_("error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d"),
ibfd, obfd,
in_flags & EF_ARM_APCS_26 ? 26 : 32,
out_flags & EF_ARM_APCS_26 ? 26 : 32);
ibfd, in_flags & EF_ARM_APCS_26 ? 26 : 32,
obfd, out_flags & EF_ARM_APCS_26 ? 26 : 32);
flags_compatible = FALSE;
}

View File

@ -1569,8 +1569,8 @@ elf_i386_tls_transition (struct bfd_link_info *info, bfd *abfd,
/* xgettext:c-format */
(_("%B: TLS transition from %s to %s against `%s' at 0x%lx "
"in section `%A' failed"),
abfd, sec, from->name, to->name, name,
(unsigned long) rel->r_offset);
abfd, from->name, to->name, name,
(unsigned long) rel->r_offset, sec);
bfd_set_error (bfd_error_bad_value);
return FALSE;
}
@ -3836,7 +3836,7 @@ elf_i386_relocate_section (bfd *output_bfd,
_bfd_error_handler
/* xgettext:c-format */
(_("%B: unrecognized relocation (0x%x) in section `%A'"),
input_bfd, input_section, r_type);
input_bfd, r_type, input_section);
bfd_set_error (bfd_error_bad_value);
return FALSE;
}

View File

@ -2983,9 +2983,9 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
/* xgettext:c-format */
(_("%B: The target (%s) of an %s relocation is in the wrong section (%A)"),
input_bfd,
sec,
sym_name,
m32r_elf_howto_table[(int) r_type].name);
m32r_elf_howto_table[(int) r_type].name,
sec);
/*bfd_set_error (bfd_error_bad_value); ??? why? */
ret = FALSE;
continue;

View File

@ -2445,9 +2445,8 @@ elf32_msp430_merge_mspabi_attributes (bfd *ibfd, struct bfd_link_info *info)
_bfd_error_handler
/* xgettext:c-format */
(_("error: %B uses %s instructions but %B uses %s"),
ibfd, first_input_bfd,
isa_type (in_attr[OFBA_MSPABI_Tag_ISA].i),
isa_type (out_attr[OFBA_MSPABI_Tag_ISA].i));
ibfd, isa_type (in_attr[OFBA_MSPABI_Tag_ISA].i),
first_input_bfd, isa_type (out_attr[OFBA_MSPABI_Tag_ISA].i));
result = FALSE;
}
@ -2458,9 +2457,8 @@ elf32_msp430_merge_mspabi_attributes (bfd *ibfd, struct bfd_link_info *info)
_bfd_error_handler
/* xgettext:c-format */
(_("error: %B uses the %s code model whereas %B uses the %s code model"),
ibfd, first_input_bfd,
code_model (in_attr[OFBA_MSPABI_Tag_Code_Model].i),
code_model (out_attr[OFBA_MSPABI_Tag_Code_Model].i));
ibfd, code_model (in_attr[OFBA_MSPABI_Tag_Code_Model].i),
first_input_bfd, code_model (out_attr[OFBA_MSPABI_Tag_Code_Model].i));
result = FALSE;
}
@ -2482,9 +2480,8 @@ elf32_msp430_merge_mspabi_attributes (bfd *ibfd, struct bfd_link_info *info)
_bfd_error_handler
/* xgettext:c-format */
(_("error: %B uses the %s data model whereas %B uses the %s data model"),
ibfd, first_input_bfd,
data_model (in_attr[OFBA_MSPABI_Tag_Data_Model].i),
data_model (out_attr[OFBA_MSPABI_Tag_Data_Model].i));
ibfd, data_model (in_attr[OFBA_MSPABI_Tag_Data_Model].i),
first_input_bfd, data_model (out_attr[OFBA_MSPABI_Tag_Data_Model].i));
result = FALSE;
}
@ -2507,8 +2504,8 @@ elf32_msp430_merge_mspabi_attributes (bfd *ibfd, struct bfd_link_info *info)
_bfd_error_handler
/* xgettext:c-format */
(_("error: %B uses the %s data model but %B only uses MSP430 instructions"),
ibfd, first_input_bfd,
data_model (in_attr[OFBA_MSPABI_Tag_Data_Model].i));
ibfd, data_model (in_attr[OFBA_MSPABI_Tag_Data_Model].i),
first_input_bfd);
result = FALSE;
}

View File

@ -1019,7 +1019,7 @@ needs_ovl_stub (struct elf_link_hash_entry *h,
_bfd_error_handler
/* xgettext:c-format */
(_("warning: call to non-function symbol %s defined in %B"),
sym_sec->owner, sym_name);
sym_name, sym_sec->owner);
}
}

View File

@ -584,8 +584,9 @@ elf64_ia64_relax_section (bfd *abfd, asection *sec,
{
_bfd_error_handler
/* xgettext:c-format */
(_("%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect branch."),
sec->owner, sec, (unsigned long) roff);
(_("%B: Can't relax br at 0x%lx in section `%A'."
" Please use brl or indirect branch."),
sec->owner, (unsigned long) roff, sec);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
@ -3947,9 +3948,10 @@ elf64_ia64_relocate_section (bfd *output_bfd,
case R_IA64_LTOFF_DTPREL22:
_bfd_error_handler
/* xgettext:c-format */
(_("%B: missing TLS section for relocation %s against `%s' at 0x%lx in section `%A'."),
input_bfd, input_section, howto->name, name,
rel->r_offset);
(_("%B: missing TLS section for relocation %s against `%s'"
" at 0x%lx in section `%A'."),
input_bfd, howto->name, name,
rel->r_offset, input_section);
break;
case R_IA64_PCREL21B:
@ -3963,9 +3965,10 @@ elf64_ia64_relocate_section (bfd *output_bfd,
that the section is too big to relax. */
_bfd_error_handler
/* xgettext:c-format */
(_("%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> 0x1000000)."),
input_bfd, input_section, howto->name, name,
rel->r_offset, input_section->size);
(_("%B: Can't relax br (%s) to `%s' at 0x%lx in section"
" `%A' with size 0x%lx (> 0x1000000)."),
input_bfd, howto->name, name, rel->r_offset,
input_section, input_section->size);
break;
}
/* Fall through. */
@ -5135,15 +5138,15 @@ error_free_dyn:
/* xgettext:c-format */
(_("Warning: alignment %u of common symbol `%s' in %B"
" is greater than the alignment (%u) of its section %A"),
common_bfd, h->root.u.def.section,
1 << common_align, name, 1 << normal_align);
1 << common_align, name, common_bfd,
1 << normal_align, h->root.u.def.section);
else
_bfd_error_handler
/* xgettext:c-format */
(_("Warning: alignment %u of symbol `%s' in %B"
" is smaller than %u in %B"),
normal_bfd, common_bfd,
1 << normal_align, name, 1 << common_align);
1 << normal_align, name, normal_bfd,
1 << common_align, common_bfd);
}
}
@ -5158,9 +5161,8 @@ error_free_dyn:
/* xgettext:c-format */
(_("Warning: size of symbol `%s' changed"
" from %lu in %B to %lu in %B"),
old_bfd, abfd,
name, (unsigned long) h->size,
(unsigned long) isym->st_size);
name, (unsigned long) h->size, old_bfd,
(unsigned long) isym->st_size, abfd);
h->size = isym->st_size;
}
@ -5186,7 +5188,7 @@ error_free_dyn:
/* xgettext:c-format */
(_("Warning: type of symbol `%s' changed"
" from %d to %d in %B"),
abfd, name, h->type, type);
name, h->type, type, abfd);
h->type = type;
}

View File

@ -466,10 +466,10 @@ elf64_sparc_add_symbol_hook (bfd *abfd, struct bfd_link_info *info,
{
_bfd_error_handler
/* xgettext:c-format */
(_("Register %%g%d used incompatibly: %s in %B, previously %s in %B"),
abfd, p->abfd, (int) sym->st_value,
**namep ? *namep : "#scratch",
*p->name ? p->name : "#scratch");
(_("Register %%g%d used incompatibly: %s in %B,"
" previously %s in %B"),
(int) sym->st_value, **namep ? *namep : "#scratch", abfd,
*p->name ? p->name : "#scratch", p->abfd);
return FALSE;
}
@ -490,8 +490,9 @@ elf64_sparc_add_symbol_hook (bfd *abfd, struct bfd_link_info *info,
type = 0;
_bfd_error_handler
/* xgettext:c-format */
(_("Symbol `%s' has differing types: REGISTER in %B, previously %s in %B"),
abfd, p->abfd, *namep, stt_types[type]);
(_("Symbol `%s' has differing types: REGISTER in %B,"
" previously %s in %B"),
*namep, abfd, stt_types[type], p->abfd);
return FALSE;
}
@ -536,8 +537,9 @@ elf64_sparc_add_symbol_hook (bfd *abfd, struct bfd_link_info *info,
type = 0;
_bfd_error_handler
/* xgettext:c-format */
(_("Symbol `%s' has differing types: %s in %B, previously REGISTER in %B"),
abfd, p->abfd, *namep, stt_types[type]);
(_("Symbol `%s' has differing types: %s in %B,"
" previously REGISTER in %B"),
*namep, stt_types[type], abfd, p->abfd);
return FALSE;
}
}

View File

@ -1702,8 +1702,8 @@ elf_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd,
/* xgettext:c-format */
(_("%B: TLS transition from %s to %s against `%s' at 0x%lx "
"in section `%A' failed"),
abfd, sec, from->name, to->name, name,
(unsigned long) rel->r_offset);
abfd, from->name, to->name, name,
(unsigned long) rel->r_offset, sec);
bfd_set_error (bfd_error_bad_value);
return FALSE;
}
@ -4284,7 +4284,7 @@ elf_x86_64_relocate_section (bfd *output_bfd,
_bfd_error_handler
/* xgettext:c-format */
(_("%B: unrecognized relocation (0x%x) in section `%A'"),
input_bfd, input_section, r_type);
input_bfd, r_type, input_section);
bfd_set_error (bfd_error_bad_value);
return FALSE;
}
@ -5065,18 +5065,16 @@ direct:
(_("%B: addend -0x%x in relocation %s against "
"symbol `%s' at 0x%lx in section `%A' is "
"out of range"),
input_bfd, input_section, addend,
howto->name, name,
(unsigned long) rel->r_offset);
input_bfd, addend, howto->name, name,
(unsigned long) rel->r_offset, input_section);
else
_bfd_error_handler
/* xgettext:c-format */
(_("%B: addend 0x%x in relocation %s against "
"symbol `%s' at 0x%lx in section `%A' is "
"out of range"),
input_bfd, input_section, addend,
howto->name, name,
(unsigned long) rel->r_offset);
input_bfd, addend, howto->name, name,
(unsigned long) rel->r_offset, input_section);
bfd_set_error (bfd_error_bad_value);
return FALSE;
}

View File

@ -1298,25 +1298,25 @@ _bfd_elf_merge_symbol (bfd *abfd,
/* xgettext:c-format */
(_("%s: TLS definition in %B section %A "
"mismatches non-TLS definition in %B section %A"),
tbfd, tsec, ntbfd, ntsec, h->root.root.string);
h->root.root.string, tbfd, tsec, ntbfd, ntsec);
else if (!tdef && !ntdef)
_bfd_error_handler
/* xgettext:c-format */
(_("%s: TLS reference in %B "
"mismatches non-TLS reference in %B"),
tbfd, ntbfd, h->root.root.string);
h->root.root.string, tbfd, ntbfd);
else if (tdef)
_bfd_error_handler
/* xgettext:c-format */
(_("%s: TLS definition in %B section %A "
"mismatches non-TLS reference in %B"),
tbfd, tsec, ntbfd, h->root.root.string);
h->root.root.string, tbfd, tsec, ntbfd);
else
_bfd_error_handler
/* xgettext:c-format */
(_("%s: TLS reference in %B "
"mismatches non-TLS definition in %B section %A"),
tbfd, ntbfd, ntsec, h->root.root.string);
h->root.root.string, tbfd, ntbfd, ntsec);
bfd_set_error (bfd_error_bad_value);
return FALSE;
@ -2359,8 +2359,8 @@ elf_link_read_relocs_from_section (bfd *abfd,
/* xgettext:c-format */
(_("%B: bad reloc symbol index (0x%lx >= 0x%lx)"
" for offset 0x%lx in section `%A'"),
abfd, sec,
(unsigned long) r_symndx, (unsigned long) nsyms, irela->r_offset);
abfd, (unsigned long) r_symndx, (unsigned long) nsyms,
irela->r_offset, sec);
bfd_set_error (bfd_error_bad_value);
return FALSE;
}
@ -2369,10 +2369,11 @@ elf_link_read_relocs_from_section (bfd *abfd,
{
_bfd_error_handler
/* xgettext:c-format */
(_("%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A'"
(_("%B: non-zero symbol index (0x%lx)"
" for offset 0x%lx in section `%A'"
" when the object file has no symbol table"),
abfd, sec,
(unsigned long) r_symndx, (unsigned long) nsyms, irela->r_offset);
abfd, (unsigned long) r_symndx, (unsigned long) nsyms,
irela->r_offset, sec);
bfd_set_error (bfd_error_bad_value);
return FALSE;
}
@ -4673,15 +4674,15 @@ error_free_dyn:
/* xgettext:c-format */
(_("Warning: alignment %u of common symbol `%s' in %B is"
" greater than the alignment (%u) of its section %A"),
common_bfd, h->root.u.def.section,
1 << common_align, name, 1 << normal_align);
1 << common_align, name, common_bfd,
1 << normal_align, h->root.u.def.section);
else
_bfd_error_handler
/* xgettext:c-format */
(_("Warning: alignment %u of symbol `%s' in %B"
" is smaller than %u in %B"),
normal_bfd, common_bfd,
1 << normal_align, name, 1 << common_align);
1 << normal_align, name, normal_bfd,
1 << common_align, common_bfd);
}
}
@ -4697,9 +4698,8 @@ error_free_dyn:
/* xgettext:c-format */
(_("Warning: size of symbol `%s' changed"
" from %lu in %B to %lu in %B"),
old_bfd, abfd,
name, (unsigned long) h->size,
(unsigned long) isym->st_size);
name, (unsigned long) h->size, old_bfd,
(unsigned long) isym->st_size, abfd);
h->size = isym->st_size;
}
@ -4733,7 +4733,7 @@ error_free_dyn:
_bfd_error_handler
(_("Warning: type of symbol `%s' changed"
" from %d to %d in %B"),
abfd, name, h->type, type);
name, h->type, type, abfd);
h->type = type;
}
@ -9456,8 +9456,8 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data)
def_bfd = flinfo->output_bfd;
if (hi->root.u.def.section != bfd_abs_section_ptr)
def_bfd = hi->root.u.def.section->owner;
_bfd_error_handler (msg, flinfo->output_bfd, def_bfd,
h->root.root.string);
_bfd_error_handler (msg, flinfo->output_bfd,
h->root.root.string, def_bfd);
bfd_set_error (bfd_error_bad_value);
eoinfo->failed = TRUE;
return FALSE;
@ -10384,7 +10384,7 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd)
/* xgettext:c-format */
(_("error: %B contains a reloc (0x%s) for section %A "
"that references a non-existent global symbol"),
input_bfd, o, buffer);
input_bfd, buffer, o);
bfd_set_error (bfd_error_bad_value);
return FALSE;
}
@ -12982,8 +12982,8 @@ elf_gc_sweep (bfd *abfd, struct bfd_link_info *info)
if (info->print_gc_sections && o->size != 0)
/* xgettext:c-format */
_bfd_error_handler (_("Removing unused section '%s' in file '%B'"),
sub, o->name);
_bfd_error_handler (_("Removing unused section '%A' in file '%B'"),
o, sub);
/* But we also have to update some of the relocation
info we collected before. */

View File

@ -6109,7 +6109,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
/* xgettext:c-format */
_bfd_error_handler
(_("%B: unrecognized relocation (0x%x) in section `%A'"),
input_bfd, input_section, r_type);
input_bfd, r_type, input_section);
return FALSE;
}
bfd_r_type = elfNN_aarch64_bfd_reloc_from_howto (howto);

View File

@ -617,8 +617,9 @@ elfNN_ia64_relax_section (bfd *abfd, asection *sec,
{
_bfd_error_handler
/* xgettext:c-format */
(_("%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect branch."),
sec->owner, sec, (unsigned long) roff);
(_("%B: Can't relax br at 0x%lx in section `%A'."
" Please use brl or indirect branch."),
sec->owner, (unsigned long) roff, sec);
bfd_set_error (bfd_error_bad_value);
goto error_return;
}
@ -4474,9 +4475,10 @@ missing_tls_sec:
case R_IA64_LTOFF_DTPREL22:
_bfd_error_handler
/* xgettext:c-format */
(_("%B: missing TLS section for relocation %s against `%s' at 0x%lx in section `%A'."),
input_bfd, input_section, howto->name, name,
rel->r_offset);
(_("%B: missing TLS section for relocation %s against `%s'"
" at 0x%lx in section `%A'."),
input_bfd, howto->name, name,
rel->r_offset, input_section);
break;
case R_IA64_PCREL21B:
@ -4490,9 +4492,10 @@ missing_tls_sec:
that the section is too big to relax. */
_bfd_error_handler
/* xgettext:c-format */
(_("%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> 0x1000000)."),
input_bfd, input_section, howto->name, name,
rel->r_offset, input_section->size);
(_("%B: Can't relax br (%s) to `%s' at 0x%lx"
" in section `%A' with size 0x%lx (> 0x1000000)."),
input_bfd, howto->name, name, rel->r_offset,
input_section, input_section->size);
break;
}
/* Fall through. */

View File

@ -10132,9 +10132,10 @@ _bfd_mips_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
sec);
_bfd_error_handler
/* xgettext:c-format */
(_("%B: Can't find matching LO16 reloc against `%s' for %s at 0x%lx in section `%A'"),
input_bfd, input_section, name, howto->name,
rel->r_offset);
(_("%B: Can't find matching LO16 reloc against `%s'"
" for %s at 0x%lx in section `%A'"),
input_bfd, name,
howto->name, rel->r_offset, input_section);
}
}
else
@ -10679,8 +10680,8 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd *output_bfd,
"beyond the range of ADDIUPC"),
output_bfd,
htab->root.sgotplt->output_section,
htab->root.splt->output_section,
(long) gotpc_offset);
(long) gotpc_offset,
htab->root.splt->output_section);
bfd_set_error (bfd_error_no_error);
return FALSE;
}
@ -11246,8 +11247,8 @@ mips_finish_exec_plt (bfd *output_bfd, struct bfd_link_info *info)
(_("%B: `%A' offset of %ld from `%A' beyond the range of ADDIUPC"),
output_bfd,
htab->root.sgotplt->output_section,
htab->root.splt->output_section,
(long) gotpc_offset);
(long) gotpc_offset,
htab->root.splt->output_section);
bfd_set_error (bfd_error_no_error);
return FALSE;
}
@ -15197,19 +15198,19 @@ mips_elf_merge_obj_attributes (bfd *ibfd, struct bfd_link_info *info)
_bfd_error_handler
(_("Warning: %B uses unknown floating point ABI %d "
"(set by %B), %B uses unknown floating point ABI %d"),
obfd, abi_fp_bfd, ibfd, out_fp, in_fp);
obfd, out_fp, abi_fp_bfd, ibfd, in_fp);
else if (!out_string)
_bfd_error_handler
/* xgettext:c-format */
(_("Warning: %B uses unknown floating point ABI %d "
"(set by %B), %B uses %s"),
obfd, abi_fp_bfd, ibfd, out_fp, in_string);
obfd, out_fp, abi_fp_bfd, ibfd, in_string);
else if (!in_string)
_bfd_error_handler
/* xgettext:c-format */
(_("Warning: %B uses %s (set by %B), "
"%B uses unknown floating point ABI %d"),
obfd, abi_fp_bfd, ibfd, out_string, in_fp);
obfd, out_string, abi_fp_bfd, ibfd, in_fp);
else
{
/* If one of the bfds is soft-float, the other must be
@ -15222,7 +15223,7 @@ mips_elf_merge_obj_attributes (bfd *ibfd, struct bfd_link_info *info)
_bfd_error_handler
/* xgettext:c-format */
(_("Warning: %B uses %s (set by %B), %B uses %s"),
obfd, abi_fp_bfd, ibfd, out_string, in_string);
obfd, out_string, abi_fp_bfd, ibfd, in_string);
}
}
}
@ -15242,8 +15243,8 @@ mips_elf_merge_obj_attributes (bfd *ibfd, struct bfd_link_info *info)
/* xgettext:c-format */
(_("Warning: %B uses %s (set by %B), "
"%B uses unknown MSA ABI %d"),
obfd, abi_msa_bfd, ibfd,
"-mmsa", in_attr[Tag_GNU_MIPS_ABI_MSA].i);
obfd, "-mmsa", abi_msa_bfd,
ibfd, in_attr[Tag_GNU_MIPS_ABI_MSA].i);
break;
default:
@ -15254,8 +15255,8 @@ mips_elf_merge_obj_attributes (bfd *ibfd, struct bfd_link_info *info)
/* xgettext:c-format */
(_("Warning: %B uses unknown MSA ABI %d "
"(set by %B), %B uses %s"),
obfd, abi_msa_bfd, ibfd,
out_attr[Tag_GNU_MIPS_ABI_MSA].i, "-mmsa");
obfd, out_attr[Tag_GNU_MIPS_ABI_MSA].i,
abi_msa_bfd, ibfd, "-mmsa");
break;
default:
@ -15263,9 +15264,8 @@ mips_elf_merge_obj_attributes (bfd *ibfd, struct bfd_link_info *info)
/* xgettext:c-format */
(_("Warning: %B uses unknown MSA ABI %d "
"(set by %B), %B uses unknown MSA ABI %d"),
obfd, abi_msa_bfd, ibfd,
out_attr[Tag_GNU_MIPS_ABI_MSA].i,
in_attr[Tag_GNU_MIPS_ABI_MSA].i);
obfd, out_attr[Tag_GNU_MIPS_ABI_MSA].i,
abi_msa_bfd, ibfd, in_attr[Tag_GNU_MIPS_ABI_MSA].i);
break;
}
}