aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2017-04-13 10:58:40 +0930
committerAlan Modra <amodra@gmail.com>2017-04-13 17:07:24 +0930
commitc08bb8dd9bd9fd101018b287726187d7ed6a0035 (patch)
tree09a33dcea9c5a05a81a944fea362ef434d93d9b8
parent10463f39c79843c2c141481a0781091870695b17 (diff)
downloadgdb-c08bb8dd9bd9fd101018b287726187d7ed6a0035.zip
gdb-c08bb8dd9bd9fd101018b287726187d7ed6a0035.tar.gz
gdb-c08bb8dd9bd9fd101018b287726187d7ed6a0035.tar.bz2
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.
-rw-r--r--bfd/ChangeLog26
-rw-r--r--bfd/bfd.c360
-rw-r--r--bfd/coff-arm.c11
-rw-r--r--bfd/coff-mcore.c2
-rw-r--r--bfd/coff-ppc.c2
-rw-r--r--bfd/coff-tic80.c2
-rw-r--r--bfd/cofflink.c7
-rw-r--r--bfd/elf-s390-common.c2
-rw-r--r--bfd/elf.c4
-rw-r--r--bfd/elf32-arm.c16
-rw-r--r--bfd/elf32-i386.c6
-rw-r--r--bfd/elf32-m32r.c4
-rw-r--r--bfd/elf32-msp430.c19
-rw-r--r--bfd/elf32-spu.c2
-rw-r--r--bfd/elf64-ia64-vms.c34
-rw-r--r--bfd/elf64-sparc.c18
-rw-r--r--bfd/elf64-x86-64.c16
-rw-r--r--bfd/elflink.c44
-rw-r--r--bfd/elfnn-aarch64.c2
-rw-r--r--bfd/elfnn-ia64.c19
-rw-r--r--bfd/elfxx-mips.c36
21 files changed, 361 insertions, 271 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 09578f1..b8a218f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,31 @@
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
branch veneers" error. Fix double space and format message.
* elf32-avr.c (avr_add_stub): Do not pass NULL as %B arg.
diff --git a/bfd/bfd.c b/bfd/bfd.c
index a9402e48..23a4350 100644
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -611,176 +611,240 @@ CODE_FRAGMENT
static const char *_bfd_error_program_name;
-/* 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);
- */
-
-static void
-error_handler_internal (const char *fmt, va_list ap)
+/* 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)
{
- 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);
+ const char *ptr = format;
+ char specifier[128];
+ int total_printed = 0;
- if (_bfd_error_program_name != NULL)
- fprintf (stderr, "%s: ", _bfd_error_program_name);
- 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)
+ while (*ptr != '\0')
{
- char *q;
- size_t len, extra, trim;
+ int result;
- p = strchr (p, '%');
- if (p == NULL || p[1] == '\0')
+ if (*ptr != '%')
{
- if (new_fmt == buf)
- {
- len = strlen (fmt);
- memcpy (bufp, fmt, len + 1);
- }
- break;
+ /* 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;
}
-
- if (p[1] == 'A' || p[1] == 'B')
+ else
{
- 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)
+ /* 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 == '*')
{
- *bufp++ = '*';
- *bufp++ = '*';
- *bufp = '\0';
+ 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 == '.')
{
- if (p[1] == 'B')
+ /* Copy and go past the period. */
+ *sptr++ = *ptr++;
+ if (*ptr == '*')
{
- 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);
+ 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)
{
- 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;
+ case 'h':
+ short_width = 1;
+ break;
+ case 'l':
+ wide_width++;
+ break;
+ case 'L':
+ wide_width = 2;
+ break;
+ default:
+ abort();
}
+ *sptr++ = *ptr++;
+ }
- /* 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;
+ /* Copy the type specifier, and NULL terminate. */
+ *sptr++ = *ptr++;
+ *sptr = '\0';
- /* Now double all '%' chars, shuffling the string as we go. */
- while (extra != 0)
- {
- while ((q[extra] = *q) != '%')
- --q;
- q[--extra] = '%';
- --q;
- }
+ 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();
}
}
- p = p + 2;
+ if (result == -1)
+ return -1;
+ total_printed += result;
}
- vfprintf (stderr, new_fmt, ap);
+ 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. */
+
+static void
+error_handler_internal (const char *fmt, va_list ap)
+{
+ /* PR 4992: Don't interrupt output being sent to stdout. */
+ fflush (stdout);
+
+ if (_bfd_error_program_name != NULL)
+ fprintf (stderr, "%s: ", _bfd_error_program_name);
+ else
+ fprintf (stderr, "BFD: ");
+
+ _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. */
diff --git a/bfd/coff-arm.c b/bfd/coff-arm.c
index 3c892ef..b66ebe4 100644
--- a/bfd/coff-arm.c
+++ b/bfd/coff-arm.c
@@ -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);
diff --git a/bfd/coff-mcore.c b/bfd/coff-mcore.c
index 4d4bcbc..3ede766 100644
--- a/bfd/coff-mcore.c
+++ b/bfd/coff-mcore.c
@@ -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;
diff --git a/bfd/coff-ppc.c b/bfd/coff-ppc.c
index 7cd29ac..9dca30c 100644
--- a/bfd/coff-ppc.c
+++ b/bfd/coff-ppc.c
@@ -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);
}
diff --git a/bfd/coff-tic80.c b/bfd/coff-tic80.c
index c3e20d9..ec1d1fd 100644
--- a/bfd/coff-tic80.c
+++ b/bfd/coff-tic80.c
@@ -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:
{
diff --git a/bfd/cofflink.c b/bfd/cofflink.c
index 41cf77d..033b64e 100644
--- a/bfd/cofflink.c
+++ b/bfd/cofflink.c
@@ -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:
{
diff --git a/bfd/elf-s390-common.c b/bfd/elf-s390-common.c
index 3f4f088..1570365 100644
--- a/bfd/elf-s390-common.c
+++ b/bfd/elf-s390-common.c
@@ -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;
diff --git a/bfd/elf.c b/bfd/elf.c
index 1f02d42..802a339 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -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;
}
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index e04caef..e0ae923 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -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;
}
diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
index 7f2723d..3e3aa16 100644
--- a/bfd/elf32-i386.c
+++ b/bfd/elf32-i386.c
@@ -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;
}
diff --git a/bfd/elf32-m32r.c b/bfd/elf32-m32r.c
index 645a1ff..7ecf95f 100644
--- a/bfd/elf32-m32r.c
+++ b/bfd/elf32-m32r.c
@@ -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;
diff --git a/bfd/elf32-msp430.c b/bfd/elf32-msp430.c
index 43fcff5..8755280 100644
--- a/bfd/elf32-msp430.c
+++ b/bfd/elf32-msp430.c
@@ -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;
}
diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c
index a8e7ef2..cbb026e 100644
--- a/bfd/elf32-spu.c
+++ b/bfd/elf32-spu.c
@@ -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);
}
}
diff --git a/bfd/elf64-ia64-vms.c b/bfd/elf64-ia64-vms.c
index 3e316d3..7c4dfb3 100644
--- a/bfd/elf64-ia64-vms.c
+++ b/bfd/elf64-ia64-vms.c
@@ -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;
}
diff --git a/bfd/elf64-sparc.c b/bfd/elf64-sparc.c
index 7425dbe..9456b59 100644
--- a/bfd/elf64-sparc.c
+++ b/bfd/elf64-sparc.c
@@ -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;
}
}
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index 5d3a653..dbbdf89 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -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;
}
diff --git a/bfd/elflink.c b/bfd/elflink.c
index c00d712..ae8fe24 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -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. */
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 710e2c3..9976638 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -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);
diff --git a/bfd/elfnn-ia64.c b/bfd/elfnn-ia64.c
index 6f92b34..3c27f5d 100644
--- a/bfd/elfnn-ia64.c
+++ b/bfd/elfnn-ia64.c
@@ -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. */
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 901ddc1..4efa513 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -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;
}
}