/* Mach-O support for BFD.
- Copyright (C) 1999-2014 Free Software Foundation, Inc.
+ Copyright (C) 1999-2015 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
#include "bfd.h"
#include "mach-o/loader.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
typedef struct bfd_mach_o_header
{
unsigned long magic;
typedef struct bfd_mach_o_dylinker_command
{
- unsigned long name_offset; /* Offset to library's path name. */
- unsigned long name_len; /* Offset to library's path name. */
+ unsigned int name_offset; /* Offset to library's path name. */
char *name_str;
}
bfd_mach_o_dylinker_command;
typedef struct bfd_mach_o_dylib_command
{
- unsigned long name_offset; /* Offset to library's path name. */
- unsigned long name_len; /* Offset to library's path name. */
+ unsigned int name_offset; /* Offset to library's path name. */
unsigned long timestamp; /* Library's build time stamp. */
unsigned long current_version; /* Library's current version number. */
unsigned long compatibility_version; /* Library's compatibility vers number. */
typedef struct bfd_mach_o_fvmlib_command
{
unsigned int name_offset;
- unsigned int name_len;
char *name_str;
unsigned int minor_version;
unsigned int header_addr;
/* File offset and size to rebase info. */
unsigned int rebase_off;
unsigned int rebase_size;
+ unsigned char *rebase_content;
/* File offset and size of binding info. */
unsigned int bind_off;
unsigned int bind_size;
+ unsigned char *bind_content;
/* File offset and size of weak binding info. */
unsigned int weak_bind_off;
unsigned int weak_bind_size;
+ unsigned char *weak_bind_content;
/* File offset and size of lazy binding info. */
unsigned int lazy_bind_off;
unsigned int lazy_bind_size;
+ unsigned char *lazy_bind_content;
/* File offset and size of export info. */
unsigned int export_off;
unsigned int export_size;
+ unsigned char *export_content;
}
bfd_mach_o_dyld_info_command;
typedef struct bfd_mach_o_load_command
{
+ /* Next command in the single linked list. */
+ struct bfd_mach_o_load_command *next;
+
+ /* Type and required flag. */
bfd_mach_o_load_command_type type;
bfd_boolean type_required;
+
+ /* Offset and length in the file. */
unsigned int offset;
unsigned int len;
+
union
{
bfd_mach_o_segment_command segment;
bfd_mach_o_fvmlib_command fvmlib;
bfd_mach_o_main_command main;
bfd_mach_o_source_version_command source_version;
- }
- command;
+ } command;
}
bfd_mach_o_load_command;
/* Mach-O header. */
bfd_mach_o_header header;
/* Array of load commands (length is given by header.ncmds). */
- bfd_mach_o_load_command *commands;
+ bfd_mach_o_load_command *first_command;
+ bfd_mach_o_load_command *last_command;
/* Flatten array of sections. The array is 0-based. */
unsigned long nsects;
bfd *, asymbol *);
bfd_boolean bfd_mach_o_bfd_copy_private_section_data (bfd *, asection *,
bfd *, asection *);
-bfd_boolean bfd_mach_o_bfd_copy_private_bfd_data (bfd *, bfd *);
+bfd_boolean bfd_mach_o_bfd_copy_private_header_data (bfd *, bfd *);
bfd_boolean bfd_mach_o_bfd_set_private_flags (bfd *, flagword);
long bfd_mach_o_get_symtab_upper_bound (bfd *);
long bfd_mach_o_canonicalize_symtab (bfd *, asymbol **);
void bfd_mach_o_convert_section_name_to_bfd (bfd *, const char *, const char *,
const char **, flagword *);
-bfd_boolean bfd_mach_o_find_nearest_line (bfd *, asection *, asymbol **,
- bfd_vma, const char **,
- const char **, unsigned int *);
+bfd_boolean bfd_mach_o_find_nearest_line (bfd *, asymbol **,
+ asection *, bfd_vma,
+ const char **, const char **,
+ unsigned int *, unsigned int *);
+#define bfd_mach_o_find_line _bfd_nosymbols_find_line
bfd_boolean bfd_mach_o_close_and_cleanup (bfd *);
bfd_boolean bfd_mach_o_free_cached_info (bfd *);
#define SYM_MACHO_FIELDS_UNSET ((bfd_vma) -1)
#define SYM_MACHO_FIELDS_NOT_VALIDATED ((bfd_vma) -2)
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _BFD_MACH_O_H_ */