busch@arisia.Xerox.COM (Richard Busch) (11/13/90)
The following patch corrects 6 bugs that I recently discovered in the Minix v1.5 mref utility. The bugs cause inaccuracies in the cross reference list which is presented at the end of the new Minix v1.5 reference manual. These patches have been examined and approved for posting by Dr. Tanenbaum. Just so everyone's in sync, here are the crcs before and after the patch. 43034 25486 mref-old.c 27852 3515 mref.c.cdiff 10718 25726 mref.c For those people who care, here is a list of the problems that the patches correct. Page and line numbers refer to the reference manual accompanying the new Minix v1.5 release from PH. The problems are: 1) The symbol that gets stored in location 0 of mref's symbol table is not listed in the cross reference list. (This is why the global symbol "T" which is defined on source line 1109 (p.315) does not appear in the cross reference listing.) 2) When the -m flag is specified, and when the first reference to a global symbol is on the same line of input as the last reference to the alpha- betically previous global symbol, then the line number of the new first reference will not be listed in the cross reference list. (This bug does not affect the cross reference listing in the v1.5 manual, since the -m flag was not used in its creation, but it's still a bug.) 3) A character constant that happens to match a global symbol will erroneously be included in the cross reference list. (This is why, for example, line number 6762 appears in the cross reference list for the global symbol "D" on p.642.) 4) A local symbol will occasionally be listed in the cross reference list (only global symbols are supposed to be shown). This happens because, under certain circumstances, the symbol table lookup routine incorrectly indicates a "hit" when, in fact, the symbol is not present in the symbol table. (This may or may not be reflected in the v1.5 cross reference listing (I didn't have time to track down a specific occurrence) but the problem can be demonstrated with a contrived input file.) 5) When the symbol table fills up due to processing a large quantity of input (like trying to mref all of the include files, kernel, fs, and mm source, in one invocation - a reasonable thing to want to do) the next attempt to store a symbol into the table sends mref into an infinite loop. 6) An incorrect parameter declaration causes the trashing of a word of memory. (Discovered while tracking down the above problems.) -richard -----cut here-----cut here-----cut here-----cut here-----cut here---- table !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ begin 644 mref.c.cdiff M*BHJ(&UR968M;VQD+F,)5&AU($]C=" Q,2 Q.3HT,CHU." Q.3DP"BTM+2!Mz M<F5F+F,)5&AU($]C=" Q,2 R,#HP.#HR-R Q.3DP"BHJ*BHJ*BHJ*BHJ*BHJy M*@HJ*BH@.#(L.#<@*BHJ*@HM+2T@.#(L.#@@+2TM+0H@(&EN="!P:'ES7W!Ax M9V4@/2!02%E37U!!1T4["2\J('1O=&%L('!A9V4@<VEZ93H@=&]P(&AD<BMTw M97AT*V)O='1O;2!H9'(@*B\*("!I;G0@8W5R7VQI;F4["0D)+RH@8W5R<F5Nv M="!L:6YE(&YU;6)E<B J+PH@(&EN="!C=7)?<&%G92 ](#$["0DO*B!C=7)Ru M96YT('!A9V4@;G5M8F5R("HO"BL@:6YT(&YS>6UB;VQS.PD)"2\J(&YU;6)Et M<B!O9B!S>6UB;VQS(&EN('-Y;6)O;"!T86)L92 J+PH@(&EN="!N=&]K96YSs M.PD)"2\J(&YU;6)E<B!O9B!T;VME;G,@:6X@=&AE('1O:V5N6UT@87)R87D@r M*B\*("!I;G0@<W5P<')E<W-I;F<["0DO*B!D;VXG="!P<FEN="!N=6UB97)Sq M(&)E='=E96X@<')O8V5D=7)E<R J+PH@(&EN="!H=6YT:6YG.PD)"2\J('-Ep M="!W:&5N(&AU;G1I;F<@9F]R(&5N9"!O9B!D96-L87)A=&EO;B J+PHJ*BHJo M*BHJ*BHJ*BHJ*BH**BHJ(#4V."PU-S,@*BHJ*@HM+2T@-38Y+#4W-B M+2TMn M"B @("!I;G0@:"P@;&5N.PH@(" @<W1R=6-T('-Y;71A8B J:' ["B @"BL@m M("!I9B H;G-Y;6)O;',@/CT@3E-935,I('!A;FEC*")S>6UB;VP@=&%B;&4@l M;W9E<F9L;W<B*3L**R *(" @("\J(%=A=&-H(&]U="!F;W(@=&AE("-D969Ik M;F4@4%5"3$E#(&QI;F4L(&5T8RX@*B\*(" @(&EF("AS=')L96XH<"D@/3T@j M,"D@<F5T=7)N.PH@(" @:68@*'-T<F-M<"AP+" B4%5"3$E#(BD@/3T@,"D@i M<F5T=7)N.PHJ*BHJ*BHJ*BHJ*BHJ*BH**BHJ(#4X-RPU.3(@*BHJ*@HM+2T@h M-3DP+#4Y-B M+2TM"B @("!S=')N8W!Y*&AP+3YS>6U?;F%M92P@<"P@;&5Ng M*3LO*B!E;G1R>2!I<R!364U?4TE:12LQ(&9O<B!<)S G("HO"B @("!H<"T^f M<WEM7W1Y<&4@/2!T>7!E.PH@(" @:' M/G-Y;5]V86P@/2!V86QU93L**R @e M(&YS>6UB;VQS*RL["B @?0H@( H@( HJ*BHJ*BHJ*BHJ*BHJ*BH**BHJ(#8Qd M,RPV,C8@*BHJ*@H@("\J($ES(' @:7,@:6X@=&AE('-Y;6)O;"!T86)L93\@c M(%)E='5R;B!S;&]T(&EF(&ET(&ES('!R97-E;G0L("TQ(&EF(&%B<V5N="X@b M*B\*(" *(" @('5N<VEG;F5D(&EN="!H+"!H87-H*"D["B$@("!I;G0@;CL*a M(2 *(2 @(&X@/2!S=')L96XH<"D["B$@("!I9B H;B ^(%-935]325I%*2!Nz M(#T@4UE-7U-)6D4["B @("!H(#T@:&%S:"AP*3L*(" @('=H:6QE("@Q*2![y M"B @"6EF("AS>6UT86);:%TN<WEM7W1Y<&4@/3T@,"D@<F5T=7)N*"TQ*3L)x M+RH@;F]T('!R97-E;G0@*B\*(2 ):68@*'-T<FYC;7 H<"P@<WEM=&%B6VA=w M+G-Y;5]N86UE+"!N*2 ]/2 P*2!R971U<FX@*"AI;G0I(&@I.PH@( EH(#T@v M*&@@*R Q*2 E($Y364U3.PH@(" @?0H@('T*+2TM(#8Q-RPV,C<@+2TM+0H@u M("\J($ES(' @:7,@:6X@=&AE('-Y;6)O;"!T86)L93\@(%)E='5R;B!S;&]Tt M(&EF(&ET(&ES('!R97-E;G0L("TQ(&EF(&%B<V5N="X@*B\*(" *(" @('5Ns M<VEG;F5D(&EN="!H+"!H87-H*"D["B$@"B @("!H(#T@:&%S:"AP*3L*(" @r M('=H:6QE("@Q*2!["B @"6EF("AS>6UT86);:%TN<WEM7W1Y<&4@/3T@,"D@q M<F5T=7)N*"TQ*3L)+RH@;F]T('!R97-E;G0@*B\*(2 ):68@*'-T<F-M<"APp M+"!S>6UT86);:%TN<WEM7VYA;64I(#T](# I(')E='5R;B H*&EN="D@:"D[o M"B @"6@@/2 H:" K(#$I("4@3E-935,["B @("!]"B @?0HJ*BHJ*BHJ*BHJn M*BHJ*BH**BHJ(#@Q."PX,C,@*BHJ*@HM+2T@.#$Y+#@S-B M+2TM"B @"0D)m M8V]N=&EN=64["B @"0E]"B @"BL@"0DO*B!#:&5C:R!T;R!S964@:68@:70@l M:7,@82!C:&%R86-T97(@8V]N<W1A;G0N("HO"BL@"0EI9B H8R ]/2 G7"<Gk M*2!["BL@"0D)<"LK.PHK( D)"7=H:6QE("@J<" A/2 G7"<G*2!["BL@"0D)j M"6EF("@J<" ]/2 G7%PG*2!P*RL["BL@"0D)"7 K*SL**R )"0E]"BL@"0D)i M<"LK.PHK( D)"6,@/2 J<#L**R )"0EC;VYT:6YU93L**R )"7T**R *(" )h M"2\J($ET(&ES(&YO="!A('1O:V5N(&]R(&$@8V]M;65N="P@:G5S="!I9VYOg M<F4@:70N("HO"B @"0EP*RL["B @"0EC(#T@*G ["BHJ*BHJ*BHJ*BHJ*BHJf M*@HJ*BH@.#,P+#@S-B J*BHJ"B @"0EP(#T@=&]K96Y;:5T["B @"0EI9B He M<W1R;&5N*' I(#X@4UE-7U-)6D4I("HH<" K(%-935]325I%*2 ](# ["B @d M"0EK(#T@;&]O:W5P*' I.PHA( D):68@*&L@/B P*2!["B @"0D)9G!R:6YTc M9BAT;7 L("(E<R B+"!P*3L*(" )"0EI9B H8W5R7VQI;F4@/" Q,"D*(" )b M"0D)9G!R:6YT9BAT;7 L("(P,# P)61<;B(L(&-U<E]L:6YE*3L*+2TM(#@Ta M,RPX-#D@+2TM+0H@( D)<" ]('1O:V5N6VE=.PH@( D):68@*'-T<FQE;BAPz M*2 ^(%-935]325I%*2 J*' @*R!364U?4TE:12D@/2 P.PH@( D):R ](&QOy M;VMU<"AP*3L*(2 )"6EF("AK(#X](# I('L*(" )"0EF<')I;G1F*'1M<"P@x M(B5S("(L(' I.PH@( D)"6EF("AC=7)?;&EN92 \(#$P*0H@( D)"0EF<')Iw M;G1F*'1M<"P@(C P,# E9%QN(BP@8W5R7VQI;F4I.PHJ*BHJ*BHJ*BHJ*BHJv M*BH**BHJ(#DQ-BPY,C$@*BHJ*@HM+2T@.3(Y+#DS-2 M+2TM"B @"6EF("AUu M<V5D(#T](# @?'P@<W1R8VUP*'!N86UE+"!C=7(I("$](# I('L*(" )"6YVt M86P@/2!N97=?;F%M92AC=7(L('5S960L('!N86UE+"!V86QU97,I.PH@( D)s M>&-O=6YT(#T@;G9A;#L)+RH@(R!R969S(&]N('1H:7,@;&EN92!S;R!F87(@r M*B\**R )"7!R979?<F5F(#T@+3$["B @"7T*(" )=7-E9" ](#$["B @"BHJq M*BHJ*BHJ*BHJ*BHJ*@HJ*BH@.30X+#DU-R J*BHJ"B @"B @"B @:6YT(&YEp M=U]N86UE*&-U<BP@=7-E9"P@<&YA;64L('9A;'5E<RD*(2!C:&%R("IC=7);o M4UE-7U-)6D4@*R Q73L)+RH@<W1O<F%G92!F;W(@8W5R<F5N="!N86UE("HOn M"B$@:6YT('5S960["0D)+RH@,"!O;FQY(&]N(&9I<G-T(&-A;&PN("HO"B$@m M8VAA<B J<&YA;64["0D)+RH@<&]I;G1E<B!T;R!T:&4@;F5W(&YA;64@*B\*l M(2!I;G0@=F%L=65S6TU!6%]604Q515-=.PD)+RH@86QL('1H92!D969I;FETk M:6]N<R!O9B!T:&4@;F5W(&YA;64@*B\*("!["B @+RH@02!N97<@;F%M92!Hj M87,@8F5E;B!R96%D+B @1FEN:7-H(&]F9B!T:&4@;VQD(&]N92!A;F0@<')Ei M<&%R92!N97<@;VYE+B J+PH@( HM+2T@.38R+#DW,2 M+2TM"B @"B @"B @h M:6YT(&YE=U]N86UE*&-U<BP@=7-E9"P@<&YA;64L('9A;'5E<RD*(2!C:&%Rg M("IC=7(["0D)+RH@<W1O<F%G92!F;W(@8W5R<F5N="!N86UE("HO"B$@:6YTf M('5S960["0D)+RH@,"!O;FQY(&]N(&9I<G-T(&-A;&PN("HO"B$@8VAA<B Je M<&YA;64["0D)+RH@<&]I;G1E<B!T;R!T:&4@;F5W(&YA;64@*B\*(2!I;G0@d M=F%L=65S6UT["0D)+RH@86QL('1H92!D969I;FET:6]N<R!O9B!T:&4@;F5Wc M(&YA;64@*B\*("!["B @+RH@02!N97<@;F%M92!H87,@8F5E;B!R96%D+B @b M1FEN:7-H(&]F9B!T:&4@;VQD(&]N92!A;F0@<')E<&%R92!N97<@;VYE+B Ja %+PH@( IHz y end -----end-----end-----end-----end-----end-----end-----end-----end----- ============================================================================ Richard Busch San Diego State University busch@math.sdsu.edu Xerox Corporation busch.sd@xerox.com ============================================================================