Current Path : /compat/linux/proc/68247/cwd/usr/src/crypto/openssl/bugs/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //compat/linux/proc/68247/cwd/usr/src/crypto/openssl/bugs/dggccbug.c |
/* NOCW */ /* dggccbug.c */ /* bug found by Eric Young (eay@cryptsoft.com) - May 1995 */ #include <stdio.h> /* There is a bug in * gcc version 2.5.8 (88open OCS/BCS, DG-2.5.8.3, Oct 14 1994) * as shipped with DGUX 5.4R3.10 that can be bypassed by defining * DG_GCC_BUG in my code. * The bug manifests itself by the vaule of a pointer that is * used only by reference, not having it's value change when it is used * to check for exiting the loop. Probably caused by there being 2 * copies of the valiable, one in a register and one being an address * that is passed. */ /* compare the out put from * gcc dggccbug.c; ./a.out * and * gcc -O dggccbug.c; ./a.out * compile with -DFIXBUG to remove the bug when optimising. */ void inc(a) int *a; { (*a)++; } main() { int p=0; #ifdef FIXBUG int dummy; #endif while (p<3) { fprintf(stderr,"%08X\n",p); inc(&p); #ifdef FIXBUG dummy+=p; #endif } }