* dwarf2.c (_bfd_dwarf2_slurp_debug_info): Factor out the part
which reads DWARF2 and stores in stash from find_line.
(find_line) Call _bfd_dwarf2_slurp_debug_info.
* libbfd-in.h (_bfd_dwarf2_slurp_debug_info): Add declaration.
* libbfd.h (_bfd_dwarf2_slurp_debug_info): Regenerate.
* mach-o.c (dsym_subdir): The name of subdir where debug
information may be stored.
(bfd_mach_o_lookup_uuid_command): New. Lookup a load command whose
type is UUID.
(bfd_mach_o_dsym_for_uuid_p): New. Check if the specified BFD is
corresponding to the executable.
(bfd_mach_o_find_dsym): New. Find a debug information BFD in the
specified binary file.
(bfd_mach_o_follow_dsym): New. Find a debug information BFD for
the original BFD.
(bfd_mach_o_find_nearest_line): Check dSYM files for Mach-O
executables, dylibs, and bundles.
(bfd_mach_o_close_and_cleanup): Clean up BFDs for the dSYM file.
* mach-o.h (dsym_bfd): The BFD of the dSYM file.
bfd:
* mach-o.c (bfd_mach_o_write_symtab): Fill in the string table index
as the value of an indirect symbol. Keep the string table index in
non-indirect syms for reference.
(bfd_mach_o_write_dysymtab): New.
(bfd_mach_o_primary_symbol_sort_key): New.
(bfd_mach_o_cf_symbols): New.
(bfd_mach_o_sort_symbol_table): New.
(bfd_mach_o_mangle_symbols): Return early if no symbols. Sort symbols.
If we are emitting a dysymtab, process indirect symbols and count the
number of each other kind.
(bfd_mach_o_mangle_sections): New.
(bfd_mach_o_write_contents): Split out some pre-requisite code into
the command builder. Write dysymtab if the command is present.
(bfd_mach_o_count_sections_for_seg): New.
(bfd_mach_o_build_seg_command): New.
(bfd_mach_o_build_dysymtab_command): New.
(bfd_mach_o_build_commands): Reorganize to support the fact that some
commands are optional and should not be emitted if there are no
sections or symbols.
(bfd_mach_o_set_section_contents): Amend comment.
* mach-o.h: Amend and add to comments.
(mach_o_data_struct): Add fields for dysymtab symbols counts and a
pointer to the indirects, when present.
(bfd_mach_o_should_emit_dysymtab): New macro.
(IS_MACHO_INDIRECT): Likewise.
gas/testsuite:
* gas/mach-o/dysymtab-1-64.d: New.
* gas/mach-o/dysymtab-1.d: New.
* gas/mach-o/symbols-1-64.d: New.
* gas/mach-o/symbols-1.d: New.
* gas/mach-o/symbols-base-64.s: New.
* gas/mach-o/symbols-base.s: New.
* mach-o-i386.c (bfd_mach_o_section_type_valid_for_tgt): Define NULL.
* mach-o-target.c (bfd_mach_o_backend_data): Initialize bfd_mach_o_section_type_valid_for_tgt
* mach-o-x86-64.c (bfd_mach_o_section_type_valid_for_x86_64): New.
(bfd_mach_o_section_type_valid_for_tgt): Set to bfd_mach_o_section_type_valid_for_x86_64.
* mach-o.c (bfd_mach_o_section_type_name): Reorder and eliminate dup.
(bfd_mach_o_section_attribute_name): Reorder.
(bfd_mach_o_get_section_type_from_name): If the target has defined a validator for section
types, then use it.
* mach-o.h (bfd_mach_o_get_section_type_from_name): Alter declaration to include the bfd.
gas:
* config/obj-macho.c (obj_mach_o_section): Account for target-dependent section
types. Improve error handling when wrong section types/attributes are specified.
gas/testsuite:
* gas/mach-o/err-sections-1.s: New.
* gas/mach-o/err-sections-2.s: New.
* gas/mach-o/sections-3.d: New.
* gas/mach-o/sections-3.s: New.
* mach-o.c (bfd_mach_o_canonicalize_reloc): Update relocation
table only when there isn't the cahce.
(bfd_mach_o_get_dynamic_reloc_upper_bound): Need one more space
for a pointer for the watchdog.
(bfd_mach_o_canonicalize_dynamic_reloc): Utilize cache like
bfd_mach_o_canonicalize_reloc.
(bfd_mach_o_close_and_cleanup): Call bfd_mach_o_free_cached_info.
(bfd_mach_o_free_cached_info): Free up cache data.
* mach-o.h (reloc_cache): A place to store cache of dynamic relocs.
(bfd_mach_o_free_cached_info): Add declaration.
* dwarf2.c (bfd_dwarf2_cleanup_debug_info): Accept stash as an
argument like other functions to support formats other than ELF.
* elf-bfd.h (bfd_dwarf2_cleanup_debug_info): Move to bfd-in.h.
* elf.c (_bfd_elf_close_and_cleanup): Pass dwarf2_find_line_info
in tdata as a parameter.
* libbfd-in.h (bfd_dwarf2_cleanup_debug_info): Move from
elf-bfd.h.
* libbfd.h (bfd_dwarf2_cleanup_debug_info): Regenerate.
* mach-o-target.c (bfd_mach_o_close_and_cleanup): Remove the
fallback macro.
(bfd_mach_o_find_nearest_line): Likewise.
* mach-o.c (bfd_mach_o_find_nearest_line): Add the definition
which calls _bfd_dwarf2_find_nearest_line.
(bfd_mach_o_close_and_cleanup): Likewise.
* mach-o.h (mach_o_data_struct): Add dwarf2_find_line_info.
(bfd_mach_o_find_nearest_line): Add declaration.
(bfd_mach_o_close_and_cleanup): Add declaration.
* mach-o.h (BFD_MACH_O_SEGNAME_SIZE): New macro.
(BFD_MACH_O_SECTNAME_SIZE): Ditto.
(bfd_mach_o_section): Use them. Add next field.
(bfd_mach_o_segment_command): Replace sections array by
sect_head and sect_tail.
(bfd_mach_o_get_mach_o_section): New macro.
(bfd_mach_o_lookup_section): Remove.
(bfd_mach_o_new_section_hook): New function.
* mach-o.c (bfd_mach_o_normalize_section_name): Use strncmp
instead of strcmp.
(bfd_mach_o_convert_section_name_to_bfd): Replaces section
parameter with segname and sectname parameters. Adjust.
(bfd_mach_o_append_section_to_segment): New function. Use a
linked list for Mach-O sections.
(bfd_mach_o_write_segment_32): Adjust.
(bfd_mach_o_write_segment_64): Ditto.
(bfd_mach_o_build_commands): Fix comment. Adjust.
(bfd_mach_o_flatten_sections): Adjust.
(bfd_mach_o_print_section_map): Adjust.
(bfd_mach_o_set_section_flags_from_bfd): Ditto.
(bfd_mach_o_new_section_hook): New function.
(bfd_mach_o_init_section_from_mach_o): Ditto.
(bfd_mach_o_read_section_32): Remove section parameter.
Return a section instead.
(bfd_mach_o_read_section_64): Ditto.
(bfd_mach_o_read_section): Ditto.
(bfd_mach_o_make_bfd_section): Adjust.
(bfd_mach_o_read_segment): Adjust for new profile of
bfd_mach_o_read_section.
(bfd_mach_o_lookup_section): Remove.
* mach-o-target.c (bfd_mach_o_new_section_hook): Remove.
* mach-o.c (bfd_mach_o_normalize_section_name): New function.
(bfd_mach_o_convert_section_name_to_bfd): Use it.
(bfd_mach_o_get_section_type_from_name): New function.
(bfd_mach_o_get_section_attribute_from_name): Ditto.
* mach-o.h (bfd_mach_o_section): Move bfdsection field at the end.
Add comments. Add prototypes for the above new functions.
2011-07-06 Tristan Gingold <gingold@adacore.com>
* mach-o.h: Move loader related definitions to
include/mach-o/loader.h. Include it.
include/mach-o/
2011-07-06 Tristan Gingold <gingold@adacore.com>
* loader.h: New file.
* mach-o.h (bfd_mach_o_backend_data): Add arch field.
(bfd_mach_o_set_arch_mach): New prototype.
* mach-o.c (bfd_mach_o_mkobject): Define with bfd_mach_o_gen_mkobject.
(bfd_mach_o_set_arch_mach): New function.
(bfd_mach_o_gen_mkobject): New function.
Set TARGET_ARCHITECTURE for the generic back-ends.
* mach-o-target.c (bfd_mach_o_set_arch_mach): Remove define.
Check that TARGET_ARCHITECTURE is defined.
Add TARGET_ARCHITECTURE in TARGET_NAME_BACKEND structure.
* mach-o-i386.c (TARGET_ARCHITECTURE): Define.
* mach-o.c (bfd_mach_o_scan_read_symtab_symbols): Rename to
bfd_mach_o_read_symtab_symbols.
(bfd_mach_o_scan_write_thread): Rename to bfd_mach_o_write_thread.
(bfd_mach_o_scan_write_relocs): Rename to bfd_mach_o_write_relocs.
(bfd_mach_o_scan_write_section_32): Rename to
bfd_mach_o_write_section_32.
(bfd_mach_o_scan_write_section_64): Rename to
bfd_mach_o_write_section_64.
(bfd_mach_o_scan_write_segment_32): Rename to
bfd_mach_o_write_segment_32.
(bfd_mach_o_scan_write_segment_64): Rename to
bfd_mach_o_write_segment_64.
(bfd_mach_o_scan_write_symtab): Rename to bfd_mach_o_write_symtab.
(bfd_mach_o_scan_read_section_32): Rename to
bfd_mach_o_read_section_32.
(bfd_mach_o_scan_read_section_64): Rename to
bfd_mach_o_read_section_64.
(bfd_mach_o_scan_read_section): Rename to bfd_mach_o_read_section.
(bfd_mach_o_scan_read_symtab_strtab): Rename to
bfd_mach_o_read_symtab_strtab.
(bfd_mach_o_scan_read_symtab_symbol): Rename to
bfd_mach_o_read_symtab_symbol.
(bfd_mach_o_scan_read_dysymtab_symbol): Rename to
bfd_mach_o_read_dysymtab_symbol.
(bfd_mach_o_scan_read_dylinker): Rename to bfd_mach_o_read_dylinker.
(bfd_mach_o_scan_read_dylib): Rename to bfd_mach_o_read_dylib.
(bfd_mach_o_scan_read_prebound_dylib): Rename to
bfd_mach_o_read_prebound_dylib.
(bfd_mach_o_scan_read_thread): Rename to bfd_mach_o_read_thread.
(bfd_mach_o_scan_read_dysymtab): Rename to bfd_mach_o_read_dysymtab.
(bfd_mach_o_scan_read_symtab): Rename to bfd_mach_o_read_symtab.
(bfd_mach_o_scan_read_uuid): Rename to bfd_mach_o_read_uuid.
(bfd_mach_o_scan_read_linkedit): Rename to bfd_mach_o_read_linkedit.
(bfd_mach_o_scan_read_str): Rename to bfd_mach_o_read_str.
(bfd_mach_o_scan_read_dyld_info): Rename to bfd_mach_o_read_dyld_info.
(bfd_mach_o_scan_read_segment): Rename to bfd_mach_o_read_segment.
(bfd_mach_o_scan_read_segment_32): Rename to
bfd_mach_o_read_segment_32.
(bfd_mach_o_scan_read_segment_64): Rename to
bfd_mach_o_read_segment_64.
(bfd_mach_o_scan_read_command): Rename to bfd_mach_o_read_command.
* mach-o.h (bfd_mach_o_scan_read_dysymtab_symbol): Rename to
bfd_mach_o_read_dysymtab_symbol.
* mach-o.c (bfd_mach_o_section_get_entry_size): Moved.
(bfd_mach_o_section_get_nbr_indirect): Ditto.
(bfd_mach_o_get_synthetic_symtab): New function.
(bfd_mach_o_print_private_header): Print the number of commands
in decimal.
* mach-o.h (bfd_mach_o_get_synthetic_symtab): Add prototype.
* mach-o-target.c: Do not defined bfd_mach_o_get_synthetic_symtab.
* mach-o.h (bfd_mach_o_filetype): Add new constants from darwin10.
Reindent.
* mach-o.c (bfd_mach_o_cpu_name): Reindent.
(bfd_mach_o_filetype_name): Complete with new constants. Reindent.
(bfd_mach_o_print_private_header): Use fputs instead of fprintf
when possible to avoid warnings.
(bfd_mach_o_print_section_map): Ditto.
(bfd_mach_o_section_get_entry_size): New function.
(bfd_mach_o_section_get_nbr_indirect): Simplify using the newly
added function.
(bfd_mach_o_print_dysymtab): Print address of indirect symbols.
* mach-o-target.c (bfd_mach_o_get_dynamic_symtab_upper_bound)
(bfd_mach_o_canonicalize_dynamic_symtab)
(bfd_mach_o_get_synthetic_symtab): Defines.
(TARGET_NAME_BACKEND): Add bfd_mach_o_print_thread entry.
(TARGET_NAME): Use Mach-O specific functions for dynamic.
* mach-o-i386.c (bfd_mach_o_i386_swap_reloc_in): Fix howto indexes
for scattered relocations.
(bfd_mach_o_i386_print_thread): New function.
(bfd_mach_o_print_thread): Define.
* mach-o.c (text_section_names_xlat): Add an entry for __const.
(bfd_mach_o_canonicalize_one_reloc, bfd_mach_o_canonicalize_relocs):
New functions extracted from ...
(bfd_mach_o_canonicalize_reloc): ... This. Simplified.
(bfd_mach_o_get_dynamic_reloc_upper_bound): New function.
(bfd_mach_o_canonicalize_dynamic_reloc): New function.
(bfd_mach_o_i386_flavour_string): Adjusted after enum renaming.
(bfd_mach_o_ppc_flavour_string): Reindentation. Add 64 bits cases.
(bfd_mach_o_scan_read_dylinker): Do not create a section anymore.
Set name_str field.
(bfd_mach_o_scan_read_dylib): Ditto.
(bfd_mach_o_scan_read_thread): Set mdata at declaration. Add comments,
reindent.
(bfd_mach_o_scan_read_dysymtab): Set mdata at declaration. Correctly
decode isym and flags on little endian targets. Set dysymtab field.
(bfd_mach_o_scan_start_address): Adjust for enum names.
(bfd_mach_o_lookup_section): Do not look for segments anymore.
(bfd_mach_o_print_section): Display bfd section name.
(bfd_mach_o_print_segment): Display none if no name.
(bfd_mach_o_print_dysymtab): Display next index for local, external
and undefined symbols.
(bfd_mach_o_bfd_print_private_bfd_data): Adjust code by using name_str.
Display dylinker name. Display thread and unixthread commands content.
(bfd_mach_o_print_thread): New macro.
* mach-o.h (bfd_mach_o_mach_header_magic): Align numbers.
(bfd_mach_o_ppc_thread_flavour): Ditto.
(bfd_mach_o_i386_thread_flavour): Ditto.
(BFD_MACH_O_PPC_THREAD_STATE_NONE): New enum.
(BFD_MACH_O_x86_THREAD_STATE_NONE): Replaces
BFD_MACH_O_THREAD_STATE_NONE.
(bfd_mach_o_segment_command): Remove segment field.
(bfd_mach_o_thread_flavour): Field offset is now unsigned long.
(bfd_mach_o_dylinker_command): Remove section field, add name_str.
(bfd_mach_o_prebound_dylib_command): Ditto.
(bfd_mach_o_dylib_command): Ditto.
(bfd_mach_o_prebound_dylib_command): Remove section field.
(mach_o_data_struct): Add dysymtab field.
(bfd_mach_o_backend_data): Add _bfd_mach_o_print_thread field.
(bfd_mach_o_get_reloc_upper_bound, bfd_mach_o_canonicalize_reloc)
(bfd_mach_o_build_commands): Remove parameter names and attributes.
(bfd_mach_o_get_dynamic_reloc_upper_bound)
(bfd_mach_o_canonicalize_dynamic_reloc): New prototypes.
* mach-o.c (bfd_mach_o_scan_read_symtab_symbols): Add prototype.
(bfd_mach_o_version): Use bfd_mach_o_get_data instead of direct access.
(bfd_mach_o_valid): Ditto.
(bfd_mach_o_wide_p): Ditto.
(bfd_mach_o_canonicalize_reloc): Ditto.
(bfd_mach_o_build_commands): Ditto.
(bfd_mach_o_scan_read_thread): Ditto.
(bfd_mach_o_flatten_sections): Ditto.
(bfd_mach_o_scan_start_address): Ditto.
(bfd_mach_o_lookup_section): Ditto.
(bfd_mach_o_core_fetch_environment): Ditto.
(bfd_mach_o_write_contents): Ditto. Handle reexport_dylib.
(bfd_mach_o_scan_write_relocs): Adjust for bfd_mach_o_get_data.
(bfd_mach_o_scan_write_symtab): Ditto.
Use macros instead of hard-coded values.
(bfd_mach_o_scan_read_symtab_symbol): Make the function static.
Use bfd_mach_o_get_data instead of direct access. Use macros
instead of hard-coded values.
(bfd_mach_o_scan_read_symtab_strtab): Make the function static.
Remove sym argument and get section from mdata.
Move code into the else branch.
(bfd_mach_o_scan_read_symtab_symbols): Make the function static.
Remove sym argument and get section from mdata. Adjust code.
(bfd_mach_o_scan_read_dylib): Move assertion into the created
switch (which replaces consecutive if statements).
(bfd_mach_o_scan_read_dysymtab): Rename seg to cmd. Load
module table, table of content, indirect symbols and external
referenced symbols.
(bfd_mach_o_scan_read_symtab): Renames seg to symtab. Set symtab
field.
(bfd_mach_o_scan_read_linkedit): New function.
(bfd_mach_o_scan_read_str): Ditto.
(bfd_mach_o_count_symbols): Simplify the code by using the symtab
field of mdata.
(bfd_mach_o_get_symtab_upper_bound): Remove check as
bfd_mach_o_count_symbols never returns an error.
(bfd_mach_o_canonicalize_symtab): Simplify the code by using the
symtab field (there might be only one symtab).
(bfd_mach_o_scan_read_command): Handle reexported dylib.
Handle sub frameworks, sub umbrella, sub library and sub client.
Read code signature and segment split info commands.
(bfd_mach_o_scan): Reindent.
(bfd_mach_o_xlat_name): New type.
(bfd_mach_o_print_flags): New function.
(bfd_mach_o_get_name): Ditto.
(bfd_mach_o_cpu_name): New variable.
(bfd_mach_o_filetype_name, bfd_mach_o_header_flags_name)
(bfd_mach_o_section_type_name)
(bfd_mach_o_section_attribute_name)
(bfd_mach_o_load_command_name): New variables.
(bfd_mach_o_print_private_header): New function.
(bfd_mach_o_print_section_map): New function extracted from
bfd_mach_o_print_private_bfd_data.
(bfd_mach_o_print_section): Ditto. Print more infos.
(bfd_mach_o_print_segment): Ditto.
(bfd_mach_o_print_dysymtab): Ditto.
(bfd_mach_o_bfd_print_private_bfd_data): Reworked. Handle
load weak dylib, reexport dylib and id dylib.
Handle code signature and segment_split info.
Handle sub frameworks, sub umbrella, sub library and sub client.
(bfd_mach_o_section_get_nbr_indirect): New function.
* mach-o.h (BFD_MACH_O_REFERENCE_MASK): New macro. Add comment.
(bfd_mach_o_header_flags): New enum to define header flags.
(bfd_mach_o_section_attribute): New enum to replace ...
(BFD_MACH_O_S_ATTR_LOC_RELOC, BFD_MACH_O_S_ATTR_EXT_RELOC,
BFD_MACH_O_S_ATTR_SOME_INSTRUCTIONS, BFD_MACH_O_S_ATTR_DEBUG,
BFD_MACH_O_S_SELF_MODIFYING_CODE, BFD_MACH_O_S_ATTR_LIVE_SUPPORT,
BFD_MACH_O_S_ATTR_NO_DEAD_STRIP, BFD_MACH_O_S_ATTR_STRIP_STATIC_SYMS,
BFD_MACH_O_S_ATTR_NO_TOC, BFD_MACH_O_S_ATTR_PURE_INSTRUCTIONS): ...
these removed macros.
(BFD_MACH_O_NLIST_SIZE, BFD_MACH_O_NLIST_64_SIZE): New macros.
(bfd_mach_o_dylib_module): New type.
(BFD_MACH_O_DYLIB_MODULE_SIZE, BFD_MACH_O_DYLIB_MODULE_64_SIZE): New
macros.
(bfd_mach_o_dylib_table_of_content): New type.
(BFD_MACH_O_TABLE_OF_CONTENT_SIZE): New macro.
(bfd_mach_o_dylib_reference): New type.
(BFD_MACH_O_REFERENCE_SIZE): New macro.
(bfd_mach_o_dysymtab_command): Add fields for loaded and decoded
modules, toc, references and indirect syms.
(BFD_MACH_O_INDIRECT_SYMBOL_SIZE): New macro.
(bfd_mach_o_dylinker_command): Remove cmd and cmdsize fields (were
unused). Add comment.
(bfd_mach_o_dylib_command): Ditto.
(bfd_mach_o_prebound_dylib_command): Ditto.
(bfd_mach_o_linkedit_command): New type.
(bfd_mach_o_str_command): New type.
(bfd_mach_o_load_command): Add linkedit and str fields.
(mach_o_data_struct): Add symtab field.
(bfd_get_mach_o_data): Renamed to ...
(bfd_mach_o_get_data): ... this new macro.
(bfd_mach_o_scan_read_symtab_symbol,
bfd_mach_o_scan_read_symtab_strtab,
bfd_mach_o_scan_read_symtab_symbols): Prototypes removed.
* mach-o-i386.c (bfd_mach_o_i386_mkobject): Use bfd_mach_o_get_data
instead of direct access.
* reloc.c: Add BFD_RELOC_MACH_O_SECTDIFF and BFD_RELOC_MACH_O_PAIR.
* bfd-in2.h: Regenerated.
* libbfd.h: Regenerated.
* mach-o.c (FILE_ALIGN): New macro.
(bfd_mach_o_canonicalize_symtab): Adjust for bfd_mach_o_asymbol.
(bfd_mach_o_print_symbol): Ditto.
(bfd_mach_o_scan_write_thread): Adjust type of variable offset.
(bfd_mach_o_get_reloc_upper_bound): New function.
(bfd_mach_o_canonicalize_reloc): Ditto.
(bfd_mach_o_scan_write_relocs): Ditto.
(bfd_mach_o_scan_write_section_32): Remove offset argument.
(bfd_mach_o_scan_write_section_64): Ditto.
(bfd_mach_o_scan_write_segment_32): Write relocs. Fix size of data
written for load command. Do not compute section file offset.
(bfd_mach_o_scan_write_segment_64): Ditto.
(bfd_mach_o_scan_write_symtab): Compute file offset first.
Adjust for bfd_mach_o_asymbol. Move code to convert from BFD to
Mach-O to ...
(bfd_mach_o_mangle_symbols): ... this new function.
(bfd_mach_o_write_contents): Be sure to habe load commands built.
Call bfd_mach_o_mangle_symbols.
(bfd_mach_o_build_commands): Adjust for filelen field.
Use FILE_ALIGN macro. Clear section file offset if section is empty.
Do not set symtab file offset anymore here.
(bfd_mach_o_make_empty_symbol): Allocate a bfd_mach_o_asymbol.
(bfd_mach_o_make_bfd_section): Set SEC_RELOC if has reloc.
Set reloc_count and rel_filepos section fields.
(bfd_mach_o_scan_read_section_32): Type of argument offset is now
unsigned int.
(bfd_mach_o_scan_read_section_64): Ditto.
(bfd_mach_o_scan_read_section): Ditto.
(bfd_mach_o_scan_read_symtab_symbol): Typr of argument s is now
bfd_mach_o_asymbol. Use unsigned int for file offset type.
(bfd_mach_o_scan_read_symtab_symbol): Adjust for bfd_mach_o_asymbol.
Handle weak-ref symbols.
(bfd_mach_o_scan_read_symtab_symbols): Adjust for bfd_mach_o_asymbol.
(bfd_mach_o_scan_read_dysymtab_symbol): Ditto.
(bfd_mach_o_scan): Remove assignment to removed field.
(bfd_mach_o_mkobject_init): Ditto.
(bfd_mach_o_bfd_print_private_bfd_data): Adjust printf formatter.
(bfd_mach_o_bfd_reloc_type_lookup): New macro.
(bfd_mach_o_bfd_reloc_name_lookup): Ditto.
(bfd_mach_o_swap_reloc_in): Ditto.
(bfd_mach_o_swap_reloc_out): Ditto.
* mach-o.h (BFD_MACH_O_REFERENCE_FLAG_UNDEFINED_NON_LAZY)
(BFD_MACH_O_REFERENCE_FLAG_UNDEFINED_LAZY)
(BFD_MACH_O_REFERENCE_FLAG_DEFINED)
(BFD_MACH_O_REFERENCE_FLAG_PRIVATE_DEFINED)
(BFD_MACH_O_REFERENCE_FLAG_PRIVATE_UNDEFINED_NON_LAZY)
(BFD_MACH_O_REFERENCE_FLAG_PRIVATE_UNDEFINED_LAZY)
(BFD_MACH_O_REFERENCED_DYNAMICALLY, BFD_MACH_O_N_DESC_DISCARDED)
(BFD_MACH_O_N_NO_DEAD_STRIP, BFD_MACH_O_N_WEAK_REF)
(BFD_MACH_O_N_WEAK_DEF): New macros.
Add comments.
(bfd_mach_o_section_type): Add new enumeration values.
(BFD_MACH_O_S_SELF_MODIFYING_CODE)
(BFD_MACH_O_S_ATTR_LIVE_SUPPORT)
(BFD_MACH_O_S_ATTR_NO_DEAD_STRIP)
(BFD_MACH_O_S_ATTR_STRIP_STATIC_SYMS, BFD_MACH_O_S_ATTR_NO_TOC): New
macros.
(BFD_MACH_O_GENERIC_RELOC_VANILLA)
(BFD_MACH_O_GENERIC_RELOC_PAIR)
(BFD_MACH_O_GENERIC_RELOC_SECTDIFF)
(BFD_MACH_O_GENERIC_RELOC_PB_LA_PTR)
(BFD_MACH_O_GENERIC_RELOC_LOCAL_SECTDIFF): Ditto.
(BFD_MACH_O_RELENT_SIZE): Ditto.
(BFD_MACH_O_R_PCREL, BFD_MACH_O_GET_R_LENGTH)
(BFD_MACH_O_R_EXTERN, BFD_MACH_O_GET_R_TYPE)
(BFD_MACH_O_GET_R_SYMBOLNUM, BFD_MACH_O_SET_R_LENGTH)
(BFD_MACH_O_SET_R_TYPE, BFD_MACH_O_SET_R_SYMBOLNUM): Ditto.
(BFD_MACH_O_SR_SCATTERED, BFD_MACH_O_SR_PCREL)
(BFD_MACH_O_GET_SR_LENGTH, BFD_MACH_O_GET_SR_TYPE)
(BFD_MACH_O_GET_SR_ADDRESS, BFD_MACH_O_SET_SR_LENGTH)
(BFD_MACH_O_SET_SR_TYPE, BFD_MACH_O_SET_SR_ADDRESS): Ditto.
(bfd_mach_o_reloc_info): New struct.
(bfd_mach_o_asymbol): New struct.
(bfd_mach_o_symtab_command): The symbols field is now of type
bfd_mach_o_asymbol.
(bfd_mach_o_load_command): The offset and len fields are now of type
unsigned int.
(mach_o_data_struct): Remove symbols, nsymbols and ibfd fields.
Add a filelen field. Add comments.
(bfd_mach_o_backend_data): New struct.
(bfd_mach_o_get_backend_data): New macro.
(bfd_mach_o_scan_read_symtab_symbol): Parameter symbol now of type
bfd_mach_o_asymbol.
(bfd_mach_o_scan_read_dysymtab_symbol): Ditto.
(bfd_mach_o_get_reloc_upper_bound): New prototype.
(bfd_mach_o_canonicalize_reloc): Ditto.
* mach-o-target.c (bfd_mach_o_bfd_is_local_label_name): Remove
duplicated macro. Now defined to _bfd_generic_is_local_label.
(TARGET_NAME_BACKEND): New macro...
(TARGET_NAME_BACKEND): ... used to name a new variable.
(TARGET_NAME): Define relocs table using bfd_mach_o, reference
Mach-O backend data.
* mach-o-i386.c (i386_howto_table): New variable.
(bfd_mach_o_i386_swap_reloc_in): New function.
(bfd_mach_o_i386_swap_reloc_out): Ditto.
(bfd_mach_o_i386_bfd_reloc_type_lookup): Ditto.
(bfd_mach_o_i386_bfd_reloc_name_lookup): Ditto.
(bfd_mach_o_swap_reloc_in, bfd_mach_o_swap_reloc_out): New macros.
(bfd_mach_o_bfd_reloc_type_lookup)
(bfd_mach_o_bfd_reloc_name_lookup): Ditto.
* mach-o.h (bfd_mach_o_symtab_command): Remove stabs_segment
and stabstr_segment fields.
(mach_o_be_vec, mach_o_le_vec): Removed
(bfd_mach_o_version): New prototype.
* mach-o.c (bfd_mach_o_version): Make this function public.
(mach_o_wide_p): New function.
(bfd_mach_o_wide_p): Ditto.
(bfd_mach_o_convert_section_name_to_bfd): Add prefix only for
weird names.
(bfd_mach_o_convert_section_name_to_mach_o): Fix typo in comment.
Search in the list only if the name starts with a dot.
(bfd_mach_o_write_header): Use mach_o_wide_p instead of hard-coded
test. Check bfd_seek status.
(bfd_mach_o_scan_write_thread): Check bfd_seek status.
(bfd_mach_o_scan_write_section_32): Ditto.
(bfd_mach_o_scan_write_section_64): Ditto.
(bfd_mach_o_scan_write_section): Removed.
(bfd_mach_o_scan_write_segment): Split into ...
(bfd_mach_o_scan_write_segment_32): ... this and ...
(bfd_mach_o_scan_write_segment_64): ... this. Check bfd_seek status.
(bfd_mach_o_scan_write_symtab_symbols): Moved into ...
(bfd_mach_o_scan_write_symtab): ... this. Write symtab from BFD
symbol table. Now returns a boolean.
(bfd_mach_o_write_contents): Set filetype. Check bfd_seek status.
Adjust for status type.
(bfd_mach_o_build_commands): Use mach_o_wide_p instead of hard-coded
test. Write symbol table. Numbers the sections.
(bfd_mach_o_read_header): Check bfd_seek status.
Use mach_o_wide_p instead of hard-coded test.
(bfd_mach_o_scan_read_section_32): Check bfd_seek status.
(bfd_mach_o_scan_read_section_64): Ditto.
(bfd_mach_o_scan_read_symtab_symbol): Ditto. Check bfd_seek status.
Use BFD_MACH_O_N_TYPE instead of hard-coded value. Correctly
handled common symbols.
(bfd_mach_o_scan_read_symtab_strtab): Check bfd_seek status.
(bfd_mach_o_scan_read_dysymtab_symbol): Ditto.
(bfd_mach_o_scan_read_dylinker): Ditto.
(bfd_mach_o_scan_read_dylib): Ditto.
(bfd_mach_o_scan_read_thread): Ditto.
(bfd_mach_o_scan_read_symtab): Ditto.
Do not create a section for the stabs.
(bfd_mach_o_scan_read_uuid): Check bfd_seek status.
(bfd_mach_o_scan_read_segment): Ditto.
(bfd_mach_o_scan_read_command): Ditto.
(bfd_mach_o_scan_start_address): Ditto.
(bfd_mach_o_scan): Use mach_o_wide_p instead of hard-coded test.
(bfd_mach_o_archive_p): Check bfd_seek status.
(bfd_mach_o_core_fetch_environment): Ditto.
* mach-o-i386.c (bfd_mach_o_i386_mkobject): Don't set filetype.
* mach-o.h: Update copyright year.
(bfd_mach_o_mach_header_magic): New enum.
(bfd_mach_o_cpu_subtype): Now an enum.
(BFD_MACH_O_HEADER_SIZE, BFD_MACH_O_HEADER_64_SIZE): New macros.
(BFD_MACH_O_SECTION_SIZE, BFD_MACH_O_SECTION_64_SIZE): Ditto.
(BFD_MACH_O_LC_SEGMENT_SIZE, BFD_MACH_O_LC_SEGMENT_64_SIZE): Ditto.
(bfd_mach_o_load_command): Field type_required is now a boolean.
Reindent prototypes.
(bfd_mach_o_object_p, bfd_mach_o_core_p): Remove.
(bfd_mach_o_bfd_copy_private_symbol_data): Add a prototype.
(bfd_mach_o_bfd_copy_private_section_data): Ditto.
(bfd_mach_o_bfd_copy_private_bfd_data): Ditto.
(bfd_mach_o_get_symtab_upper_bound): Ditto.
(bfd_mach_o_canonicalize_symtab): Ditto.
(bfd_mach_o_get_symbol_info): Ditto.
(bfd_mach_o_print_symbol): Ditto.
(bfd_mach_o_bfd_print_private_bfd_data): Ditto.
(bfd_mach_o_make_empty_symbol): Ditto.
(bfd_mach_o_write_contents): Ditto.
* mach-o.c (bfd_mach_o_object_p, bfd_mach_o_core_p,
bfd_mach_o_mkobject): Defines.
(bfd_mach_o_valid): Returns FALSE/TRUE instead of 0/1.
Do not check with target vector but with flavour.
(struct mach_o_section_name_xlat): New declaration.
(dwarf_section_names_xlat): Ditto.
(text_section_names_xlat): Ditto.
(data_section_names_xlat): Ditto.
(struct mach_o_segment_name_xlat): Ditto.
(segsec_names_xlat): Ditto.
(bfd_mach_o_convert_section_name_to_bfd): New function.
(bfd_mach_o_convert_section_name_to_mach_o): Ditto.
(bfd_mach_o_bfd_copy_private_symbol_data): Make it public.
(bfd_mach_o_bfd_copy_private_section_data): Ditto.
(bfd_mach_o_bfd_copy_private_bfd_data): Ditto.
Accept any input and output flavour. Do not share private data
anymore.
(bfd_mach_o_count_symbols): Add a comment.
(bfd_mach_o_get_symtab_upper_bound): Make it public.
(bfd_mach_o_canonicalize_symtab): Ditto.
(bfd_mach_o_get_symbol_info): Ditto.
(bfd_mach_o_print_symbol): Ditto.
(bfd_mach_o_write_header): Now returns a boolean instead of an int.
Use constants instead of hard-coded values.
(bfd_mach_o_scan_write_section_32): Use constants instead of hard-coded
values.
(bfd_mach_o_scan_write_section_64): Ditto.
(bfd_mach_o_scan_write_segment): Ditto.
Do not copy sections anymore.
(bfd_mach_o_write_contents): Make it public.
Remove dead code. Rewrite typeflag assignment.
(bfd_mach_o_build_commands): New function.
(bfd_mach_o_set_section_contents): Ditto.
(bfd_mach_o_make_empty_symbol): Make it public.
(bfd_mach_o_read_header): Make it static.
Convert to bfd_boolean.
Use constants instead of hard-coded values.
(bfd_mach_o_make_bfd_section): Call
bfd_mach_o_convert_section_name_to_bfd to create name.
(bfd_mach_o_scan_read_section_32): Use constants instead of hard-coded
values.
(bfd_mach_o_scan_read_section_64): Ditto.
(bfd_mach_o_scan_read_segment): Do not create a bfd section for
a segment anymore. Use constants instead of hard-coded values.
(bfd_mach_o_scan_read_command): Fix style.
(bfd_mach_o_scan): Use constants instead of hard-coded values.
Get rid of BFD_IO_FUNCS.
(bfd_mach_o_mkobject_init): Renamed from bfd_mach_o_mkobject.
(bfd_mach_o_header_p): Created from bfd_mach_o_object_p.
(bfd_mach_o_gen_object_p): New function, replaces bfd_mach_o_object_p.
(bfd_mach_o_object_p): Removed.
(bfd_mach_o_gen_core_p): New function, replaces ...
(bfd_mach_o_core_p): ... deleted.
(bfd_mach_o_bfd_print_private_bfd_data): Make it public.
* mach-o-i386.c: New file.
* config.bfd: Use mach_o_i386_vec as targ_defvec for ix86-darwin.
* configure.in (TDEFINES): Add mach_o_i386_vec.
* configure: Regenerated.
* targets.c: Add mach_o_i386_vec.
* mach-o.c: Update copyright years.
(BFD_IO_FUNCS): Remove (was not used).
(bfd_mach_o_mkarchive, bfd_mach_o_read_ar_hdr, bfd_mach_o_slurp_armap
bfd_mach_o_slurp_extended_name_table,
bfd_mach_o_construct_extended_name_table,
bfd_mach_o_truncate_arname, bfd_mach_o_write_armap,
bfd_mach_o_get_elt_at_index, bfd_mach_o_generic_stat_arch_elt,
bfd_mach_o_update_armap_timestamp, bfd_mach_o_close_and_cleanup,
bfd_mach_o_bfd_free_cached_info, bfd_mach_o_new_section_hook,
bfd_mach_o_get_section_contents_in_window,
bfd_mach_o_bfd_is_local_label_name,
bfd_mach_o_bfd_is_target_special_symbol,
bfd_mach_o_bfd_is_local_label_name, bfd_mach_o_get_lineno,
bfd_mach_o_find_nearest_line, bfd_mach_o_find_inliner_info,
bfd_mach_o_bfd_make_debug_symbol, bfd_mach_o_read_minisymbols,
bfd_mach_o_minisymbol_to_symbol,
bfd_mach_o_bfd_get_relocated_section_contents,
bfd_mach_o_bfd_relax_section, bfd_mach_o_bfd_link_hash_table_create,
bfd_mach_o_bfd_link_hash_table_free, bfd_mach_o_bfd_link_add_symbols,
bfd_mach_o_bfd_link_just_syms, bfd_mach_o_bfd_final_link,
bfd_mach_o_bfd_link_split_section, bfd_mach_o_set_arch_mach,
bfd_mach_o_bfd_merge_private_bfd_data,
bfd_mach_o_bfd_set_private_flags, bfd_mach_o_get_section_contents,
bfd_mach_o_bfd_gc_sections, bfd_mach_o_bfd_merge_sections,
bfd_mach_o_bfd_is_group_section, bfd_mach_o_bfd_discard_group,
bfd_mach_o_section_already_linked, bfd_mach_o_bfd_define_common_symbol,
bfd_mach_o_bfd_copy_private_header_data,
bfd_mach_o_core_file_matches_executable_p): Move these defines ...
* mach-o-target.c: ... here.
Update copyright years.
* mach-o.c (bfd_mach_o_make_bfd_section): Use the standard ELF name
.eh_frame for __TEXT.__eh_frame so that it is recognized by gdb.
Use shorter sections name for well known sections.
(bfd_mach_o_scan_read_dylinker): Only put dylinker name in the
section content.
(bfd_mach_o_scan_read_segment): Use shorter sections name for
well known segments.
(bfd_mach_o_scan_read_command): Ignore some new commands.
(bfd_mach_o_openr_next_archived_file): Use more descriptive names
for members filename.
(bfd_mach_o_fat_extract): New function to easily extract members
of a fat binary.
* mach-o.h (bfd_mach_o_load_command_type): Add new constants.
(bfd_mach_o_dylinker_command): Fix comment and reindent.
(bfd_mach_o_fat_extract): New prototype.
* mach-o.h (BFD_MACH_O_NO_SECT): Add; reorders the macros.
(BFD_MACH_O_SYM_NTYPE, BFD_MACH_O_SYM_NSECT,
BFD_MACH_O_SYM_NDESC): New macros.
(bfd_mach_o_i386_thread_flavour): Define according to the latest
definition from system header.
(bfd_mach_o_load_command_type): Add BFD_MACH_O_LC_RPATH,
BFD_MACH_O_LC_CODE_SIGNATURE.
(BFD_MACH_O_SECTION_TYPE_MASK, BFD_MACH_O_SECTION_ATTRIBUTES_MASK,
BFD_MACH_O_SECTION_ATTRIBUTES_SYS, BFD_MACH_O_SECTION_ATTRIBUTES_USR,
BFD_MACH_O_S_ATTR_LOC_RELOC, BFD_MACH_O_S_ATTR_EXT_RELOC,
BFD_MACH_O_S_ATTR_SOME_INSTRUCTIONS, BFD_MACH_O_S_ATTR_DEBUG,
BFD_MACH_O_S_ATTR_PURE_INSTRUCTIONS): Add.
(bfd_mach_o_segment_command): Add room for a nul terminator in
segname field.
(BFD_MACH_O_PROT_READ, BFD_MACH_O_PROT_WRITE,
BFD_MACH_O_PROT_EXECUTE): Add.
(INDIRECT_SYMBOL_LOCAL): Renames to BFD_MACH_O_INDIRECT_SYMBOL_LOCAL.
(INDIRECT_SYMBOL_ABS): Renames to BFD_MACH_O_INDIRECT_SYMBOL_ABS.
(bfd_mach_o_uuid_command): Add the structure.
(bfd_mach_o_load_command): Add uuid field.
(bfd_get_mach_o_data): New macro.
* mach-o.c (bfd_mach_o_bfd_print_private_bfd_data): New function which
replaces the macro.
(SECTION_TYPE, SECTION_ATTRIBUTES, SECTION_ATTRIBUTES_USR,
S_ATTR_PURE_INSTRUCTIONS, SECTION_ATTRIBUTES_SYS,
S_ATTR_SOME_INSTRUCTIONS, S_ATTR_EXT_RELOC, S_ATTR_LOC_RELOC): Renamed
and moved to mach-o.h.
(N_STAB, N_TYPE, N_EXT, N_UNDF, N_ABS, N_TEXT, N_DATA, N_BSS,
N_SECT, N_INDR): Removed as they duplicated macros in mach-o.h.
(bfd_mach_o_print_symbol): Print much more details.
(bfd_mach_o_make_bfd_section): Add prot argument, use canonical
dwarf name for dwarf sections. Precisely set section flags.
(bfd_mach_o_scan_read_section_32): Add prot argument.
(bfd_mach_o_scan_read_section_64): Ditto.
(bfd_mach_o_scan_read_section): Ditto.
(bfd_mach_o_scan_read_symtab_symbol): Set section for debugging
stabs, set BSF_GLOBAL and LOCAL flags correctly. Fix section
for N_SECT symbols.
(bfd_mach_o_i386_flavour_string): Reindent and adjust for new
names.
(bfd_mach_o_scan_read_symtab): Set HAS_SYMS flags on bfd if there
are symbols.
(bfd_mach_o_scan_read_uuid): New function.
(bfd_mach_o_scan_read_segment): Add a trailing nul. Segments
flags are now simply HAS_CONTENTS. Pass protection to
bfd_mach_o_scan_read_section.
(bfd_mach_o_scan_read_command): Decode UUID command.
(bfd_mach_o_flatten_sections): Add comments. Fix flavour names.
(bfd_mach_o_scan): Set flags according to file type.
(mach_o_fat_archentry): Remove abfd field.
(bfd_mach_o_archive_p): Remove initialization of abfd field.
(bfd_mach_o_openr_next_archived_file): Find previous archive
by position and not by bfd (as former bfds may have been freed).
Give architecture name to archived file.
* mach-o-target.c (TARGET_NAME): Use generic archive for non fat
targets.