aboutsummaryrefslogtreecommitdiff
path: root/bfd/pei-x86_64.c
diff options
context:
space:
mode:
Diffstat (limited to 'bfd/pei-x86_64.c')
-rw-r--r--bfd/pei-x86_64.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/bfd/pei-x86_64.c b/bfd/pei-x86_64.c
index 7af0d49..b1259a0 100644
--- a/bfd/pei-x86_64.c
+++ b/bfd/pei-x86_64.c
@@ -820,20 +820,25 @@ pex64_bfd_print_pdata_section (bfd *abfd, void *vfile, asection *pdata_section)
return TRUE;
}
-/* Static counter of number of found pdata sections. */
-static bfd_boolean pdata_count;
+struct pex64_paps
+{
+ void *obj;
+ /* Number of found pdata sections. */
+ unsigned int pdata_count;
+};
/* Functionn prototype. */
bfd_boolean pex64_bfd_print_pdata (bfd *, void *);
/* Helper function for bfd_map_over_section. */
static void
-pex64_print_all_pdata_sections (bfd *abfd, asection *pdata, void *obj)
+pex64_print_all_pdata_sections (bfd *abfd, asection *pdata, void *arg)
{
+ struct pex64_paps *paps = arg;
if (CONST_STRNEQ (pdata->name, ".pdata"))
{
- if (pex64_bfd_print_pdata_section (abfd, obj, pdata))
- pdata_count++;
+ if (pex64_bfd_print_pdata_section (abfd, paps->obj, pdata))
+ paps->pdata_count++;
}
}
@@ -841,13 +846,15 @@ bfd_boolean
pex64_bfd_print_pdata (bfd *abfd, void *vfile)
{
asection *pdata_section = bfd_get_section_by_name (abfd, ".pdata");
+ struct pex64_paps paps;
if (pdata_section)
return pex64_bfd_print_pdata_section (abfd, vfile, pdata_section);
- pdata_count = 0;
- bfd_map_over_sections (abfd, pex64_print_all_pdata_sections, vfile);
- return (pdata_count > 0);
+ paps.obj = vfile;
+ paps.pdata_count = 0;
+ bfd_map_over_sections (abfd, pex64_print_all_pdata_sections, &paps);
+ return paps.pdata_count != 0;
}
#define bfd_pe_print_pdata pex64_bfd_print_pdata