<short summary of the patch>
authorCamm Maguire <camm@debian.org>
Sun, 13 Nov 2022 12:55:14 +0000 (12:55 +0000)
committerCamm Maguire <camm@debian.org>
Sun, 13 Nov 2022 12:55:14 +0000 (12:55 +0000)
Bug-Debian: https://bugs.debian.org/995323

TODO: Put a short summary on the line above and replace this paragraph
with a longer explanation of this change. Complete the meta-information
with other relevant fields (see below for details). To make it easier, the
information below has been extracted from the changelog. Adjust it or drop
it.

gcl (2.6.12-105) unstable; urgency=medium

  * Version_2.6.13pre101
  * Bug fix: "fails to start with glibc 2.33", thanks to Andreas Kloeckner
    (Closes: #995323).

Gbp-Pq: Name Version_2_6_13pre102

h/elf64_s390_reloc.h
o/number.c

index 79a4bfa42ad6a990728c18dd53abae20fdba3045..cfa28e4d0fb682f3db699ed27de4f9b53bf5f3a9 100644 (file)
@@ -8,5 +8,6 @@
     add_ivals((int *)where,MASK(32),s+a-p);
     break;
   case     R_390_PC32DBL:
+  case     R_390_PLT32DBL:/*FIXME think about this*/
     add_ivals((int *)where,MASK(32),(s+a-p)>>1);
     break;
index dcb36f34e0742617ff623015e0acbe0b9cc9bd03..50e86932d276cbf1acfddcbbba5fcc855baba546 100755 (executable)
@@ -63,10 +63,21 @@ object small_fixnum ( int i ) {
 struct {int min,max;} bigger_fixnums;
 
 struct fixnum_struct *bigger_fixnum_table;
+#if !defined(IM_FIX_BASE) || defined(USE_SAFE_CDR)
+#define STATIC_BIGGER_FIXNUM_TABLE_BITS 10
+static struct fixnum_struct bigger_fixnum_table1[1<<(STATIC_BIGGER_FIXNUM_TABLE_BITS+1)];
+#endif
+
 DEFUN_NEW("ALLOCATE-BIGGER-FIXNUM-RANGE",object,fSallocate_bigger_fixnum_range,SI,2,2,NONE,OI,IO,OO,OO,(fixnum min,fixnum max),"")  {
   int j; 
   if (min > max) FEerror("Need Min <= Max",0);
-  bigger_fixnum_table=(void *)malloc(sizeof(struct fixnum_struct)*(max - min));
+
+#if !defined(IM_FIX_BASE) || defined(USE_SAFE_CDR)
+  if (min==-(1<<STATIC_BIGGER_FIXNUM_TABLE_BITS) && max==(1<<STATIC_BIGGER_FIXNUM_TABLE_BITS))
+    bigger_fixnum_table=bigger_fixnum_table1;
+  else
+#endif
+    bigger_fixnum_table=(void *)malloc(sizeof(struct fixnum_struct)*(max - min));
   
   for (j=min ; j < max ; j=j+1) {              
     object x=(object)(bigger_fixnum_table+j-min);
@@ -295,7 +306,7 @@ gcl_init_number(void)
 {
 
 #if !defined(IM_FIX_BASE) || defined(USE_SAFE_CDR)
-  FFN(fSallocate_bigger_fixnum_range)(-1024,1023);
+  FFN(fSallocate_bigger_fixnum_range)(-1024,1024);
 #endif
 
        shortfloat_zero = alloc_object(t_shortfloat);