@numchapentry{Introduction}{1}{Overview}{1} @numsecentry{History}{1.1}{History}{1} @numsecentry{How To Use BFD}{1.2}{How It Works}{1} @numsecentry{What BFD Version 2 Can Do}{1.3}{What BFD Version 2 Can Do}{2} @numsubsecentry{Information Loss}{1.3.1}{BFD information loss}{2} @numsubsecentry{The BFD canonical object-file format}{1.3.2}{Canonical format}{3} @numchapentry{BFD Front End}{2}{BFD front end}{5} @numsecentry{@code {typedef bfd}}{2.1}{typedef bfd}{5} @numsecentry{Error reporting}{2.2}{Error reporting}{11} @numsubsecentry{Type @code {bfd_error_type}}{2.2.1}{}{11} @numsubsubsecentry{@code {bfd_get_error}}{2.2.1.1}{}{12} @numsubsubsecentry{@code {bfd_set_error}}{2.2.1.2}{}{12} @numsubsubsecentry{@code {bfd_errmsg}}{2.2.1.3}{}{12} @numsubsubsecentry{@code {bfd_perror}}{2.2.1.4}{}{12} @numsubsecentry{BFD error handler}{2.2.2}{}{12} @numsubsubsecentry{@code {bfd_set_error_handler}}{2.2.2.1}{}{13} @numsubsubsecentry{@code {bfd_set_error_program_name}}{2.2.2.2}{}{13} @numsubsubsecentry{@code {bfd_get_error_handler}}{2.2.2.3}{}{13} @numsubsecentry{BFD assert handler}{2.2.3}{}{13} @numsubsubsecentry{@code {bfd_set_assert_handler}}{2.2.3.1}{}{13} @numsubsubsecentry{@code {bfd_get_assert_handler}}{2.2.3.2}{}{13} @numsecentry{Miscellaneous}{2.3}{Miscellaneous}{14} @numsubsecentry{Miscellaneous functions}{2.3.1}{}{14} @numsubsubsecentry{@code {bfd_get_reloc_upper_bound}}{2.3.1.1}{}{14} @numsubsubsecentry{@code {bfd_canonicalize_reloc}}{2.3.1.2}{}{14} @numsubsubsecentry{@code {bfd_set_reloc}}{2.3.1.3}{}{14} @numsubsubsecentry{@code {bfd_set_file_flags}}{2.3.1.4}{}{14} @numsubsubsecentry{@code {bfd_get_arch_size}}{2.3.1.5}{}{15} @numsubsubsecentry{@code {bfd_get_sign_extend_vma}}{2.3.1.6}{}{15} @numsubsubsecentry{@code {bfd_set_start_address}}{2.3.1.7}{}{15} @numsubsubsecentry{@code {bfd_get_gp_size}}{2.3.1.8}{}{15} @numsubsubsecentry{@code {bfd_set_gp_size}}{2.3.1.9}{}{15} @numsubsubsecentry{@code {bfd_scan_vma}}{2.3.1.10}{}{16} @numsubsubsecentry{@code {bfd_copy_private_header_data}}{2.3.1.11}{}{16} @numsubsubsecentry{@code {bfd_copy_private_bfd_data}}{2.3.1.12}{}{16} @numsubsubsecentry{@code {bfd_merge_private_bfd_data}}{2.3.1.13}{}{16} @numsubsubsecentry{@code {bfd_set_private_flags}}{2.3.1.14}{}{17} @numsubsubsecentry{@code {Other functions}}{2.3.1.15}{}{17} @numsubsubsecentry{@code {bfd_alt_mach_code}}{2.3.1.16}{}{19} @numsubsubsecentry{@code {bfd_emul_get_maxpagesize}}{2.3.1.17}{}{19} @numsubsubsecentry{@code {bfd_emul_set_maxpagesize}}{2.3.1.18}{}{19} @numsubsubsecentry{@code {bfd_emul_get_commonpagesize}}{2.3.1.19}{}{19} @numsubsubsecentry{@code {bfd_emul_set_commonpagesize}}{2.3.1.20}{}{20} @numsubsubsecentry{@code {bfd_demangle}}{2.3.1.21}{}{20} @numsubsubsecentry{@code {struct bfd_iovec}}{2.3.1.22}{}{20} @numsubsubsecentry{@code {bfd_get_mtime}}{2.3.1.23}{}{21} @numsubsubsecentry{@code {bfd_get_size}}{2.3.1.24}{}{21} @numsubsubsecentry{@code {bfd_mmap}}{2.3.1.25}{}{21} @numsecentry{Memory Usage}{2.4}{Memory Usage}{22} @numsecentry{Initialization}{2.5}{Initialization}{22} @numsubsecentry{Initialization functions}{2.5.1}{}{22} @numsubsubsecentry{@code {bfd_init}}{2.5.1.1}{}{22} @numsecentry{Sections}{2.6}{Sections}{22} @numsubsecentry{Section input}{2.6.1}{Section Input}{22} @numsubsecentry{Section output}{2.6.2}{Section Output}{23} @numsubsecentry{Link orders}{2.6.3}{}{23} @numsubsecentry{typedef asection}{2.6.4}{typedef asection}{23} @numsubsecentry{Section prototypes}{2.6.5}{section prototypes}{36} @numsubsubsecentry{@code {bfd_section_list_clear}}{2.6.5.1}{}{36} @numsubsubsecentry{@code {bfd_get_section_by_name}}{2.6.5.2}{}{36} @numsubsubsecentry{@code {bfd_get_next_section_by_name}}{2.6.5.3}{}{36} @numsubsubsecentry{@code {bfd_get_linker_section}}{2.6.5.4}{}{36} @numsubsubsecentry{@code {bfd_get_section_by_name_if}}{2.6.5.5}{}{37} @numsubsubsecentry{@code {bfd_get_unique_section_name}}{2.6.5.6}{}{37} @numsubsubsecentry{@code {bfd_make_section_old_way}}{2.6.5.7}{}{37} @numsubsubsecentry{@code {bfd_make_section_anyway_with_flags}}{2.6.5.8}{}{37} @numsubsubsecentry{@code {bfd_make_section_anyway}}{2.6.5.9}{}{38} @numsubsubsecentry{@code {bfd_make_section_with_flags}}{2.6.5.10}{}{38} @numsubsubsecentry{@code {bfd_make_section}}{2.6.5.11}{}{38} @numsubsubsecentry{@code {bfd_set_section_flags}}{2.6.5.12}{}{38} @numsubsubsecentry{@code {bfd_rename_section}}{2.6.5.13}{}{39} @numsubsubsecentry{@code {bfd_map_over_sections}}{2.6.5.14}{}{39} @numsubsubsecentry{@code {bfd_sections_find_if}}{2.6.5.15}{}{39} @numsubsubsecentry{@code {bfd_set_section_size}}{2.6.5.16}{}{39} @numsubsubsecentry{@code {bfd_set_section_contents}}{2.6.5.17}{}{40} @numsubsubsecentry{@code {bfd_get_section_contents}}{2.6.5.18}{}{40} @numsubsubsecentry{@code {bfd_malloc_and_get_section}}{2.6.5.19}{}{40} @numsubsubsecentry{@code {bfd_copy_private_section_data}}{2.6.5.20}{}{40} @numsubsubsecentry{@code {bfd_generic_is_group_section}}{2.6.5.21}{}{41} @numsubsubsecentry{@code {bfd_generic_discard_group}}{2.6.5.22}{}{41} @numsecentry{Symbols}{2.7}{Symbols}{41} @numsubsecentry{Reading symbols}{2.7.1}{Reading Symbols}{41} @numsubsecentry{Writing symbols}{2.7.2}{Writing Symbols}{42} @numsubsecentry{Mini Symbols}{2.7.3}{Mini Symbols}{43} @numsubsecentry{typedef asymbol}{2.7.4}{typedef asymbol}{43} @numsubsecentry{Symbol handling functions}{2.7.5}{symbol handling functions}{46} @numsubsubsecentry{@code {bfd_get_symtab_upper_bound}}{2.7.5.1}{}{46} @numsubsubsecentry{@code {bfd_is_local_label}}{2.7.5.2}{}{46} @numsubsubsecentry{@code {bfd_is_local_label_name}}{2.7.5.3}{}{46} @numsubsubsecentry{@code {bfd_is_target_special_symbol}}{2.7.5.4}{}{47} @numsubsubsecentry{@code {bfd_canonicalize_symtab}}{2.7.5.5}{}{47} @numsubsubsecentry{@code {bfd_set_symtab}}{2.7.5.6}{}{47} @numsubsubsecentry{@code {bfd_print_symbol_vandf}}{2.7.5.7}{}{47} @numsubsubsecentry{@code {bfd_make_empty_symbol}}{2.7.5.8}{}{48} @numsubsubsecentry{@code {_bfd_generic_make_empty_symbol}}{2.7.5.9}{}{48} @numsubsubsecentry{@code {bfd_make_debug_symbol}}{2.7.5.10}{}{48} @numsubsubsecentry{@code {bfd_decode_symclass}}{2.7.5.11}{}{48} @numsubsubsecentry{@code {bfd_is_undefined_symclass}}{2.7.5.12}{}{48} @numsubsubsecentry{@code {bfd_symbol_info}}{2.7.5.13}{}{48} @numsubsubsecentry{@code {bfd_copy_private_symbol_data}}{2.7.5.14}{}{49} @numsecentry{Archives}{2.8}{Archives}{49} @numsubsecentry{Archive functions}{2.8.1}{}{50} @numsubsubsecentry{@code {bfd_get_next_mapent}}{2.8.1.1}{}{50} @numsubsubsecentry{@code {bfd_set_archive_head}}{2.8.1.2}{}{50} @numsubsubsecentry{@code {bfd_openr_next_archived_file}}{2.8.1.3}{}{50} @numsecentry{File formats}{2.9}{Formats}{50} @numsubsecentry{File format functions}{2.9.1}{}{51} @numsubsubsecentry{@code {bfd_check_format}}{2.9.1.1}{}{51} @numsubsubsecentry{@code {bfd_check_format_matches}}{2.9.1.2}{}{51} @numsubsubsecentry{@code {bfd_set_format}}{2.9.1.3}{}{51} @numsubsubsecentry{@code {bfd_format_string}}{2.9.1.4}{}{52} @numsecentry{Relocations}{2.10}{Relocations}{52} @numsubsecentry{typedef arelent}{2.10.1}{typedef arelent}{52} @numsubsubsecentry{@code {enum complain_overflow}}{2.10.1.1}{}{55} @numsubsubsecentry{@code {reloc_howto_type}}{2.10.1.2}{}{55} @numsubsubsecentry{@code {The HOWTO Macro}}{2.10.1.3}{}{57} @numsubsubsecentry{@code {bfd_get_reloc_size}}{2.10.1.4}{}{58} @numsubsubsecentry{@code {arelent_chain}}{2.10.1.5}{}{58} @numsubsubsecentry{@code {bfd_check_overflow}}{2.10.1.6}{}{59} @numsubsubsecentry{@code {bfd_perform_relocation}}{2.10.1.7}{}{59} @numsubsubsecentry{@code {bfd_install_relocation}}{2.10.1.8}{}{59} @numsubsecentry{The howto manager}{2.10.2}{howto manager}{60} @numsubsubsecentry{@code {bfd_reloc_code_type}}{2.10.2.1}{}{60} @numsubsubsecentry{@code {bfd_reloc_type_lookup}}{2.10.2.2}{}{128} @numsubsubsecentry{@code {bfd_default_reloc_type_lookup}}{2.10.2.3}{}{128} @numsubsubsecentry{@code {bfd_get_reloc_code_name}}{2.10.2.4}{}{128} @numsubsubsecentry{@code {bfd_generic_relax_section}}{2.10.2.5}{}{128} @numsubsubsecentry{@code {bfd_generic_gc_sections}}{2.10.2.6}{}{128} @numsubsubsecentry{@code {bfd_generic_lookup_section_flags}}{2.10.2.7}{}{129} @numsubsubsecentry{@code {bfd_generic_merge_sections}}{2.10.2.8}{}{129} @numsubsubsecentry{@code {bfd_generic_get_relocated_section_contents}}{2.10.2.9}{}{129} @numsecentry{Core files}{2.11}{Core Files}{129} @numsubsecentry{Core file functions}{2.11.1}{}{129} @numsubsubsecentry{@code {bfd_core_file_failing_command}}{2.11.1.1}{}{129} @numsubsubsecentry{@code {bfd_core_file_failing_signal}}{2.11.1.2}{}{130} @numsubsubsecentry{@code {bfd_core_file_pid}}{2.11.1.3}{}{130} @numsubsubsecentry{@code {core_file_matches_executable_p}}{2.11.1.4}{}{130} @numsubsubsecentry{@code {generic_core_file_matches_executable_p}}{2.11.1.5}{}{130} @numsecentry{Targets}{2.12}{Targets}{130} @numsubsecentry{bfd_target}{2.12.1}{bfd_target}{131} @numsubsubsecentry{@code {bfd_set_default_target}}{2.12.1.1}{}{141} @numsubsubsecentry{@code {bfd_find_target}}{2.12.1.2}{}{141} @numsubsubsecentry{@code {bfd_get_target_info}}{2.12.1.3}{}{141} @numsubsubsecentry{@code {bfd_target_list}}{2.12.1.4}{}{141} @numsubsubsecentry{@code {bfd_seach_for_target}}{2.12.1.5}{}{142} @numsecentry{Architectures}{2.13}{Architectures}{142} @numsubsecentry{bfd_architecture}{2.13.1}{}{142} @numsubsecentry{bfd_arch_info}{2.13.2}{}{152} @numsubsubsecentry{@code {bfd_printable_name}}{2.13.2.1}{}{152} @numsubsubsecentry{@code {bfd_scan_arch}}{2.13.2.2}{}{152} @numsubsubsecentry{@code {bfd_arch_list}}{2.13.2.3}{}{153} @numsubsubsecentry{@code {bfd_arch_get_compatible}}{2.13.2.4}{}{153} @numsubsubsecentry{@code {bfd_default_arch_struct}}{2.13.2.5}{}{153} @numsubsubsecentry{@code {bfd_set_arch_info}}{2.13.2.6}{}{153} @numsubsubsecentry{@code {bfd_default_set_arch_mach}}{2.13.2.7}{}{153} @numsubsubsecentry{@code {bfd_get_arch}}{2.13.2.8}{}{154} @numsubsubsecentry{@code {bfd_get_mach}}{2.13.2.9}{}{154} @numsubsubsecentry{@code {bfd_arch_bits_per_byte}}{2.13.2.10}{}{154} @numsubsubsecentry{@code {bfd_arch_bits_per_address}}{2.13.2.11}{}{154} @numsubsubsecentry{@code {bfd_default_compatible}}{2.13.2.12}{}{154} @numsubsubsecentry{@code {bfd_default_scan}}{2.13.2.13}{}{154} @numsubsubsecentry{@code {bfd_get_arch_info}}{2.13.2.14}{}{154} @numsubsubsecentry{@code {bfd_lookup_arch}}{2.13.2.15}{}{155} @numsubsubsecentry{@code {bfd_printable_arch_mach}}{2.13.2.16}{}{155} @numsubsubsecentry{@code {bfd_octets_per_byte}}{2.13.2.17}{}{155} @numsubsubsecentry{@code {bfd_arch_mach_octets_per_byte}}{2.13.2.18}{}{155} @numsubsubsecentry{@code {bfd_arch_default_fill}}{2.13.2.19}{}{155} @numsecentry{Opening and closing BFDs}{2.14}{Opening and Closing}{156} @numsubsecentry{Functions for opening and closing}{2.14.1}{}{156} @numsubsubsecentry{@code {bfd_fopen}}{2.14.1.1}{}{156} @numsubsubsecentry{@code {bfd_openr}}{2.14.1.2}{}{156} @numsubsubsecentry{@code {bfd_fdopenr}}{2.14.1.3}{}{156} @numsubsubsecentry{@code {bfd_openstreamr}}{2.14.1.4}{}{157} @numsubsubsecentry{@code {bfd_openr_iovec}}{2.14.1.5}{}{157} @numsubsubsecentry{@code {bfd_openw}}{2.14.1.6}{}{158} @numsubsubsecentry{@code {bfd_close}}{2.14.1.7}{}{158} @numsubsubsecentry{@code {bfd_close_all_done}}{2.14.1.8}{}{158} @numsubsubsecentry{@code {bfd_create}}{2.14.1.9}{}{159} @numsubsubsecentry{@code {bfd_make_writable}}{2.14.1.10}{}{159} @numsubsubsecentry{@code {bfd_make_readable}}{2.14.1.11}{}{159} @numsubsubsecentry{@code {bfd_alloc}}{2.14.1.12}{}{159} @numsubsubsecentry{@code {bfd_alloc2}}{2.14.1.13}{}{159} @numsubsubsecentry{@code {bfd_zalloc}}{2.14.1.14}{}{160} @numsubsubsecentry{@code {bfd_zalloc2}}{2.14.1.15}{}{160} @numsubsubsecentry{@code {bfd_calc_gnu_debuglink_crc32}}{2.14.1.16}{}{160} @numsubsubsecentry{@code {bfd_get_debug_link_info}}{2.14.1.17}{}{160} @numsubsubsecentry{@code {bfd_get_alt_debug_link_info}}{2.14.1.18}{}{160} @numsubsubsecentry{@code {separate_debug_file_exists}}{2.14.1.19}{}{161} @numsubsubsecentry{@code {separate_alt_debug_file_exists}}{2.14.1.20}{}{161} @numsubsubsecentry{@code {find_separate_debug_file}}{2.14.1.21}{}{161} @numsubsubsecentry{@code {bfd_follow_gnu_debuglink}}{2.14.1.22}{}{161} @numsubsubsecentry{@code {bfd_follow_gnu_debugaltlink}}{2.14.1.23}{}{161} @numsubsubsecentry{@code {bfd_create_gnu_debuglink_section}}{2.14.1.24}{}{162} @numsubsubsecentry{@code {bfd_fill_in_gnu_debuglink_section}}{2.14.1.25}{}{162} @numsecentry{Implementation details}{2.15}{Internal}{162} @numsubsecentry{Internal functions}{2.15.1}{}{162} @numsubsubsecentry{@code {bfd_write_bigendian_4byte_int}}{2.15.1.1}{}{162} @numsubsubsecentry{@code {bfd_put_size}}{2.15.1.2}{}{163} @numsubsubsecentry{@code {bfd_get_size}}{2.15.1.3}{}{163} @numsubsubsecentry{@code {bfd_h_put_size}}{2.15.1.4}{}{164} @numsubsubsecentry{@code {bfd_log2}}{2.15.1.5}{}{165} @numsecentry{File caching}{2.16}{File Caching}{166} @numsubsecentry{Caching functions}{2.16.1}{}{166} @numsubsubsecentry{@code {bfd_cache_init}}{2.16.1.1}{}{166} @numsubsubsecentry{@code {bfd_cache_close}}{2.16.1.2}{}{166} @numsubsubsecentry{@code {bfd_cache_close_all}}{2.16.1.3}{}{166} @numsubsubsecentry{@code {bfd_open_file}}{2.16.1.4}{}{166} @numsecentry{Linker Functions}{2.17}{Linker Functions}{167} @numsubsecentry{Creating a linker hash table}{2.17.1}{Creating a Linker Hash Table}{167} @numsubsecentry{Adding symbols to the hash table}{2.17.2}{Adding Symbols to the Hash Table}{167} @numsubsubsecentry{Differing file formats}{2.17.2.1}{Differing file formats}{168} @numsubsubsecentry{Adding symbols from an object file}{2.17.2.2}{Adding symbols from an object file}{168} @numsubsubsecentry{Adding symbols from an archive}{2.17.2.3}{Adding symbols from an archive}{169} @numsubsecentry{Performing the final link}{2.17.3}{Performing the Final Link}{169} @numsubsubsecentry{Information provided by the linker}{2.17.3.1}{Information provided by the linker}{170} @numsubsubsecentry{Relocating the section contents}{2.17.3.2}{Relocating the section contents}{170} @numsubsubsecentry{Writing the symbol table}{2.17.3.3}{Writing the symbol table}{170} @numsubsubsecentry{@code {bfd_link_split_section}}{2.17.3.4}{}{171} @numsubsubsecentry{@code {bfd_section_already_linked}}{2.17.3.5}{}{171} @numsubsubsecentry{@code {bfd_generic_define_common_symbol}}{2.17.3.6}{}{171} @numsubsubsecentry{@code {bfd_find_version_for_sym}}{2.17.3.7}{}{172} @numsubsubsecentry{@code {bfd_hide_sym_by_version}}{2.17.3.8}{}{172} @numsecentry{Hash Tables}{2.18}{Hash Tables}{172} @numsubsecentry{Creating and freeing a hash table}{2.18.1}{Creating and Freeing a Hash Table}{172} @numsubsecentry{Looking up or entering a string}{2.18.2}{Looking Up or Entering a String}{173} @numsubsecentry{Traversing a hash table}{2.18.3}{Traversing a Hash Table}{173} @numsubsecentry{Deriving a new hash table type}{2.18.4}{Deriving a New Hash Table Type}{173} @numsubsubsecentry{Define the derived structures}{2.18.4.1}{Define the Derived Structures}{174} @numsubsubsecentry{Write the derived creation routine}{2.18.4.2}{Write the Derived Creation Routine}{174} @numsubsubsecentry{Write other derived routines}{2.18.4.3}{Write Other Derived Routines}{175} @numchapentry{BFD back ends}{3}{BFD back ends}{176} @numsecentry{What to Put Where}{3.1}{What to Put Where}{176} @numsecentry{a.out backends}{3.2}{aout}{176} @numsubsecentry{Relocations}{3.2.1}{}{177} @numsubsecentry{Internal entry points}{3.2.2}{}{177} @numsubsubsecentry{@code {aout_@var {size}_swap_exec_header_in}}{3.2.2.1}{}{177} @numsubsubsecentry{@code {aout_@var {size}_swap_exec_header_out}}{3.2.2.2}{}{177} @numsubsubsecentry{@code {aout_@var {size}_some_aout_object_p}}{3.2.2.3}{}{178} @numsubsubsecentry{@code {aout_@var {size}_mkobject}}{3.2.2.4}{}{178} @numsubsubsecentry{@code {aout_@var {size}_machine_type}}{3.2.2.5}{}{178} @numsubsubsecentry{@code {aout_@var {size}_set_arch_mach}}{3.2.2.6}{}{178} @numsubsubsecentry{@code {aout_@var {size}_new_section_hook}}{3.2.2.7}{}{179} @numsecentry{coff backends}{3.3}{coff}{179} @numsubsecentry{Porting to a new version of coff}{3.3.1}{}{179} @numsubsecentry{How the coff backend works}{3.3.2}{}{179} @numsubsubsecentry{File layout}{3.3.2.1}{}{179} @numsubsubsecentry{Coff long section names}{3.3.2.2}{}{180} @numsubsubsecentry{Bit twiddling}{3.3.2.3}{}{181} @numsubsubsecentry{Symbol reading}{3.3.2.4}{}{181} @numsubsubsecentry{Symbol writing}{3.3.2.5}{}{182} @numsubsubsecentry{@code {coff_symbol_type}}{3.3.2.6}{}{182} @numsubsubsecentry{@code {bfd_coff_backend_data}}{3.3.2.7}{}{184} @numsubsubsecentry{Writing relocations}{3.3.2.8}{}{190} @numsubsubsecentry{Reading linenumbers}{3.3.2.9}{}{190} @numsubsubsecentry{Reading relocations}{3.3.2.10}{}{190} @numsecentry{ELF backends}{3.4}{elf}{191} @numsecentry{mmo backend}{3.5}{mmo}{191} @numsubsecentry{File layout}{3.5.1}{File layout}{191} @numsubsecentry{Symbol table format}{3.5.2}{Symbol-table}{193} @numsubsecentry{mmo section mapping}{3.5.3}{mmo section mapping}{195} @unnchapentry{BFD Index}{10001}{BFD Index}{205}