[PATCH] Apply caretize only to the echoed line (5.4.0rc1 / mingw-msys)

2024-06-04 Thread Jani Hakala

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)

2021-08-25 Thread Jani Hakala

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

2020-01-09 Thread Jani Hakala

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

2020-01-09 Thread Jani Hakala

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

2019-11-26 Thread Jani Hakala

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

2019-11-17 Thread Jani Hakala


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