Path: utzoo!utgpu!watmath!uunet!tut.cis.ohio-state.edu!DSPVAX.MIT.EDU!tsilva%aaec1.UUCP From: tsilva%aaec1.UUCP@DSPVAX.MIT.EDU (Tony Silva) Newsgroups: gnu.utils.bug Subject: bug in GNU make (variable.c, line 182) Message-ID: <8903272308.AA27195@aaec.uucp> Date: 27 Mar 89 23:08:54 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 298 Hi! First let me just say that you guys at FSF are creating some really fantastic software. I have installed most of the latest GNU code on all our machines (mostly Sun-3's). I (and everyone else here at Atlantic) use Emacs every day, ALL day. There probably aren't many features or key bindings I don't use all the time. As for gdb, it blows the doors off of dbx. And finally, I'm a big fan of C, but do a lot of work which could benefit from simpler standard I/O (no more printf() format strings) and complex math (no more zmul(z1, z2) for z1 * z2, etc.), and therefore am looking forward to using your C++ compiler on a daily basis. I try to get everyone I know, both here and at other companies or universities, using GNU software since it is so clean and powerful (and free to boot!). Keep up the great work! I'm writing to report a bug in GNU make (which is otherwise really great -- extremely well thought out). The bug shows up on a Sun 3/160 running Sun OS 3.2 (host "aaec1"). It does not show up on a Sun 3/280 running Sun OS 4.0.1, but I believe that it is still a bug in the source code. tsilva@aaec1> cd /loc/new/make tsilva@aaec1> make -f /dev/null -p ... (lots of output) MAKEFLAGS (environment) := -j1 -S FC (default) := f77 CO (default) := co PC (default) := pc AR (default) := ar r IOT trap (core dumped) (OH-OH!!!) tsilva@aaec1> gdb make core Reading symbol data from /loc/new/make/make...done. Core file is from "make". Program terminated with signal 6, IOT trap. (gdb) i st #0 0x129d4 in kill () #1 0x10d74 in _sigtramp () #2 0xd880 in print_variable_data_base () (variable.c line 1730) #3 0x59dc in print_data_base () (make.c line 961) #4 0x5290 in main (argc=4, argv=(char **) 0xefffdbc, envp=(char **) 0xefffdd0) (make.c line 690) (gdb) up #1 0x10d74 in _sigtramp () (gdb) #2 0xd880 in print_variable_data_base () (variable.c line 1730) 1730 abort (); (gdb) p v->origin $1 = 200 (gdb) q v->origin should be an enum "variable_origin" value like "o_file" ("200" is a garbage value). I ran lint(1) on all the GNU make sources. The bug is indicated by the line: define_variable: variable # of args. variable.c(80) :: variable.c(182) in the lint output below. tsilva@aaec1> cat -n variable.c | fgrep 182 182 (void) define_variable ("MAKELEVEL", 9, buf); I believe this line should read: 182 (void) define_variable ("MAKELEVEL", 9, buf, o_file, 0); (Maybe "o_file" should be some other enum value.) Can you send me an E-mail note whether I'm right or wrong? I'd really appreciate it. To all you guys at FSF, thanks again for all the great software. Tony Silva Atlantic Aerospace Electronics Corp. ARPA: tsilva%aaec1.UUCP@dspvax.MIT.EDU 470 Totten Pond Road UUCP: ...!seismo!dspvax!aaec1!tsilva Waltham, MA 02154 (617)890-4200 ----------------------------------------------------------------------------- Here's the rest of the lint output (can most of this be cleaned up too?): tsilva@aaec1> lint *.c ar.c: arscan.c: commands.c: dir.c: file.c: glob.c: make.c: make.c(476): warning: len unused in function main make.c(1195): warning: argument s6 unused in function error read.c: read.c(362): warning: commands_started may be used before set remake.c: remake.c(514): warning: statement not reached remake.c(521): warning: statement not reached remake.c(524): warning: statement not reached remake.c(526): warning: statement not reached remake.c(528): warning: statement not reached remake.c(536): warning: statement not reached rule.c: variable.c: version.c: vpath.c: vpath.c(191): warning: st unused in function construct_vpath_list Lint pass2: savestring, arg. 2 used inconsistently make.c(1267) :: ar.c(59) savestring, arg. 2 used inconsistently make.c(1267) :: ar.c(60) savestring, arg. 2 used inconsistently make.c(1267) :: ar.c(97) savestring, arg. 2 used inconsistently make.c(1267) :: ar.c(98) f_mtime value declared inconsistently remake.c(572) :: ar.c(102) free value declared inconsistently llib-lc(278) :: ar.c(126) sprintf value declared inconsistently llib-lc(512) :: arscan.c(308) bcopy value declared inconsistently llib-lc(207) :: arscan.c(221) savestring, arg. 2 used inconsistently make.c(1267) :: commands.c(547) savestring, arg. 2 used inconsistently make.c(1267) :: commands.c(549) savestring, arg. 2 used inconsistently make.c(1267) :: commands.c(553) savestring, arg. 2 used inconsistently make.c(1267) :: commands.c(565) savestring, arg. 2 used inconsistently make.c(1267) :: commands.c(570) savestring, arg. 2 used inconsistently make.c(1267) :: commands.c(573) savestring, arg. 2 used inconsistently make.c(1267) :: commands.c(576) bcopy, arg. 3 used inconsistently llib-lc(207) :: commands.c(605) bcopy, arg. 3 used inconsistently llib-lc(207) :: commands.c(610) savestring, arg. 2 used inconsistently make.c(1267) :: commands.c(650) xmalloc, arg. 1 used inconsistently make.c(1244) :: commands.c(718) xmalloc, arg. 1 used inconsistently make.c(1244) :: commands.c(721) sprintf value declared inconsistently llib-lc(512) :: commands.c(193) bcopy value declared inconsistently llib-lc(207) :: commands.c(610) free value declared inconsistently llib-lc(278) :: commands.c(665) abort value declared inconsistently llib-lc(197) :: commands.c(730) _exit value declared inconsistently llib-lc(57) :: commands.c(462) savestring, arg. 2 used inconsistently make.c(1267) :: dir.c(93) savestring, arg. 2 used inconsistently make.c(1267) :: dir.c(264) bzero value declared inconsistently llib-lc(209) :: dir.c(256) bcopy value declared inconsistently llib-lc(207) :: dir.c(286) bzero value declared inconsistently llib-lc(209) :: file.c(94) free value declared inconsistently llib-lc(278) :: file.c(211) abort value declared inconsistently llib-lc(197) :: file.c(124) bcopy, arg. 3 used inconsistently llib-lc(207) :: glob.c(373) malloc, arg. 1 used inconsistently llib-lc(349) :: glob.c(379) malloc, arg. 1 used inconsistently llib-lc(349) :: glob.c(422) malloc, arg. 1 used inconsistently llib-lc(349) :: glob.c(426) free, arg. 1 used inconsistently llib-lc(278) :: glob.c(436) free, arg. 1 used inconsistently llib-lc(278) :: glob.c(482) realloc, arg. 1 used inconsistently llib-lc(392) :: glob.c(527) realloc, arg. 2 used inconsistently llib-lc(392) :: glob.c(527) free, arg. 1 used inconsistently llib-lc(278) :: glob.c(531) free, arg. 1 used inconsistently llib-lc(278) :: glob.c(537) bcopy value declared inconsistently llib-lc(207) :: glob.c(373) free value declared inconsistently llib-lc(278) :: glob.c(537) define_variable, arg. 2 used inconsistently variable.c(80) :: make.c(324) savestring, arg. 2 used inconsistently make.c(1267) :: make.c(746) savestring, arg. 2 used inconsistently make.c(1267) :: make.c(796) bcopy, arg. 3 used inconsistently llib-lc(207) :: make.c(1136) bcopy, arg. 3 used inconsistently llib-lc(207) :: make.c(1138) bcopy, arg. 3 used inconsistently llib-lc(207) :: make.c(1140) bcopy, arg. 3 used inconsistently llib-lc(207) :: make.c(1270) strncmp, arg. 3 used inconsistently llib-lc(432) :: make.c(1294) savestring, arg. 2 used inconsistently make.c(1267) :: make.c(1411) bcopy value declared inconsistently llib-lc(207) :: make.c(1409) free value declared inconsistently llib-lc(278) :: make.c(633) abort value declared inconsistently llib-lc(197) :: make.c(1017) sprintf value declared inconsistently llib-lc(512) :: make.c(911) exit value declared inconsistently llib-lc(273) :: make.c(1169) mktemp value declared inconsistently llib-lc(356) :: make.c(483) savestring, arg. 2 used inconsistently make.c(1267) :: read.c(112) do_define, arg. 2 used inconsistently read.c(569) :: read.c(318) do_define, arg. 2 used inconsistently read.c(569) :: read.c(335) savestring, arg. 2 used inconsistently make.c(1267) :: read.c(357) bcopy, arg. 3 used inconsistently llib-lc(207) :: read.c(422) bcopy, arg. 3 used inconsistently llib-lc(207) :: read.c(534) bcopy, arg. 3 used inconsistently llib-lc(207) :: read.c(611) alloca, arg. 1 used inconsistently dir.c(211) :: read.c(757) bcopy, arg. 3 used inconsistently llib-lc(207) :: read.c(758) savestring, arg. 2 used inconsistently make.c(1267) :: read.c(923) savestring, arg. 2 used inconsistently make.c(1267) :: read.c(999) strncmp, arg. 3 used inconsistently llib-lc(432) :: read.c(1047) savestring, arg. 2 used inconsistently make.c(1267) :: read.c(1119) qsort, arg. 2 used inconsistently llib-lc(385) :: read.c(1308) bzero value declared inconsistently llib-lc(209) :: read.c(358) bcopy value declared inconsistently llib-lc(207) :: read.c(758) free value declared inconsistently llib-lc(278) :: read.c(1317) qsort value declared inconsistently llib-lc(385) :: read.c(1308) update_file, arg. 2 used inconsistently remake.c(143) :: remake.c(86) lseek value used inconsistently llib-lc(94) :: remake.c(525) lseek value declared inconsistently llib-lc(94) :: remake.c(525) free value declared inconsistently llib-lc(278) :: remake.c(643) abort value declared inconsistently llib-lc(197) :: remake.c(212) alloca, arg. 1 used inconsistently dir.c(211) :: rule.c(333) alloca, arg. 1 used inconsistently dir.c(211) :: rule.c(337) alloca, arg. 1 used inconsistently dir.c(211) :: rule.c(340) alloca, arg. 1 used inconsistently dir.c(211) :: rule.c(345) alloca, arg. 1 used inconsistently dir.c(211) :: rule.c(353) alloca, arg. 1 used inconsistently dir.c(211) :: rule.c(361) bcopy, arg. 3 used inconsistently llib-lc(207) :: rule.c(561) bcopy, arg. 3 used inconsistently llib-lc(207) :: rule.c(567) savestring, arg. 2 used inconsistently make.c(1267) :: rule.c(595) savestring, arg. 2 used inconsistently make.c(1267) :: rule.c(625) bcopy, arg. 3 used inconsistently llib-lc(207) :: rule.c(799) bcopy, arg. 3 used inconsistently llib-lc(207) :: rule.c(803) alloca, arg. 1 used inconsistently dir.c(211) :: rule.c(905) bcopy, arg. 3 used inconsistently llib-lc(207) :: rule.c(914) bcopy, arg. 3 used inconsistently llib-lc(207) :: rule.c(935) bcopy, arg. 3 used inconsistently llib-lc(207) :: rule.c(943) bcopy, arg. 3 used inconsistently llib-lc(207) :: rule.c(958) bcopy, arg. 3 used inconsistently llib-lc(207) :: rule.c(967) savestring, arg. 2 used inconsistently make.c(1267) :: rule.c(1084) define_variable, arg. 2 used inconsistently variable.c(80) :: rule.c(1181) bzero value declared inconsistently llib-lc(209) :: rule.c(620) bcopy value declared inconsistently llib-lc(207) :: rule.c(967) free value declared inconsistently llib-lc(278) :: rule.c(1121) abort value declared inconsistently llib-lc(197) :: rule.c(1128) strncmp, arg. 3 used inconsistently llib-lc(432) :: variable.c(92) savestring, arg. 2 used inconsistently make.c(1267) :: variable.c(102) savestring, arg. 2 used inconsistently make.c(1267) :: variable.c(113) strncmp, arg. 3 used inconsistently llib-lc(432) :: variable.c(144) define_variable: variable # of args. variable.c(80) :: variable.c(182) savestring, arg. 2 used inconsistently make.c(1267) :: variable.c(186) define_variable, arg. 2 used inconsistently variable.c(80) :: variable.c(2 71) variable_buffer_output, arg. 3 used inconsistently variable.c(1559) :: va riable.c(297) variable_buffer_output, arg. 3 used inconsistently variable.c(1559) :: va riable.c(307) variable_buffer_output, arg. 3 used inconsistently variable.c(1559) :: va riable.c(335) subst_expand, arg. 5 used inconsistently variable.c(290) :: variable.c( 361) subst_expand, arg. 6 used inconsistently variable.c(290) :: variable.c( 361) variable_buffer_output, arg. 3 used inconsistently variable.c(1559) :: va riable.c(420) variable_buffer_output, arg. 3 used inconsistently variable.c(1559) :: va riable.c(431) savestring, arg. 2 used inconsistently make.c(1267) :: variable.c(555) read, arg. 3 used inconsistently llib-lc(120) :: variable.c(661) lookup_variable, arg. 2 used inconsistently variable.c(132) :: variable.c( 711) qsort, arg. 2 used inconsistently llib-lc(385) :: variable.c(774) savestring, arg. 2 used inconsistently make.c(1267) :: variable.c(837) variable_buffer_output, arg. 3 used inconsistently variable.c(1559) :: va riable.c(865) variable_buffer_output, arg. 3 used inconsistently variable.c(1559) :: va riable.c(943) variable_buffer_output, arg. 3 used inconsistently variable.c(1559) :: va riable.c(1070) subst_expand, arg. 5 used inconsistently variable.c(290) :: variable.c( 1108) subst_expand, arg. 6 used inconsistently variable.c(290) :: variable.c( 1108) variable_buffer_output, arg. 3 used inconsistently variable.c(1559) :: va riable.c(1180) variable_buffer_output, arg. 3 used inconsistently variable.c(1559) :: va riable.c(1267) variable_buffer_output, arg. 3 used inconsistently variable.c(1559) :: va riable.c(1353) strncmp, arg. 3 used inconsistently llib-lc(432) :: variable.c(1393) variable_buffer_output, arg. 3 used inconsistently variable.c(1559) :: va riable.c(1453) lookup_variable, arg. 2 used inconsistently variable.c(132) :: variable.c( 1479) lookup_variable, arg. 2 used inconsistently variable.c(132) :: variable.c( 1489) variable_buffer_output, arg. 3 used inconsistently variable.c(1559) :: va riable.c(1505) variable_buffer_output, arg. 3 used inconsistently variable.c(1559) :: va riable.c(1509) variable_buffer_output, arg. 3 used inconsistently variable.c(1559) :: va riable.c(1536) bcopy, arg. 3 used inconsistently llib-lc(207) :: variable.c(1571) xmalloc, arg. 1 used inconsistently make.c(1244) :: variable.c(1618) bcopy, arg. 3 used inconsistently llib-lc(207) :: variable.c(1674) sprintf value declared inconsistently llib-lc(512) :: variable.c(1626) bcopy value declared inconsistently llib-lc(207) :: variable.c(1674) free value declared inconsistently llib-lc(278) :: variable.c(1679) abort value declared inconsistently llib-lc(197) :: variable.c(1730) qsort value declared inconsistently llib-lc(385) :: variable.c(774) _exit value declared inconsistently llib-lc(57) :: variable.c(635) alloca, arg. 1 used inconsistently dir.c(211) :: vpath.c(304) bcopy, arg. 3 used inconsistently llib-lc(207) :: vpath.c(313) bcopy, arg. 3 used inconsistently llib-lc(207) :: vpath.c(320) bcopy, arg. 3 used inconsistently llib-lc(207) :: vpath.c(343) bcopy value declared inconsistently llib-lc(207) :: vpath.c(343) free value declared inconsistently llib-lc(278) :: vpath.c(235) signal returns value which is sometimes ignored strcat returns value which is always ignored strcpy returns value which is always ignored strncpy returns value which is always ignored fclose returns value which is always ignored fflush returns value which is always ignored _flsbuf returns value which is always ignored fprintf returns value which is always ignored printf returns value which is always ignored sprintf returns value which is always ignored sscanf returns value which is always ignored close returns value which is always ignored fstat returns value which is sometimes ignored