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.
This commit is contained in:
Tristan Gingold 2012-01-04 09:58:55 +00:00
parent 2ca7691a9b
commit fc55a90257
7 changed files with 79 additions and 8 deletions

View 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

View 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;
}

View 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;
}

View 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.

View 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);

View 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.

View 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];