From 9ad7ed82c2332a7aca73eb26894e4900bae37018 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 20 Jun 2020 11:42:46 -0600 Subject: [PATCH] cs: fix embedded-bootfile offset for big-endian ppc32 --- racket/src/cs/c/embed-boot.rkt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/racket/src/cs/c/embed-boot.rkt b/racket/src/cs/c/embed-boot.rkt index 468a8f0960..81c570654f 100644 --- a/racket/src/cs/c/embed-boot.rkt +++ b/racket/src/cs/c/embed-boot.rkt @@ -113,11 +113,18 @@ (error 'embed-boot "cannot file boot-file offset tag")) (define terminator-len (bytes-length terminator)) - + + (define big-endian? + (if target + (case target + [("tppc32le") #t] + [else #f]) + (system-big-endian?))) + (file-position o (cdar m)) - (void (write-bytes (integer->integer-bytes pos 4 #t #f) o)) - (void (write-bytes (integer->integer-bytes (+ pos (bytes-length bstr1) terminator-len) 4 #t #f) o)) - (void (write-bytes (integer->integer-bytes (+ pos (bytes-length bstr1) (bytes-length bstr2) (* 2 terminator-len)) 4 #t #f) o))) + (void (write-bytes (integer->integer-bytes pos 4 #t big-endian?) o)) + (void (write-bytes (integer->integer-bytes (+ pos (bytes-length bstr1) terminator-len) 4 #t big-endian?) o)) + (void (write-bytes (integer->integer-bytes (+ pos (bytes-length bstr1) (bytes-length bstr2) (* 2 terminator-len)) 4 #t big-endian?) o))) (cond [(null? alt-dests)