The package rpms/bigloo.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/bigloo.git/commit/?id=3e2c3d9ce51....
Change:
+%ifarch aarch64 ppc64 ppc64le
Thanks.
Full change:
============
commit 3e2c3d9ce513df35635554de7ed5a733d4f914ae
Author: Jerry James <loganjerry(a)gmail.com>
Date: Wed Jan 30 20:16:59 2019 -0700
Update to 4.3e.
Also:
- Build with custom GC for performance reasons.
- Add -return, -memread, and -params patches to fix runtime issues.
- Add -test patch to make %check exit on test failure (bz 1663605).
- Unlimit stack usage in the check script for s390x.
diff --git a/bigloo-callcc.patch b/bigloo-callcc.patch
new file mode 100644
index 0000000..fe1e62b
--- /dev/null
+++ b/bigloo-callcc.patch
@@ -0,0 +1,11 @@
+--- runtime/Clib/callcc.c.orig 2018-12-18 16:52:51.177402754 -0700
++++ runtime/Clib/callcc.c 2019-01-19 09:18:23.532808135 -0700
+@@ -264,7 +264,7 @@ call_cc( obj_t proc ) {
+ flush_regs_in_stack();
+
+ /* on recupere l'adresse du sommet de pile */
+- stack_top = (char *)bgl_get_top_of_stack();
++ stack_top = (char *)((unsigned long)bgl_get_top_of_stack() &
0xFFFFFFFFFFFFFC00UL);
+
+ /* on calcule la taille de la pile, en prevoyant que le GC peut */
+ /* flusher les registres dans la pile (REGISTER_SAVE_BUFFER) */
diff --git a/bigloo-endian.patch b/bigloo-endian.patch
deleted file mode 100644
index 951465b..0000000
--- a/bigloo-endian.patch
+++ /dev/null
@@ -1,303 +0,0 @@
---- api/gstreamer/src/Clib/bglgst.c.orig 2017-04-18 01:33:52.000000000 -0600
-+++ api/gstreamer/src/Clib/bglgst.c 2017-08-17 20:11:16.869429995 -0600
-@@ -1053,7 +1053,7 @@ bgl_gsttag_value_to_obj( const GstTagLis
- GDate *date;
-
- if( gst_tag_list_get_date( list, tag, &date ) )
-- return bgl_make_date( 1, 1, 1,
-+ return bgl_make_date( 0, 1, 1, 1,
- date->day, date->month, date->year,
- 0, 0, 0 );
- else
---- bde/bmem/lib/alloc.c.orig 2017-04-18 01:33:52.000000000 -0600
-+++ bde/bmem/lib/alloc.c 2017-08-17 21:40:37.460948521 -0600
-@@ -758,7 +758,7 @@ obj_t ident proto { \
- WRAPPER( string_to_bstring_len, STRING_TYPE_NUM, (char *s, int l), (s ,l) )
- WRAPPER( string_to_bstring, STRING_TYPE_NUM, (char *s), (s) )
- WRAPPER( make_string, STRING_TYPE_NUM, (int l, char c), (l,c) )
--WRAPPER( make_string_sans_fill, STRING_TYPE_NUM, (int l), (l) )
-+WRAPPER( make_string_sans_fill, STRING_TYPE_NUM, (long l), (l) )
- WRAPPER( string_append, STRING_TYPE_NUM, (void *s1, void *s2), (s1, s2) )
- WRAPPER( string_append_3, STRING_TYPE_NUM, (void *s1, void *s2, void *s3), (s1, s2, s3)
)
- WRAPPER( c_substring, STRING_TYPE_NUM, (void *s, int l1, int l2), (s, l1, l2) )
-@@ -812,7 +812,7 @@ WRAPPER( bgl_host, HOSTENT_TYPE_NUM, (ob
- /* date */
- WRAPPER( bgl_seconds_to_date, DATE_TYPE_NUM, (long s), (s) )
- WRAPPER( bgl_nanoseconds_to_date, DATE_TYPE_NUM, (long s), (s) )
--WRAPPER( bgl_make_date, DATE_TYPE_NUM, (int s, int m, int hr, int mday, int mon, int
year, long tz, bool_t istz, int isdst), (s, m, hr, mday, mon, year, tz, istz, isdst) )
-+WRAPPER( bgl_make_date, DATE_TYPE_NUM, (BGL_LONGLONG_T ns, int s, int m, int hr, int
mday, int mon, int year, long tz, bool_t istz, int isdst), (ns, s, m, hr, mday, mon, year,
tz, istz, isdst) )
- WRAPPER( bgl_seconds_format, STRING_TYPE_NUM, (long s, obj_t f), (s, f) )
-
- /* dynamic environment */
---- bde/bmem/lib/bmem.h.orig 2017-04-18 01:33:52.000000000 -0600
-+++ bde/bmem/lib/bmem.h 2017-08-17 20:10:11.444600428 -0600
-@@ -97,7 +97,7 @@ extern void (*____bgl_init_objects)();
- extern void *(*____string_to_bstring)( char * );
- extern void *(*____string_to_bstring_len)( char *, int );
- extern void *(*____make_string)( int, char );
--extern void *(*____make_string_sans_fill)( int );
-+extern void *(*____make_string_sans_fill)( long );
- extern void *(*____string_append)( void *, void * );
- extern void *(*____string_append_3)( void *, void *, void * );
- extern void *(*____c_substring)( void *, int, int );
-@@ -153,7 +153,7 @@ extern void *(*____bgl_host )( void * );
-
- extern void *(*____bgl_seconds_to_date )( long );
- extern void *(*____bgl_nanoseconds_to_date )( long );
--extern void *(*____bgl_make_date )( int, int, int, int, int, int, long, int, int );
-+extern void *(*____bgl_make_date )( BGL_LONGLONG_T, int, int, int, int, int, int, long,
bool_t, int );
- extern void *(*____bgl_seconds_format )( long, void * );
-
- extern void *(*____scheduler_start)( void * );
---- bde/bmem/lib/init.c.orig 2017-04-18 01:33:52.000000000 -0600
-+++ bde/bmem/lib/init.c 2017-08-17 20:09:43.116674223 -0600
-@@ -63,7 +63,7 @@ void *(*____make_bllong)( BGL_LONGLONG_T
- void *(*____string_to_bstring)( char * ) = 0;
- void *(*____string_to_bstring_len)( char *, int ) = 0;
- void *(*____make_string)( int, char ) = 0;
--void *(*____make_string_sans_fill)( int ) = 0;
-+void *(*____make_string_sans_fill)( long ) = 0;
- void *(*____string_append)( void *, void * ) = 0;
- void *(*____string_append_3)( void *, void *, void * ) = 0;
- void *(*____c_substring)( void *, int, int ) = 0;
-@@ -138,7 +138,7 @@ void *bgl_socket_accept_symbol, *bgl_soc
- /* date */
- void *(*____bgl_seconds_to_date )( long );
- void *(*____bgl_nanoseconds_to_date )( long );
--void *(*____bgl_make_date )( int, int, int, int, int, int, long, bool_t, int );
-+void *(*____bgl_make_date )( BGL_LONGLONG_T, int, int, int, int, int, int, long, bool_t,
int );
- void *(*____bgl_seconds_format )( long, void * );
-
- /* classes */
-@@ -421,7 +421,7 @@ bmem_init_inner() {
- /* date */
- ____bgl_seconds_to_date = (void *(*)( long ))get_function( hdl,
"bgl_seconds_to_date" );
- ____bgl_nanoseconds_to_date = (void *(*)( long ))get_function( hdl,
"bgl_nanoseconds_to_date" );
-- ____bgl_make_date = (void *(*)( int, int, int, int, int, int, long, bool_t, int
))get_function( hdl, "bgl_make_date" );
-+ ____bgl_make_date = (void *(*)( BGL_LONGLONG_T, int, int, int, int, int, int, long,
bool_t, int ))get_function( hdl, "bgl_make_date" );
- ____bgl_seconds_format = (void *(*)( long, void * ))get_function( hdl,
"bgl_seconds_format" );
-
- /* class */
---- runtime/Clib/callcc.c.orig 2017-04-18 01:33:52.000000000 -0600
-+++ runtime/Clib/callcc.c 2017-08-16 20:17:27.973583422 -0600
-@@ -24,7 +24,7 @@ extern int flush_regs_in_stack();
- /*---------------------------------------------------------------------*/
- extern long glob_dummy;
-
--extern obj_t make_fx_procedure();
-+extern obj_t make_fx_procedure( obj_t (*)(), int, int );
- extern obj_t c_constant_string_to_string( char * );
-
- static obj_t callcc_restore_stack();
---- runtime/Clib/cbinary.c.orig 2017-04-18 01:33:52.000000000 -0600
-+++ runtime/Clib/cbinary.c 2017-08-16 20:22:27.612760838 -0600
-@@ -50,8 +50,8 @@
- extern obj_t obj_to_string( obj_t, obj_t );
- extern obj_t string_to_obj( obj_t, obj_t, obj_t );
- extern obj_t c_constant_string_to_string( char * );
--extern obj_t make_string_sans_fill( int );
--extern obj_t bgl_string_shrink();
-+extern obj_t make_string_sans_fill( long );
-+extern obj_t bgl_string_shrink(obj_t, long);
-
- /*---------------------------------------------------------------------*/
- /* obj_t */
---- runtime/Clib/ccontrol.c.orig 2017-04-18 01:33:52.000000000 -0600
-+++ runtime/Clib/ccontrol.c 2017-08-17 18:00:48.466680487 -0600
-@@ -13,7 +13,7 @@
- /*---------------------------------------------------------------------*/
- /* External definitions. */
- /*---------------------------------------------------------------------*/
--extern obj_t make_string_sans_fill( int );
-+extern obj_t make_string_sans_fill( long );
-
- /*---------------------------------------------------------------------*/
- /* obj_t */
---- runtime/Clib/cports.c.orig 2017-04-18 07:58:03.442793433 -0600
-+++ runtime/Clib/cports.c 2017-08-17 18:00:21.020753088 -0600
-@@ -211,7 +211,7 @@ BGL_RUNTIME_DEF long default_io_bufsiz;
- /*---------------------------------------------------------------------*/
- BGL_RUNTIME_DECL obj_t bgl_make_input_port( obj_t, FILE *, obj_t, obj_t );
- extern obj_t make_string( int, unsigned char );
--extern obj_t make_string_sans_fill( int );
-+extern obj_t make_string_sans_fill( long );
-
- /*---------------------------------------------------------------------*/
- /* Prototypes */
---- runtime/Clib/cprocess.c.orig 2017-04-18 01:33:52.000000000 -0600
-+++ runtime/Clib/cprocess.c 2017-08-16 19:48:22.018342783 -0600
-@@ -58,7 +58,7 @@ extern long bgl_list_length( obj_t );
- extern char *bgl_string_to_gc_cstring( obj_t );
- extern obj_t string_to_bstring( char * );
- extern ssize_t bgl_syswrite( obj_t, char *, size_t );
--extern obj_t make_string_sans_fill( int );
-+extern obj_t make_string_sans_fill( long );
-
- /*---------------------------------------------------------------------*/
- /* Prototypes */
---- runtime/Clib/crgc.c.orig 2017-04-18 01:33:52.000000000 -0600
-+++ runtime/Clib/crgc.c 2017-08-16 19:47:29.602478903 -0600
-@@ -52,7 +52,7 @@
- extern obj_t bigloo_case_sensitive;
- extern obj_t bgl_string_to_keyword_len( char *, long );
- extern obj_t bgl_string_to_symbol_len( char *, long );
--extern obj_t make_string_sans_fill( int );
-+extern obj_t make_string_sans_fill( long );
- extern obj_t string_to_bstring_len( char *, int );
- extern int bgl_debug();
- extern obj_t bgl_escape_C_string( unsigned char *, long, long );
---- runtime/Clib/csocket.c.orig 2017-04-18 01:33:52.000000000 -0600
-+++ runtime/Clib/csocket.c 2017-08-16 19:47:05.555541352 -0600
-@@ -151,7 +151,7 @@ extern bool_t bigloo_strcmp( obj_t o1, o
- extern bool_t bgl_dns_enable_cache();
- extern long bgl_dns_cache_validity_timeout();
- extern ssize_t bgl_syswrite( obj_t, char *, size_t );
--extern obj_t make_string_sans_fill( int );
-+extern obj_t make_string_sans_fill( long );
-
- #ifndef _BGL_WIN32_VER
- extern int dup( int );
---- runtime/Clib/cstring.c.orig 2017-04-18 01:33:52.000000000 -0600
-+++ runtime/Clib/cstring.c 2017-08-16 19:15:09.183034824 -0600
-@@ -98,7 +98,7 @@ make_string( int len, unsigned char c )
- /*---------------------------------------------------------------------*/
- BGL_RUNTIME_DEF
- obj_t
--make_string_sans_fill( int len ) {
-+make_string_sans_fill( long len ) {
- obj_t string = GC_MALLOC_ATOMIC( STRING_SIZE + len );
-
- #if( !defined( TAG_STRING ) )
---- runtime/Ieee/port.scm.orig 2017-04-18 01:33:52.000000000 -0600
-+++ runtime/Ieee/port.scm 2017-08-17 17:56:18.284355211 -0600
-@@ -117,7 +117,7 @@
- "BGL_INPUT_PORT_LENGTH_SET")
- (macro c-input-port-last-token-position::elong (::input-port)
- "INPUT_PORT_TOKENPOS")
-- (macro c-input-port-bufsiz::int (::input-port)
-+ (macro c-input-port-bufsiz::long (::input-port)
- "BGL_INPUT_PORT_BUFSIZ")
- (macro c-closed-input-port?::bool (::obj)
- "INPUT_PORT_CLOSEP")
-@@ -130,7 +130,7 @@
-
- ($close-output-port::obj (::output-port) "bgl_close_output_port")
- (c-get-output-string::bstring (::output-port)"get_output_string")
-- (c-default-io-bufsiz::int "default_io_bufsiz")
-+ (c-default-io-bufsiz::long "default_io_bufsiz")
- (c-reset-eof::bool (::obj) "reset_eof")
- (macro c-flush-output-port::obj (::output-port)
- "bgl_flush_output_port")
-@@ -272,7 +272,7 @@
- "bgl_input_port_seek")
- (method static c-set-output-port-position!::obj (::output-port ::long)
- "bgl_output_port_seek")
-- (method static c-input-port-bufsiz::int (::input-port)
-+ (method static c-input-port-bufsiz::long (::input-port)
- "bgl_input_port_bufsiz")
-
- (method static c-closed-input-port?::bool (::input-port)
---- runtime/Include/bigloo.h.orig 2017-04-18 01:33:52.000000000 -0600
-+++ runtime/Include/bigloo.h 2017-08-16 19:20:31.534244922 -0600
-@@ -2613,7 +2613,7 @@ BGL_RUNTIME_DECL obj_t bgl_display_char(
- BGL_RUNTIME_DECL obj_t bgl_flush_output_port( obj_t );
- BGL_RUNTIME_DECL obj_t bgl_write( obj_t, unsigned char *, size_t );
-
--BGL_RUNTIME_DECL obj_t bgl_make_date();
-+BGL_RUNTIME_DECL obj_t bgl_make_date( BGL_LONGLONG_T, int, int, int, int, int, int,
long, bool_t, int );
-
- BGL_RUNTIME_DECL obj_t bgl_make_condvar( obj_t );
- BGL_RUNTIME_DECL obj_t bgl_make_mutex( obj_t );
-@@ -2640,7 +2640,7 @@ BGL_RUNTIME_DECL obj_t bgl_make_class( o
- obj_t, obj_t, obj_t, obj_t, obj_t,
- long, obj_t );
-
--BGL_RUNTIME_DECL obj_t bgl_getgroups();
-+BGL_RUNTIME_DECL obj_t bgl_getgroups( void );
-
- #if !HAVE_MMAP
- BGL_RUNTIME_DECL unsigned char bgl_mmap_nommap_ref( obj_t, long );
-@@ -2668,7 +2668,7 @@ BGL_RUNTIME_DECL obj_t bgl_make_server_s
- BGL_RUNTIME_DECL obj_t bgl_socket_accept( obj_t, bool_t, obj_t, obj_t );
- BGL_RUNTIME_DECL long bgl_socket_accept_many( obj_t, bool_t, obj_t, obj_t, obj_t );
-
--BGL_RUNTIME_DECL obj_t bgl_gethostname();
-+BGL_RUNTIME_DECL obj_t bgl_gethostname( void );
- BGL_RUNTIME_DECL obj_t bgl_socket_hostname( obj_t );
- BGL_RUNTIME_DECL obj_t bgl_datagram_socket_hostname( obj_t );
- BGL_RUNTIME_DECL obj_t bgl_getsockopt( obj_t, obj_t );
-@@ -2684,7 +2684,7 @@ BGL_RUNTIME_DECL obj_t bgl_regcomp( obj_
- BGL_RUNTIME_DECL obj_t bgl_regfree( obj_t );
- BGL_RUNTIME_DECL obj_t bgl_regmatch( obj_t, char *, bool_t, int, int );
-
--BGL_RUNTIME_DECL void bgl_restore_signal_handlers();
-+BGL_RUNTIME_DECL void bgl_restore_signal_handlers( void );
- extern void bps_bassign(obj_t *field, obj_t value, obj_t obj);
- extern void bps_bmassign(obj_t *field, obj_t value);
-
---- runtime/Include/bigloo_string.h.orig 2017-04-18 01:33:52.000000000 -0600
-+++ runtime/Include/bigloo_string.h 2017-08-16 19:13:56.990231034 -0600
-@@ -24,7 +24,7 @@ extern "C" {
- /*---------------------------------------------------------------------*/
- /* extern */
- /*---------------------------------------------------------------------*/
--BGL_RUNTIME_DECL obj_t make_string_sans_fill();
-+BGL_RUNTIME_DECL obj_t make_string_sans_fill( long );
- BGL_RUNTIME_DECL obj_t string_to_bstring( char * );
- BGL_RUNTIME_DECL obj_t string_to_bstring_len( char *, int );
- BGL_RUNTIME_DECL obj_t close_init_string();
---- runtime/objs/obj_s/Ieee/input.c.orig 2017-04-18 01:34:28.000000000 -0600
-+++ runtime/objs/obj_s/Ieee/input.c 2017-08-17 17:55:53.445404901 -0600
-@@ -189,7 +189,7 @@ extern int rgc_buffer_unget_char(obj_t,
- static obj_t BGl_list4817z00zz__r4_input_6_10_2z00 = BUNSPEC;
- static obj_t BGl_z62portzd2ze3stringzd2listz81zz__r4_input_6_10_2z00(obj_t, obj_t);
- BGL_EXPORTED_DECL obj_t BGl_readzd2charszd2zz__r4_input_6_10_2z00(obj_t, obj_t);
--extern int default_io_bufsiz;
-+extern long default_io_bufsiz;
- BGL_EXPORTED_DECL obj_t BGl_readzd2charsz12zc0zz__r4_input_6_10_2z00(obj_t, obj_t,
obj_t);
- extern obj_t BGl_bigloozd2typezd2errorz00zz__errorz00(obj_t, obj_t, obj_t);
- static obj_t BGl_z62filezd2ze3stringz53zz__r4_input_6_10_2z00(obj_t, obj_t);
---- runtime/objs/obj_s/Ieee/port.c.orig 2017-04-18 01:34:27.000000000 -0600
-+++ runtime/objs/obj_s/Ieee/port.c 2017-08-17 17:56:04.311383514 -0600
-@@ -341,7 +341,7 @@ static obj_t BGl_z62inputzd2portzd2fillz
- static obj_t BGl_z62outputzd2stringzd2portzf3z91zz__r4_ports_6_10_1z00(obj_t, obj_t);
- static obj_t BGl_z62withzd2outputzd2tozd2stringzb0zz__r4_ports_6_10_1z00(obj_t, obj_t);
- static obj_t BGl_z62currentzd2outputzd2portz62zz__r4_ports_6_10_1z00(obj_t);
--extern int default_io_bufsiz;
-+extern long default_io_bufsiz;
- BGL_EXPORTED_DECL obj_t BGl_openzd2inputzd2czd2stringzd2zz__r4_ports_6_10_1z00(char *);
- static obj_t BGl_z62setzd2inputzd2portzd2positionz12za2zz__r4_ports_6_10_1z00(obj_t,
obj_t, obj_t);
- BGL_EXPORTED_DECL obj_t BGl_openzd2outputzd2procedurez00zz__r4_ports_6_10_1z00(obj_t,
obj_t, obj_t, obj_t);
---- runtime/objs/obj_u/Ieee/input.c.orig 2017-04-18 01:34:17.000000000 -0600
-+++ runtime/objs/obj_u/Ieee/input.c 2017-08-17 17:55:17.648475358 -0600
-@@ -183,7 +183,7 @@ extern "C"
- obj_t);
- BGL_EXPORTED_DECL obj_t BGl_readzd2charszd2zz__r4_input_6_10_2z00(obj_t,
- obj_t);
-- extern int default_io_bufsiz;
-+ extern long default_io_bufsiz;
- BGL_EXPORTED_DECL obj_t BGl_readzd2charsz12zc0zz__r4_input_6_10_2z00(obj_t,
- obj_t, obj_t);
- extern obj_t BGl_bigloozd2typezd2errorz00zz__errorz00(obj_t, obj_t, obj_t);
---- runtime/objs/obj_u/Ieee/port.c.orig 2017-04-18 01:34:16.000000000 -0600
-+++ runtime/objs/obj_u/Ieee/port.c 2017-08-17 17:55:34.920441363 -0600
-@@ -557,7 +557,7 @@ extern "C"
- static obj_t
- BGl_z62withzd2outputzd2tozd2stringzb0zz__r4_ports_6_10_1z00(obj_t, obj_t);
- static obj_t BGl_keyword2396z00zz__r4_ports_6_10_1z00 = BUNSPEC;
-- extern int default_io_bufsiz;
-+ extern long default_io_bufsiz;
- BGL_EXPORTED_DECL obj_t
- BGl_openzd2outputzd2procedurez00zz__r4_ports_6_10_1z00(obj_t, obj_t, obj_t,
- obj_t);
---- runtime/objs/obj_u/Unsafe/gunzip.c.orig 2017-04-18 01:34:10.000000000 -0600
-+++ runtime/objs/obj_u/Unsafe/gunzip.c 2017-08-17 17:54:54.949520035 -0600
-@@ -214,7 +214,7 @@ extern "C"
- obj_t, obj_t, long, obj_t, long, obj_t, obj_t, long, obj_t, obj_t, obj_t,
- obj_t, obj_t);
- extern obj_t BGl_readzd2charszd2zz__r4_input_6_10_2z00(obj_t, obj_t);
-- extern int default_io_bufsiz;
-+ extern long default_io_bufsiz;
- extern obj_t BGl_readzd2charsz12zc0zz__r4_input_6_10_2z00(obj_t, obj_t,
- obj_t);
- extern bool_t BGl_za7erozf3z54zz__r4_numbers_6_5z00(obj_t);
diff --git a/bigloo-format.patch b/bigloo-format.patch
index 642c9fa..8362471 100644
--- a/bigloo-format.patch
+++ b/bigloo-format.patch
@@ -1,5 +1,5 @@
---- api/avahi/src/Clib/bglavahi.c.orig 2018-01-26 02:50:10.000000000 -0700
-+++ api/avahi/src/Clib/bglavahi.c 2018-01-26 21:23:03.713356639 -0700
+--- api/avahi/src/Clib/bglavahi.c.orig 2018-12-18 06:25:53.000000000 -0700
++++ api/avahi/src/Clib/bglavahi.c 2018-12-18 16:51:27.563649530 -0700
@@ -482,7 +482,7 @@ AvahiStringList *
bgl_avahi_list_to_string_list( obj_t p ) {
// MS: 28 feb 2017
@@ -9,14 +9,14 @@
while( PAIRP( p ) ) {
l = avahi_string_list_add( l, BSTRING_TO_STRING( CAR( p ) ) );
---- comptime/Cc/exec.c.orig 2018-01-26 02:50:51.000000000 -0700
-+++ comptime/Cc/exec.c 2018-01-26 21:23:03.714356635 -0700
+--- comptime/Cc/exec.c.orig 2018-12-18 06:26:34.000000000 -0700
++++ comptime/Cc/exec.c 2018-12-18 16:51:27.564649527 -0700
@@ -342,7 +342,7 @@ extern "C"
BSTRING_TO_STRING(BGl_za2shellza2z00zzengine_paramz00);
- BgL_arg1033z00_37 =
+ BgL_arg1030z00_37 =
execl(BgL_tmpz00_118, BgL_auxz00_120, BgL_auxz00_122,
- BgL_auxz00_124, 0L);
+ BgL_auxz00_124, NULL);
}
- bgl_display_obj(BINT(BgL_arg1033z00_37), BgL_port1017z00_36);
+ bgl_display_obj(BINT(BgL_arg1030z00_37), BgL_port1016z00_36);
}
diff --git a/bigloo-memread.patch b/bigloo-memread.patch
new file mode 100644
index 0000000..4aab67d
--- /dev/null
+++ b/bigloo-memread.patch
@@ -0,0 +1,39 @@
+--- runtime/Clib/csocket.c.orig 2018-12-18 16:52:09.914524595 -0700
++++ runtime/Clib/csocket.c 2018-12-18 16:52:39.254438046 -0700
+@@ -1703,8 +1703,8 @@ bgl_socket_localp( obj_t sock ) {
+ if( SOCKET( sock ).stype == BGL_SOCKET_SERVER ) {
+ return 0;
+ } else {
+- struct sockaddr_in sin;
+- int len = sizeof( sin );
++ struct sockaddr_storage sstor;
++ int len = sizeof( sstor );
+
+ if( getsockname( SOCKET( sock ).fd,
+ (struct sockaddr *)&sin,
+@@ -1718,12 +1718,14 @@ bgl_socket_localp( obj_t sock ) {
+ socket_error( "socket-localp", buffer, sock );
+ } else if( SOCKET( sock ).family == AF_INET ) {
+ /* ipv4 addr */
+- return sin.sin_addr.s_addr == SOCKET( sock ).address.in_addr.s_addr;
++ struct sockaddr_in *sin = (struct sockaddr_in *)(void *)&sstor;
++ return sin->sin_addr.s_addr == SOCKET( sock ).address.in_addr.s_addr;
+ } else {
+ /* ipv6 addr */
+ /* MS: 17nov2014 don't know how to implement this */
++ struct sockaddr_in6 *sin = (struct sockaddr_in6 *)(void *)&sstor;
+ fprintf( stderr, "(%s:%d) IPV6 UNTESTED\n", __FILE__, __LINE__ );
+- return memcmp( (char *)&(((struct sockaddr_in6 *)( &sin ))->sin6_addr),
++ return memcmp( (char *)&(sin->sin6_addr),
+ (char *)&(SOCKET( sock ).address.in6_addr),
+ sizeof( (SOCKET( sock ).address.in6_addr) ) );
+ }
+@@ -2632,7 +2634,7 @@ bgl_make_datagram_server_socket( int por
+ int s;
+ struct addrinfo hints, *servinfo, *p;
+ int rv;
+- char service[ 10 ];
++ char service[ 12 ];
+ obj_t sock, buf, inb, iport;
+ FILE *fs;
+
diff --git a/bigloo-noreturn.patch b/bigloo-noreturn.patch
index 669da35..ed640ad 100644
--- a/bigloo-noreturn.patch
+++ b/bigloo-noreturn.patch
@@ -1,5 +1,5 @@
---- runtime/Clib/capply.c.orig 2018-02-04 23:59:28.000000000 -0700
-+++ runtime/Clib/capply.c 2018-02-06 21:33:57.993891387 -0700
+--- runtime/Clib/capply.c.orig 2018-12-18 06:25:53.000000000 -0700
++++ runtime/Clib/capply.c 2018-12-18 16:52:09.912524601 -0700
@@ -13,7 +13,7 @@
/*---------------------------------------------------------------------*/
/* Les recuperations externes */
@@ -9,8 +9,8 @@
extern long bgl_list_length( obj_t );
/*---------------------------------------------------------------------*/
---- runtime/Clib/cmain.c.orig 2018-02-04 23:59:28.000000000 -0700
-+++ runtime/Clib/cmain.c 2018-02-06 21:34:17.066831885 -0700
+--- runtime/Clib/cmain.c.orig 2018-12-18 06:25:53.000000000 -0700
++++ runtime/Clib/cmain.c 2018-12-18 16:52:09.913524598 -0700
@@ -40,7 +40,7 @@ extern void cref();
extern void memshow();
extern void bgl_init_eval_cnst();
@@ -20,9 +20,29 @@
extern void bgl_init_objects();
extern obj_t bigloo_exit_apply( obj_t );
extern void *bgl_callcc_get_top_of_stack( void * );
---- runtime/Include/bigloo.h.orig 2018-02-04 23:59:28.000000000 -0700
-+++ runtime/Include/bigloo.h 2018-02-06 21:32:06.924237894 -0700
-@@ -2270,7 +2270,7 @@ struct befored {
+--- runtime/Clib/csocket.c.orig 2018-12-18 06:25:53.000000000 -0700
++++ runtime/Clib/csocket.c 2018-12-18 16:52:09.914524595 -0700
+@@ -254,7 +254,7 @@ bgl_init_socket() {
+ /* static void */
+ /* socket_error ... */
+ /*---------------------------------------------------------------------*/
+-static void
++static void __attribute__((noreturn))
+ socket_error( const char *who, const char *message, obj_t object ) {
+ C_SYSTEM_FAILURE( BGL_IO_ERROR, (char *)who, (char *)message, object );
+ }
+@@ -263,7 +263,7 @@ socket_error( const char *who, const cha
+ /* static void */
+ /* socket_timeout_error ... */
+ /*---------------------------------------------------------------------*/
+-static void
++static void __attribute__((noreturn))
+ socket_timeout_error( obj_t hostname, int port ) {
+ char buffer[ 512 ];
+
+--- runtime/Include/bigloo.h.orig 2018-12-18 06:25:53.000000000 -0700
++++ runtime/Include/bigloo.h 2018-12-18 16:52:09.915524592 -0700
+@@ -2277,7 +2277,7 @@ BGL_RUNTIME_DECL obj_t (*bgl_multithread
/*---------------------------------------------------------------------*/
/* The external declarations */
/*---------------------------------------------------------------------*/
diff --git a/bigloo-params.patch b/bigloo-params.patch
new file mode 100644
index 0000000..97f15da
--- /dev/null
+++ b/bigloo-params.patch
@@ -0,0 +1,108 @@
+--- runtime/Clib/callcc.c.orig 2018-12-18 06:25:53.000000000 -0700
++++ runtime/Clib/callcc.c 2018-12-18 16:52:51.177402754 -0700
+@@ -27,7 +27,7 @@ extern long glob_dummy;
+ extern obj_t make_fx_procedure( obj_t (*)(), int, int );
+ extern obj_t c_constant_string_to_string( char * );
+
+-static obj_t callcc_restore_stack();
++static obj_t callcc_restore_stack( obj_t, obj_t, char ** );
+ extern obj_t unwind_stack_until( struct exitd *, obj_t, obj_t, obj_t );
+ extern bool_t unwind_stack_value_p( obj_t );
+ extern void *bgl_get_top_of_stack();
+--- runtime/Clib/cerror.c.orig 2018-12-18 06:25:53.000000000 -0700
++++ runtime/Clib/cerror.c 2018-12-18 16:52:51.178402751 -0700
+@@ -23,9 +23,8 @@ extern int errno;
+ /* Les recuperations externes */
+ /*---------------------------------------------------------------------*/
+ #ifndef _MSC_VER
+-extern void perror();
+-extern char *strerror( int );
+-extern void exit( int );
++#include <stdio.h>
++#include <stdlib.h>
+ #endif
+ extern obj_t bgl_typeof( obj_t );
+
+--- runtime/Clib/cinit_obj.c.orig 2018-12-18 06:25:53.000000000 -0700
++++ runtime/Clib/cinit_obj.c 2018-12-18 16:52:51.179402747 -0700
+@@ -43,7 +43,7 @@ BGL_RUNTIME_DEF union nanobj bigloo_nan,
+ /*---------------------------------------------------------------------*/
+ /* Importations */
+ /*---------------------------------------------------------------------*/
+-extern obj_t string_to_obj();
++extern obj_t string_to_obj(obj_t, obj_t, obj_t);
+ extern void bgl_init_dynamic_env();
+ extern void bgl_init_symbol_table();
+ extern void bgl_init_socket();
+--- runtime/Clib/cmain.c.orig 2018-12-18 16:52:25.221479441 -0700
++++ runtime/Clib/cmain.c 2018-12-18 16:52:51.179402747 -0700
+@@ -36,8 +36,8 @@ BGL_RUNTIME_DEF long heap_size = DEFAULT
+ /*---------------------------------------------------------------------*/
+ /* Des recuperations externes */
+ /*---------------------------------------------------------------------*/
+-extern void cref();
+-extern void memshow();
++extern obj_t cref(obj_t);
++extern void memshow( char *, char *, long );
+ extern void bgl_init_eval_cnst();
+ extern obj_t c_constant_string_to_string( char * );
+ extern void c_error( char *, char *, int ) __attribute__((noreturn));
+@@ -48,7 +48,7 @@ extern void bgl_end_io();
+ extern void GC_set_all_interior_pointers( int );
+
+ #ifndef _MSC_VER
+-extern char *getenv();
++#include <stdlib.h>
+ #endif
+
+ /*---------------------------------------------------------------------*/
+--- runtime/Clib/cports.c.orig 2018-12-18 16:52:25.222479438 -0700
++++ runtime/Clib/cports.c 2018-12-18 16:52:51.179402747 -0700
+@@ -113,7 +113,7 @@
+ /*---------------------------------------------------------------------*/
+ #if( BGL_HAVE_SENDFILE )
+ # if( BGL_SENDFILE_BRAND == BGL_SENDFILE_LINUX )
+-extern ssize_t sendfile( int, int, off_t *, size_t );
++# include <sys/sendfile.h>
+ # define BGL_SENDFILE sendfile
+ # else
+ # if( BGL_SENDFILE_BRAND == BGL_SENDFILE_BSD )
+--- runtime/Clib/cprocess.c.orig 2018-12-18 06:25:53.000000000 -0700
++++ runtime/Clib/cprocess.c 2018-12-18 16:52:51.180402745 -0700
+@@ -57,7 +57,7 @@ extern obj_t bgl_close_input_port( obj_t
+ extern long bgl_list_length( obj_t );
+ extern char *bgl_string_to_gc_cstring( obj_t );
+ extern obj_t string_to_bstring( char * );
+-extern ssize_t bgl_syswrite( obj_t, char *, size_t );
++extern ssize_t bgl_syswrite( obj_t, const void *, size_t );
+ extern obj_t make_string_sans_fill( long );
+
+ /*---------------------------------------------------------------------*/
+--- runtime/Clib/csocket.c.orig 2018-12-18 16:52:39.254438046 -0700
++++ runtime/Clib/csocket.c 2018-12-18 16:52:51.180402745 -0700
+@@ -149,12 +149,11 @@ extern unsigned char bgl_get_hash_number
+ extern bool_t bigloo_strcmp( obj_t o1, obj_t o2 );
+ extern bool_t bgl_dns_enable_cache();
+ extern long bgl_dns_cache_validity_timeout();
+-extern ssize_t bgl_syswrite( obj_t, char *, size_t );
++extern ssize_t bgl_syswrite( obj_t, const void *, size_t );
+ extern obj_t make_string_sans_fill( long );
+
+ #ifndef _BGL_WIN32_VER
+-extern int dup( int );
+-extern int close( int );
++#include <unistd.h>
+ #endif
+
+ /*---------------------------------------------------------------------*/
+--- runtime/Clib/inline_alloc.c.orig 2018-12-18 06:25:53.000000000 -0700
++++ runtime/Clib/inline_alloc.c 2018-12-18 16:52:51.180402745 -0700
+@@ -38,7 +38,7 @@ gcollect_verbose( unsigned long heapsz,
+ GC_API void
+ bgl_gc_verbose_set( bool_t verbose ) {
+ #if( (BGL_GC == BGL_BOEHM_GC) && BGL_GC_CUSTOM )
+- extern void GC_add_gc_hook();
++ extern void GC_add_gc_hook( void (*f)() );
+
+ if( verbose ) {
+ fprintf( stderr, "bgl_gc_verbose on...\n" );
diff --git a/bigloo-return.patch b/bigloo-return.patch
new file mode 100644
index 0000000..fda7ee4
--- /dev/null
+++ b/bigloo-return.patch
@@ -0,0 +1,33 @@
+--- runtime/Clib/cmain.c.orig 2018-12-18 16:52:09.913524598 -0700
++++ runtime/Clib/cmain.c 2018-12-18 16:52:25.221479441 -0700
+@@ -116,10 +116,6 @@ bigloo_exit( obj_t val ) {
+
+ n = (long)INTEGERP( val ) ? (long)CINT( val ) : 0;
+ exit( n );
+-
+- BGL_MUTEX_UNLOCK( bgl_exit_mutex() );
+-
+- return val;
+ }
+
+ /*---------------------------------------------------------------------*/
+--- runtime/Clib/cports.c.orig 2018-12-18 16:51:21.828666449 -0700
++++ runtime/Clib/cports.c 2018-12-18 16:52:25.222479438 -0700
+@@ -1823,6 +1823,7 @@ bgl_input_port_seek( obj_t port, long po
+ "input-port does not support seeking",
+ port );
+ }
++ return port;
+ }
+
+ /*---------------------------------------------------------------------*/
+--- runtime/Clib/crgc.c.orig 2018-12-18 06:25:53.000000000 -0700
++++ runtime/Clib/crgc.c 2018-12-18 16:52:25.223479435 -0700
+@@ -859,6 +859,7 @@ int rgc_debug_port( obj_t port, char *ms
+ port, BSTRING_TO_STRING( INPUT_PORT_NAME( port ) ),
+ matchstart, matchstop, forward, bufpos, bufsiz,
+ eof ? "eof" : "" );
++ return 0;
+ }
+
+
diff --git a/bigloo-test.patch b/bigloo-test.patch
new file mode 100644
index 0000000..a6af261
--- /dev/null
+++ b/bigloo-test.patch
@@ -0,0 +1,9 @@
+--- api/text/recette/recette.scm.orig 2018-12-18 06:25:53.000000000 -0700
++++ api/text/recette/recette.scm 2019-01-09 20:43:01.779795257 -0700
+@@ -159,4 +159,5 @@
+ (format " ~a succeeded\n ~a failed ~a"
+ *success*
+ (length *failure*)
+- (reverse *failure*))))))
++ (reverse *failure*))))
++ (exit (length *failure*))))
diff --git a/bigloo.spec b/bigloo.spec
index b872dc8..be96955 100644
--- a/bigloo.spec
+++ b/bigloo.spec
@@ -17,9 +17,13 @@
%global pkg %{name}
%global pkgname Bigloo
+# Bigloo has a customized copy of gc
+%bcond_without customgc
+%global bundledgc 7.6.2
+
Name: bigloo
-Version: 4.3c
-Release: 2%{?patch_ver:.%{patch_ver}}%{?prerel:.%{prerel}}%{?dist}
+Version: 4.3e
+Release: 1%{?patch_ver:.%{patch_ver}}%{?prerel:.%{prerel}}%{?dist}
Summary: A compiler for the Scheme programming language
License: GPLv2+
@@ -34,11 +38,22 @@ Patch1: %{name}-stat64.patch
Patch2: %{name}-format.patch
# Not yet sent upstream: add some noreturn attributes
Patch3: %{name}-noreturn.patch
+# Fix functions that should return a value but do not
+Patch4: %{name}-return.patch
+# Fix reading past the limits of a stack buffer
+Patch5: %{name}-memread.patch
+# Fix declarations of function parameters, causes problems on big endian arches
+Patch6: %{name}-params.patch
+# Make the test suite fail if individual tests fail
+Patch7: %{name}-test.patch
+# Round top of stack to a multiple of 1024. Fixes stack overflow on s390x.
+Patch8: %{name}-callcc.patch
BuildRequires: emacs
BuildRequires: xemacs
BuildRequires: xemacs-packages-extra
BuildRequires: gcc
+BuildRequires: gcc-c++
BuildRequires: indent
BuildRequires: java-devel
BuildRequires: jpackage-utils
@@ -48,10 +63,15 @@ BuildRequires: alsa-lib-devel
BuildRequires: avahi-devel
BuildRequires: dbus-devel
BuildRequires: flac-devel
+%if %{without customgc}
BuildRequires: gc-devel
+%endif
BuildRequires: gmp-devel
BuildRequires: gstreamer-devel
BuildRequires: gstreamer-plugins-base-devel
+%if %{with customgc}
+BuildRequires: libatomic_ops-devel
+%endif
BuildRequires: libphidget-devel
BuildRequires: libunistring-devel
BuildRequires: libuv-devel
@@ -68,13 +88,21 @@ Requires: emacs-filesystem >= %{_emacs_version}
Requires: xemacs-filesystem >= %{_xemacs_version}
Requires: indent
Requires: gmp-devel%{?_isa}
+%if %{without customgc}
Requires: gc-devel%{?_isa}
+%endif
Requires: gcc
Requires: glibc-devel%{?_isa}
+%if %{with customgc}
+Requires: libatomic_ops-devel%{?_isa}
+%endif
Requires: libgcc%{?_isa}
Requires: libunistring-devel%{?_isa}
Requires: libuv-devel%{?_isa}
+%if %{with customgc}
+Provides: bundled(gc) = %{bundledgc}
+%endif
%description
Bigloo is a Scheme implementation devoted to one goal: enabling a Scheme
@@ -103,11 +131,7 @@ environment.
%prep
-%setup -q -n %{name}%{version}%{?patch_suffix}
-%patch0
-%patch1
-%patch2
-%patch3
+%autosetup -p0 -n %{name}%{version}%{?patch_suffix}
# encoding fixes
for f in README.md examples/Socket/socket.scm manuals/bigloo*.html \
@@ -131,12 +155,18 @@ find examples -name Makefile -print0 | xargs -0 \
sed -i 's|include.*Makefile.config|include
%{_libdir}/bigloo/%{version}/Makefile.config|g'
# fix missing linkage
+%if %{without customgc}
sed -i 's/^extralibs="-lm"/extralibs="-lgc -lm"/' configure
sed -i 's/LDOPTS=\"/&-Wl,--as-needed -lgc /' Makefile.misc
+%endif
# Defeat attempts at inserting unnecessary rpaths
sed -ri 's/ ?-Wl,-rpath=[^"]+(")/\1/' configure
+# Work around division by zero issue in 4.3c - 4.3e
+%ifarch aarch64 ppc64 ppc64le
+sed -i 's/a \. b/+inf.0 . +inf.0/' recette/error.scm
+%endif
%build
%define inplace $PWD/inplace
@@ -160,7 +190,11 @@ sed -i -e "s/^jcflags=-O$/jcflags=-deprecation/" configure
--jvm=yes \
--javaprefix=%{_jvmdir}/java/bin \
--bee=full \
+%if %{with customgc}
+ --customgc=yes \
+%else
--customgc=no \
+%endif
--coflags="$CFLAGS" \
--cpicflags="-fPIC" \
--sharedbde=yes \
@@ -184,6 +218,9 @@ env LD_LIBRARY_PATH=$PWD/lib/bigloo/%{version} \
BIGLOOLIB=%{inplace}%{_libdir}/bigloo/%{version} \
make compile-bee
+# Other permissions are missing from a lot of files
+chmod -R o+r .
+
%install
mkdir -p %{buildroot}%{_emacs_sitelispdir}/bigloo
@@ -265,11 +302,8 @@ cat > %{buildroot}%{_xemacs_sitestartdir}/bigloo.el <<EOF
EOF
-%ldconfig_scriptlets libs
-
-
%check
-export LD_LIBRARY_PATH=$PWD/inplace/%{_libdir}/bigloo/%{version}
+ulimit -s unlimited
make test
@@ -298,6 +332,16 @@ make test
%changelog
+* Wed Jan 30 2019 Jerry James <loganjerry(a)gmail.com> - 4.3e-1
+- Update to 4.3e
+- Build with custom GC for performance reasons
+- Add -return, -memread, and -params patches to fix runtime issues
+- Add -test patch to make %%check exit on test failure (bz 1663605)
+- Unlimit stack usage in the check script for s390x
+
+* Sat Jan 5 2019 Tim Landscheidt <tim(a)tim-landscheidt.de> - 4.3c-2
+- Do not set LD_LIBRARY_PATH in %%check
+
* Fri Jan 4 2019 Tim Landscheidt <tim(a)tim-landscheidt.de> - 4.3c-2
- Fix setting compiling user for XEmacs byte-compiled files
diff --git a/sources b/sources
index 189fdd5..1600c1c 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (bigloo4.3c.tar.gz) =
161a2e0abe9d83e7b386f01b2db090a3db654d4fa3dbea5b96bf7699a454dc5a9eeb17686aac5c39033ae675a5a8177ae0ff1fb43d79b0bb6596998a8ceaa081
+SHA512 (bigloo4.3e.tar.gz) =
e1b8a5b937dae570420a7b79c5a8bb1ced57fb4aa611494d24c5ec300aa4f3314d91d74b3072c09ef23fc4f18cbc8dd312bd62aa16adcf8ef5704c824d90cd15