aryeh@eddie.MIT.EDU (Aryeh M. Weiss) (09/17/89)
This is a beezarr one gang! Listen and attend: Machine: 16 MHz 386/387 Hauppauge motherboard w/ 1MB. Total mem: 5MB Op Sys: SCO Xenix V/386 R2.3.1 Dev Sys: SCO Xenix V/386 R2.3 I was porting Gnu Bison v1.03 to the above machine when the compile bombed out on one of the modules. I looked at the code and decided (in a flash of insight like a diamond bullet in my brain) that the preprocessor screwed up. I looked at the prepocessor output (ie. "cc -DUSG -P closure.c") and was amazed that a #define got expanded wrong! Below is a program that reproduces the error. WORDSIZE(n) gets expanded as (((n) + 32 - 1) 32) That's right: no slash before the final 32. THIS IS THE BEZARR PART: if I change just ONE character in the big comment at the beginning of the file, that is, I delete OR add a character in the comment OR if I delete one of the blank lines the WORDSIZE macro is expanded correctly! The only explanation I have is that some buffer in cpp is being overrun, but that doesn't explain everything. #! /bin/sh # To extract, remove mail header lines and type "sh filename" # DO NOT CHANGE ANYTHING IN THIS FILE BEFORE YOU TRY TO REPRODUCE THE ERROR # Preprocess file via cc -P xxx.c echo x - xxx.c sed -e 's/^X//' > xxx.c << '!FaR!OuT!' X/* Define machine-dependencies for bison, X Copyright (C) 1984, 1989 Free Software Foundation, Inc. X XThis file is part of Bison, the GNU Compiler Compiler. X XBison is free software; you can redistribute it and/or modify Xit under the terms of the GNU General Public License as published by Xthe Free Software Foundation; either version 1, or (at your option) Xany later version. X XBison is distributed in the hope that it will be useful, Xbut WITHOUT ANY WARRANTY; without even the implied warranty of XMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the XGNU General Public License for more details. X XYou should have received a copy of the GNU General Public License Xalong with Bison; see the file COPYING. If not, write to Xthe Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ X X X#define MAXSHORT 32767 X#define MINSHORT -32768 X X#ifdef MSDOS X#define MAXTABLE 16383 X#define BITS_PER_WORD 16 X#else X#define MAXTABLE 32767 X#define BITS_PER_WORD 32 X#endif X X#define WORDSIZE(n) (((n) + BITS_PER_WORD - 1) / BITS_PER_WORD) X X WORDSIZE(n) !FaR!OuT! exit -- aryeh@eddie.mit.edu mit-eddie!lees-rif!aryeh