[PATCH] Apply caretize only to the echoed line (5.4.0rc1 / mingw-msys)
Hi, I was unable to build eggs with chicken scheme 5.4.0rc1 on windows (mingw-msys). egg-info files were empty. I noticed that ">>" was changed to "^>^>" in the code so nothing was written to egg-info files. Jani Hakala >From 53548a383a556c7b05ffa215250222c7f09e13d9 Mon Sep 17 00:00:00 2001 From: Jani Hakala Date: Tue, 4 Jun 2024 11:19:08 +0300 Subject: [PATCH] Apply caretize only to the echoed line --- egg-compile.scm | 18 ++ 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/egg-compile.scm b/egg-compile.scm index dd7c429e..7d4c463e 100644 --- a/egg-compile.scm +++ b/egg-compile.scm @@ -1185,14 +1185,16 @@ copy /y nul ~a~a~% ~a EOF mkdir ddir qdir - ddir dest - (string-intersperse (map (lambda (line) - (ensure-line-limit - (caretize (format "echo ~a >>~a~a" - line ddir dest)) - 8191 )) - (string-split infostr "\n")) - "\n")) + ddir dest + (string-intersperse (map (lambda (line) + (ensure-line-limit +(format "echo ~a >>~a~a" +(caretize line) +ddir +dest) +8191)) +(string-split infostr "\n")) + "\n")) ;;; some utilities for mangling + quoting -- 2.30.2
patch for chicken on 64-bit windows (msys and mingw-w64)
Hi, This patch seems to fix the problem with chicken-install when chicken-install -defaults ./setup.defaults -update-db appears to hang when installing chicken. >From e0fb00c8272f538f8d468564dc7a5ff2e3f76e5f Mon Sep 17 00:00:00 2001 From: Jani Hakala Date: Wed, 25 Aug 2021 19:49:17 +0300 Subject: [PATCH] Fix handle type Use intptr_t instead of int for handle returned by _findfirst in the opendir() implementation in file.scm. Without this fix, _findnext causes a segmentation fault on windows 10 (64bit, msys2, gcc 10.3.0) if "chicken-install -update-db" is started by gdb. --- file.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/file.scm b/file.scm index 18ce00f1..ca241854 100644 --- a/file.scm +++ b/file.scm @@ -77,7 +77,7 @@ struct dirent typedef struct { struct _finddata_t fdata; -int handle; +intptr_thandle; struct dirent current; } DIR; -- 2.30.2 Since mingw-w64 provides implementations for opendir and readdir, it might be better to use those i.e. -#if !defined(_WIN32) || defined(__CYGWIN__) +#if !defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) # include # include #else This would probably need more testing. Jani
Re: [PATCH] Add missing build dependencies to targets in makefile
Hi, One change was missing from the patch I sent, here is the new version. Jani >From c8ead9170697fcffce8ab3446d5225ddd3344c13 Mon Sep 17 00:00:00 2001 From: Jani Hakala Date: Wed, 8 Jan 2020 23:21:58 +0200 Subject: [PATCH] Add missing build dependencies to targets in makefile Add dependencies between * scheme source files, * chicken shared library and module import libraries, * chicken-do and C headers. --- rules.make | 43 --- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/rules.make b/rules.make index c461458e..fe582b61 100644 --- a/rules.make +++ b/rules.make @@ -208,8 +208,8 @@ lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(A): $(LIBCHICKEN_STATIC_OBJECTS) # import libraries and extensions -%.so: %.o - $(LINKER) $(LINKER_OPTIONS) $(LINKER_LINK_SHARED_DLOADABLE_OPTIONS) $^ $(LINKER_OUTPUT_OPTION) $@ \ +%.so: %.o $(LIBCHICKEN_SO_FILE) + $(LINKER) $(LINKER_OPTIONS) $(LINKER_LINK_SHARED_DLOADABLE_OPTIONS) $< $(LINKER_OUTPUT_OPTION) $@ \ $(LINKER_LIBRARY_PREFIX)$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(LINKER_LIBRARY_SUFFIX) \ $(LIBRARIES) @@ -252,7 +252,7 @@ $(eval $(call declare-program-from-object,$(CSI_STATIC_EXECUTABLE),csi)) # "chicken-do" -$(CHICKEN_DO_PROGRAM)$(EXE): $(SRCDIR)chicken-do.c +$(CHICKEN_DO_PROGRAM)$(EXE): $(SRCDIR)chicken-do.c chicken.h $(CHICKEN_CONFIG_H) $(C_COMPILER) $(C_COMPILER_OPTIONS) $(C_COMPILER_OPTIMIZATION_OPTIONS) $< -o $@ # scripts @@ -559,6 +559,8 @@ core.c: core.scm mini-srfi-1.scm \ chicken.compiler.scrutinizer.import.scm \ chicken.compiler.support.import.scm \ chicken.eval.import.scm \ + chicken.file.import.scm \ + chicken.fixnum.import.scm \ chicken.format.import.scm \ chicken.io.import.scm \ chicken.keyword.import.scm \ @@ -567,14 +569,17 @@ core.c: core.scm mini-srfi-1.scm \ chicken.string.import.scm optimizer.c: optimizer.scm mini-srfi-1.scm \ chicken.compiler.support.import.scm \ + chicken.fixnum.import.scm \ chicken.internal.import.scm \ chicken.sort.import.scm \ chicken.string.import.scm scheduler.c: scheduler.scm \ + chicken.fixnum.import.scm \ chicken.format.import.scm \ chicken.condition.import.scm scrutinizer.c: scrutinizer.scm mini-srfi-1.scm \ chicken.compiler.support.import.scm \ + chicken.fixnum.import.scm \ chicken.format.import.scm \ chicken.internal.import.scm \ chicken.io.import.scm \ @@ -589,6 +594,7 @@ lfa2.c: lfa2.scm mini-srfi-1.scm \ compiler-syntax.c: compiler-syntax.scm mini-srfi-1.scm \ chicken.compiler.support.import.scm \ chicken.compiler.core.import.scm \ + chicken.fixnum.import.scm \ chicken.format.import.scm chicken-ffi-syntax.c: chicken-ffi-syntax.scm \ chicken.format.import.scm \ @@ -599,6 +605,7 @@ support.c: support.scm mini-srfi-1.scm \ chicken.blob.import.scm \ chicken.condition.import.scm \ chicken.file.import.scm \ + chicken.fixnum.import.scm \ chicken.foreign.import.scm \ chicken.format.import.scm \ chicken.internal.import.scm \ @@ -631,6 +638,7 @@ csc.c: csc.scm \ chicken.string.import.scm csi.c: csi.scm \ chicken.condition.import.scm \ + chicken.file.import.scm \ chicken.foreign.import.scm \ chicken.format.import.scm \ chicken.gc.import.scm \ @@ -641,19 +649,23 @@ csi.c: csi.scm \ chicken.platform.import.scm \ chicken.port.import.scm \ chicken.pretty-print.import.scm \ + chicken.process.import.scm \ chicken.process-context.import.scm \ chicken.repl.import.scm \ chicken.sort.import.scm \ chicken.string.import.scm chicken-profile.c: chicken-profile.scm \ chicken.internal.import.scm \ + chicken.file.import.scm \ chicken.file.posix.import.scm \ + chicken.fixnum.import.scm \ chicken.process-context.import.scm \ chicken.sort.import.scm \ chicken.string.import.scm chicken-status.c: chicken-status.scm \ chicken.file.import.scm \ chicken.file.posix.import.scm \ + chicken.fixnum.import.scm \ chicken.foreign.import.scm \ chicken.format.import.scm \ chicken.irregex.import.scm \ @@ -667,8 +679,10 @@ chicken-install.c: chicken-install.scm \ chicken.condition.import.scm \ chicken.file.import.scm \ chicken.file.posix.import.scm \ + chicken.fixnum.import.scm \ chicken.foreign.import.scm \ chicken.format.import.scm \ + chicken.internal.import.scm \ chicken.io.import.scm \ chicken.irregex.import.scm \ chicken.pathname.import.scm \ @@ -681,6 +695,7 @@ chicken-install.c: chicken-install.scm \ chicken.tcp.import.scm chicken-uninstall.c: chicken-uninstall.scm \ chicken.file.import.scm \ + chicken.fixnum.import.scm \ chicken.foreign.import.scm \ chicken.format.import.scm \ chicken.irregex.import.scm \ @@ -690,10 +705,12 @@ chicken-uninstall.c: chicken-uninstall.scm \ chicken.process-context.import.scm \ chicken.string.import.scm chicken-syntax.c: chicken-syntax.scm \ + chicken.fixnum.import.scm \ chicken.
[PATCH] Add missing build dependencies to targets in makefile
Hi, This is my attempt to fix the build process so that parallel build works. Jani >From 40301be32b192a9021fe18ab9a75b00139bc956a Mon Sep 17 00:00:00 2001 From: Jani Hakala Date: Wed, 8 Jan 2020 23:21:58 +0200 Subject: [PATCH] Add missing build dependencies to targets in makefile Add dependencies between * scheme source files, * chicken shared library and module import libraries, * chicken-do and C headers. --- rules.make | 41 +++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/rules.make b/rules.make index c461458e..83507cd3 100644 --- a/rules.make +++ b/rules.make @@ -208,7 +208,7 @@ lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(A): $(LIBCHICKEN_STATIC_OBJECTS) # import libraries and extensions -%.so: %.o +%.so: %.o $(LIBCHICKEN_SO_FILE) $(LINKER) $(LINKER_OPTIONS) $(LINKER_LINK_SHARED_DLOADABLE_OPTIONS) $^ $(LINKER_OUTPUT_OPTION) $@ \ $(LINKER_LIBRARY_PREFIX)$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(LINKER_LIBRARY_SUFFIX) \ $(LIBRARIES) @@ -252,7 +252,7 @@ $(eval $(call declare-program-from-object,$(CSI_STATIC_EXECUTABLE),csi)) # "chicken-do" -$(CHICKEN_DO_PROGRAM)$(EXE): $(SRCDIR)chicken-do.c +$(CHICKEN_DO_PROGRAM)$(EXE): $(SRCDIR)chicken-do.c chicken.h $(CHICKEN_CONFIG_H) $(C_COMPILER) $(C_COMPILER_OPTIONS) $(C_COMPILER_OPTIMIZATION_OPTIONS) $< -o $@ # scripts @@ -559,6 +559,8 @@ core.c: core.scm mini-srfi-1.scm \ chicken.compiler.scrutinizer.import.scm \ chicken.compiler.support.import.scm \ chicken.eval.import.scm \ + chicken.file.import.scm \ + chicken.fixnum.import.scm \ chicken.format.import.scm \ chicken.io.import.scm \ chicken.keyword.import.scm \ @@ -567,14 +569,17 @@ core.c: core.scm mini-srfi-1.scm \ chicken.string.import.scm optimizer.c: optimizer.scm mini-srfi-1.scm \ chicken.compiler.support.import.scm \ + chicken.fixnum.import.scm \ chicken.internal.import.scm \ chicken.sort.import.scm \ chicken.string.import.scm scheduler.c: scheduler.scm \ + chicken.fixnum.import.scm \ chicken.format.import.scm \ chicken.condition.import.scm scrutinizer.c: scrutinizer.scm mini-srfi-1.scm \ chicken.compiler.support.import.scm \ + chicken.fixnum.import.scm \ chicken.format.import.scm \ chicken.internal.import.scm \ chicken.io.import.scm \ @@ -589,6 +594,7 @@ lfa2.c: lfa2.scm mini-srfi-1.scm \ compiler-syntax.c: compiler-syntax.scm mini-srfi-1.scm \ chicken.compiler.support.import.scm \ chicken.compiler.core.import.scm \ + chicken.fixnum.import.scm \ chicken.format.import.scm chicken-ffi-syntax.c: chicken-ffi-syntax.scm \ chicken.format.import.scm \ @@ -599,6 +605,7 @@ support.c: support.scm mini-srfi-1.scm \ chicken.blob.import.scm \ chicken.condition.import.scm \ chicken.file.import.scm \ + chicken.fixnum.import.scm \ chicken.foreign.import.scm \ chicken.format.import.scm \ chicken.internal.import.scm \ @@ -631,6 +638,7 @@ csc.c: csc.scm \ chicken.string.import.scm csi.c: csi.scm \ chicken.condition.import.scm \ + chicken.file.import.scm \ chicken.foreign.import.scm \ chicken.format.import.scm \ chicken.gc.import.scm \ @@ -641,19 +649,23 @@ csi.c: csi.scm \ chicken.platform.import.scm \ chicken.port.import.scm \ chicken.pretty-print.import.scm \ + chicken.process.import.scm \ chicken.process-context.import.scm \ chicken.repl.import.scm \ chicken.sort.import.scm \ chicken.string.import.scm chicken-profile.c: chicken-profile.scm \ chicken.internal.import.scm \ + chicken.file.import.scm \ chicken.file.posix.import.scm \ + chicken.fixnum.import.scm \ chicken.process-context.import.scm \ chicken.sort.import.scm \ chicken.string.import.scm chicken-status.c: chicken-status.scm \ chicken.file.import.scm \ chicken.file.posix.import.scm \ + chicken.fixnum.import.scm \ chicken.foreign.import.scm \ chicken.format.import.scm \ chicken.irregex.import.scm \ @@ -667,8 +679,10 @@ chicken-install.c: chicken-install.scm \ chicken.condition.import.scm \ chicken.file.import.scm \ chicken.file.posix.import.scm \ + chicken.fixnum.import.scm \ chicken.foreign.import.scm \ chicken.format.import.scm \ + chicken.internal.import.scm \ chicken.io.import.scm \ chicken.irregex.import.scm \ chicken.pathname.import.scm \ @@ -681,6 +695,7 @@ chicken-install.c: chicken-install.scm \ chicken.tcp.import.scm chicken-uninstall.c: chicken-uninstall.scm \ chicken.file.import.scm \ + chicken.fixnum.import.scm \ chicken.foreign.import.scm \ chicken.format.import.scm \ chicken.irregex.import.scm \ @@ -690,10 +705,12 @@ chicken-uninstall.c: chicken-uninstall.scm \ chicken.process-context.import.scm \ chicken.string.import.scm chicken-syntax.c: chicken-syntax.scm \ + chicken.fixnum.import.scm \ chicken.platform.import.scm \ chicken.internal.import.scm srfi-4.c: srfi-4.scm \ chicken.bitwise.import.scm \ + chicken.f
[PATCH] Fix too small memory allocations
Hi, This patch probably fixes #1637 Jani >From 9c6d8617c9391abfd400914a0f0733f749e10900 Mon Sep 17 00:00:00 2001 From: Jani Hakala Date: Wed, 20 Nov 2019 21:37:03 +0200 Subject: [PATCH] Fix too small memory allocations Memory allocation problems were detected by AddressSanitizer provided by gcc 9.2.1. When lolevel-tests.scm was run, AddressSanitizer pointed out bignum1 and bignum2 related problems in library.scm and srfi-4.scm. --- c-platform.scm | 7 +-- library.scm| 4 ++-- srfi-4.scm | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/c-platform.scm b/c-platform.scm index 61a4ac87..7d763b07 100644 --- a/c-platform.scm +++ b/c-platform.scm @@ -968,8 +968,11 @@ (rewrite 'chicken.memory#pointer-f32-set! 2 2 "C_u_i_pointer_f32_set" #f) (rewrite 'chicken.memory#pointer-f64-set! 2 2 "C_u_i_pointer_f64_set" #f) -(rewrite 'chicken.memory#pointer-u32-ref 16 1 "C_a_u_i_pointer_u32_ref" #f words-per-flonum) -(rewrite 'chicken.memory#pointer-s32-ref 16 1 "C_a_u_i_pointer_s32_ref" #f words-per-flonum) +;; on 32-bit platforms, 32-bit integers do not always fit in a word, +;; bignum1 and bignum wrapper (5 words) may be used instead +(rewrite 'chicken.memory#pointer-u32-ref 16 1 "C_a_u_i_pointer_u32_ref" #f 5) +(rewrite 'chicken.memory#pointer-s32-ref 16 1 "C_a_u_i_pointer_s32_ref" #f 5) + (rewrite 'chicken.memory#pointer-f32-ref 16 1 "C_a_u_i_pointer_f32_ref" #f words-per-flonum) (rewrite 'chicken.memory#pointer-f64-ref 16 1 "C_a_u_i_pointer_f64_ref" #f words-per-flonum) diff --git a/library.scm b/library.scm index e52d1452..7b8c577a 100644 --- a/library.scm +++ b/library.scm @@ -2468,7 +2468,7 @@ EOF (end (or hashes digits))) (and-let* ((end) (num (##core#inline_allocate - ("C_s_a_i_digits_to_integer" 5) + ("C_s_a_i_digits_to_integer" 6) str start (car end) radix neg?))) (when hashes; Eeewww. Feeling dirty yet? (set! seen-hashes? #t) @@ -2482,7 +2482,7 @@ EOF (and-let* ((start (if sign (fx+ start 1) start)) (end (scan-digits start))) (cons (##core#inline_allocate - ("C_s_a_i_digits_to_integer" 5) + ("C_s_a_i_digits_to_integer" 6) str start (car end) radix (eq? sign 'neg)) (cdr end))) (scan-decimal-tail ; The part after the decimal dot diff --git a/srfi-4.scm b/srfi-4.scm index 6faaa475..537d8288 100644 --- a/srfi-4.scm +++ b/srfi-4.scm @@ -209,13 +209,13 @@ EOF (define u32vector-ref (getter-with-setter - (lambda (x i) (##core#inline_allocate ("C_a_i_u32vector_ref" 4) x i)) + (lambda (x i) (##core#inline_allocate ("C_a_i_u32vector_ref" 5) x i)) u32vector-set! "(chicken.srfi-4#u32vector-ref v i)")) (define s32vector-ref (getter-with-setter - (lambda (x i) (##core#inline_allocate ("C_a_i_s32vector_ref" 4) x i)) + (lambda (x i) (##core#inline_allocate ("C_a_i_s32vector_ref" 5) x i)) s32vector-set! "(chicken.srfi-4#s32vector-ref v i)")) -- 2.20.1
Re: [PATCH] Fix allocation size for C_s_a_i_digits_to_integer
Hi, I found out that there seems to be two similar cases in srfi-4.scm (define u32vector-ref (getter-with-setter (lambda (x i) (##core#inline_allocate ("C_a_i_u32vector_ref" 4) x i)) u32vector-set! "(chicken.srfi-4#u32vector-ref v i)")) (define s32vector-ref (getter-with-setter (lambda (x i) (##core#inline_allocate ("C_a_i_s32vector_ref" 4) x i)) s32vector-set! "(chicken.srfi-4#s32vector-ref v))) Since C_a_i_u32vector_ref and C_a_i_s32vector_ref may end up calling bignum1, there should probably be 5 bytes allocated instead of 4. I found this by compiling chicken with gcc -fsanitize=address -fsanitize=aligment, and by linking also related libraries. Address sanitizer then reported potential problems. Jani