unexmacosx.c: Now corrects the offset in two hints table to allow prebinding

to be redone and allow the executable to be stripped.
This commit is contained in:
Steven Tamm 2002-12-01 06:33:53 +00:00
parent b6f85fd7e0
commit 40e6ff959e
2 changed files with 28 additions and 0 deletions

View file

@ -1,3 +1,9 @@
2002-12-01 Steven Tamm <steventamm@mac.com>
* unexmacosx.c (copy_twolevelhints, dump_it): Now corrects the
offset in two hints table to allow prebinding to be redone and
allow the executable to be stripped.
2002-11-29 Dave Love <fx@gnu.org>
* fns.c (Frequire): Don't call LOADHIST_ATTACH if feature was

View file

@ -753,6 +753,25 @@ copy_dysymtab (struct load_command *lc)
curr_header_offset += lc->cmdsize;
}
/* Copy a LC_TWOLEVEL_HINTS load command from the input file to the output
file, adjusting the file offset fields. */
static void
copy_twolevelhints (struct load_command *lc)
{
struct twolevel_hints_command *tlhp = (struct twolevel_hints_command *) lc;
if (tlhp->nhints > 0) {
tlhp->offset += delta;
}
printf ("Writing LC_TWOLEVEL_HINTS command\n");
if (!unexec_write (curr_header_offset, lc, lc->cmdsize))
unexec_error ("cannot write two level hint command to header");
curr_header_offset += lc->cmdsize;
}
/* 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
@ -799,6 +818,9 @@ dump_it ()
case LC_DYSYMTAB:
copy_dysymtab (lca[i]);
break;
case LC_TWOLEVEL_HINTS:
copy_twolevelhints (lca[i]);
break;
default:
copy_other (lca[i]);
break;