Your message dated Mon, 07 Nov 2005 15:17:24 -0800 with message-id <[EMAIL PROTECTED]> and subject line Bug#289121: fixed in hercules 3.0.2-1 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; 7 Jan 2005 10:17:07 +0000 >From [EMAIL PROTECTED] Fri Jan 07 02:17:07 2005 Return-path: <[EMAIL PROTECTED]> Received: from c186057.adsl.hansenet.de (localhost.localdomain) [213.39.186.57] by spohr.debian.org with esmtp (Exim 3.35 1 (Debian)) id 1CmrB4-0004zm-00; Fri, 07 Jan 2005 02:17:06 -0800 Received: from aj by localhost.localdomain with local (Exim 4.34) id 1CmrGm-0002Db-53; Fri, 07 Jan 2005 11:23:00 +0100 To: Debian Bug Tracking System <[EMAIL PROTECTED]> From: Andreas Jochens <[EMAIL PROTECTED]> Subject: hercules: FTBFS (amd64/gcc-4.0): invalid lvalue in assignment Message-Id: <[EMAIL PROTECTED]> Date: Fri, 07 Jan 2005 11:23:00 +0100 Delivered-To: [EMAIL PROTECTED] 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-Status: No, hits=-2.5 required=4.0 tests=BAYES_30,DRUGSPAM,HAS_PACKAGE autolearn=no version=2.60-bugs.debian.org_2005_01_02 X-Spam-Level: Package: hercules Severity: normal Tags: patch When building 'hercules' on amd64 with gcc-4.0, I get the following error: general1.c:3549: error: invalid lvalue in assignment general1.c: In function 'z900_move_string': general1.c:3682: error: invalid lvalue in assignment general1.c:3698: error: invalid lvalue in assignment general1.c:3699: error: invalid lvalue in assignment general1.c: In function 'z900_multiply_halfword': general1.c:3907: error: invalid lvalue in assignment general1.c: In function 'z900_multiply_halfword_immediate': general1.c:3929: error: invalid lvalue in assignment general1.c: In function 'z900_multiply_single_register': general1.c:3944: error: invalid lvalue in assignment general1.c: In function 'z900_multiply_single': general1.c:3965: error: invalid lvalue in assignment make[3]: *** [general1.o] Error 1 make[3]: Leaving directory `/hercules-2.17.1' With the attached patch 'hercules' can be compiled on amd64 using gcc-4.0. Regards Andreas Jochens diff -urN ../tmp-orig/hercules-2.17.1/cckddasd.c ./cckddasd.c --- ../tmp-orig/hercules-2.17.1/cckddasd.c 2003-01-24 16:53:54.000000000 +0100 +++ ./cckddasd.c 2005-01-07 10:11:42.648875672 +0100 @@ -2501,7 +2501,7 @@ /* Inactivate the previous entry */ if (cckd->l2active) cckd->l2active->flags &= ~CCKD_CACHE_ACTIVE; - cckd->l2active = (void *)cckd->l2 = NULL; + cckd->l2active = cckd->l2 = NULL; cckd->sfx = cckd->l1x = -1; cckd_read_l2_retry: @@ -2638,7 +2638,7 @@ { cckd = dev->cckd_ext; cckd->sfx = cckd->l1x = -1; - cckd->l2 = (void *)cckd->l2active = NULL; + cckd->l2 = cckd->l2active = NULL; } for (i = 0; i < cckdblk.l2cachenbr && cckdblk.l2cache; i++) diff -urN ../tmp-orig/hercules-2.17.1/cmpsc.c ./cmpsc.c --- ../tmp-orig/hercules-2.17.1/cmpsc.c 2003-01-08 03:46:41.000000000 +0100 +++ ./cmpsc.c 2005-01-07 09:58:35.057607744 +0100 @@ -224,8 +224,8 @@ #if !defined(ADJUSTREGS) #define ADJUSTREGS(r, regs, iregs, len) \ {\ - GR_A((r), (iregs)) = (GR_A((r), (iregs)) + (len)) & ADDRESS_MAXWRAP((regs));\ - GR_A((r) + 1, (iregs)) -= (len);\ + GR_A_COPY((GR_A((r), (iregs)) + (len)) & ADDRESS_MAXWRAP((regs)), (r), (iregs));\ + GR_A_COPY(GR_A((r) + 1, (iregs)) - (len), (r) + 1, (iregs));\ } #endif /* !defined(ADJUSTREGS) */ @@ -238,11 +238,11 @@ #if !defined(COMMITREGS) #define COMMITREGS(regs, iregs, r1, r2) \ {\ - GR_A(1, (regs)) = GR_A(1, (iregs));\ - GR_A((r1), (regs)) = GR_A((r1), (iregs));\ - GR_A((r1) + 1, (regs)) = GR_A((r1) + 1, (iregs));\ - GR_A((r2), (regs)) = GR_A((r2), (iregs));\ - GR_A((r2) + 1, (regs)) = GR_A((r2) + 1, (iregs));\ + GR_A_COPY(GR_A(1, (iregs)), 1, (regs));\ + GR_A_COPY(GR_A((r1), (iregs)), (r1), (regs));\ + GR_A_COPY(GR_A((r1) + 1, (iregs)), (r1) + 1, (regs));\ + GR_A_COPY(GR_A((r2), (iregs)), (r2), (regs));\ + GR_A_COPY(GR_A((r2) + 1, (iregs)), (r2) + 1, (regs));\ } #endif /* !defined(COMMITREGS) */ diff -urN ../tmp-orig/hercules-2.17.1/control.c ./control.c --- ../tmp-orig/hercules-2.17.1/control.c 2003-01-31 00:27:41.000000000 +0100 +++ ./control.c 2005-01-07 09:50:49.117441416 +0100 @@ -5746,7 +5746,7 @@ PERFORM_SERIALIZATION (regs); /* Clear general register 0 */ - GR_A(0, regs) = 0; + GR_A_COPY(0, 0, regs); } #endif /*defined(FEATURE_TEST_BLOCK)*/ diff -urN ../tmp-orig/hercules-2.17.1/esame.c ./esame.c --- ../tmp-orig/hercules-2.17.1/esame.c 2003-02-12 21:26:53.000000000 +0100 +++ ./esame.c 2005-01-07 10:10:50.931737872 +0100 @@ -652,7 +652,7 @@ { if( (S64)dreg == -1LL ) ovf = 1; - (S64)dreg = -((S64)dreg); + dreg = -((S64)dreg); } /* Store result into R1 register */ @@ -1531,8 +1531,8 @@ RIL(inst, execflag, regs, r1, opcd, i2); - GR_A(r1, regs) = ((!execflag ? (regs->psw.IA - 6) : regs->ET) - + 2LL*(S32)i2) & ADDRESS_MAXWRAP(regs); + GR_A_COPY(((!execflag ? (regs->psw.IA - 6) : regs->ET) + + 2LL*(S32)i2) & ADDRESS_MAXWRAP(regs), r1, regs); } /* end DEF_INST(load_address_relative_long) */ #endif /*defined(FEATURE_ESAME_N3_ESA390) || defined(FEATURE_ESAME)*/ @@ -2119,7 +2119,7 @@ j = (r3 & 1) ? (S64)regs->GR_G(r3) : (S64)regs->GR_G(r3+1); /* Add the increment value to the R1 register */ - (S64)regs->GR_G(r1) += i; + regs->GR_G(r1) = (S64)regs->GR_G(r1) + i; /* Branch if result compares high */ if ( (S64)regs->GR_G(r1) > j ) @@ -2160,7 +2160,7 @@ j = (r3 & 1) ? (S64)regs->GR_G(r3) : (S64)regs->GR_G(r3+1); /* Add the increment value to the R1 register */ - (S64)regs->GR_G(r1) += i; + regs->GR_G(r1) = (S64)regs->GR_G(r1) + i; /* Branch if result compares low or equal */ if ( (S64)regs->GR_G(r1) <= j ) @@ -2202,7 +2202,7 @@ j = (r3 & 1) ? (S64)regs->GR_G(r3) : (S64)regs->GR_G(r3+1); /* Add the increment value to the R1 register */ - (S64)regs->GR_G(r1) += i; + regs->GR_G(r1) = (S64)regs->GR_G(r1) + i; /* Branch if result compares high */ if ( (S64)regs->GR_G(r1) > j ) @@ -2243,7 +2243,7 @@ j = (r3 & 1) ? (S64)regs->GR_G(r3) : (S64)regs->GR_G(r3+1); /* Add the increment value to the R1 register */ - (S64)regs->GR_G(r1) += i; + regs->GR_G(r1) = (S64)regs->GR_G(r1) + i; /* Branch if result compares low or equal */ if ( (S64)regs->GR_G(r1) <= j ) @@ -2859,7 +2859,7 @@ } /* Load positive value of second operand and set cc */ - (S64)regs->GR_G(r1) = (S64)regs->GR_G(r2) < 0 ? + regs->GR_G(r1) = (S64)regs->GR_G(r2) < 0 ? -((S64)regs->GR_G(r2)) : (S64)regs->GR_G(r2); @@ -2883,7 +2883,7 @@ gpr2l = (S32)regs->GR_L(r2); /* Load positive value of second operand and set cc */ - (S64)regs->GR_G(r1) = gpr2l < 0 ? -gpr2l : gpr2l; + regs->GR_G(r1) = gpr2l < 0 ? -gpr2l : gpr2l; regs->psw.cc = (S64)regs->GR_G(r1) == 0 ? 0 : 2; @@ -2902,7 +2902,7 @@ RRE(inst, execflag, regs, r1, r2); /* Load negative value of second operand and set cc */ - (S64)regs->GR_G(r1) = (S64)regs->GR_G(r2) > 0 ? + regs->GR_G(r1) = (S64)regs->GR_G(r2) > 0 ? -((S64)regs->GR_G(r2)) : (S64)regs->GR_G(r2); @@ -2926,7 +2926,7 @@ gpr2l = (S32)regs->GR_L(r2); /* Load negative value of second operand and set cc */ - (S64)regs->GR_G(r1) = gpr2l > 0 ? -gpr2l : gpr2l; + regs->GR_G(r1) = gpr2l > 0 ? -gpr2l : gpr2l; regs->psw.cc = (S64)regs->GR_G(r1) == 0 ? 0 : 1; @@ -2965,7 +2965,7 @@ RRE(inst, execflag, regs, r1, r2); /* Copy second operand and set condition code */ - (S64)regs->GR_G(r1) = (S32)regs->GR_L(r2); + regs->GR_G(r1) = (S32)regs->GR_L(r2); regs->psw.cc = (S64)regs->GR_G(r1) < 0 ? 1 : (S64)regs->GR_G(r1) > 0 ? 2 : 0; @@ -2995,7 +2995,7 @@ } /* Load complement of second operand and set condition code */ - (S64)regs->GR_G(r1) = -((S64)regs->GR_G(r2)); + regs->GR_G(r1) = -((S64)regs->GR_G(r2)); regs->psw.cc = (S64)regs->GR_G(r1) < 0 ? 1 : (S64)regs->GR_G(r1) > 0 ? 2 : 0; @@ -3018,7 +3018,7 @@ gpr2l = (S32)regs->GR_L(r2); /* Load complement of second operand and set condition code */ - (S64)regs->GR_G(r1) = -gpr2l; + regs->GR_G(r1) = -gpr2l; regs->psw.cc = (S64)regs->GR_G(r1) < 0 ? 1 : (S64)regs->GR_G(r1) > 0 ? 2 : 0; @@ -3383,7 +3383,7 @@ n = effective_addr2 & 0x3F; /* Copy and shift the signed value of the R3 register */ - (S64)regs->GR_G(r1) = (n > 62) ? + regs->GR_G(r1) = (n > 62) ? ((S64)regs->GR_G(r3) < 0 ? -1LL : 0) : (S64)regs->GR_G(r3) >> n; @@ -3412,7 +3412,7 @@ n = ARCH_DEP(vfetch4) ( effective_addr2, b2, regs ); /* Multiply signed operands ignoring overflow */ - (S64)regs->GR_G(r1) *= (S32)n; + regs->GR_G(r1) = (S64)regs->GR_G(r1) * (S32)n; } /* end DEF_INST(multiply_single_long_fullword) */ #endif /*defined(FEATURE_ESAME)*/ @@ -3435,7 +3435,7 @@ n = ARCH_DEP(vfetch8) ( effective_addr2, b2, regs ); /* Multiply signed operands ignoring overflow */ - (S64)regs->GR_G(r1) *= (S64)n; + regs->GR_G(r1) = (S64)regs->GR_G(r1) * (S64)n; } /* end DEF_INST(multiply_single_long) */ #endif /*defined(FEATURE_ESAME)*/ @@ -3452,7 +3452,7 @@ RRE(inst, execflag, regs, r1, r2); /* Multiply signed registers ignoring overflow */ - (S64)regs->GR_G(r1) *= (S32)regs->GR_L(r2); + regs->GR_G(r1) = (S64)regs->GR_G(r1) * (S32)regs->GR_L(r2); } /* end DEF_INST(multiply_single_long_fullword_register) */ #endif /*defined(FEATURE_ESAME)*/ @@ -3469,7 +3469,7 @@ RRE(inst, execflag, regs, r1, r2); /* Multiply signed registers ignoring overflow */ - (S64)regs->GR_G(r1) *= (S64)regs->GR_G(r2); + regs->GR_G(r1) = (S64)regs->GR_G(r1) * (S64)regs->GR_G(r2); } /* end DEF_INST(multiply_single_long_register) */ #endif /*defined(FEATURE_ESAME)*/ @@ -3488,7 +3488,7 @@ RI(inst, execflag, regs, r1, opcd, i2); /* Load operand into register */ - (S64)regs->GR_G(r1) = (S16)i2; + regs->GR_G(r1) = (S16)i2; } /* end DEF_INST(load_long_halfword_immediate) */ #endif /*defined(FEATURE_ESAME)*/ @@ -3532,7 +3532,7 @@ RI(inst, execflag, regs, r1, opcd, i2); /* Multiply register by operand ignoring overflow */ - (S64)regs->GR_G(r1) *= (S16)i2; + regs->GR_G(r1) = (S64)regs->GR_G(r1) * (S16)i2; } /* end DEF_INST(multiply_long_halfword_immediate) */ #endif /*defined(FEATURE_ESAME)*/ @@ -3724,7 +3724,7 @@ RRE(inst, execflag, regs, r1, r2); /* Copy second operand to first operand */ - (S64)regs->GR_G(r1) = (S32)regs->GR_L(r2); + regs->GR_G(r1) = (S32)regs->GR_L(r2); } /* end DEF_INST(load_long_fullword_register) */ #endif /*defined(FEATURE_ESAME)*/ @@ -4356,7 +4356,7 @@ RXE(inst, execflag, regs, r1, b2, effective_addr2); /* Load R1 register from second operand */ - (S64)regs->GR_G(r1) = (S32)ARCH_DEP(vfetch4) ( effective_addr2, b2, regs ); + regs->GR_G(r1) = (S32)ARCH_DEP(vfetch4) ( effective_addr2, b2, regs ); } /* end DEF_INST(load_long_fullword) */ #endif /*defined(FEATURE_ESAME)*/ @@ -4375,7 +4375,7 @@ RXE(inst, execflag, regs, r1, b2, effective_addr2); /* Load R1 register from second operand */ - (S64)regs->GR_G(r1) = (S16)ARCH_DEP(vfetch2) ( effective_addr2, b2, regs ); + regs->GR_G(r1) = (S16)ARCH_DEP(vfetch2) ( effective_addr2, b2, regs ); } /* end DEF_INST(load_long_halfword) */ #endif /*defined(FEATURE_ESAME)*/ @@ -4958,9 +4958,9 @@ len--; /* Update the registers */ - GR_A(r1, regs) = addr1; - GR_A(r1 + 1, regs) = len; - GR_A(r2, regs) = addr2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(len, r1 + 1, regs); + GR_A_COPY(addr2, r2, regs); /* Set cc0 when all values have been processed */ regs->psw.cc = len ? 3 : 0; @@ -5030,9 +5030,9 @@ len--; /* Update the registers */ - GR_A(r1, regs) = addr1; - GR_A(r1 + 1, regs) = len; - GR_A(r2, regs) = addr2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(len, r1 + 1, regs); + GR_A_COPY(addr2, r2, regs); /* Set cc0 when all values have been processed */ regs->psw.cc = len ? 3 : 0; @@ -5104,9 +5104,9 @@ len -= 2; /* Update the registers */ - GR_A(r1, regs) = addr1; - GR_A(r1 + 1, regs) = len; - GR_A(r2, regs) = addr2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(len, r1 + 1, regs); + GR_A_COPY(addr2, r2, regs); /* Set cc0 when all values have been processed */ regs->psw.cc = len ? 3 : 0; @@ -5177,9 +5177,9 @@ len -= 2; /* Update the registers */ - GR_A(r1, regs) = addr1; - GR_A(r1 + 1, regs) = len; - GR_A(r2, regs) = addr2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(len, r1 + 1, regs); + GR_A_COPY(addr2, r2, regs); /* Set cc0 when all values have been processed */ regs->psw.cc = len ? 3 : 0; @@ -5265,10 +5265,10 @@ len1 -= 2; /* Update the registers */ - GR_A(r1, regs) = addr1; - GR_A(r1 + 1, regs) = len1; - GR_A(r3, regs) = addr3; - GR_A(r3 + 1, regs) = len3; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(len1, r1 + 1, regs); + GR_A_COPY(addr3, r3, regs); + GR_A_COPY(len3, r3 + 1, regs); } /* end for(i) */ @@ -5358,10 +5358,10 @@ } /* end for(i) */ /* Update the registers */ - GR_A(r1, regs) = addr1; - GR_A(r1 + 1, regs) = len1; - GR_A(r3, regs) = addr3; - GR_A(r3 + 1, regs) = len3; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(len1, r1 + 1, regs); + GR_A_COPY(addr3, r3, regs); + GR_A_COPY(len3, r3 + 1, regs); regs->psw.cc = cc; diff -urN ../tmp-orig/hercules-2.17.1/feature.h ./feature.h --- ../tmp-orig/hercules-2.17.1/feature.h 2003-01-24 16:53:54.000000000 +0100 +++ ./feature.h 2005-01-07 09:39:11.323522216 +0100 @@ -70,6 +70,7 @@ #undef CR #undef GR #undef GR_A +#undef GR_A_COPY #undef MONCODE #undef TEA #undef DXC @@ -162,6 +163,7 @@ #define CR(_r) CR_L(_r) #define GR(_r) GR_L(_r) #define GR_A(_r, _regs) ((_regs)->GR_L((_r))) +#define GR_A_COPY(source, _r, _regs) ((_regs)->GR_L((_r))) = source #define MONCODE MC_L #define TEA EA_L #define DXC tea @@ -262,6 +264,7 @@ #define CR(_r) CR_L(_r) #define GR(_r) GR_L(_r) #define GR_A(_r, _regs) ((_regs)->GR_L((_r))) +#define GR_A_COPY(source, _r, _regs) ((_regs)->GR_L((_r))) = source #define MONCODE MC_L #define TEA EA_L #define DXC tea @@ -362,6 +365,7 @@ #define CR(_r) CR_G(_r) #define GR(_r) GR_G(_r) #define GR_A(_r, _regs) ((_regs)->psw.amode64 ? (_regs)->GR_G((_r)) : (_regs)->GR_L((_r))) +#define GR_A_COPY(source, _r, _regs) if ((_regs)->psw.amode64) (_regs)->GR_G((_r)) = source; else (_regs)->GR_L((_r)) = source #define MONCODE MC_G #define TEA EA_G #define DXC dataexc diff -urN ../tmp-orig/hercules-2.17.1/general1.c ./general1.c --- ../tmp-orig/hercules-2.17.1/general1.c 2003-01-24 16:53:55.000000000 +0100 +++ ./general1.c 2005-01-07 09:42:46.477813792 +0100 @@ -98,7 +98,7 @@ RX(inst, execflag, regs, r1, b2, effective_addr2); /* Load 2 bytes from operand address */ - (S32)n = (S16)ARCH_DEP(vfetch2) ( effective_addr2, b2, regs ); + n = (S16)ARCH_DEP(vfetch2) ( effective_addr2, b2, regs ); /* Add signed operands and set condition code */ regs->psw.cc = @@ -821,7 +821,7 @@ j = (r3 & 1) ? (S32)regs->GR_L(r3) : (S32)regs->GR_L(r3+1); /* Add the increment value to the R1 register */ - (S32)regs->GR_L(r1) += i; + regs->GR_L(r1) = (S32)regs->GR_L(r1) + i; /* Branch if result compares high */ if ( (S32)regs->GR_L(r1) > j ) @@ -860,7 +860,7 @@ j = (r3 & 1) ? (S32)regs->GR_L(r3) : (S32)regs->GR_L(r3+1); /* Add the increment value to the R1 register */ - (S32)regs->GR_L(r1) += i; + regs->GR_L(r1) = (S32)regs->GR_L(r1) + i; /* Branch if result compares low or equal */ if ( (S32)regs->GR_L(r1) <= j ) @@ -1001,7 +1001,7 @@ j = (r3 & 1) ? (S32)regs->GR_L(r3) : (S32)regs->GR_L(r3+1); /* Add the increment value to the R1 register */ - (S32)regs->GR_L(r1) += i; + regs->GR_L(r1) = (S32)regs->GR_L(r1) + i; /* Branch if result compares high */ if ( (S32)regs->GR_L(r1) > j ) @@ -1042,7 +1042,7 @@ j = (r3 & 1) ? (S32)regs->GR_L(r3) : (S32)regs->GR_L(r3+1); /* Add the increment value to the R1 register */ - (S32)regs->GR_L(r1) += i; + regs->GR_L(r1) = (S32)regs->GR_L(r1) + i; /* Branch if result compares low or equal */ if ( (S32)regs->GR_L(r1) <= j ) @@ -1138,8 +1138,8 @@ regs->GR_L(r1) = dreg; /* Update the operand address and length registers */ - GR_A(r2, regs) = addr2; - GR_A(r2+1, regs) = len; + GR_A_COPY(addr2, r2, regs); + GR_A_COPY(len, r2+1, regs); /* Set condition code 0 or 3 */ regs->psw.cc = cc; @@ -1414,7 +1414,7 @@ RX(inst, execflag, regs, r1, b2, effective_addr2); /* Load rightmost 2 bytes of comparand from operand address */ - (S32)n = (S16)ARCH_DEP(vfetch2) ( effective_addr2, b2, regs ); + n = (S16)ARCH_DEP(vfetch2) ( effective_addr2, b2, regs ); /* Compare signed operands and set condition code */ regs->psw.cc = @@ -1641,8 +1641,8 @@ /* Update Regs if cross half page - may get access rupt */ if ((addr1 & 0x7ff) == 0 || (addr2 & 0x7ff) == 0) { - GR_A(r1, regs) = addr1; - GR_A(r2, regs) = addr2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(addr2, r2, regs); regs->GR_LA24(r1+1) = len1; regs->GR_LA24(r2+1) = len2; @@ -1663,8 +1663,8 @@ } /* end while(len1||len2) */ /* Update the registers */ - GR_A(r1, regs) = addr1; - GR_A(r2, regs) = addr2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(addr2, r2, regs); regs->GR_LA24(r1+1) = len1; regs->GR_LA24(r2+1) = len2; @@ -1745,10 +1745,10 @@ } /* end for(i) */ /* Update the registers */ - GR_A(r1, regs) = addr1; - GR_A(r1+1, regs) = len1; - GR_A(r3, regs) = addr2; - GR_A(r3+1, regs) = len2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(len1, r1+1, regs); + GR_A_COPY(addr2, r3, regs); + GR_A_COPY(len2, r3+1, regs); regs->psw.cc = cc; @@ -1827,8 +1827,8 @@ } /* end for(i) */ /* Set R1 and R2 to point to current character of each operand */ - GR_A(r1, regs) = addr1; - GR_A(r2, regs) = addr2; + GR_A_COPY(addr1, r1, regs) = addr1; + GR_A_COPY(addr2, r2, regs) = addr2; /* Set condition code */ regs->psw.cc = cc; @@ -1873,8 +1873,8 @@ addr2 = regs->GR(r2) & ADDRESS_MAXWRAP(regs); /* update regs so unused bits zeroed */ - GR_A(r1, regs) = addr1; - GR_A(r2, regs) = addr2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(addr2, r2, regs); /* Load signed operand lengths from R1+1 and R2+1 */ len1 = @@ -1986,12 +1986,12 @@ if ((addr1 & 0x7FF) == 0 || (addr2 & 0x7FF) == 0) { /* Update R1 and R2 to point to next bytes to compare */ - GR_A(r1, regs) = addr1; - GR_A(r2, regs) = addr2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(addr2, r2, regs); /* Set R1+1 and R2+1 to remaining operand lengths */ - GR_A(r1+1, regs) = len1; - GR_A(r2+1, regs) = len2; + GR_A_COPY(len1, r1+1, regs); + GR_A_COPY(len2, r2+1, regs); } /* If equal byte count has reached substring length @@ -2008,23 +2008,23 @@ if (cc < 2) { /* Update R1 and R2 to point to the equal substring */ - GR_A(r1, regs) = eqaddr1; - GR_A(r2, regs) = eqaddr2; + GR_A_COPY(eqaddr1, r1, regs); + GR_A_COPY(eqaddr2, r2, regs); /* Set R1+1 and R2+1 to length remaining in each operand after the start of the substring */ - GR_A(r1+1, regs) = remlen1; - GR_A(r2+1, regs) = remlen2; + GR_A_COPY(remlen1, r1+1, regs); + GR_A_COPY(remlen2, r2+1, regs); } else { /* Update R1 and R2 to point to next bytes to compare */ - GR_A(r1, regs) = addr1; - GR_A(r2, regs) = addr2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(addr2, r2, regs); /* Set R1+1 and R2+1 to remaining operand lengths */ - GR_A(r1+1, regs) = len1; - GR_A(r2+1, regs) = len2; + GR_A_COPY(len1, r1+1, regs); + GR_A_COPY(len2, r2+1, regs); } /* Set condition code */ @@ -2149,10 +2149,10 @@ len2 = nlen2; /* Update the registers */ - GR_A(r1, regs) = addr1; - GR_A(r1+1, regs) = len1; - GR_A(r2, regs) = addr2; - GR_A(r2+1, regs) = len2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(len1, r1+1, regs); + GR_A_COPY(addr2, r2, regs); + GR_A_COPY(len2, r2+1, regs); if (len1 == 0) cc = 1; @@ -2310,10 +2310,10 @@ len2 -= n + 1; /* Update the registers */ - GR_A(r1, regs) = addr1; - GR_A(r1+1, regs) = len1; - GR_A(r2, regs) = addr2; - GR_A(r2+1, regs) = len2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(len1, r1+1, regs); + GR_A_COPY(addr2, r2, regs); + GR_A_COPY(len2, r2+1, regs); if (len1 == 0) cc = 1; @@ -2398,7 +2398,7 @@ /* Result is negative if sign is X'B' or X'D' */ if (d == 0x0B || d == 0x0D) { - (S64)dreg = -((S64)dreg); + dreg = -((S64)dreg); } /* Store low-order 32 bits of result into R1 register */ @@ -2928,7 +2928,7 @@ RX(inst, execflag, regs, r1, b2, effective_addr2); /* Load operand address into register */ - GR_A(r1, regs) = effective_addr2; + GR_A_COPY(effective_addr2, r1, regs); } @@ -2945,7 +2945,7 @@ RX(inst, execflag, regs, r1, b2, effective_addr2); /* Load operand address into register */ - GR_A(r1, regs) = effective_addr2; + GR_A_COPY(effective_addr2, r1, regs); /* Load corresponding value into access register */ if ( PRIMARY_SPACE_MODE(&(regs->psw)) ) @@ -2999,7 +2999,7 @@ } /* Load complement of second operand and set condition code */ - (S32)regs->GR_L(r1) = -((S32)regs->GR_L(r2)); + regs->GR_L(r1) = -((S32)regs->GR_L(r2)); regs->psw.cc = (S32)regs->GR_L(r1) < 0 ? 1 : (S32)regs->GR_L(r1) > 0 ? 2 : 0; @@ -3018,7 +3018,7 @@ RX(inst, execflag, regs, r1, b2, effective_addr2); /* Load rightmost 2 bytes of register from operand address */ - (S32)regs->GR_L(r1) = (S16)ARCH_DEP(vfetch2) ( effective_addr2, b2, regs ); + regs->GR_L(r1) = (S16)ARCH_DEP(vfetch2) ( effective_addr2, b2, regs ); } @@ -3035,7 +3035,7 @@ RI(inst, execflag, regs, r1, opcd, i2); /* Load operand into register */ - (S32)regs->GR_L(r1) = (S16)i2; + regs->GR_L(r1) = (S16)i2; } #endif /*defined(FEATURE_IMMEDIATE_AND_RELATIVE)*/ @@ -3085,7 +3085,7 @@ RR(inst, execflag, regs, r1, r2); /* Load negative value of second operand and set cc */ - (S32)regs->GR_L(r1) = (S32)regs->GR_L(r2) > 0 ? + regs->GR_L(r1) = (S32)regs->GR_L(r2) > 0 ? -((S32)regs->GR_L(r2)) : (S32)regs->GR_L(r2); @@ -3113,7 +3113,7 @@ } /* Load positive value of second operand and set cc */ - (S32)regs->GR_L(r1) = (S32)regs->GR_L(r2) < 0 ? + regs->GR_L(r1) = (S32)regs->GR_L(r2) < 0 ? -((S32)regs->GR_L(r2)) : (S32)regs->GR_L(r2); @@ -3280,8 +3280,8 @@ || (n <= addr2 && (addr1 > addr2 || addr1 <= n))) { - GR_A(r1, regs) = addr1; - GR_A(r2, regs) = addr2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(addr2, r2, regs); regs->psw.cc = 3; #if 0 logmsg (_("MVCL destructive overlap: ")); @@ -3325,7 +3325,7 @@ addr1 &= ADDRESS_MAXWRAP(regs); /* Update the registers */ - GR_A(r1, regs) = addr1; + GR_A_COPY(addr1, r1, regs); regs->GR_LA24(r1+1) = len1; /* The instruction can be interrupted when a CPU determined @@ -3368,8 +3368,8 @@ #endif /*defined(FEATURE_PER)*/ /* Update the registers */ - GR_A(r1, regs) = addr1 + len1; - GR_A(r2, regs) = addr2 + len2; + GR_A_COPY(addr1 + len1, r1, regs); + GR_A_COPY(addr2 + len2, r2, regs); regs->GR_LA24(r1+1) = 0; regs->GR_LA24(r2+1) = 0; regs->psw.cc = cc; @@ -3405,8 +3405,8 @@ len2 -= 256; /* Update the registers */ - GR_A(r1, regs) = addr1; - GR_A(r2, regs) = addr2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(addr2, r2, regs); regs->GR_LA24(r1+1) = len1; regs->GR_LA24(r2+1) = len2; @@ -3448,8 +3448,8 @@ len1--; /* Update the registers */ - GR_A(r1, regs) = addr1; - GR_A(r2, regs) = addr2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(addr2, r2, regs); regs->GR_LA24(r1+1) = len1; regs->GR_LA24(r2+1) = len2; @@ -3543,10 +3543,10 @@ len1--; /* Update the registers */ - GR_A(r1, regs) = addr1; - GR_A(r1+1, regs) = len1; - GR_A(r3, regs) = addr2; - GR_A(r3+1, regs) = len2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(len1, r1+1, regs); + GR_A_COPY(addr2, r3, regs); + GR_A_COPY(len2, r3+1, regs); } /* end for(i) */ @@ -3679,7 +3679,7 @@ if (sbyte == termchar) { /* Set r1 to point to terminating character */ - GR_A(r1, regs) = addr1; + GR_A_COPY(addr1, r1, regs); /* Set condition code 1 */ regs->psw.cc = 1; @@ -3695,8 +3695,8 @@ } /* end for(i) */ /* Set R1 and R2 to point to next character of each operand */ - GR_A(r1, regs) = addr1; - GR_A(r2, regs) = addr2; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(addr2, r2, regs); /* Set condition code 3 */ regs->psw.cc = 3; @@ -3904,7 +3904,7 @@ RX(inst, execflag, regs, r1, b2, effective_addr2); /* Load 2 bytes from operand address */ - (S32)n = (S16)ARCH_DEP(vfetch2) ( effective_addr2, b2, regs ); + n = (S16)ARCH_DEP(vfetch2) ( effective_addr2, b2, regs ); /* Multiply R1 register by n, ignore leftmost 32 bits of result, and place rightmost 32 bits in R1 register */ @@ -3926,7 +3926,7 @@ RI(inst, execflag, regs, r1, opcd, i2); /* Multiply register by operand ignoring overflow */ - (S32)regs->GR_L(r1) *= (S16)i2; + regs->GR_L(r1) = (S32)regs->GR_L(r1) * (S16)i2; } /* end DEF_INST(multiply_halfword_immediate) */ @@ -3941,7 +3941,7 @@ RRE(inst, execflag, regs, r1, r2); /* Multiply signed registers ignoring overflow */ - (S32)regs->GR_L(r1) *= (S32)regs->GR_L(r2); + regs->GR_L(r1) = (S32)regs->GR_L(r1) * (S32)regs->GR_L(r2); } /* end DEF_INST(multiply_single_register) */ @@ -3962,7 +3962,7 @@ n = ARCH_DEP(vfetch4) ( effective_addr2, b2, regs ); /* Multiply signed operands ignoring overflow */ - (S32)regs->GR_L(r1) *= (S32)n; + regs->GR_L(r1) = (S32)regs->GR_L(r1) * (S32)n; } /* end DEF_INST(multiply_single) */ #endif /*defined(FEATURE_IMMEDIATE_AND_RELATIVE)*/ diff -urN ../tmp-orig/hercules-2.17.1/general2.c ./general2.c --- ../tmp-orig/hercules-2.17.1/general2.c 2003-01-31 00:27:43.000000000 +0100 +++ ./general2.c 2005-01-07 09:51:48.041483600 +0100 @@ -473,7 +473,7 @@ code 1 and load the address of the character into R1 */ if (sbyte == termchar) { - GR_A(r1, regs) = addr2; + GR_A_COPY(addr2, r1, regs); regs->psw.cc = 1; return; } @@ -485,7 +485,7 @@ } /* end for(i) */ /* Set R2 to point to next character of operand */ - GR_A(r2, regs) = addr2; + GR_A_COPY(addr2, r2, regs); /* Return condition code 3 */ regs->psw.cc = 3; @@ -757,7 +757,7 @@ n = effective_addr2 & 0x3F; /* Shift the signed value of the R1 register */ - (S32)regs->GR_L(r1) = n > 30 ? + regs->GR_L(r1) = n > 30 ? ((S32)regs->GR_L(r1) < 0 ? -1 : 0) : (S32)regs->GR_L(r1) >> n; @@ -1122,7 +1122,7 @@ RX(inst, execflag, regs, r1, b2, effective_addr2); /* Load 2 bytes from operand address */ - (S32)n = (S16)ARCH_DEP(vfetch2) ( effective_addr2, b2, regs ); + n = (S16)ARCH_DEP(vfetch2) ( effective_addr2, b2, regs ); /* Subtract signed operands and set condition code */ regs->psw.cc = @@ -1600,8 +1600,8 @@ len1--; /* Update the registers */ - GR_A(r1, regs) = addr1; - GR_A(r1+1, regs) = len1; + GR_A_COPY(addr1, r1, regs); + GR_A_COPY(len1, r1+1, regs); } /* end for(i) */ diff -urN ../tmp-orig/hercules-2.17.1/service.c ./service.c --- ../tmp-orig/hercules-2.17.1/service.c 2003-01-08 03:46:43.000000000 +0100 +++ ./service.c 2005-01-07 09:50:31.551111904 +0100 @@ -1194,7 +1194,7 @@ } } mcd_len -= obj_len; - (BYTE*)obj_hdr += obj_len; + obj_hdr = (BYTE*)obj_hdr + obj_len; } /* Indicate Event Processed */ diff -urN ../tmp-orig/hercules-2.17.1/sie.c ./sie.c --- ../tmp-orig/hercules-2.17.1/sie.c 2003-01-31 00:27:43.000000000 +0100 +++ ./sie.c 2005-01-07 09:59:16.647285152 +0100 @@ -125,7 +125,7 @@ ARCH_DEP(program_interrupt) (regs, PGM_ADDRESSING_EXCEPTION); /* Direct pointer to state descriptor block */ - STATEBK = (void*)(regs->mainstor + effective_addr2); + GUESTREGS->siebk = (void*)(regs->mainstor + effective_addr2); obtain_lock(&sysblk.intlock); diff -urN ../tmp-orig/hercules-2.17.1/timer.c ./timer.c --- ../tmp-orig/hercules-2.17.1/timer.c 2003-01-31 00:27:43.000000000 +0100 +++ ./timer.c 2005-01-07 09:54:09.422990344 +0100 @@ -140,7 +140,7 @@ * [2] Decrement the CPU timer for each CPU * *-------------------------------------------*/ - (S64)regs->ptimer -= (S64)sysblk.todclock_diff << 8; + regs->ptimer = (S64)regs->ptimer - (S64)sysblk.todclock_diff << 8; /* Set interrupt flag if the CPU timer is negative */ if ((S64)regs->ptimer < 0) @@ -159,7 +159,7 @@ if(regs->sie_active) { /* Decrement the guest CPU timer */ - (S64)regs->guestregs->ptimer -= (S64)sysblk.todclock_diff << 8; + regs->guestregs->ptimer = (S64)regs->guestregs->ptimer - (S64)sysblk.todclock_diff << 8; /* Set interrupt flag if the CPU timer is negative */ if ((S64)regs->guestregs->ptimer < 0) --------------------------------------- Received: (at 289121-close) by bugs.debian.org; 7 Nov 2005 23:22:25 +0000 >From [EMAIL PROTECTED] Mon Nov 07 15:22:25 2005 Return-path: <[EMAIL PROTECTED]> Received: from katie by spohr.debian.org with local (Exim 3.36 1 (Debian)) id 1EZGEu-00083p-00; Mon, 07 Nov 2005 15:17:24 -0800 From: Peter De Schrijver (p2) <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] X-Katie: $Revision: 1.56 $ Subject: Bug#289121: fixed in hercules 3.0.2-1 Message-Id: <[EMAIL PROTECTED]> Sender: Archive Administrator <[EMAIL PROTECTED]> Date: Mon, 07 Nov 2005 15:17:24 -0800 Delivered-To: [EMAIL PROTECTED] 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: 5 Source: hercules Source-Version: 3.0.2-1 We believe that the bug you reported is fixed in the latest version of hercules, which is due to be installed in the Debian FTP archive: hercules_3.0.2-1.diff.gz to pool/main/h/hercules/hercules_3.0.2-1.diff.gz hercules_3.0.2-1.dsc to pool/main/h/hercules/hercules_3.0.2-1.dsc hercules_3.0.2-1_i386.deb to pool/main/h/hercules/hercules_3.0.2-1_i386.deb hercules_3.0.2.orig.tar.gz to pool/main/h/hercules/hercules_3.0.2.orig.tar.gz 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 [EMAIL PROTECTED], and the maintainer will reopen the bug report if appropriate. Debian distribution maintenance software pp. Peter De Schrijver (p2) <[EMAIL PROTECTED]> (supplier of updated hercules 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 [EMAIL PROTECTED]) -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Format: 1.7 Date: Mon, 24 Oct 2005 01:38:32 +0200 Source: hercules Binary: hercules Architecture: source i386 Version: 3.0.2-1 Distribution: unstable Urgency: low Maintainer: Peter De Schrijver (p2) <[EMAIL PROTECTED]> Changed-By: Peter De Schrijver (p2) <[EMAIL PROTECTED]> Description: hercules - System/370, ESA/390 and z/Architecture Emulator Closes: 184217 241064 251287 289121 318130 Changes: hercules (3.0.2-1) unstable; urgency=low . * New maintainer * New upstream release (Closes: #289121, #184217, #241064, #251287) * Remove x3270 from suggests (Closes: #318130) Files: bce4c6058dcf26d0232b4af5da90b807 613 otherosfs extra hercules_3.0.2-1.dsc d765ad315a1eba281bd816e63d854dc5 1832443 otherosfs extra hercules_3.0.2.orig.tar.gz 6ea7a7583e7c942219a453dd90008752 37032 otherosfs extra hercules_3.0.2-1.diff.gz 13cde54970f4a638d8f6347bef0ab612 1735988 otherosfs extra hercules_3.0.2-1_i386.deb -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.5 (GNU/Linux) iD8DBQFDb9wuKLKVw/RurbsRAsXdAJoCI9Ca1l+oCxUYWS05L5KCrYp75QCdG4gr qspIvE9BuqhhvtGMnLohU7Q= =jghC -----END PGP SIGNATURE----- -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]