From 69f5395d5da7ade444b360e63311d2c6e7cbbe16 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 15 Apr 2018 07:22:18 -0600 Subject: [PATCH] cs: repairs for Linux build --- racket/src/cs/c/boot.c | 2 +- racket/src/cs/c/embed-boot.rkt | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/racket/src/cs/c/boot.c b/racket/src/cs/c/boot.c index 23623c404b..dee4e0cb9a 100644 --- a/racket/src/cs/c/boot.c +++ b/racket/src/cs/c/boot.c @@ -97,7 +97,7 @@ void racket_boot(int argc, char **argv, char *self, long segment_offset, lseek(fd1, pos1, SEEK_SET); Sregister_boot_file_fd("petite", fd1); - fd2 = open(self, O_RDONLY | O_BINARY); + fd2 = open(self, O_RDONLY | BOOT_O_BINARY); lseek(fd2, pos2, SEEK_SET); Sregister_boot_file_fd("scheme", fd2); } diff --git a/racket/src/cs/c/embed-boot.rkt b/racket/src/cs/c/embed-boot.rkt index 3cb9cdbcc1..db510a8b82 100644 --- a/racket/src/cs/c/embed-boot.rkt +++ b/racket/src/cs/c/embed-boot.rkt @@ -31,13 +31,21 @@ (add-racket-section src-file dest-file #".rackboot" (lambda (pos) (values data 'any1 'any2)))) + (define (ensure-executable dest-file) + (let* ([perms1 (file-or-directory-permissions dest-file 'bits)] + [perms2 (bitwise-ior user-read-bit user-write-bit user-execute-bit + perms1)]) + (unless (equal? perms1 perms2) + (file-or-directory-permissions dest-file perms2)))) (cond [start-pos ;; Success as ELF + (ensure-executable dest-file) start-pos] [else ;; Not ELF; just append to the end (copy-file src-file dest-file #t) + (ensure-executable dest-file) (define pos (file-size dest-file)) (call-with-output-file* dest-file