summaryrefslogtreecommitdiff
path: root/src/unexmacosx.c
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2011-08-09 18:13:11 -0400
committerChong Yidong <cyd@stupidchicken.com>2011-08-09 18:13:11 -0400
commit7be1c708c5abc7dea388d45454bd19bff07b7943 (patch)
tree4d86b007b24388f25e83515bd86c42d14de9b77a /src/unexmacosx.c
parentebb552ed380b9f04e0c6b29374b3d32435837951 (diff)
parent8d96c9a4e700ad17921f8d2c90f4244bfa4b98b1 (diff)
downloademacs-7be1c708c5abc7dea388d45454bd19bff07b7943.tar.gz
Merge from emacs-23 branch
Diffstat (limited to 'src/unexmacosx.c')
-rw-r--r--src/unexmacosx.c37
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;