From 585f9d820199519c98c714c7954b48492f23d57d Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 19 Dec 2020 07:08:25 -0700 Subject: [PATCH] mach-o: fix linkedit vm length when ad hoc signing --- racket/collects/compiler/private/mach-o.rkt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/racket/collects/compiler/private/mach-o.rkt b/racket/collects/compiler/private/mach-o.rkt index 2afbe6b3a1..314657d9ff 100644 --- a/racket/collects/compiler/private/mach-o.rkt +++ b/racket/collects/compiler/private/mach-o.rkt @@ -492,8 +492,12 @@ (write-ulong padded-size out) ; data offset (write-ulong data-size out) ;; Update LINKEDIT length: - (file-position out (+ link-edit-pos 8 16 (* 3 (if link-edit-64? 8 4)))) - ((if link-edit-64? write-xulong write-ulong) (+ link-edit-len data-size (- padded-size orig-size)) out) + (let ([file-pos (+ link-edit-pos 8 16 (* 1 (if link-edit-64? 8 4)))] + [len (+ link-edit-len data-size (- padded-size orig-size))]) + (file-position out file-pos) + ((if link-edit-64? write-xulong write-ulong) (round-up-page len) out) ; vm-len + (file-position out (+ file-pos (* 2 (if link-edit-64? 8 4)))) + ((if link-edit-64? write-xulong write-ulong) len out)) ;; Add padding: (file-position out orig-size) (write-bytes (make-bytes (- padded-size orig-size) 0) out)