diff options
author | Chong Yidong <cyd@stupidchicken.com> | 2011-08-09 18:13:11 -0400 |
---|---|---|
committer | Chong Yidong <cyd@stupidchicken.com> | 2011-08-09 18:13:11 -0400 |
commit | 7be1c708c5abc7dea388d45454bd19bff07b7943 (patch) | |
tree | 4d86b007b24388f25e83515bd86c42d14de9b77a /src/unexmacosx.c | |
parent | ebb552ed380b9f04e0c6b29374b3d32435837951 (diff) | |
parent | 8d96c9a4e700ad17921f8d2c90f4244bfa4b98b1 (diff) | |
download | emacs-7be1c708c5abc7dea388d45454bd19bff07b7943.tar.gz |
Merge from emacs-23 branch
Diffstat (limited to 'src/unexmacosx.c')
-rw-r--r-- | src/unexmacosx.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/unexmacosx.c b/src/unexmacosx.c index 04e3edf463e..0751eeacb9b 100644 --- a/src/unexmacosx.c +++ b/src/unexmacosx.c @@ -599,6 +599,16 @@ print_load_command_name (int lc) printf ("LC_DYLD_INFO_ONLY"); break; #endif +#ifdef LC_VERSION_MIN_MACOSX + case LC_VERSION_MIN_MACOSX: + printf ("LC_VERSION_MIN_MACOSX"); + break; +#endif +#ifdef LC_FUNCTION_STARTS + case LC_FUNCTION_STARTS: + printf ("LC_FUNCTION_STARTS"); + break; +#endif default: printf ("unknown "); } @@ -1135,6 +1145,28 @@ copy_dyld_info (struct load_command *lc, long delta) } #endif +#ifdef LC_FUNCTION_STARTS +/* Copy a LC_FUNCTION_STARTS 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) +{ + struct linkedit_data_command *ldp = (struct linkedit_data_command *) lc; + + if (ldp->dataoff > 0) + ldp->dataoff += delta; + + printf ("Writing "); + print_load_command_name (lc->cmd); + printf (" command\n"); + + if (!unexec_write (curr_header_offset, lc, lc->cmdsize)) + unexec_error ("cannot write linkedit data command to header"); + + curr_header_offset += lc->cmdsize; +} +#endif + /* Copy other kinds of load commands from the input file to the output file, ones that do not require adjustments of file offsets. */ static void @@ -1207,6 +1239,11 @@ dump_it (void) copy_dyld_info (lca[i], linkedit_delta); break; #endif +#ifdef LC_FUNCTION_STARTS + case LC_FUNCTION_STARTS: + copy_linkedit_data (lca[i], linkedit_delta); + break; +#endif default: copy_other (lca[i]); break; |