From e25c1a3064f0b57848f9826cc350e2b70a21e7e4 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Thu, 20 Sep 2012 17:28:48 +0900 Subject: [PATCH] Add new load command for Xcode 4.5. --- src/ChangeLog | 6 ++++++ src/unexmacosx.c | 21 ++++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 2b23ff7e9c..afaa7fd776 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2012-09-20 YAMAMOTO Mitsuharu + + * unexmacosx.c: Define LC_DATA_IN_CODE if not defined. + (print_load_command_name): Add case LC_DATA_IN_CODE. + (dump_it) [LC_DATA_IN_CODE]: Call copy_linkedit_data. + 2012-09-18 Glenn Morris * eval.c (Frun_hook_with_args_until_success) diff --git a/src/unexmacosx.c b/src/unexmacosx.c index b2b7c5f8e9..4c0d962dfb 100644 --- a/src/unexmacosx.c +++ b/src/unexmacosx.c @@ -117,6 +117,13 @@ along with GNU Emacs. If not, see . */ #include +/* LC_DATA_IN_CODE is not defined in mach-o/loader.h on OS X 10.7. + But it is used if we build with "Command Line Tools for Xcode 4.5 + (OS X Lion) - Septemper 2012". */ +#ifndef LC_DATA_IN_CODE +#define LC_DATA_IN_CODE 0x29 /* table of non-instructions in __text */ +#endif + #ifdef _LP64 #define mach_header mach_header_64 #define segment_command segment_command_64 @@ -614,6 +621,11 @@ print_load_command_name (int lc) printf ("LC_MAIN "); break; #endif +#ifdef LC_DATA_IN_CODE + case LC_DATA_IN_CODE: + printf ("LC_DATA_IN_CODE"); + break; +#endif #ifdef LC_SOURCE_VERSION case LC_SOURCE_VERSION: printf ("LC_SOURCE_VERSION"); @@ -1177,9 +1189,9 @@ copy_dyld_info (struct load_command *lc, long delta) #endif #ifdef LC_FUNCTION_STARTS -/* Copy a LC_FUNCTION_STARTS/LC_DYLIB_CODE_SIGN_DRS load command from - the input file to the output file, adjusting the data offset - field. */ +/* Copy a LC_FUNCTION_STARTS/LC_DATA_IN_CODE/LC_DYLIB_CODE_SIGN_DRS + load command from the input file to the output file, adjusting the + data offset field. */ static void copy_linkedit_data (struct load_command *lc, long delta) { @@ -1273,6 +1285,9 @@ dump_it (void) #endif #ifdef LC_FUNCTION_STARTS case LC_FUNCTION_STARTS: +#ifdef LC_DATA_IN_CODE + case LC_DATA_IN_CODE: +#endif #ifdef LC_DYLIB_CODE_SIGN_DRS case LC_DYLIB_CODE_SIGN_DRS: #endif -- 2.20.1