X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Ftargets.c;h=964e6567e43582667c471aeaf98ba52dd10294ce;hb=e35765a9a2eaff0df62757f3e6480c8ba5ab8ee8;hp=6728002c3fc8020911d2e44000e88acfaf49d87a;hpb=a11e10fe44a7c80be5560f1fc934f728251850a9;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/targets.c b/bfd/targets.c index 6728002c3f..964e6567e4 100644 --- a/bfd/targets.c +++ b/bfd/targets.c @@ -1,5 +1,5 @@ /* Generic target-file-type support for the BFD library. - Copyright 1990, 91, 92, 93, 94, 1995 Free Software Foundation, Inc. + Copyright 1990, 91, 92, 93, 94, 95, 1996 Free Software Foundation, Inc. Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -145,12 +145,16 @@ DESCRIPTION . bfd_target_oasys_flavour, . bfd_target_tekhex_flavour, . bfd_target_srec_flavour, +. bfd_target_ihex_flavour, . bfd_target_som_flavour, . bfd_target_os9k_flavour, . bfd_target_versados_flavour, -. bfd_target_msdos_flavour +. bfd_target_msdos_flavour, +. bfd_target_evax_flavour .}; . +.enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN }; +. .{* Forward declaration. *} .typedef struct bfd_link_info _bfd_link_info; . @@ -168,14 +172,14 @@ of a file. The order of bytes within the data area of a file. -. boolean byteorder_big_p; +. enum bfd_endian byteorder; The order of bytes within the header parts of a file. -. boolean header_byteorder_big_p; +. enum bfd_endian header_byteorder; A mask of all the flags which an executable may have set - -from the set <>, <>, ...<>. +from the set <>, <>, ...<>. . flagword object_flags; @@ -246,7 +250,9 @@ The general target vector. .CAT(NAME,_close_and_cleanup),\ .CAT(NAME,_bfd_free_cached_info),\ .CAT(NAME,_new_section_hook),\ -.CAT(NAME,_get_section_contents) +.CAT(NAME,_get_section_contents),\ +.CAT(NAME,_get_section_contents_in_window) +. . {* Called when the BFD is being closed to do any necessary cleanup. *} . boolean (*_close_and_cleanup) PARAMS ((bfd *)); . {* Ask the BFD to free all cached information. *} @@ -256,6 +262,9 @@ The general target vector. . {* Read the contents of a section. *} . boolean (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR, . file_ptr, bfd_size_type)); +. boolean (*_bfd_get_section_contents_in_window) +. PARAMS ((bfd *, sec_ptr, bfd_window *, +. file_ptr, bfd_size_type)); . . {* Entry points to copy private data. *} .#define BFD_JUMP_TABLE_COPY(NAME)\ @@ -283,7 +292,7 @@ The general target vector. . boolean (*_bfd_set_private_flags) PARAMS ((bfd *, flagword)); . . {* Called to print private BFD data *} -. boolean (*_bfd_print_private_bfd_data) PARAMS ((bfd *, void *)); +. boolean (*_bfd_print_private_bfd_data) PARAMS ((bfd *, PTR)); . . {* Core file entry points. *} .#define BFD_JUMP_TABLE_CORE(NAME)\ @@ -301,7 +310,9 @@ The general target vector. .CAT(NAME,_construct_extended_name_table),\ .CAT(NAME,_truncate_arname),\ .CAT(NAME,_write_armap),\ +.CAT(NAME,_read_ar_hdr),\ .CAT(NAME,_openr_next_archived_file),\ +.CAT(NAME,_get_elt_at_index),\ .CAT(NAME,_generic_stat_arch_elt),\ .CAT(NAME,_update_armap_timestamp) . boolean (*_bfd_slurp_armap) PARAMS ((bfd *)); @@ -314,7 +325,10 @@ The general target vector. . struct orl *map, . unsigned int orl_count, . int stridx)); +. PTR (*_bfd_read_ar_hdr_fn) PARAMS ((bfd *)); . bfd * (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev)); +.#define bfd_get_elt_at_index(b,i) BFD_SEND(b, _bfd_get_elt_at_index, (b,i)) +. bfd * (*_bfd_get_elt_at_index) PARAMS ((bfd *, symindex)); . int (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *)); . boolean (*_bfd_update_armap_timestamp) PARAMS ((bfd *)); . @@ -467,22 +481,38 @@ extern const bfd_target armpei_little_vec; extern const bfd_target armpei_big_vec; extern const bfd_target b_out_vec_big_host; extern const bfd_target b_out_vec_little_host; +extern const bfd_target bfd_elf64_alpha_vec; /* start-sanitize-arc */ extern const bfd_target bfd_elf32_bigarc_vec; extern const bfd_target bfd_elf32_littlearc_vec; /* end-sanitize-arc */ extern const bfd_target bfd_elf32_big_generic_vec; extern const bfd_target bfd_elf32_bigmips_vec; +extern const bfd_target bfd_elf64_bigmips_vec; +/* start-sanitize-d10v */ +extern const bfd_target bfd_elf32_d10v_vec; +/* end-sanitize-d10v */ extern const bfd_target bfd_elf32_hppa_vec; extern const bfd_target bfd_elf32_i386_vec; extern const bfd_target bfd_elf32_i860_vec; extern const bfd_target bfd_elf32_little_generic_vec; extern const bfd_target bfd_elf32_littlemips_vec; +extern const bfd_target bfd_elf64_littlemips_vec; +/* start-sanitize-m32r */ +extern const bfd_target bfd_elf32_m32r_vec; +/* end-sanitize-m32r */ extern const bfd_target bfd_elf32_m68k_vec; extern const bfd_target bfd_elf32_m88k_vec; +extern const bfd_target bfd_elf32_mn10200_vec; +extern const bfd_target bfd_elf32_mn10300_vec; extern const bfd_target bfd_elf32_powerpc_vec; extern const bfd_target bfd_elf32_powerpcle_vec; +extern const bfd_target bfd_elf32_sh_vec; +extern const bfd_target bfd_elf32_shl_vec; extern const bfd_target bfd_elf32_sparc_vec; +/* start-sanitize-v850 */ +extern const bfd_target bfd_elf32_v850_vec; +/* end-sanitize-v850 */ extern const bfd_target bfd_elf64_big_generic_vec; extern const bfd_target bfd_elf64_little_generic_vec; extern const bfd_target bfd_elf64_sparc_vec; @@ -490,6 +520,7 @@ extern const bfd_target demo_64_vec; extern const bfd_target ecoff_big_vec; extern const bfd_target ecoff_little_vec; extern const bfd_target ecoffalpha_little_vec; +extern const bfd_target evax_alpha_vec; extern const bfd_target h8300coff_vec; extern const bfd_target h8500coff_vec; extern const bfd_target host_aout_vec; @@ -499,6 +530,7 @@ extern const bfd_target som_vec; extern const bfd_target i386aout_vec; extern const bfd_target i386bsd_vec; extern const bfd_target i386dynix_vec; +extern const bfd_target i386freebsd_vec; extern const bfd_target i386os9k_vec; extern const bfd_target i386coff_vec; extern const bfd_target bfd_powerpc_pe_vec; @@ -514,14 +546,18 @@ extern const bfd_target i386lynx_coff_vec; extern const bfd_target i386mach3_vec; extern const bfd_target i386msdos_vec; extern const bfd_target i386netbsd_vec; +extern const bfd_target i860coff_vec; extern const bfd_target icoff_big_vec; extern const bfd_target icoff_little_vec; extern const bfd_target ieee_vec; +extern const bfd_target m68kaux_coff_vec; extern const bfd_target m68kcoff_vec; extern const bfd_target m68kcoffun_vec; +extern const bfd_target m68klinux_vec; extern const bfd_target m68klynx_aout_vec; extern const bfd_target m68klynx_coff_vec; extern const bfd_target m68knetbsd_vec; +extern const bfd_target m68k4knetbsd_vec; extern const bfd_target m88kbcs_vec; extern const bfd_target m88kmach3_vec; extern const bfd_target newsos3_vec; @@ -532,13 +568,13 @@ extern const bfd_target nlm32_powerpc_vec; extern const bfd_target pc532netbsd_vec; extern const bfd_target oasys_vec; extern const bfd_target pc532machaout_vec; +extern const bfd_target ppcboot_vec; extern const bfd_target riscix_vec; +extern const bfd_target pmac_xcoff_vec; extern const bfd_target rs6000coff_vec; extern const bfd_target shcoff_vec; -/* start-sanitize-rce */ -extern bfd_target rce_aout_vec; -/* end-sanitize-rce */ extern const bfd_target shlcoff_vec; +extern const bfd_target sparcle_aout_vec; extern const bfd_target sparclynx_aout_vec; extern const bfd_target sparclynx_coff_vec; extern const bfd_target sparcnetbsd_vec; @@ -557,6 +593,9 @@ extern const bfd_target symbolsrec_vec; /* binary is always included. */ extern const bfd_target binary_vec; +/* ihex is always included. */ +extern const bfd_target ihex_vec; + /* All of the xvecs for core files. */ extern const bfd_target aix386_core_vec; extern const bfd_target cisco_core_vec; @@ -599,10 +638,19 @@ const bfd_target * const bfd_target_vector[] = { --enable-targets=all, objdump or gdb should be able to examine the file even if we don't recognize the machine type. */ &bfd_elf32_big_generic_vec, +#ifdef BFD64 + &bfd_elf64_alpha_vec, +#endif /* start-sanitize-arc */ &bfd_elf32_bigarc_vec, /* end-sanitize-arc */ &bfd_elf32_bigmips_vec, +#ifdef BFD64 + &bfd_elf64_bigmips_vec, +#endif +/* start-sanitize-d10v */ + &bfd_elf32_d10v_vec, +/* end-sanitize-d10v */ &bfd_elf32_hppa_vec, &bfd_elf32_i386_vec, &bfd_elf32_i860_vec, @@ -611,10 +659,21 @@ const bfd_target * const bfd_target_vector[] = { &bfd_elf32_littlearc_vec, /* end-sanitize-arc */ &bfd_elf32_littlemips_vec, +#ifdef BFD64 + &bfd_elf64_littlemips_vec, +#endif +/* start-sanitize-m32r */ + &bfd_elf32_m32r_vec, +/* end-sanitize-m32r */ + &bfd_elf32_mn10200_vec, + &bfd_elf32_mn10300_vec, &bfd_elf32_m68k_vec, &bfd_elf32_m88k_vec, &bfd_elf32_sparc_vec, &bfd_elf32_powerpc_vec, +/* start-sanitize-v850 */ + &bfd_elf32_v850_vec, +/* end-sanitize-v850 */ #ifdef BFD64 /* No one seems to use this. */ &bfd_elf64_big_generic_vec, &bfd_elf64_little_generic_vec, @@ -630,8 +689,9 @@ const bfd_target * const bfd_target_vector[] = { #endif &ecoff_big_vec, &ecoff_little_vec, -#if 0 +#ifdef BFD64 &ecoffalpha_little_vec, + &evax_alpha_vec, #endif &h8300coff_vec, &h8500coff_vec, @@ -650,6 +710,8 @@ const bfd_target * const bfd_target_vector[] = { &i386aout_vec, &i386bsd_vec, &i386coff_vec, + &i386freebsd_vec, + &i860coff_vec, &bfd_powerpc_pe_vec, &bfd_powerpcle_pe_vec, &bfd_powerpc_pei_vec, @@ -682,6 +744,11 @@ const bfd_target * const bfd_target_vector[] = { &ieee_vec, &m68kcoff_vec, &m68kcoffun_vec, +#if 0 + /* Since a.out files lack decent magic numbers, no way to recognize + which kind of a.out file it is. */ + &m68klinux_vec, +#endif &m68klynx_aout_vec, &m68klynx_coff_vec, &m68knetbsd_vec, @@ -708,13 +775,16 @@ const bfd_target * const bfd_target_vector[] = { &aout_arm_big_vec, &aout_arm_little_vec, &riscix_vec, +#endif +#if 0 + /* This has the same magic number as RS/6000. */ + &pmac_xcoff_vec, #endif &rs6000coff_vec, + &ppcboot_vec, &shcoff_vec, &shlcoff_vec, -/* start-sanitize-rce */ - &rce_aout_vec, -/* end-sanitize-rce */ + &sparcle_aout_vec, &sparclynx_aout_vec, &sparclynx_coff_vec, &sparcnetbsd_vec, @@ -734,6 +804,8 @@ const bfd_target * const bfd_target_vector[] = { &tekhex_vec, /* Likewise for binary output. */ &binary_vec, +/* Likewise for ihex. */ + &ihex_vec, /* Add any required traditional-core-file-handler. */ @@ -857,10 +929,8 @@ bfd_target_list () name_ptr = name_list = (CONST char **) bfd_zmalloc ((vec_length + 1) * sizeof (char **)); - if (name_list == NULL) { - bfd_set_error (bfd_error_no_memory); + if (name_list == NULL) return NULL; - } for (target = &bfd_target_vector[0]; *target != NULL; target++) *(name_ptr++) = (*target)->name;