aboutsummaryrefslogtreecommitdiff
path: root/ld/ldmisc.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2018-02-19 15:21:40 +1030
committerAlan Modra <amodra@gmail.com>2018-02-19 23:55:53 +1030
commit871b3ab29e87cf0de15f7e49ad19acc4f7f6f84c (patch)
treee9a8ced3df4cd2541bddf01031b65da61cf98e47 /ld/ldmisc.c
parentf61f94ec1bf9cb3d32b38a90a1f5c2d58ececbfb (diff)
downloadgdb-871b3ab29e87cf0de15f7e49ad19acc4f7f6f84c.zip
gdb-871b3ab29e87cf0de15f7e49ad19acc4f7f6f84c.tar.gz
gdb-871b3ab29e87cf0de15f7e49ad19acc4f7f6f84c.tar.bz2
Use %pA and %pB in messages rather than %A and %B
First step towards compiler verification of _bfd_error_handler arguments, and better verification of translated messages. bfd/ * bfd.c (_bfd_doprnt, _bfd_doprnt_scan): Handle %pA and %pB in place of %A and %B. * aout-adobe.c: Update all messages using %A and %B. * aout-cris.c: Likewise. * aoutx.h: Likewise. * archive.c: Likewise. * binary.c: Likewise. * cache.c: Likewise. * coff-alpha.c: Likewise. * coff-arm.c: Likewise. * coff-i860.c: Likewise. * coff-mcore.c: Likewise. * coff-ppc.c: Likewise. * coff-rs6000.c: Likewise. * coff-sh.c: Likewise. * coff-tic4x.c: Likewise. * coff-tic54x.c: Likewise. * coff-tic80.c: Likewise. * coff64-rs6000.c: Likewise. * coffcode.h: Likewise. * coffgen.c: Likewise. * cofflink.c: Likewise. * coffswap.h: Likewise. * compress.c: Likewise. * cpu-arm.c: Likewise. * ecoff.c: Likewise. * elf-attrs.c: Likewise. * elf-eh-frame.c: Likewise. * elf-ifunc.c: Likewise. * elf-m10300.c: Likewise. * elf-properties.c: Likewise. * elf-s390-common.c: Likewise. * elf.c: Likewise. * elf32-arc.c: Likewise. * elf32-arm.c: Likewise. * elf32-avr.c: Likewise. * elf32-bfin.c: Likewise. * elf32-cr16.c: Likewise. * elf32-cr16c.c: Likewise. * elf32-cris.c: Likewise. * elf32-crx.c: Likewise. * elf32-d10v.c: Likewise. * elf32-d30v.c: Likewise. * elf32-epiphany.c: Likewise. * elf32-fr30.c: Likewise. * elf32-frv.c: Likewise. * elf32-gen.c: Likewise. * elf32-hppa.c: Likewise. * elf32-i370.c: Likewise. * elf32-i386.c: Likewise. * elf32-i960.c: Likewise. * elf32-ip2k.c: Likewise. * elf32-iq2000.c: Likewise. * elf32-lm32.c: Likewise. * elf32-m32c.c: Likewise. * elf32-m32r.c: Likewise. * elf32-m68hc11.c: Likewise. * elf32-m68hc12.c: Likewise. * elf32-m68hc1x.c: Likewise. * elf32-m68k.c: Likewise. * elf32-mcore.c: Likewise. * elf32-mep.c: Likewise. * elf32-metag.c: Likewise. * elf32-microblaze.c: Likewise. * elf32-moxie.c: Likewise. * elf32-msp430.c: Likewise. * elf32-mt.c: Likewise. * elf32-nds32.c: Likewise. * elf32-nios2.c: Likewise. * elf32-or1k.c: Likewise. * elf32-pj.c: Likewise. * elf32-ppc.c: Likewise. * elf32-rl78.c: Likewise. * elf32-rx.c: Likewise. * elf32-s390.c: Likewise. * elf32-score.c: Likewise. * elf32-score7.c: Likewise. * elf32-sh-symbian.c: Likewise. * elf32-sh.c: Likewise. * elf32-sh64.c: Likewise. * elf32-sparc.c: Likewise. * elf32-spu.c: Likewise. * elf32-tic6x.c: Likewise. * elf32-tilepro.c: Likewise. * elf32-v850.c: Likewise. * elf32-vax.c: Likewise. * elf32-visium.c: Likewise. * elf32-wasm32.c: Likewise. * elf32-xgate.c: Likewise. * elf32-xtensa.c: Likewise. * elf64-alpha.c: Likewise. * elf64-gen.c: Likewise. * elf64-hppa.c: Likewise. * elf64-ia64-vms.c: Likewise. * elf64-mmix.c: Likewise. * elf64-ppc.c: Likewise. * elf64-s390.c: Likewise. * elf64-sh64.c: Likewise. * elf64-sparc.c: Likewise. * elf64-x86-64.c: Likewise. * elfcode.h: Likewise. * elfcore.h: Likewise. * elflink.c: Likewise. * elfnn-aarch64.c: Likewise. * elfnn-ia64.c: Likewise. * elfnn-riscv.c: Likewise. * elfxx-mips.c: Likewise. * elfxx-sparc.c: Likewise. * elfxx-tilegx.c: Likewise. * elfxx-x86.c: Likewise. * hpux-core.c: Likewise. * ieee.c: Likewise. * ihex.c: Likewise. * libbfd.c: Likewise. * linker.c: Likewise. * mach-o.c: Likewise. * merge.c: Likewise. * mmo.c: Likewise. * oasys.c: Likewise. * pdp11.c: Likewise. * pe-mips.c: Likewise. * peXXigen.c: Likewise. * peicode.h: Likewise. * reloc.c: Likewise. * rs6000-core.c: Likewise. * srec.c: Likewise. * stabs.c: Likewise. * vms-alpha.c: Likewise. * xcofflink.c: Likewise. ld/ * ldmisc.c (vfinfo): Handle %pA and %pB in place of %A and %B. * ldcref.c: Update all messages using %A and %B. * ldexp.c: Likewise. * ldlang.c: Likewise. * ldmain.c: Likewise. * ldmisc.c: Likewise. * pe-dll.c: Likewise. * plugin.c: Likewise. * emultempl/beos.em: Likewise. * emultempl/cr16elf.em: Likewise. * emultempl/elf32.em: Likewise. * emultempl/m68kcoff.em: Likewise. * emultempl/m68kelf.em: Likewise. * emultempl/mmo.em: Likewise. * emultempl/nds32elf.em: Likewise. * emultempl/pe.em: Likewise. * emultempl/pep.em: Likewise. * emultempl/spuelf.em: Likewise. * emultempl/sunos.em: Likewise. * emultempl/xtensaelf.em: Likewise.
Diffstat (limited to 'ld/ldmisc.c')
-rw-r--r--ld/ldmisc.c117
1 files changed, 61 insertions, 56 deletions
diff --git a/ld/ldmisc.c b/ld/ldmisc.c
index 49aa66d..e3fdac3 100644
--- a/ld/ldmisc.c
+++ b/ld/ldmisc.c
@@ -40,8 +40,6 @@
/*
%% literal %
- %A section name from a section
- %B filename from a bfd
%C clever filename:linenumber with function
%D like %C, but no function name
%E current bfd error or errno
@@ -60,6 +58,8 @@
%ld long, like printf
%lu unsigned long, like printf
%p native (host) void* pointer, like printf
+ %pA section name from a section
+ %pB filename from a bfd
%s arbitrary string, like printf
%u integer, like printf
%v hex bfd_vma, no leading zeros
@@ -130,16 +130,19 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bfd_boolean is_warning)
break;
case 'T':
- case 'A':
- case 'B':
case 'I':
case 'S':
case 'R':
- case 'p':
case 's':
arg_type = Ptr;
break;
+ case 'p':
+ if (*scan == 'A' || *scan == 'B')
+ scan++;
+ arg_type = Ptr;
+ break;
+
case 'C':
case 'D':
case 'G':
@@ -316,49 +319,6 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bfd_boolean is_warning)
}
break;
- case 'A':
- /* section name from a section */
- {
- asection *sec;
- bfd *abfd;
- const char *group = NULL;
- struct coff_comdat_info *ci;
-
- sec = (asection *) args[arg_no].p;
- ++arg_count;
- abfd = sec->owner;
- fprintf (fp, "%s", sec->name);
- 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)
- fprintf (fp, "[%s]", group);
- }
- break;
-
- case 'B':
- /* filename from a bfd */
- {
- bfd *abfd = (bfd *) args[arg_no].p;
- ++arg_count;
- if (abfd == NULL)
- fprintf (fp, "%s generated", program_name);
- else if (abfd->my_archive != NULL
- && !bfd_is_thin_archive (abfd->my_archive))
- fprintf (fp, "%s(%s)", abfd->my_archive->filename,
- abfd->filename);
- else
- fprintf (fp, "%s", abfd->filename);
- }
- break;
-
case 'F':
/* Error is fatal. */
fatal = TRUE;
@@ -450,7 +410,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bfd_boolean is_warning)
if (abfd != NULL)
{
if (!bfd_generic_link_read_symbols (abfd))
- einfo (_("%B%F: could not read symbols: %E\n"), abfd);
+ einfo (_("%pB%F: could not read symbols: %E\n"), abfd);
asymbols = bfd_get_outsymbols (abfd);
}
@@ -489,7 +449,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bfd_boolean is_warning)
&& filename_cmp (last_file, filename) != 0)
|| strcmp (last_function, functionname) != 0)
{
- lfinfo (fp, _("%B: In function `%T':\n"),
+ lfinfo (fp, _("%pB: In function `%T':\n"),
abfd, functionname);
last_bfd = abfd;
@@ -505,7 +465,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bfd_boolean is_warning)
discard_last = FALSE;
}
else
- lfinfo (fp, "%B:", abfd);
+ lfinfo (fp, "%pB:", abfd);
if (filename != NULL)
fprintf (fp, "%s:", filename);
@@ -520,11 +480,11 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bfd_boolean is_warning)
}
else
{
- lfinfo (fp, "%B:", abfd);
+ lfinfo (fp, "%pB:", abfd);
done = FALSE;
}
if (!done)
- lfinfo (fp, "(%A+0x%v)", section, offset);
+ lfinfo (fp, "(%pA+0x%v)", section, offset);
if (discard_last)
{
@@ -544,9 +504,54 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bfd_boolean is_warning)
break;
case 'p':
- /* native (host) void* pointer, like printf */
- fprintf (fp, "%p", args[arg_no].p);
- ++arg_count;
+ if (*fmt == 'A')
+ {
+ /* section name from a section */
+ asection *sec;
+ bfd *abfd;
+ const char *group = NULL;
+ struct coff_comdat_info *ci;
+
+ fmt++;
+ sec = (asection *) args[arg_no].p;
+ ++arg_count;
+ abfd = sec->owner;
+ fprintf (fp, "%s", sec->name);
+ 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)
+ fprintf (fp, "[%s]", group);
+ }
+ else if (*fmt == 'B')
+ {
+ /* filename from a bfd */
+ bfd *abfd = (bfd *) args[arg_no].p;
+
+ fmt++;
+ ++arg_count;
+ if (abfd == NULL)
+ fprintf (fp, "%s generated", program_name);
+ else if (abfd->my_archive != NULL
+ && !bfd_is_thin_archive (abfd->my_archive))
+ fprintf (fp, "%s(%s)", abfd->my_archive->filename,
+ abfd->filename);
+ else
+ fprintf (fp, "%s", abfd->filename);
+ }
+ else
+ {
+ /* native (host) void* pointer, like printf */
+ fprintf (fp, "%p", args[arg_no].p);
+ ++arg_count;
+ }
break;
case 's':