diff options
Diffstat (limited to 'user/gambit-c/0001-Avoid-fixnum-overflow-on-32-bit-machines-in-port-set.patch')
-rw-r--r-- | user/gambit-c/0001-Avoid-fixnum-overflow-on-32-bit-machines-in-port-set.patch | 439 |
1 files changed, 0 insertions, 439 deletions
diff --git a/user/gambit-c/0001-Avoid-fixnum-overflow-on-32-bit-machines-in-port-set.patch b/user/gambit-c/0001-Avoid-fixnum-overflow-on-32-bit-machines-in-port-set.patch deleted file mode 100644 index 9432f10a7..000000000 --- a/user/gambit-c/0001-Avoid-fixnum-overflow-on-32-bit-machines-in-port-set.patch +++ /dev/null @@ -1,439 +0,0 @@ -Patch requires bootstrap to regenerate C source file(s). - -See also: - - * https://git.adelielinux.org/adelie/packages/-/issues/926 - * https://github.com/gambit/gambit/issues/806 - -From eb287205c10b3bcf5f497b33b520f468837a18ec Mon Sep 17 00:00:00 2001 -From: Marc Feeley <feeley@iro.umontreal.ca> -Date: Sun, 18 Dec 2022 07:39:38 -0500 -Subject: [PATCH] Avoid fixnum overflow on 32 bit machines in - port-settings-set! - - -diff --git a/lib/_io#.scm b/lib/_io#.scm -index e205e8ad..f55124dc 100644 ---- a/lib/_io#.scm -+++ b/lib/_io#.scm -@@ -2,7 +2,7 @@ - - ;;; File: "_io#.scm" - --;;; Copyright (c) 1994-2021 by Marc Feeley, All Rights Reserved. -+;;; Copyright (c) 1994-2022 by Marc Feeley, All Rights Reserved. - - ;;;============================================================================ - -@@ -817,36 +817,37 @@ - - (##define-macro (macro-default-readtable) #f) - --(##define-macro (macro-char-encoding-shift) 1) --(##define-macro (macro-char-encoding-range) 32) --(##define-macro (macro-default-char-encoding) 0) --(##define-macro (macro-char-encoding-ASCII) 1) --(##define-macro (macro-char-encoding-ISO-8859-1) 2) --(##define-macro (macro-char-encoding-UTF-8) 3) --(##define-macro (macro-char-encoding-UTF-16) 4) --(##define-macro (macro-char-encoding-UTF-16BE) 5) --(##define-macro (macro-char-encoding-UTF-16LE) 6) --(##define-macro (macro-char-encoding-UTF-fallback-ASCII) 7) --(##define-macro (macro-char-encoding-UTF-fallback-ISO-8859-1) 8) --(##define-macro (macro-char-encoding-UTF-fallback-UTF-8) 9) --(##define-macro (macro-char-encoding-UTF-fallback-UTF-16) 10) --(##define-macro (macro-char-encoding-UTF-fallback-UTF-16BE) 11) --(##define-macro (macro-char-encoding-UTF-fallback-UTF-16LE) 12) --(##define-macro (macro-char-encoding-UCS-2) 13) --(##define-macro (macro-char-encoding-UCS-2BE) 14) --(##define-macro (macro-char-encoding-UCS-2LE) 15) --(##define-macro (macro-char-encoding-UCS-4) 16) --(##define-macro (macro-char-encoding-UCS-4BE) 17) --(##define-macro (macro-char-encoding-UCS-4LE) 18) --(##define-macro (macro-char-encoding-wchar) 19) --(##define-macro (macro-char-encoding-native) 20) -+(##define-macro (macro-char-encoding-shift) 0) -+(##define-macro (macro-char-encoding-mask) (* 31 (expt 2 0))) -+(##define-macro (macro-default-char-encoding) 0) -+(##define-macro (macro-char-encoding-ASCII) 1) -+(##define-macro (macro-char-encoding-ISO-8859-1) 2) -+(##define-macro (macro-char-encoding-UTF-8) 3) -+(##define-macro (macro-char-encoding-UTF-16) 4) -+(##define-macro (macro-char-encoding-UTF-16BE) 5) -+(##define-macro (macro-char-encoding-UTF-16LE) 6) -+(##define-macro (macro-char-encoding-UTF-fallback-ASCII) 7) -+(##define-macro (macro-char-encoding-UTF-fallback-ISO-8859-1)8) -+(##define-macro (macro-char-encoding-UTF-fallback-UTF-8) 9) -+(##define-macro (macro-char-encoding-UTF-fallback-UTF-16) 10) -+(##define-macro (macro-char-encoding-UTF-fallback-UTF-16BE) 11) -+(##define-macro (macro-char-encoding-UTF-fallback-UTF-16LE) 12) -+(##define-macro (macro-char-encoding-UCS-2) 13) -+(##define-macro (macro-char-encoding-UCS-2BE) 14) -+(##define-macro (macro-char-encoding-UCS-2LE) 15) -+(##define-macro (macro-char-encoding-UCS-4) 16) -+(##define-macro (macro-char-encoding-UCS-4BE) 17) -+(##define-macro (macro-char-encoding-UCS-4LE) 18) -+(##define-macro (macro-char-encoding-wchar) 19) -+(##define-macro (macro-char-encoding-native) 20) - - (##define-macro (macro-char-encoding-UTF) - `(macro-char-encoding-UTF-fallback-UTF-8)) - - (##define-macro (macro-max-unescaped-char options) -- `(let ((e (##fxmodulo (##fxquotient ,options (macro-char-encoding-shift)) -- (macro-char-encoding-range)))) -+ `(let ((e (##fxarithmetic-shift-right -+ (##fxand ,options (macro-char-encoding-mask)) -+ (macro-char-encoding-shift)))) - (cond ((##fx<= e (macro-char-encoding-ISO-8859-1)) - (if (##fx= e (macro-char-encoding-ISO-8859-1)) - (##integer->char #xff) -@@ -857,21 +858,21 @@ - (else - (##integer->char #x10ffff))))) - --(##define-macro (macro-char-encoding-errors-shift) 32) --(##define-macro (macro-char-encoding-errors-range) 4) -+(##define-macro (macro-char-encoding-errors-shift) 5) -+(##define-macro (macro-char-encoding-errors-mask) (* 3 (expt 2 5))) - (##define-macro (macro-default-char-encoding-errors) 0) - (##define-macro (macro-char-encoding-errors-on) 1) - (##define-macro (macro-char-encoding-errors-off) 2) - --(##define-macro (macro-eol-encoding-shift) 128) --(##define-macro (macro-eol-encoding-range) 4) -+(##define-macro (macro-eol-encoding-shift) 7) -+(##define-macro (macro-eol-encoding-mask) (* 3 (expt 2 7))) - (##define-macro (macro-default-eol-encoding) 0) - (##define-macro (macro-eol-encoding-lf) 1) - (##define-macro (macro-eol-encoding-cr) 2) - (##define-macro (macro-eol-encoding-crlf) 3) - --(##define-macro (macro-buffering-shift) 512) --(##define-macro (macro-buffering-range) 4) -+(##define-macro (macro-buffering-shift) 9) -+(##define-macro (macro-buffering-mask) (* 3 (expt 2 9))) - (##define-macro (macro-default-buffering) 0) - (##define-macro (macro-no-buffering) 1) - (##define-macro (macro-line-buffering) 2) -@@ -883,14 +884,14 @@ - (##define-macro (macro-fully-buffered? options) - `(##not (##fx< (##fxand ,options 2047) 1536))) - --(##define-macro (macro-decode-state-shift) 2048) --(##define-macro (macro-decode-state-range) 4) -+(##define-macro (macro-decode-state-shift) 11) -+(##define-macro (macro-decode-state-mask) (* 3 (expt 2 11))) - (##define-macro (macro-decode-state-none) 0) - (##define-macro (macro-decode-state-lf) 1) - (##define-macro (macro-decode-state-cr) 2) - --(##define-macro (macro-open-state-shift) 8192) --(##define-macro (macro-open-state-range) 2) -+(##define-macro (macro-open-state-shift) 13) -+(##define-macro (macro-open-state-mask) (* 1 (expt 2 13))) - (##define-macro (macro-open-state-open) 0) - (##define-macro (macro-open-state-closed) 1) - -@@ -903,15 +904,15 @@ - (##define-macro (macro-unclose! options) - `(##fxand ,options -8193)) - --(##define-macro (macro-permanent-close-shift) 16384) --(##define-macro (macro-permanent-close-range) 2) -+(##define-macro (macro-permanent-close-shift) 14) -+(##define-macro (macro-permanent-close-mask) (* 1 (expt 2 14))) - (##define-macro (macro-permanent-close-no) 0) - (##define-macro (macro-permanent-close-yes) 1) - - (##define-macro (macro-perm-close? options) - `(##not (##fx= (##fxand ,options 16384) 0))) - --(##define-macro (macro-direction-shift) 16) -+(##define-macro (macro-direction-shift) 4) - (##define-macro (macro-direction-in) 1) - (##define-macro (macro-direction-out) 2) - (##define-macro (macro-direction-inout) 3) -@@ -926,18 +927,18 @@ - - (##define-macro (macro-default-directory) #f) - --(##define-macro (macro-append-shift) 8) -+(##define-macro (macro-append-shift) 3) - (##define-macro (macro-no-append) 0) - (##define-macro (macro-append) 1) - (##define-macro (macro-default-append) 2) - --(##define-macro (macro-create-shift) 2) -+(##define-macro (macro-create-shift) 1) - (##define-macro (macro-no-create) 0) - (##define-macro (macro-maybe-create) 1) - (##define-macro (macro-create) 2) - (##define-macro (macro-default-create) 3) - --(##define-macro (macro-truncate-shift) 1) -+(##define-macro (macro-truncate-shift) 0) - (##define-macro (macro-no-truncate) 0) - (##define-macro (macro-truncate) 1) - (##define-macro (macro-default-truncate) 2) -diff --git a/lib/_io.scm b/lib/_io.scm -index d9387536..563d9664 100644 ---- a/lib/_io.scm -+++ b/lib/_io.scm -@@ -1046,17 +1046,22 @@ - (else - (error-improper-list)))))) - --(##define-macro (macro-stream-options-output-shift) 32768) -+(##define-macro (macro-stream-options-output-shift) 15) -+(##define-macro (macro-stream-options-input-mask) 32767) - - (define-prim (##psettings->roptions psettings default-options) - (##psettings-options->options - (macro-psettings-roptions psettings) -- (##fxmodulo default-options (macro-stream-options-output-shift)))) -+ (##fxand -+ default-options -+ (macro-stream-options-input-mask)))) - - (define-prim (##psettings->woptions psettings default-options) - (##psettings-options->options - (macro-psettings-woptions psettings) -- (##fxquotient default-options (macro-stream-options-output-shift)))) -+ (##fxwraplogical-shift-right -+ default-options -+ (macro-stream-options-output-shift)))) - - (define-prim (##psettings->input-readtable psettings) - (or (macro-psettings-options-readtable -@@ -1081,45 +1086,52 @@ - (macro-psettings-options-char-encoding-errors options))) - (##fx+ - (##fx+ -- (##fx* (macro-char-encoding-shift) -- (if (##fx= char-encoding (macro-default-char-encoding)) -- (##fxmodulo -- (##fxquotient default-options -- (macro-char-encoding-shift)) -- (macro-char-encoding-range)) -- char-encoding)) -- (##fx* (macro-char-encoding-errors-shift) -- (if (##fx= char-encoding-errors (macro-default-char-encoding-errors)) -- (##fxmodulo -- (##fxquotient default-options -- (macro-char-encoding-errors-shift)) -- (macro-char-encoding-errors-range)) -- char-encoding-errors)) -+ (##fxarithmetic-shift-left -+ (if (##fx= char-encoding (macro-default-char-encoding)) -+ (##fxarithmetic-shift-right -+ (##fxand -+ default-options -+ (macro-char-encoding-mask)) -+ (macro-char-encoding-shift)) -+ char-encoding) -+ (macro-char-encoding-shift)) -+ (##fxarithmetic-shift-left -+ (if (##fx= char-encoding-errors (macro-default-char-encoding-errors)) -+ (##fxarithmetic-shift-right -+ (##fxand -+ default-options -+ (macro-char-encoding-errors-mask)) -+ (macro-char-encoding-errors-shift)) -+ char-encoding-errors) -+ (macro-char-encoding-errors-shift)) - (##fx+ - (##fx+ -- (##fx* (macro-eol-encoding-shift) -- (if (##fx= eol-encoding (macro-default-eol-encoding)) -- (##fxmodulo -- (##fxquotient default-options -- (macro-eol-encoding-shift)) -- (macro-eol-encoding-range)) -- eol-encoding)) -+ (##fxarithmetic-shift-left -+ (if (##fx= eol-encoding (macro-default-eol-encoding)) -+ (##fxarithmetic-shift-right -+ (##fxand -+ default-options -+ (macro-eol-encoding-mask)) -+ (macro-eol-encoding-shift)) -+ eol-encoding) -+ (macro-eol-encoding-shift)) - (##fx+ -- (##fx* (macro-open-state-shift) -- (##fxmodulo -- (##fxquotient default-options -- (macro-open-state-shift)) -- (macro-open-state-range))) -+ (##fxand -+ default-options -+ (macro-open-state-mask)) - (##fx+ -- (##fx* (macro-permanent-close-shift) -- permanent-close) -- (##fx* (macro-buffering-shift) -- (if (##fx= buffering (macro-default-buffering)) -- (##fxmodulo -- (##fxquotient default-options -- (macro-buffering-shift)) -- (macro-buffering-range)) -- buffering)))))))))) -+ (##fxarithmetic-shift-left -+ permanent-close -+ (macro-permanent-close-shift)) -+ (##fxarithmetic-shift-left -+ (if (##fx= buffering (macro-default-buffering)) -+ (##fxarithmetic-shift-right -+ (##fxand -+ default-options -+ (macro-buffering-mask)) -+ (macro-buffering-shift)) -+ buffering) -+ (macro-buffering-shift)))))))))) - - (define-prim (##psettings->device-flags psettings) - (let ((direction -@@ -1131,30 +1143,34 @@ - (truncate - (macro-psettings-truncate psettings))) - (##fx+ -- (##fx* (macro-direction-shift) -- direction) -+ (##fxarithmetic-shift-left -+ direction -+ (macro-direction-shift)) - (##fx+ -- (##fx* (macro-append-shift) -- (if (##not (##fx= append (macro-default-append))) -- append -- (macro-no-append))) -+ (##fxarithmetic-shift-left -+ (if (##not (##fx= append (macro-default-append))) -+ append -+ (macro-no-append)) -+ (macro-append-shift)) - (##fx+ -- (##fx* (macro-create-shift) -- (cond ((##not (##fx= create (macro-default-create))) -- create) -- ((##fx= direction (macro-direction-out)) -- (macro-maybe-create)) -- (else -- (macro-no-create)))) -- (##fx* (macro-truncate-shift) -- (cond ((##not (##fx= truncate (macro-default-truncate))) -- truncate) -- ((##fx= direction (macro-direction-out)) -- (if (##fx= append (macro-append)) -- (macro-no-truncate) -- (macro-truncate))) -- (else -- (macro-no-truncate))))))))) -+ (##fxarithmetic-shift-left -+ (cond ((##not (##fx= create (macro-default-create))) -+ create) -+ ((##fx= direction (macro-direction-out)) -+ (macro-maybe-create)) -+ (else -+ (macro-no-create))) -+ (macro-create-shift)) -+ (##fxarithmetic-shift-left -+ (cond ((##not (##fx= truncate (macro-default-truncate))) -+ truncate) -+ ((##fx= direction (macro-direction-out)) -+ (if (##fx= append (macro-append)) -+ (macro-no-truncate) -+ (macro-truncate))) -+ (else -+ (macro-no-truncate))) -+ (macro-truncate-shift))))))) - - (define-prim (##psettings->permissions psettings default-permissions) - (let ((permissions (macro-psettings-permissions psettings))) -@@ -3282,12 +3298,14 @@ - (##psettings-options->options - options - (##fx+ -- (##fx* (macro-open-state-shift) -- (if (##fx= kind (macro-none-kind)) -- (macro-open-state-closed) -- (macro-open-state-open))) -- (##fx* (macro-buffering-shift) -- buffering)))) -+ (##fxarithmetic-shift-left -+ (if (##fx= kind (macro-none-kind)) -+ (macro-open-state-closed) -+ (macro-open-state-open)) -+ (macro-open-state-shift)) -+ (##fxarithmetic-shift-left -+ buffering -+ (macro-buffering-shift))))) - - ;;;---------------------------------------------------------------------------- - -@@ -6690,8 +6708,9 @@ - (macro-port-woptions port)) - (woptions - (##psettings->woptions psettings -- (##fx* old-woptions -- (macro-stream-options-output-shift))))) -+ (##fxarithmetic-shift-left -+ old-woptions -+ (macro-stream-options-output-shift))))) - (let ((code - (and (macro-output-port? port) - (##not (##fx= woptions old-woptions)) -@@ -6716,8 +6735,9 @@ - (##options-set! - port - (##fx+ roptions -- (##fx* woptions -- (macro-stream-options-output-shift))))))) -+ (##fxarithmetic-shift-left -+ woptions -+ (macro-stream-options-output-shift))))))) - (if (##fixnum? result) - (begin - (macro-port-mutex-unlock! port) -diff --git a/lib/_kernel#.scm b/lib/_kernel#.scm -index 9d3578f2..e00a4bba 100644 ---- a/lib/_kernel#.scm -+++ b/lib/_kernel#.scm -@@ -249,28 +249,28 @@ - - ;;; Debug settings. - --(##define-macro (macro-debug-settings-level-mask) 15) -+(##define-macro (macro-debug-settings-level-mask) (* 15 (expt 2 0))) - (##define-macro (macro-debug-settings-level-shift) 0) - --(##define-macro (macro-debug-settings-uncaught-mask) 16) -+(##define-macro (macro-debug-settings-uncaught-mask) (* 1 (expt 2 4))) - (##define-macro (macro-debug-settings-uncaught-primordial) 0) - (##define-macro (macro-debug-settings-uncaught-all) 1) - (##define-macro (macro-debug-settings-uncaught-shift) 4) - --(##define-macro (macro-debug-settings-error-mask) 96) -+(##define-macro (macro-debug-settings-error-mask) (* 3 (expt 2 5))) - (##define-macro (macro-debug-settings-error-repl) 0) - (##define-macro (macro-debug-settings-error-single-step) 1) - (##define-macro (macro-debug-settings-error-quit) 2) - (##define-macro (macro-debug-settings-error-shift) 5) - --(##define-macro (macro-debug-settings-repl-mask) 896) -+(##define-macro (macro-debug-settings-repl-mask) (* 7 (expt 2 7))) - (##define-macro (macro-debug-settings-repl-console) 0) - (##define-macro (macro-debug-settings-repl-stdio) 1) - (##define-macro (macro-debug-settings-repl-stdio-and-err) 2) - (##define-macro (macro-debug-settings-repl-client) 3) - (##define-macro (macro-debug-settings-repl-shift) 7) - --(##define-macro (macro-debug-settings-user-intr-mask) 3072) -+(##define-macro (macro-debug-settings-user-intr-mask) (* 3 (expt 2 10))) - (##define-macro (macro-debug-settings-user-intr-repl) 0) - (##define-macro (macro-debug-settings-user-intr-defer) 1) - (##define-macro (macro-debug-settings-user-intr-quit) 2) --- -2.25.1 - |