/* Mach-O support for BFD.
- Copyright (C) 1999-2018 Free Software Foundation, Inc.
+ Copyright (C) 1999-2020 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
#ifndef _BFD_MACH_O_H_
#define _BFD_MACH_O_H_
-#include "bfd.h"
#include "mach-o/loader.h"
#include "mach-o/external.h"
#define BFD_MACH_O_PROT_WRITE 0x02
#define BFD_MACH_O_PROT_EXECUTE 0x04
+/* Target platforms. */
+#define BFD_MACH_O_PLATFORM_MACOS 1
+#define BFD_MACH_O_PLATFORM_IOS 2
+#define BFD_MACH_O_PLATFORM_TVOS 3
+#define BFD_MACH_O_PLATFORM_WATCHOS 4
+#define BFD_MACH_O_PLATFORM_BRIDGEOS 5
+
+/* Build tools. */
+#define BFD_MACH_O_TOOL_CLANG 1
+#define BFD_MACH_O_TOOL_SWIFT 2
+#define BFD_MACH_O_TOOL_LD 3
+
/* Expanded internal representation of a relocation entry. */
typedef struct bfd_mach_o_reloc_info
{
typedef struct bfd_mach_o_version_min_command
{
- unsigned char rel;
- unsigned char maj;
- unsigned char min;
- unsigned int reserved;
+ uint32_t version;
+ uint32_t sdk;
}
bfd_mach_o_version_min_command;
}
bfd_mach_o_source_version_command;
+typedef struct bfd_mach_o_note_command
+{
+ char data_owner[16];
+ bfd_uint64_t offset;
+ bfd_uint64_t size;
+}
+bfd_mach_o_note_command;
+
+typedef struct bfd_mach_o_build_version_tool
+{
+ uint32_t tool;
+ uint32_t version;
+}
+bfd_mach_o_build_version_tool;
+
+typedef struct bfd_mach_o_build_version_command
+{
+ uint32_t platform;
+ uint32_t minos;
+ uint32_t sdk;
+ uint32_t ntools;
+}
+bfd_mach_o_build_version_command;
+
typedef struct bfd_mach_o_load_command
{
/* Next command in the single linked list. */
bfd_mach_o_fvmlib_command fvmlib;
bfd_mach_o_main_command main;
bfd_mach_o_source_version_command source_version;
+ bfd_mach_o_note_command note;
+ bfd_mach_o_build_version_command build_version;
} command;
}
bfd_mach_o_load_command;
/* A place to stash dwarf2 info for this bfd. */
void *dwarf2_find_line_info;
- /* BFD of .dSYM file. */
+ /* BFD of .dSYM file. */
bfd *dsym_bfd;
- /* Cache of dynamic relocs. */
+ /* Cache of dynamic relocs. */
arelent *dyn_reloc_cache;
}
bfd_mach_o_data_struct;
bfd_boolean bfd_mach_o_valid (bfd *);
bfd_boolean bfd_mach_o_mkobject_init (bfd *);
-const bfd_target *bfd_mach_o_object_p (bfd *);
-const bfd_target *bfd_mach_o_core_p (bfd *);
-const bfd_target *bfd_mach_o_fat_archive_p (bfd *);
+bfd_cleanup bfd_mach_o_object_p (bfd *);
+bfd_cleanup bfd_mach_o_core_p (bfd *);
+bfd_cleanup bfd_mach_o_fat_archive_p (bfd *);
bfd *bfd_mach_o_fat_openr_next_archived_file (bfd *, bfd *);
bfd_boolean bfd_mach_o_set_arch_mach (bfd *, enum bfd_architecture,
unsigned long);
bfd *, asection *);
bfd_boolean bfd_mach_o_bfd_copy_private_header_data (bfd *, bfd *);
bfd_boolean bfd_mach_o_bfd_set_private_flags (bfd *, flagword);
+bfd_boolean bfd_mach_o_bfd_print_private_bfd_data (bfd *, void *);
long bfd_mach_o_get_symtab_upper_bound (bfd *);
long bfd_mach_o_canonicalize_symtab (bfd *, asymbol **);
long bfd_mach_o_get_synthetic_symtab (bfd *, long, asymbol **, long,
int bfd_mach_o_core_file_failing_signal (bfd *);
bfd_boolean bfd_mach_o_core_file_matches_executable_p (bfd *, bfd *);
bfd *bfd_mach_o_fat_extract (bfd *, bfd_format , const bfd_arch_info_type *);
-const bfd_target *bfd_mach_o_header_p (bfd *, file_ptr, bfd_mach_o_filetype,
- bfd_mach_o_cpu_type);
+bfd_cleanup bfd_mach_o_header_p (bfd *, file_ptr, bfd_mach_o_filetype,
+ bfd_mach_o_cpu_type);
bfd_boolean bfd_mach_o_build_commands (bfd *);
bfd_boolean bfd_mach_o_set_section_contents (bfd *, asection *, const void *,
file_ptr, bfd_size_type);