-static size_t group_count;
-static struct group * section_groups;
-static struct group ** section_headers_groups;
-
-/* A dynamic array of flags indicating for which sections a dump
- has been requested via command line switches. */
-static Filedata cmdline;
-
-static struct dump_list_entry * dump_sects_byname;
+typedef struct filedata
+{
+ const char * file_name;
+ FILE * handle;
+ bfd_size_type file_size;
+ Elf_Internal_Ehdr file_header;
+ Elf_Internal_Shdr * section_headers;
+ Elf_Internal_Phdr * program_headers;
+ char * string_table;
+ unsigned long string_table_length;
+ unsigned long archive_file_offset;
+ unsigned long archive_file_size;
+ unsigned long dynamic_addr;
+ bfd_size_type dynamic_size;
+ size_t dynamic_nent;
+ Elf_Internal_Dyn * dynamic_section;
+ Elf_Internal_Shdr * dynamic_strtab_section;
+ char * dynamic_strings;
+ unsigned long dynamic_strings_length;
+ Elf_Internal_Shdr * dynamic_symtab_section;
+ unsigned long num_dynamic_syms;
+ Elf_Internal_Sym * dynamic_symbols;
+ bfd_vma version_info[16];
+ unsigned int dynamic_syminfo_nent;
+ Elf_Internal_Syminfo * dynamic_syminfo;
+ unsigned long dynamic_syminfo_offset;
+ bfd_size_type nbuckets;
+ bfd_size_type nchains;
+ bfd_vma * buckets;
+ bfd_vma * chains;
+ bfd_size_type ngnubuckets;
+ bfd_size_type ngnuchains;
+ bfd_vma * gnubuckets;
+ bfd_vma * gnuchains;
+ bfd_vma * mipsxlat;
+ bfd_vma gnusymidx;
+ char program_interpreter[PATH_MAX];
+ bfd_vma dynamic_info[DT_ENCODING];
+ bfd_vma dynamic_info_DT_GNU_HASH;
+ bfd_vma dynamic_info_DT_MIPS_XHASH;
+ elf_section_list * symtab_shndx_list;
+ size_t group_count;
+ struct group * section_groups;
+ struct group ** section_headers_groups;
+ /* A dynamic array of flags indicating for which sections a dump of
+ some kind has been requested. It is reset on a per-object file
+ basis and then initialised from the cmdline_dump_sects array,
+ the results of interpreting the -w switch, and the
+ dump_sects_byname list. */
+ struct dump_data dump;
+} Filedata;