Blob Blame Raw
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-68) unstable; urgency=medium
 .
   * Version_2_6_13pre57
Author: Camm Maguire <camm@debian.org>

---
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: 2018-03-09

--- gcl-2.6.12.orig/h/elf64_alpha_reloc_special.h
+++ gcl-2.6.12/h/elf64_alpha_reloc_special.h
@@ -65,7 +65,7 @@ label_got_symbols(void *v1,Shdr *sec1,Sh
   Sym *sym;
   Shdr *sec;
   void *v,*ve;
-  ul q=0,a;
+  ul a,b;
 
   for (sym=sym1;sym<syme;sym++)
     sym->st_other=sym->st_size=0;
--- gcl-2.6.12.orig/o/cmpaux.c
+++ gcl-2.6.12/o/cmpaux.c
@@ -348,6 +348,8 @@ call_init(int init_address,object memory
 
    */
 
+object *min_cfd_self=NULL;
+
 void
 do_init(object *statVV) {
 
@@ -386,6 +388,8 @@ do_init(object *statVV) {
   }
 
   data->cfd.cfd_self = statVV;
+  if (!min_cfd_self || data->cfd.cfd_self<min_cfd_self)
+    min_cfd_self=data->cfd.cfd_self;
   data->cfd.cfd_fillp= n;
   statVV[n-1] = data;
 
--- gcl-2.6.12.orig/o/fasdump.c
+++ gcl-2.6.12/o/fasdump.c
@@ -640,7 +640,7 @@ DEFUN_NEW("CLOSE-FASD",object,fSclose_fa
    if (type_of(fd->table)==t_vector)
      /* input uses a vector */
      {if (fd->table->v.v_self)
-	 fd->table->v.v_dim=0;/*self can be on the stack, and others write there*/
+	 gset(fd->table->v.v_self,0,fix(fd->index),aet_object);
     }
    else
      if(fd->direction==sKoutput)
--- gcl-2.6.12.orig/o/gbc.c
+++ gcl-2.6.12/o/gbc.c
@@ -446,6 +446,7 @@ mark_object_address(object *o,int f) {
 
   static ufixnum lp;
   static ufixnum lr;
+  extern object *min_cfd_self;
 
   ufixnum p=page(o);
 
@@ -455,7 +456,7 @@ mark_object_address(object *o,int f) {
 #ifdef SGC
       sgc_enabled ? WRITABLE_PAGE_P(lp) :
 #endif
-      1;
+      (o>=min_cfd_self && o<((object *)core_end));
   }
 
   if (lr)