- PRINT_TYPE (void *, p);
- break;
- case 'A':
- {
- asection *sec;
- bfd *abfd;
- const char *group = NULL;
- struct coff_comdat_info *ci;
-
- sec = (asection *) args[arg_no].p;
- 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;
-
- abfd = (bfd *) args[arg_no].p;
- 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);
- }
+ if (*ptr == 'A')
+ {
+ asection *sec;
+ bfd *abfd;
+ const char *group = NULL;
+ struct coff_comdat_info *ci;
+
+ ptr++;
+ sec = (asection *) args[arg_no].p;
+ if (sec == NULL)
+ /* Invoking %pA 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);
+ }
+ else if (*ptr == 'B')
+ {
+ bfd *abfd;
+
+ ptr++;
+ abfd = (bfd *) args[arg_no].p;
+ if (abfd == NULL)
+ /* Invoking %pB 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);
+ }
+ else
+ PRINT_TYPE (void *, p);