aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog10
-rw-r--r--bfd/mach-o.c22
-rw-r--r--bfd/mach-o.h12
-rw-r--r--binutils/ChangeLog5
-rw-r--r--binutils/od-macho.c15
-rw-r--r--include/mach-o/ChangeLog6
-rw-r--r--include/mach-o/external.h17
7 files changed, 79 insertions, 8 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 0974a0a..e3d2a48 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,13 @@
+2012-01-04 Tristan Gingold <gingold@adacore.com>
+
+ * mach-o.h: Reindent header.
+ (bfd_mach_o_encryption_info_command): New structure.
+ (bfd_mach_o_load_command): Add encryption_info field.
+
+ * mach-o.c (bfd_mach_o_read_encryption_info): New function.
+ (bfd_mach_o_read_command): Handle BFD_MACH_O_LC_ENCRYPTION_INFO.
+ (bfd_mach_o_read_command): Adjust error message.
+
2012-01-04 Shinichiro Hamaji <shinichiro.hamaji@gmail.com>
* dwarf2.c (_bfd_dwarf2_slurp_debug_info): Factor out the part
diff --git a/bfd/mach-o.c b/bfd/mach-o.c
index 30b77d8..57c37d8 100644
--- a/bfd/mach-o.c
+++ b/bfd/mach-o.c
@@ -3411,6 +3411,22 @@ bfd_mach_o_read_version_min (bfd *abfd, bfd_mach_o_load_command *command)
return TRUE;
}
+static bfd_boolean
+bfd_mach_o_read_encryption_info (bfd *abfd, bfd_mach_o_load_command *command)
+{
+ bfd_mach_o_encryption_info_command *cmd = &command->command.encryption_info;
+ struct mach_o_encryption_info_command_external raw;
+
+ if (bfd_seek (abfd, command->offset + BFD_MACH_O_LC_SIZE, SEEK_SET) != 0
+ || bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
+ return FALSE;
+
+ cmd->cryptoff = bfd_get_32 (abfd, raw.cryptoff);
+ cmd->cryptsize = bfd_get_32 (abfd, raw.cryptsize);
+ cmd->cryptid = bfd_get_32 (abfd, raw.cryptid);
+ return TRUE;
+}
+
static int
bfd_mach_o_read_segment (bfd *abfd,
bfd_mach_o_load_command *command,
@@ -3587,6 +3603,10 @@ bfd_mach_o_read_command (bfd *abfd, bfd_mach_o_load_command *command)
if (bfd_mach_o_read_linkedit (abfd, command) != 0)
return -1;
break;
+ case BFD_MACH_O_LC_ENCRYPTION_INFO:
+ if (!bfd_mach_o_read_encryption_info (abfd, command))
+ return -1;
+ break;
case BFD_MACH_O_LC_DYLD_INFO:
if (bfd_mach_o_read_dyld_info (abfd, command) != 0)
return -1;
@@ -3597,7 +3617,7 @@ bfd_mach_o_read_command (bfd *abfd, bfd_mach_o_load_command *command)
return -1;
break;
default:
- (*_bfd_error_handler)(_("%B: unable to read unknown load command 0x%lx"),
+ (*_bfd_error_handler)(_("%B: unknown load command 0x%lx"),
abfd, (unsigned long) command->type);
break;
}
diff --git a/bfd/mach-o.h b/bfd/mach-o.h
index da4363b..b32b6a8 100644
--- a/bfd/mach-o.h
+++ b/bfd/mach-o.h
@@ -1,6 +1,7 @@
/* Mach-O support for BFD.
Copyright 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2009, 2011,
- 2012 Free Software Foundation, Inc.
+ 2012
+ Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -482,6 +483,14 @@ typedef struct bfd_mach_o_version_min_command
}
bfd_mach_o_version_min_command;
+typedef struct bfd_mach_o_encryption_info_command
+{
+ unsigned int cryptoff;
+ unsigned int cryptsize;
+ unsigned int cryptid;
+}
+bfd_mach_o_encryption_info_command;
+
typedef struct bfd_mach_o_load_command
{
bfd_mach_o_load_command_type type;
@@ -502,6 +511,7 @@ typedef struct bfd_mach_o_load_command
bfd_mach_o_str_command str;
bfd_mach_o_dyld_info_command dyld_info;
bfd_mach_o_version_min_command version_min;
+ bfd_mach_o_encryption_info_command encryption_info;
}
command;
}
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index b81c81d..a7a78c4 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,8 @@
+2012-01-04 Tristan Gingold <gingold@adacore.com>
+
+ * od-macho.c: Update copyright year.
+ (dump_load_command): Handle BFD_MACH_O_LC_ENCRYPTION_INFO.
+
2011-12-28 Ian Lance Taylor <iant@google.com>
* dwarf.c (read_and_display_attr_value): Handle DW_LANG_Go.
diff --git a/binutils/od-macho.c b/binutils/od-macho.c
index c5e315d..fbdd53f 100644
--- a/binutils/od-macho.c
+++ b/binutils/od-macho.c
@@ -1,5 +1,5 @@
/* od-macho.c -- dump information about an Mach-O object file.
- Copyright 2011 Free Software Foundation, Inc.
+ Copyright 2011, 2012 Free Software Foundation, Inc.
Written by Tristan Gingold, Adacore.
This file is part of GNU Binutils.
@@ -949,6 +949,19 @@ dump_load_command (bfd *abfd, bfd_mach_o_load_command *cmd,
case BFD_MACH_O_LC_UNIXTHREAD:
dump_thread (abfd, cmd);
break;
+ case BFD_MACH_O_LC_ENCRYPTION_INFO:
+ {
+ bfd_mach_o_encryption_info_command *cryp =
+ &cmd->command.encryption_info;
+ printf
+ ("\n"
+ " cryptoff: 0x%08x cryptsize: 0x%08x (endoff 0x%08x)"
+ " cryptid: %u\n",
+ cryp->cryptoff, cryp->cryptsize,
+ cryp->cryptoff + cryp->cryptsize,
+ cryp->cryptid);
+ }
+ break;
case BFD_MACH_O_LC_DYLD_INFO:
putchar ('\n');
dump_dyld_info (abfd, cmd);
diff --git a/include/mach-o/ChangeLog b/include/mach-o/ChangeLog
index 9e51505..2cbd47a 100644
--- a/include/mach-o/ChangeLog
+++ b/include/mach-o/ChangeLog
@@ -1,3 +1,9 @@
+2012-01-04 Tristan Gingold <gingold@adacore.com>
+
+ * external.h: Update copyright year.
+ (mach_o_symtab_command_external): Add comments.
+ (mach_o_encryption_info_command_external): New structure.
+
2011-12-16 Tristan Gingold <gingold@adacore.com>
* codesign.h: New file.
diff --git a/include/mach-o/external.h b/include/mach-o/external.h
index ebb09a7..23d9a5c 100644
--- a/include/mach-o/external.h
+++ b/include/mach-o/external.h
@@ -1,5 +1,5 @@
/* Mach-O support for BFD.
- Copyright 2011
+ Copyright 2011, 2012
Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -118,10 +118,10 @@ struct mach_o_reloc_info_external
struct mach_o_symtab_command_external
{
- unsigned char symoff[4];
- unsigned char nsyms[4];
- unsigned char stroff[4];
- unsigned char strsize[4];
+ unsigned char symoff[4]; /* File offset of the symbol table. */
+ unsigned char nsyms[4]; /* Number of symbols. */
+ unsigned char stroff[4]; /* File offset of the string table. */
+ unsigned char strsize[4]; /* String table size. */
};
struct mach_o_nlist_external
@@ -255,6 +255,13 @@ struct mach_o_version_min_command_external
unsigned char reserved[4];
};
+struct mach_o_encryption_info_command_external
+{
+ unsigned char cryptoff[4]; /* File offset of the encrypted area. */
+ unsigned char cryptsize[4]; /* Size of the encrypted area. */
+ unsigned char cryptid[4]; /* Encryption method. */
+};
+
struct mach_o_fat_header_external
{
unsigned char magic[4];