[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#321100: marked as done (Fix mips libffi brokenness)



Your message dated Mon, 08 Aug 2005 09:17:24 -0700
with message-id <E1E2AJY-0006ds-00@spohr.debian.org>
and subject line Bug#321100: fixed in gcc-4.0 4.0.1-4
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--------------------------------------
Received: (at submit) by bugs.debian.org; 3 Aug 2005 12:26:50 +0000
>From ths@networkno.de Wed Aug 03 05:26:50 2005
Return-path: <ths@networkno.de>
Received: from mx02.qsc.de [213.148.130.14] 
	by spohr.debian.org with esmtp (Exim 3.36 1 (Debian))
	id 1E0IKg-0007XK-00; Wed, 03 Aug 2005 05:26:50 -0700
Received: from port-195-158-168-34.dynamic.qsc.de ([195.158.168.34] helo=hattusa.textio)
	by mx02.qsc.de with esmtp (Exim 3.35 #1)
	id 1E0IKA-0002Du-00
	for submit@bugs.debian.org; Wed, 03 Aug 2005 14:26:18 +0200
Received: from ths by hattusa.textio with local (Exim 4.52)
	id 1E0IK9-0008Mp-MX
	for submit@bugs.debian.org; Wed, 03 Aug 2005 14:26:17 +0200
Date: Wed, 3 Aug 2005 14:26:17 +0200
To: submit@bugs.debian.org
Subject: Fix mips libffi brokenness
Message-ID: <[🔎] 20050803122617.GK29782@hattusa.textio>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.5.9i
From: Thiemo Seufer <ths@networkno.de>
Delivered-To: submit@bugs.debian.org
X-Spam-Checker-Version: SpamAssassin 2.60-bugs.debian.org_2005_01_02 
	(1.212-2003-09-23-exp) on spohr.debian.org
X-Spam-Level: 
X-Spam-Status: No, hits=-6.4 required=4.0 tests=BAYES_00,HAS_PACKAGE,
	UPPERCASE_25_50 autolearn=no version=2.60-bugs.debian.org_2005_01_02

Package: libffi4
Version: 4.0.1-2
Tags: patch

The appended patch fixes 12 failures in the libffi testsuite. Tested on
big endian o32 mips.


Thiemo


--- src/libffi/src/mips/ffi.c.orig	2005-07-28 14:51:20.000000000 +0200
+++ src/libffi/src/mips/ffi.c	2005-08-03 14:10:27.000000000 +0200
@@ -27,7 +27,6 @@
 #include <ffi_common.h>
 
 #include <stdlib.h>
-#include <sgidefs.h>
 #include <sys/cachectl.h>
 
 #if _MIPS_SIM == _ABIN32
@@ -51,17 +50,17 @@ static void ffi_prep_args(char *stack, 
 			  int bytes,
 			  int flags)
 {
-  register int i;
-  register void **p_argv;
-  register char *argp;
-  register ffi_type **p_arg;
+  int i;
+  void **p_argv;
+  char *argp;
+  ffi_type **p_arg;
 
 #if _MIPS_SIM == _ABIN32
   /* If more than 8 double words are used, the remainder go
      on the stack. We reorder stuff on the stack here to 
      support this easily. */
-  if (bytes > 8 * FFI_SIZEOF_ARG)
-    argp = &stack[bytes - (8 * FFI_SIZEOF_ARG)];
+  if (bytes > 8 * sizeof(ffi_arg))
+    argp = &stack[bytes - (8 * sizeof(ffi_arg))];
   else
     argp = stack;
 #else
@@ -86,102 +85,93 @@ static void ffi_prep_args(char *stack, 
   for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; i; i--, p_arg++)
     {
       size_t z;
-      unsigned short a;
+      unsigned int a;
 
-      /* Align if necessary */
+      /* Align if necessary.  */
       a = (*p_arg)->alignment;
-      if (a < FFI_SIZEOF_ARG)
-        a = FFI_SIZEOF_ARG;
+      if (a < sizeof(ffi_arg))
+        a = sizeof(ffi_arg);
       
-      if ((a - 1) & (unsigned) argp) {
-	argp = (char *) ALIGN(argp, a);
-	FIX_ARGP;
-      }
+      if ((a - 1) & (unsigned int) argp)
+	{
+	  argp = (char *) ALIGN(argp, a);
+	  FIX_ARGP;
+	}
 
-#if _MIPS_SIM == _MIPS_SIM_ABI32
-#define OFFSET 0
-#else
-#define OFFSET sizeof(int)
-#endif      
+      z = (*p_arg)->size;
+      if (z <= sizeof(ffi_arg))
+	{
+	  z = sizeof(ffi_arg);
 
-	  z = (*p_arg)->size;
-	  if (z < sizeof(ffi_arg))
+	  switch ((*p_arg)->type)
 	    {
-	      z = sizeof(ffi_arg);
-
-	      switch ((*p_arg)->type)
-		{
-		case FFI_TYPE_SINT8:
-		  *(SINT32 *) &argp[OFFSET] = (SINT32)*(SINT8 *)(* p_argv);
-		  break;
-		  
-		case FFI_TYPE_UINT8:
-		  *(UINT32 *) &argp[OFFSET] = (UINT32)*(UINT8 *)(* p_argv);
-		  break;
+	      case FFI_TYPE_SINT8:
+		*(ffi_arg *)argp = *(SINT8 *)(* p_argv);
+		break;
+
+	      case FFI_TYPE_UINT8:
+		*(ffi_arg *)argp = *(UINT8 *)(* p_argv);
+		break;
 		  
-		case FFI_TYPE_SINT16:
-		  *(SINT32 *) &argp[OFFSET] = (SINT32)*(SINT16 *)(* p_argv);
-		  break;
+	      case FFI_TYPE_SINT16:
+		*(ffi_arg *)argp = *(SINT16 *)(* p_argv);
+		break;
 		  
-		case FFI_TYPE_UINT16:
-		  *(UINT32 *) &argp[OFFSET] = (UINT32)*(UINT16 *)(* p_argv);
-		  break;
+	      case FFI_TYPE_UINT16:
+		*(ffi_arg *)argp = *(UINT16 *)(* p_argv);
+		break;
 		  
-		case FFI_TYPE_SINT32:
-		  *(SINT32 *) &argp[OFFSET] = (SINT32)*(SINT32 *)(* p_argv);
-		  break;
+	      case FFI_TYPE_SINT32:
+		*(ffi_arg *)argp = *(SINT32 *)(* p_argv);
+		break;
 		  
-		case FFI_TYPE_UINT32:
-		case FFI_TYPE_POINTER:
-		  *(UINT32 *) &argp[OFFSET] = (UINT32)*(UINT32 *)(* p_argv);
-		  break;
-
-		  /* This can only happen with 64bit slots */
-		case FFI_TYPE_FLOAT:
-		  *(float *) argp = *(float *)(* p_argv);
-		  break;
-
-		  /* Handle small structures */
-		case FFI_TYPE_STRUCT:
-		  memcpy(argp, *p_argv, (*p_arg)->size);
-		  break;
-
-		default:
-		  FFI_ASSERT(0);
-		}
+	      case FFI_TYPE_UINT32:
+	      case FFI_TYPE_POINTER:
+		*(ffi_arg *)argp = *(UINT32 *)(* p_argv);
+		break;
+
+	      /* This can only happen with 64bit slots.  */
+	      case FFI_TYPE_FLOAT:
+		*(float *) argp = *(float *)(* p_argv);
+		break;
+
+	      /* Handle small structures.  */
+	      case FFI_TYPE_STRUCT:
+	      default:
+		memcpy(argp, *p_argv, (*p_arg)->size);
+		break;
 	    }
-	  else
-	    {
-#if _MIPS_SIM == _MIPS_SIM_ABI32	      
-	      memcpy(argp, *p_argv, z);
+	}
+      else
+	{
+#if _MIPS_SIM == _ABIO32
+	  memcpy(argp, *p_argv, z);
 #else
-	      {
-		unsigned end = (unsigned) argp+z;
-		unsigned cap = (unsigned) stack+bytes;
+	  {
+	    unsigned end = (unsigned) argp+z;
+	    unsigned cap = (unsigned) stack+bytes;
+
+	    /* Check if the data will fit within the register space.
+	       Handle it if it doesn't.  */
 
-		/* Check if the data will fit within the register
-		   space. Handle it if it doesn't. */
+	    if (end <= cap)
+	      memcpy(argp, *p_argv, z);
+	    else
+	      {
+		unsigned portion = end - cap;
 
-		if (end <= cap)
-		  memcpy(argp, *p_argv, z);
-		else
-		  {
-		    unsigned portion = end - cap;
-
-		    memcpy(argp, *p_argv, portion);
-		    argp = stack;
-		    memcpy(argp, 
-			   (void*)((unsigned)(*p_argv)+portion), z - portion);
-		  }
+		memcpy(argp, *p_argv, portion);
+		argp = stack;
+		memcpy(argp,
+		       (void*)((unsigned)(*p_argv)+portion), z - portion);
 	      }
+	  }
 #endif
-	    }
-	  p_argv++;
-	  argp += z;
-	  FIX_ARGP;
+      }
+      p_argv++;
+      argp += z;
+      FIX_ARGP;
     }
-  
-  return;
 }
 
 #if _MIPS_SIM == _ABIN32
@@ -480,7 +470,7 @@ void ffi_call(ffi_cif *cif, void (*fn)()
     
   switch (cif->abi) 
     {
-#if _MIPS_SIM == _MIPS_SIM_ABI32
+#if _MIPS_SIM == _ABIO32
     case FFI_O32:
     case FFI_O32_SOFT_FLOAT:
       ffi_call_O32(ffi_prep_args, &ecif, cif->bytes, 
@@ -525,8 +515,8 @@ ffi_prep_closure (ffi_closure *closure,
 #endif /* FFI_MIPS_O32 */
 
   tramp[0] = 0x3c190000 | (fn >> 16);     /* lui  $25,high(fn) */
-  tramp[1] = 0x3c080000 | (ctx >> 16);    /* lui  $8,high(ctx) */
-  tramp[2] = 0x37390000 | (fn & 0xffff);  /* ori  $25,low(fn)  */
+  tramp[1] = 0x37390000 | (fn & 0xffff);  /* ori  $25,low(fn)  */
+  tramp[2] = 0x3c080000 | (ctx >> 16);    /* lui  $8,high(ctx) */
   tramp[3] = 0x03200008;                  /* jr   $25          */
   tramp[4] = 0x35080000 | (ctx & 0xffff); /* ori  $8,low(ctx)  */
 
@@ -559,16 +549,18 @@ ffi_prep_closure (ffi_closure *closure,
  */
 int
 ffi_closure_mips_inner_O32 (ffi_closure *closure,
-			    void *rvalue, unsigned long *ar,
+			    void *rvalue, ffi_arg *ar,
 			    double *fpr)
 {
   ffi_cif *cif;
-  void **avalue;
+  void **avaluep;
+  ffi_arg *avalue;
   ffi_type **arg_types;
   int i, avn, argn, seen_int;
 
   cif = closure->cif;
-  avalue = alloca (cif->nargs * sizeof (void *));
+  avalue = alloca (cif->nargs * sizeof (ffi_arg));
+  avaluep = alloca (cif->nargs * sizeof (ffi_arg));
 
   seen_int = (cif->abi == FFI_O32_SOFT_FLOAT);
   argn = 0;
@@ -589,13 +581,43 @@ ffi_closure_mips_inner_O32 (ffi_closure 
 	  (arg_types[i]->type == FFI_TYPE_FLOAT ||
 	   arg_types[i]->type == FFI_TYPE_DOUBLE))
 	{
-	  avalue[i] = ((char *) &fpr[i]);
+#ifdef _MIPSEB
+	  if (arg_types[i]->type == FFI_TYPE_FLOAT)
+	    avaluep[i] = ((char *) &fpr[i]) + sizeof (float);
+	  else
+#endif
+	    avaluep[i] = (char *) &fpr[i];
 	}
       else
 	{
 	  if (arg_types[i]->alignment == 8 && (argn & 0x1))
 	    argn++;
-	  avalue[i] = ((char *) &ar[argn]);
+	  switch (arg_types[i]->type)
+	    {
+	      case FFI_TYPE_SINT8:
+		avaluep[i] = &avalue[i];
+		*(SINT8 *) &avalue[i] = (SINT8) ar[argn];
+		break;
+
+	      case FFI_TYPE_UINT8:
+		avaluep[i] = &avalue[i];
+		*(UINT8 *) &avalue[i] = (UINT8) ar[argn];
+		break;
+		  
+	      case FFI_TYPE_SINT16:
+		avaluep[i] = &avalue[i];
+		*(SINT16 *) &avalue[i] = (SINT16) ar[argn];
+		break;
+		  
+	      case FFI_TYPE_UINT16:
+		avaluep[i] = &avalue[i];
+		*(UINT16 *) &avalue[i] = (UINT16) ar[argn];
+		break;
+
+	      default:
+		avaluep[i] = (char *) &ar[argn];
+		break;
+	    }
 	  seen_int = 1;
 	}
       argn += ALIGN(arg_types[i]->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG;
@@ -603,7 +625,7 @@ ffi_closure_mips_inner_O32 (ffi_closure 
     }
 
   /* Invoke the closure. */
-  (closure->fun) (cif, rvalue, avalue, closure->user_data);
+  (closure->fun) (cif, rvalue, avaluep, closure->user_data);
 
   if (cif->abi == FFI_O32_SOFT_FLOAT)
     {
--- src/libffi/src/mips/o32.S.orig	2004-11-24 00:18:11.000000000 +0100
+++ src/libffi/src/mips/o32.S	2005-08-03 00:49:19.000000000 +0200
@@ -35,7 +35,10 @@
 #define bytes	 a2
 #define flags	 a3
 		
-#define SIZEOF_FRAME	( 4 * FFI_SIZEOF_ARG + 2 * FFI_SIZEOF_ARG )
+#define SIZEOF_FRAME	(4 * FFI_SIZEOF_ARG + 2 * FFI_SIZEOF_ARG)
+#define A3_OFF		(SIZEOF_FRAME + 3 * FFI_SIZEOF_ARG)
+#define FP_OFF		(SIZEOF_FRAME - 2 * FFI_SIZEOF_ARG)
+#define RA_OFF		(SIZEOF_FRAME - 1 * FFI_SIZEOF_ARG)
 
 	.text
 	.align	2
@@ -44,48 +47,43 @@
 ffi_call_O32:	
 $LFB0:
 	# Prologue
-	SUBU	$sp, SIZEOF_FRAME			# Frame size
+	SUBU	$sp, SIZEOF_FRAME	# Frame size
 $LCFI0:
-	REG_S	$fp, SIZEOF_FRAME - 2*FFI_SIZEOF_ARG($sp)	# Save frame pointer
+	REG_S	$fp, FP_OFF($sp)	# Save frame pointer
 $LCFI1:
-	REG_S	ra, SIZEOF_FRAME - 1*FFI_SIZEOF_ARG($sp)	# Save return address
+	REG_S	ra, RA_OFF($sp)		# Save return address
 $LCFI2:
 	move	$fp, $sp
 
 $LCFI3:
-	move	t9, callback	# callback function pointer
-	REG_S	flags, SIZEOF_FRAME + 3*FFI_SIZEOF_ARG($fp) # flags
+	move	t9, callback		# callback function pointer
+	REG_S	flags, A3_OFF($fp)	# flags
 
 	# Allocate at least 4 words in the argstack
-	move	v0, bytes
-	bge	bytes, 4 * FFI_SIZEOF_ARG, bigger	
 	LI	v0, 4 * FFI_SIZEOF_ARG
-	b	sixteen
+	blt	bytes, v0, sixteen
 
-bigger:	
-	ADDU	t0, v0, 2 * FFI_SIZEOF_ARG -1	# make sure it is aligned 
-	and	v0, t0, -2 * FFI_SIZEOF_ARG		# to an 8 byte boundry
+	ADDU	v0, bytes, 7	# make sure it is aligned 
+	and	v0, -8		# to an 8 byte boundry
 
 sixteen:
-	SUBU	$sp, $sp, v0	# move the stack pointer to reflect the
+	SUBU	$sp, v0		# move the stack pointer to reflect the
 				# arg space
 
 	ADDU	a0, $sp, 4 * FFI_SIZEOF_ARG
-	ADDU	a3, $fp, SIZEOF_FRAME + 3*FFI_SIZEOF_ARG
+#	ADDU	a3, $fp, A3_OFF
 
 	jalr	t9
 	
-	REG_L	t0, SIZEOF_FRAME + 3*FFI_SIZEOF_ARG($fp)  # load the flags word
-	add	t2, t0, 0			   # and copy it into t2
-
+	REG_L	t0, A3_OFF($fp)		# load the flags word
+	SRL	t2, t0, 4		# shift our arg info
 	and     t0, ((1<<4)-1)          # mask out the return type
-	SRL	t2, 4			# shift our arg info
 		
-	ADDU	$sp, $sp, 4 * FFI_SIZEOF_ARG	# adjust $sp to new args
+	ADDU	$sp, 4 * FFI_SIZEOF_ARG		# adjust $sp to new args
 
 	bnez	t0, pass_d			# make it quick for int
-	REG_L	a0, 0*FFI_SIZEOF_ARG($sp)		# just go ahead and load the
-	REG_L	a1, 1*FFI_SIZEOF_ARG($sp)		# four regs.
+	REG_L	a0, 0*FFI_SIZEOF_ARG($sp)	# just go ahead and load the
+	REG_L	a1, 1*FFI_SIZEOF_ARG($sp)	# four regs.
 	REG_L	a2, 2*FFI_SIZEOF_ARG($sp)
 	REG_L	a3, 3*FFI_SIZEOF_ARG($sp)
 	b	call_it
@@ -175,9 +173,9 @@ noretval:	
 	# Epilogue
 epilogue:	
 	move	$sp, $fp	
-	REG_L	$fp, SIZEOF_FRAME - 2*FFI_SIZEOF_ARG($sp) # Restore frame pointer
-	REG_L	ra, SIZEOF_FRAME - 1*FFI_SIZEOF_ARG($sp)  # Restore return address
-	ADDU	$sp, SIZEOF_FRAME		      # Fix stack pointer
+	REG_L	$fp, FP_OFF($sp)	# Restore frame pointer
+	REG_L	ra, RA_OFF($sp)		# Restore return address
+	ADDU	$sp, SIZEOF_FRAME	# Fix stack pointer
 	j	ra
 
 $LFE0:
@@ -208,7 +206,21 @@ $LFE0:
 	 0 - Called function a0 save our sp, fp point here
 	 */
 	
-#define SIZEOF_FRAME2	( 14 * FFI_SIZEOF_ARG )
+#define SIZEOF_FRAME2	(14 * FFI_SIZEOF_ARG)
+#define A3_OFF2		(SIZEOF_FRAME2 + 3 * FFI_SIZEOF_ARG)
+#define A2_OFF2		(SIZEOF_FRAME2 + 2 * FFI_SIZEOF_ARG)
+#define A1_OFF2		(SIZEOF_FRAME2 + 1 * FFI_SIZEOF_ARG)
+#define A0_OFF2		(SIZEOF_FRAME2 + 0 * FFI_SIZEOF_ARG)
+#define RA_OFF2		(SIZEOF_FRAME2 - 1 * FFI_SIZEOF_ARG)
+#define FP_OFF2		(SIZEOF_FRAME2 - 2 * FFI_SIZEOF_ARG)
+#define S0_OFF2		(SIZEOF_FRAME2 - 3 * FFI_SIZEOF_ARG)
+#define GP_OFF2		(SIZEOF_FRAME2 - 4 * FFI_SIZEOF_ARG)
+#define V1_OFF2		(SIZEOF_FRAME2 - 5 * FFI_SIZEOF_ARG)
+#define V0_OFF2		(SIZEOF_FRAME2 - 6 * FFI_SIZEOF_ARG)
+#define FA_1_1_OFF2	(SIZEOF_FRAME2 - 7 * FFI_SIZEOF_ARG)
+#define FA_1_0_OFF2	(SIZEOF_FRAME2 - 8 * FFI_SIZEOF_ARG)
+#define FA_0_1_OFF2	(SIZEOF_FRAME2 - 9 * FFI_SIZEOF_ARG)
+#define FA_0_0_OFF2	(SIZEOF_FRAME2 - 10 * FFI_SIZEOF_ARG)
 
 	.text
 	.align	2
@@ -217,28 +229,28 @@ $LFE0:
 ffi_closure_O32:
 $LFB1:
 	# Prologue
-	.frame	$fp, SIZEOF_FRAME2, $31
+	.frame	$fp, SIZEOF_FRAME2, ra
 	.set	noreorder
-	.cpload	$25
+	.cpload	t9
 	.set	reorder
 	SUBU	$sp, SIZEOF_FRAME2
-	.cprestore SIZEOF_FRAME2 - 4*FFI_SIZEOF_ARG
+	.cprestore GP_OFF2
 $LCFI4:
-	REG_S	$16, SIZEOF_FRAME2 - 3*FFI_SIZEOF_ARG($sp)	 # Save s0
-	REG_S	$fp, SIZEOF_FRAME2 - 2*FFI_SIZEOF_ARG($sp)	 # Save frame pointer
-	REG_S	ra, SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp)	 # Save return address
+	REG_S	$16, S0_OFF2($sp)	 # Save s0
+	REG_S	$fp, FP_OFF2($sp)	 # Save frame pointer
+	REG_S	ra, RA_OFF2($sp)	 # Save return address
 $LCFI6:
 	move	$fp, $sp
 
 $LCFI7:
 	# Store all possible argument registers. If there are more than
-	# four arguments, then they should be stored above where we put $7.
-	REG_S	$4, SIZEOF_FRAME2 + 0*FFI_SIZEOF_ARG($fp)
-	REG_S	$5, SIZEOF_FRAME2 + 1*FFI_SIZEOF_ARG($fp)
-	REG_S	$6, SIZEOF_FRAME2 + 2*FFI_SIZEOF_ARG($fp)
-	REG_S	$7, SIZEOF_FRAME2 + 3*FFI_SIZEOF_ARG($fp)
+	# four arguments, then they are stored above where we put a3.
+	REG_S	a0, A0_OFF2($fp)
+	REG_S	a1, A1_OFF2($fp)
+	REG_S	a2, A2_OFF2($fp)
+	REG_S	a3, A3_OFF2($fp)
 
-	# Load ABI enum to $16
+	# Load ABI enum to s0
 	REG_L	$16, 20($8)	# cif pointer follows tramp.
 	REG_L	$16, 0($16)	# abi is first member.
 
@@ -246,16 +258,16 @@ $LCFI7:
 	bne	$16, $13, 1f	# Skip fp save if FFI_O32_SOFT_FLOAT
 	
 	# Store all possible float/double registers.
-	s.d	$f12, SIZEOF_FRAME2 - 10*FFI_SIZEOF_ARG($fp)
-	s.d	$f14, SIZEOF_FRAME2 -  8*FFI_SIZEOF_ARG($fp)
+	s.d	$f12, FA_0_0_OFF2($fp)
+	s.d	$f14, FA_1_0_OFF2($fp)
 1:	
 	# Call ffi_closure_mips_inner_O32 to do the work.
-	la	$25, ffi_closure_mips_inner_O32
-	move	$4, $8	 # Pointer to the ffi_closure
-	addu	$5, $fp, SIZEOF_FRAME2 -  6*FFI_SIZEOF_ARG
-	addu	$6, $fp, SIZEOF_FRAME2 +  0*FFI_SIZEOF_ARG
-	addu	$7, $fp, SIZEOF_FRAME2 - 10*FFI_SIZEOF_ARG
-	jalr	$31, $25
+	la	t9, ffi_closure_mips_inner_O32
+	move	a0, $8	 # Pointer to the ffi_closure
+	addu	a1, $fp, V0_OFF2
+	addu	a2, $fp, A0_OFF2
+	addu	a3, $fp, FA_0_0_OFF2
+	jalr	t9
 
 	# Load the return value into the appropriate register.
 	move	$8, $2
@@ -266,28 +278,28 @@ $LCFI7:
 	bne	$16, $13, 1f	# Skip fp restore if FFI_O32_SOFT_FLOAT
 
 	li	$9, FFI_TYPE_FLOAT
-	l.s	$f0, SIZEOF_FRAME2 - 6*FFI_SIZEOF_ARG($fp)
+	l.s	$f0, V0_OFF2($fp)
 	beq	$8, $9, closure_done
 
 	li	$9, FFI_TYPE_DOUBLE
-	l.d	$f0, SIZEOF_FRAME2 - 6*FFI_SIZEOF_ARG($fp)
+	l.d	$f0, V0_OFF2($fp)
 	beq	$8, $9, closure_done
 1:	
-	li	$9, FFI_TYPE_SINT64
-	REG_L	$3, SIZEOF_FRAME2 - 5*FFI_SIZEOF_ARG($fp)
-	beq	$8, $9, integer
-	li	$9, FFI_TYPE_UINT64
-	beq	$8, $9, integer
+#	li	$9, FFI_TYPE_SINT64
+	REG_L	$3, V1_OFF2($fp)
+#	beq	$8, $9, integer
+#	li	$9, FFI_TYPE_UINT64
+#	beq	$8, $9, integer
 
-integer:
-	REG_L	$2, SIZEOF_FRAME2 - 6*FFI_SIZEOF_ARG($fp)
+#integer:
+	REG_L	$2, V0_OFF2($fp)
 
 closure_done:
 	# Epilogue
 	move	$sp, $fp
-	REG_L	$16, SIZEOF_FRAME2 - 3*FFI_SIZEOF_ARG($sp)	 # Restore s0
-	REG_L	$fp, SIZEOF_FRAME2 - 2*FFI_SIZEOF_ARG($sp)	 # Restore frame pointer
-	REG_L	ra,  SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp)	 # Restore return address
+	REG_L	$16, S0_OFF2($sp)	 # Restore s0
+	REG_L	$fp, FP_OFF2($sp)	 # Restore frame pointer
+	REG_L	ra,  RA_OFF2($sp)	 # Restore return address
 	ADDU	$sp, SIZEOF_FRAME2
 	j	ra
 $LFE1:

---------------------------------------
Received: (at 321100-close) by bugs.debian.org; 8 Aug 2005 16:19:13 +0000
>From katie@spohr.debian.org Mon Aug 08 09:19:13 2005
Return-path: <katie@spohr.debian.org>
Received: from katie by spohr.debian.org with local (Exim 3.36 1 (Debian))
	id 1E2AJY-0006ds-00; Mon, 08 Aug 2005 09:17:24 -0700
From: Matthias Klose <doko@debian.org>
To: 321100-close@bugs.debian.org
X-Katie: $Revision: 1.56 $
Subject: Bug#321100: fixed in gcc-4.0 4.0.1-4
Message-Id: <E1E2AJY-0006ds-00@spohr.debian.org>
Sender: Archive Administrator <katie@spohr.debian.org>
Date: Mon, 08 Aug 2005 09:17:24 -0700
Delivered-To: 321100-close@bugs.debian.org
X-Spam-Checker-Version: SpamAssassin 2.60-bugs.debian.org_2005_01_02 
	(1.212-2003-09-23-exp) on spohr.debian.org
X-Spam-Level: 
X-Spam-Status: No, hits=-6.0 required=4.0 tests=BAYES_00,HAS_BUG_NUMBER 
	autolearn=no version=2.60-bugs.debian.org_2005_01_02
X-CrossAssassin-Score: 2

Source: gcc-4.0
Source-Version: 4.0.1-4

We believe that the bug you reported is fixed in the latest version of
gcc-4.0, which is due to be installed in the Debian FTP archive:

cpp-4.0-doc_4.0.1-4_all.deb
  to pool/main/g/gcc-4.0/cpp-4.0-doc_4.0.1-4_all.deb
cpp-4.0_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/cpp-4.0_4.0.1-4_i386.deb
cpp-4.0_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/cpp-4.0_4.0.1-4_sparc.deb
fastjar_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/fastjar_4.0.1-4_i386.deb
fastjar_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/fastjar_4.0.1-4_sparc.deb
fixincludes_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/fixincludes_4.0.1-4_i386.deb
fixincludes_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/fixincludes_4.0.1-4_sparc.deb
g++-4.0_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/g++-4.0_4.0.1-4_i386.deb
g++-4.0_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/g++-4.0_4.0.1-4_sparc.deb
gcc-4.0-base_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/gcc-4.0-base_4.0.1-4_i386.deb
gcc-4.0-base_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/gcc-4.0-base_4.0.1-4_sparc.deb
gcc-4.0-doc_4.0.1-4_all.deb
  to pool/main/g/gcc-4.0/gcc-4.0-doc_4.0.1-4_all.deb
gcc-4.0-locales_4.0.1-4_all.deb
  to pool/main/g/gcc-4.0/gcc-4.0-locales_4.0.1-4_all.deb
gcc-4.0_4.0.1-4.diff.gz
  to pool/main/g/gcc-4.0/gcc-4.0_4.0.1-4.diff.gz
gcc-4.0_4.0.1-4.dsc
  to pool/main/g/gcc-4.0/gcc-4.0_4.0.1-4.dsc
gcc-4.0_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/gcc-4.0_4.0.1-4_i386.deb
gcc-4.0_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/gcc-4.0_4.0.1-4_sparc.deb
gcj-4.0_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/gcj-4.0_4.0.1-4_i386.deb
gcj-4.0_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/gcj-4.0_4.0.1-4_sparc.deb
gfortran-4.0-doc_4.0.1-4_all.deb
  to pool/main/g/gcc-4.0/gfortran-4.0-doc_4.0.1-4_all.deb
gfortran-4.0_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/gfortran-4.0_4.0.1-4_i386.deb
gfortran-4.0_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/gfortran-4.0_4.0.1-4_sparc.deb
gij-4.0_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/gij-4.0_4.0.1-4_i386.deb
gij-4.0_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/gij-4.0_4.0.1-4_sparc.deb
gnat-4.0-doc_4.0.1-4_all.deb
  to pool/main/g/gcc-4.0/gnat-4.0-doc_4.0.1-4_all.deb
gnat-4.0_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/gnat-4.0_4.0.1-4_i386.deb
gnat-4.0_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/gnat-4.0_4.0.1-4_sparc.deb
gobjc-4.0_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/gobjc-4.0_4.0.1-4_i386.deb
gobjc-4.0_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/gobjc-4.0_4.0.1-4_sparc.deb
lib64gcc1_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/lib64gcc1_4.0.1-4_i386.deb
lib64gcc1_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/lib64gcc1_4.0.1-4_sparc.deb
lib64gfortran0_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/lib64gfortran0_4.0.1-4_i386.deb
lib64gfortran0_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/lib64gfortran0_4.0.1-4_sparc.deb
lib64objc1_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/lib64objc1_4.0.1-4_i386.deb
lib64objc1_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/lib64objc1_4.0.1-4_sparc.deb
lib64stdc++6-4.0-dbg_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/lib64stdc++6-4.0-dbg_4.0.1-4_i386.deb
lib64stdc++6-4.0-dbg_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/lib64stdc++6-4.0-dbg_4.0.1-4_sparc.deb
lib64stdc++6_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/lib64stdc++6_4.0.1-4_i386.deb
lib64stdc++6_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/lib64stdc++6_4.0.1-4_sparc.deb
libffi4-dev_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libffi4-dev_4.0.1-4_i386.deb
libffi4-dev_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libffi4-dev_4.0.1-4_sparc.deb
libffi4_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libffi4_4.0.1-4_i386.deb
libffi4_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libffi4_4.0.1-4_sparc.deb
libgcc1_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libgcc1_4.0.1-4_i386.deb
libgcc1_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libgcc1_4.0.1-4_sparc.deb
libgcj-common_4.0.1-4_all.deb
  to pool/main/g/gcc-4.0/libgcj-common_4.0.1-4_all.deb
libgcj6-awt_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libgcj6-awt_4.0.1-4_i386.deb
libgcj6-awt_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libgcj6-awt_4.0.1-4_sparc.deb
libgcj6-common_4.0.1-4_all.deb
  to pool/main/g/gcc-4.0/libgcj6-common_4.0.1-4_all.deb
libgcj6-dbg_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libgcj6-dbg_4.0.1-4_i386.deb
libgcj6-dbg_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libgcj6-dbg_4.0.1-4_sparc.deb
libgcj6-dev_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libgcj6-dev_4.0.1-4_i386.deb
libgcj6-dev_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libgcj6-dev_4.0.1-4_sparc.deb
libgcj6-src_4.0.1-4_all.deb
  to pool/main/g/gcc-4.0/libgcj6-src_4.0.1-4_all.deb
libgcj6_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libgcj6_4.0.1-4_i386.deb
libgcj6_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libgcj6_4.0.1-4_sparc.deb
libgfortran0-dev_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libgfortran0-dev_4.0.1-4_i386.deb
libgfortran0-dev_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libgfortran0-dev_4.0.1-4_sparc.deb
libgfortran0_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libgfortran0_4.0.1-4_i386.deb
libgfortran0_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libgfortran0_4.0.1-4_sparc.deb
libgnat-4.0_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libgnat-4.0_4.0.1-4_i386.deb
libgnat-4.0_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libgnat-4.0_4.0.1-4_sparc.deb
libmudflap0-dev_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libmudflap0-dev_4.0.1-4_i386.deb
libmudflap0-dev_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libmudflap0-dev_4.0.1-4_sparc.deb
libmudflap0_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libmudflap0_4.0.1-4_i386.deb
libmudflap0_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libmudflap0_4.0.1-4_sparc.deb
libobjc1_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libobjc1_4.0.1-4_i386.deb
libobjc1_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libobjc1_4.0.1-4_sparc.deb
libstdc++6-4.0-dbg_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libstdc++6-4.0-dbg_4.0.1-4_i386.deb
libstdc++6-4.0-dbg_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libstdc++6-4.0-dbg_4.0.1-4_sparc.deb
libstdc++6-4.0-dev_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libstdc++6-4.0-dev_4.0.1-4_i386.deb
libstdc++6-4.0-dev_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libstdc++6-4.0-dev_4.0.1-4_sparc.deb
libstdc++6-4.0-doc_4.0.1-4_all.deb
  to pool/main/g/gcc-4.0/libstdc++6-4.0-doc_4.0.1-4_all.deb
libstdc++6-4.0-pic_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libstdc++6-4.0-pic_4.0.1-4_i386.deb
libstdc++6-4.0-pic_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libstdc++6-4.0-pic_4.0.1-4_sparc.deb
libstdc++6_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/libstdc++6_4.0.1-4_i386.deb
libstdc++6_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/libstdc++6_4.0.1-4_sparc.deb
protoize_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/protoize_4.0.1-4_i386.deb
protoize_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/protoize_4.0.1-4_sparc.deb
treelang-4.0_4.0.1-4_i386.deb
  to pool/main/g/gcc-4.0/treelang-4.0_4.0.1-4_i386.deb
treelang-4.0_4.0.1-4_sparc.deb
  to pool/main/g/gcc-4.0/treelang-4.0_4.0.1-4_sparc.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 321100@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Matthias Klose <doko@debian.org> (supplier of updated gcc-4.0 package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.7
Date: Sun,  7 Aug 2005 07:01:59 +0000
Source: gcc-4.0
Binary: gcc-4.0-base libstdc++6 lib32ffi4 lib32gcj6-dev libobjc1 libgcc1 libgcj6-dev libgcj6-awt gpc-2.1-4.0 gcc-4.0-nof libstdc++6-4.0-dev lib32stdc++6-4.0-dbg libgcc2 lib64gnat-4.0 lib32gcj6 gpc-2.1-4.0-doc protoize lib64gcj6 treelang-4.0 libgnat-4.0 libstdc++6-4.0-dbg gcc-4.0-doc lib64stdc++6 lib32gfortran0 libffi4 lib64gcj6-awt gfortran-4.0-doc g++-4.0 libgcj6-src lib64ffi4 gcj-4.0 lib32gcc1 lib64stdc++6-4.0-dbg libgfortran0 gobjc-4.0 lib64objc1 cpp-4.0 gcc-4.0-soft-float gcc-4.0 gfortran-4.0 gcc-4.0-locales lib32objc1 libffi4-dev libgcj6 gnat-4.0-doc libgfortran0-dev libgcj-common libgcj6-common libstdc++6-4.0-pic cpp-4.0-doc lib64gcc1 fastjar gcc-4.0-hppa64 gij-4.0 fixincludes libmudflap0-dev libstdc++6-4.0-doc lib32stdc++6 gnat-4.0 libmudflap0 lib32gcj6-dbg lib64gfortran0 libgcj6-dbg
Architecture: all i386 source sparc 
Version: 4.0.1-4
Distribution: unstable
Urgency: low
Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
Changed-By: Matthias Klose <doko@debian.org>
Description: 
 cpp-4.0    - The GNU C preprocessor
 fastjar    - Jar creation utility
 fixincludes - Fix non-ANSI header files
 g++-4.0    - The GNU C++ compiler
 gcc-4.0    - The GNU C compiler
 gcc-4.0-base - The GNU Compiler Collection (base package)
 gcj-4.0    - The GNU compiler for Java(TM)
 gfortran-4.0 - The GNU Fortran 95 compiler
 gij-4.0    - The GNU Java bytecode interpreter
 gnat-4.0   - The GNU Ada compiler
 gobjc-4.0  - The GNU Objective-C compiler
 lib64gcc1  - GCC support library (64bit)
 lib64gfortran0 - Runtime library for GNU Fortran applications (64bit)
 lib64objc1 - Runtime library for GNU Objective-C applications (64bit)
 lib64stdc++6 - The GNU Standard C++ Library v3 (64bit)
 lib64stdc++6-4.0-dbg - The GNU Standard C++ Library v3 (debugging files)
 libffi4    - Foreign Function Interface library runtime
 libffi4-dev - Foreign Function Interface library (development files)
 libgcc1    - GCC support library
 libgcj6    - Java runtime library for use with gcj
 libgcj6-awt - AWT peer runtime libraries for use with gcj
 libgcj6-dbg - Debugging symbols for libraries provided in libgcj6-dev
 libgcj6-dev - Java development headers and static library for use with gcj
 libgfortran0 - Runtime library for GNU Fortran applications
 libgfortran0-dev - GNU Fortran library development
 libgnat-4.0 - Runtime library for GNU Ada applications
 libmudflap0 - GCC mudflap shared support libraries
 libmudflap0-dev - GCC mudflap support libraries (development files)
 libobjc1   - Runtime library for GNU Objective-C applications
 libstdc++6 - The GNU Standard C++ Library v3
 libstdc++6-4.0-dbg - The GNU Standard C++ Library v3 (debugging files)
 libstdc++6-4.0-dev - The GNU Standard C++ Library v3 (development files)
 libstdc++6-4.0-pic - The GNU Standard C++ Library v3 (shared library subset kit)
 protoize   - Create/remove ANSI prototypes from C code
 treelang-4.0 - The GNU Treelang compiler
Closes: 268023 320915 321100 321350 321540
Changes: 
 gcc-4.0 (4.0.1-4) unstable; urgency=low
 .
   * Enable the biarch compiler for powerpc (closes: #268023).
   * Update to CVS 20050806, taken from the gcc-4_0-branch.
   * Build depend on libcairo0.6.0-dev (closes: #321540).
   * Fix Ada build on the hurd (closes: #321350).
   * Update libffi for mips (Thiemo Seufer). Closes: #321100.
   * Fix segfault on 64bit archs in the AWT Gtk peer library (Dan Frazier).
     Closes: #320915.
   * Add libXXgcc1 build dependencies for biarch builds.
Files: 
 01bd2e2e52a16a8be7c8afba533a205b 39702 libs optional lib64objc1_4.0.1-4_sparc.deb
 04fe2a10b0893a5a6dd79ed5153bdfa3 182512 doc optional cpp-4.0-doc_4.0.1-4_all.deb
 069e2a45153665f4cec2b5ea26fe3848 157896 libs optional libmudflap0_4.0.1-4_sparc.deb
 07f555256366daff46acfb6635eadd2b 5246960 libs optional libgcj6_4.0.1-4_sparc.deb
 0a98647d49f99094aaf8fb95523ffb6a 2470840 devel optional gcj-4.0_4.0.1-4_i386.deb
 0cff336b773df71999306ada3c91c70c 499684 devel optional gcc-4.0_4.0.1-4_sparc.deb
 1111713c1af044ada64fd585b79531c9 118128 libs optional libobjc1_4.0.1-4_i386.deb
 12c1f33f4f19c9aacb76f46b159bcbda 834076 libdevel extra libstdc++6-4.0-pic_4.0.1-4_sparc.deb
 12eda7a8f3822e0b4081e3f227b3ac38 1679788 devel optional treelang-4.0_4.0.1-4_sparc.deb
 16960de690d9b7deb91a1627a2eacf79 80246 devel optional fixincludes_4.0.1-4_i386.deb
 1715018fcdb1d047442072c2655179d9 501742 devel optional gcc-4.0_4.0.1-4_i386.deb
 1c7658f3e99e36bab6aa59feaf397099 1923140 devel optional treelang-4.0_4.0.1-4_i386.deb
 26dc75b418fcb3dc7c5da0b9c4b39474 174630 devel optional gcc-4.0-base_4.0.1-4_i386.deb
 2abe93b629f0354dd8e9785179f56f1d 97198 libs optional lib64gcc1_4.0.1-4_sparc.deb
 2dbb764157d93b9477aba57c086c918b 128358 devel optional fastjar_4.0.1-4_sparc.deb
 318bb9cb30ff31df6c755c35fef9e5a1 67244 devel optional fixincludes_4.0.1-4_sparc.deb
 37d79b8d6f4486531f8a53a85d68cbc6 3101732 libs optional libgcj6-common_4.0.1-4_all.deb
 3ac54e9a6a16615fff5a737f2da9a2c1 8670994 libdevel extra lib64stdc++6-4.0-dbg_4.0.1-4_i386.deb
 41164ce5ea3cb10cf6a28e10f0a300cf 106182 libs optional libgfortran0_4.0.1-4_sparc.deb
 425439e015c8738c148e8f939dcc78f7 97716 libs optional lib64gfortran0_4.0.1-4_sparc.deb
 45498e38f9e16407ae2523078fd12d22 32722 devel optional protoize_4.0.1-4_sparc.deb
 4f127aab4ae91f2e7f665742795c9c8a 1803438 interpreters optional cpp-4.0_4.0.1-4_sparc.deb
 564d5f56bfd7875fe5858791410c5256 2241136 devel optional gcj-4.0_4.0.1-4_sparc.deb
 5685ae91c71255d1cbd5270cfa6219d4 150478 libs optional libmudflap0_4.0.1-4_i386.deb
 5ae8ca15a8aaafa49e817668c25c002d 928804 libdevel extra libstdc++6-4.0-pic_4.0.1-4_i386.deb
 5ec9906e2db917e06726bf4bbf46fe4e 875260 libs optional libgnat-4.0_4.0.1-4_i386.deb
 5fb64dbaad3571d5bd0a64a46755e795 95194 libs optional lib64gcc1_4.0.1-4_i386.deb
 5ff3e457f0c0524a873b567203652053 106058 libs optional lib64gfortran0_4.0.1-4_i386.deb
 62317e7841011536b24f334542b23b8a 5871356 libdevel extra libstdc++6-4.0-dbg_4.0.1-4_sparc.deb
 66612d28b2c75ea95b97a09dcdcca8b5 2325188 devel optional g++-4.0_4.0.1-4_i386.deb
 673106cb109688f151429e70d2efe561 91410 libs optional libffi4_4.0.1-4_sparc.deb
 680a8ea329e6b4ca6ab8e91f0affebc0 9866908 devel optional gnat-4.0_4.0.1-4_i386.deb
 68e92756b6c8510924bbf1e2ad69a123 1174 libs optional libgcj-common_4.0.1-4_all.deb
 6959f2d2156cd8eca823fdb4f6c739cf 9571474 devel optional gnat-4.0_4.0.1-4_sparc.deb
 6c09127f3155fcee7ad69f6eb82bbd70 343078 libs optional lib64stdc++6_4.0.1-4_sparc.deb
 6fb11d299e7a120d4a2c07cfb8de4398 224932 libs optional libgcj6-awt_4.0.1-4_i386.deb
 6fc4d38c0f9a6ab081e2ea3cc424ef40 1517412 libdevel optional libstdc++6-4.0-dev_4.0.1-4_i386.deb
 747081f5139e02d07ef3338034115185 4845112 doc optional libstdc++6-4.0-doc_4.0.1-4_all.deb
 7530b358979125e97701f8c8d7eb6324 2176558 devel optional gfortran-4.0_4.0.1-4_i386.deb
 77cd594ac0b8ee89e7dfe499c7229433 110374 libs optional libgfortran0_4.0.1-4_i386.deb
 7b8a4c3c2a25e81c389a4508d5dd3881 762524 devel optional gcc-4.0_4.0.1-4.diff.gz
 7fbae10ba79c00a849a058be970fd6ce 1940622 devel optional gfortran-4.0_4.0.1-4_sparc.deb
 832a4327b13d41a9ba54a2bdb0d6f4d5 1572660 doc optional gcc-4.0-doc_4.0.1-4_all.deb
 8a3ba8b4ac9a00782e8100e1e45dec63 240908 libs optional libgcj6-awt_4.0.1-4_sparc.deb
 8ab780738c0140bf57666f8791ace681 261556 libdevel optional libgfortran0-dev_4.0.1-4_sparc.deb
 8b1afb99c46dff424fa7e88326b2b13b 27220 devel optional gij-4.0_4.0.1-4_i386.deb
 8c9d173dad55dcd747527ae483028b36 26208 devel optional gij-4.0_4.0.1-4_sparc.deb
 928206c3b5d62f5ee5e2815ed6f6e3f4 271692 libdevel optional libgfortran0-dev_4.0.1-4_i386.deb
 95852638636c092ec94da5c437acc188 9722872 libdevel optional libgcj6-dev_4.0.1-4_sparc.deb
 98bbe40ae6f52685f1f805c468b170cb 16811888 libdevel extra libgcj6-dbg_4.0.1-4_i386.deb
 98bc3493ada07c52528681d3a6ab6862 2135692 devel optional gobjc-4.0_4.0.1-4_i386.deb
 9b11bf7dcd30524ea4041c0ea45c23d5 174614 devel optional gcc-4.0-base_4.0.1-4_sparc.deb
 16aa8f54ddfb97598e99de42a6b4932a 3696 devel optional gcc-4.0_4.0.1-4.dsc
 a2e85528ce2904905eaf868112bbd5c8 118100 libs optional libobjc1_4.0.1-4_sparc.deb
 a2ed6bd8380635b5cf661b6406baec03 6431172 libdevel optional libgcj6-src_4.0.1-4_all.deb
 a6d8b2c14cdfa97c16b8645b1e1503ee 366744 libs optional lib64stdc++6_4.0.1-4_i386.deb
 a8ca150b13b95af2e56dabaaffcf1fe1 2096646 devel optional g++-4.0_4.0.1-4_sparc.deb
 aeed12285a683508c418198873dfd498 10184 libdevel optional libffi4-dev_4.0.1-4_sparc.deb
 af10edf4a5e2eb7c5a783efb6e26c63a 104544 libdevel optional libmudflap0-dev_4.0.1-4_sparc.deb
 b2a86b666bf08230d354ad0e46ca0537 127034 devel optional fastjar_4.0.1-4_i386.deb
 b351a2ffad199c4006cd7111f80b5f7e 352286 libs optional libstdc++6_4.0.1-4_i386.deb
 b88997fc3f51f505ef64edaee428aae3 2041424 interpreters optional cpp-4.0_4.0.1-4_i386.deb
 bc1fd385455b4c24a33993f6175e038b 9920082 libdevel optional libgcj6-dev_4.0.1-4_i386.deb
 bc5f5612c6640410e18766b73b83979d 5760922 libdevel extra libstdc++6-4.0-dbg_4.0.1-4_i386.deb
 bd8d90b768dedea7b02eb6d82c0daada 344046 libs optional libstdc++6_4.0.1-4_sparc.deb
 c118626ddc2cfff4520603da8fd2fc3e 874576 libs optional libgnat-4.0_4.0.1-4_sparc.deb
 c1263c788e8581b672cc3be3baa0a9dd 89890 libs optional libffi4_4.0.1-4_i386.deb
 c2f269b3e7f28e53f5fe1b64b2c70e63 103516 doc optional gfortran-4.0-doc_4.0.1-4_all.deb
 c723b70824e1680b08e95f1333a53466 1896232 devel optional gobjc-4.0_4.0.1-4_sparc.deb
 c998a4eccfa741068ad8bc4497afe715 977810 devel optional gcc-4.0-locales_4.0.1-4_all.deb
 c9ebeacb0aaddb961c683f78a4ea2611 1393038 libdevel optional libstdc++6-4.0-dev_4.0.1-4_sparc.deb
 ca0111627b67d827047503f85bf50df6 43928 libs optional lib64objc1_4.0.1-4_i386.deb
 cba2a5055b996dad5036065d44b2a39c 27318 devel optional protoize_4.0.1-4_i386.deb
 ce1183ca071a7dd6585e20fc64f16d12 5095782 libs optional libgcj6_4.0.1-4_i386.deb
 d61bdcaa57ac8e0aae42391c1625686b 89846 libs required libgcc1_4.0.1-4_sparc.deb
 da9ece1bd39ccb50c4930da34ef236fa 8695322 libdevel extra lib64stdc++6-4.0-dbg_4.0.1-4_sparc.deb
 def9a7d34b0071263aff7e1b6e782dfd 16599412 libdevel extra libgcj6-dbg_4.0.1-4_sparc.deb
 e54dade2bc3e6a3d651368d670cfb211 89938 libs required libgcc1_4.0.1-4_i386.deb
 e895067a0d54f56ffe53f3c492fd81b9 942052 doc optional gnat-4.0-doc_4.0.1-4_all.deb
 ee1b393fabb1912e5b80671c41e90f41 8980 libdevel optional libffi4-dev_4.0.1-4_i386.deb
 efb36145ac981e9642687b32b4f926b2 95852 libdevel optional libmudflap0-dev_4.0.1-4_i386.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQFC93+HStlRaw+TLJwRAnsVAKC3u5B94WsKQjtV7h7ROHfR8x+qHQCeLlU2
HyvX78tW7JaG+H0tUZG6AKU=
=wdP2
-----END PGP SIGNATURE-----



Reply to: