bfd/
authorTristan Gingold <gingold@adacore.com>
Wed, 4 Jan 2012 09:58:55 +0000 (09:58 +0000)
committerTristan Gingold <gingold@adacore.com>
Wed, 4 Jan 2012 09:58:55 +0000 (09:58 +0000)
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.

binutils/
2012-01-04  Tristan Gingold  <gingold@adacore.com>

* od-macho.c: Update copyright year.
(dump_load_command): Handle BFD_MACH_O_LC_ENCRYPTION_INFO.

include/mach-o/
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.

bfd/ChangeLog
bfd/mach-o.c
bfd/mach-o.h
binutils/ChangeLog
binutils/od-macho.c
include/mach-o/ChangeLog
include/mach-o/external.h

index 0974a0aae8f8c1c3217d9588569268ca25b7b447..e3d2a4882b87ad7717761bbb4cec571ee91a69bc 100644 (file)
@@ -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
index 30b77d8057a9fbb299f7d75724249b4851b4f4ee..57c37d88dec007c9f1744c6c163c3481bdd78eee 100644 (file)
@@ -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;
     }
index da4363bee9cec9bd9964eac956c86a1b75159e92..b32b6a8962f4b56005d42098f7874d77eed1893a 100644 (file)
@@ -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;
 }
index b81c81d40f2ccd5fa5337063cc691be96e779887..a7a78c4d960276f3cd9008ff6ac0353ecd76772b 100644 (file)
@@ -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.
index c5e315dad3d0096774fd6ff5f18b68ca110620ca..fbdd53f3aa7488b198ebdcb926c8c9e1f0a2bc56 100644 (file)
@@ -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);
index 9e5150582cec93b9a4726852aee0dfd16dd3d489..2cbd47a4c588671ae3c4507c5741ebebd6cbc8b9 100644 (file)
@@ -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.
index ebb09a7761e11d0a659798b1f59e804e5abbfad7..23d9a5c006062a52eb7e2b9421a45b8a998b4020 100644 (file)
@@ -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];