Description: <short summary of the patch>
 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).
Author: Camm Maguire <camm@debian.org>
Bug-Debian: https://bugs.debian.org/995323

---
The information above should follow the Patch Tagging Guidelines, please
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:

Origin: <vendor|upstream|other>, <url of original patch>
Bug: <url in upstream bugtracker>
Bug-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: <no|not-needed|url proving that it has been forwarded>
Reviewed-By: <name and email of someone who approved the patch>
Last-Update: 2021-11-04

--- gcl-2.6.12.orig/h/elf64_s390_reloc.h
+++ gcl-2.6.12/h/elf64_s390_reloc.h
@@ -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;
--- gcl-2.6.12.orig/o/number.c
+++ gcl-2.6.12/o/number.c
@@ -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);
