summaryrefslogtreecommitdiff
path: root/Build/source/utils/mtx/mtx-0.60d/libp2c/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/utils/mtx/mtx-0.60d/libp2c/ChangeLog')
-rw-r--r--Build/source/utils/mtx/mtx-0.60d/libp2c/ChangeLog390
1 files changed, 390 insertions, 0 deletions
diff --git a/Build/source/utils/mtx/mtx-0.60d/libp2c/ChangeLog b/Build/source/utils/mtx/mtx-0.60d/libp2c/ChangeLog
new file mode 100644
index 00000000000..17e4bc2dbc5
--- /dev/null
+++ b/Build/source/utils/mtx/mtx-0.60d/libp2c/ChangeLog
@@ -0,0 +1,390 @@
+Wed Mar 10 15:03:20 1999 Alexander L. Belikoff <abel@blinky>
+
+ * src/p2c.h: DOUBLE defined as double
+
+Tue Mar 31 14:57:26 1998 Alexander L. Belikoff <abel@blinky>
+
+ * src/trans.h:
+ Magic limits (MININT, MAXINT), causing random p2c bugs on the Alpha replaced
+ with LONG-MIN/MAX from limits.h (integers in Pascal include longs in C,
+ according to p2c)
+
+Tue Sep 23 09:14:22 1997 Harvey J. Stein <hjstein@bfr.co.il>
+
+ * src/p2c.proto, src/funcs.c, src/p2c.hdrs:
+ Adjustments to get pad to work correctly.
+
+Thu Jul 3 20:41:55 1997 Harvey J. Stein <hjstein@bfr.co.il>
+
+ * src/p2c.proto, src/sys.p2crc, src/trans.h, src/expr.c, src/funcs.c, src/p2c.hdrs:
+ Bug: Consider:
+
+ procedure foo(x: array[i..j : integer] of varying[k] of char);
+ ...
+ var z : array[3..12] of varying[20] of char;
+ ...
+ foo(z);
+
+ This should become something like:
+
+ foo(int i, int j, int k, char x[j-i+1][k])
+ ...
+ char z[10][20];
+ ...
+ foo(3, 12, 20, z);
+
+ Instead, it was generating:
+
+ foo(3, 12, 255, z);
+
+ which totally screws up accessing z.
+
+ Analysis: To do this correctly, p2c has to keep dereferencing z as it
+ processes the hidden arguments i, j, & k so that it's working on an
+ expression of the appropriate type each time it tries to find either
+ the size of the string or the start & end points of arrays. Instead,
+ it just wasn't.
+
+ Fix done: I couldn't figure out exactly how to do the above. But, p2c
+ calls strmax_func to get the length of the character string. I just
+ built some additional dereferencing into it so that it gets the
+ correct length in the above sort of situation. So, changed
+ strmax_func in expr.c.
+
+
+ Bug: Index(x,y) is a common pascal extension for finding a substring
+ in a string. p2c handles it but it wasn't working right on Dec code.
+
+ Analysis: Some dialects of pascal consider x to be the string and y
+ to be the substring. Others switch x & y. p2c supports (substring,
+ string), and Dec pascal supports the opposite.
+
+ Fix: There was some support for switching index argument order, but it
+ was tightly coupled to HP compiler directive support. I added a
+ comment switch ("IndexOrder") for additional control of this feature.
+ Changed func_strpos in funcs.c, and added the switch in trans.h.
+
+Fri Jun 13 07:22:26 1997 Harvey J. Stein <hjstein@blinky.bfr.co.il>
+
+ * src/p2c.hdrs, src/p2c.proto, src/pexpr.c, src/decl.c, src/funcs.c:
+ Fixed bug in [truncate] handling - I didn't clear the new Meaning
+ fields (fakenumargs & truncated) at meaning creation time, so they
+ were sometimes showing up on non-truncated variables. Changed
+ initmeaning (decl.c).
+
+ Moved hidden number_of_args from beginning to end of arg list. At the
+ beginning it was interfering with the return hidden variable,
+ causing return to not be generated. Changes were in p_funcdecl
+ (decl.c), func_present (funcs.c), and p_funcarglist (pexpr.c). Added
+ has_truncate function to pexpr.c to check whether an arg list has the
+ truncated attribute.
+
+ Argument variables were sometimes getting shadowed just because
+ they're initialized. Problem was in var_reference, which clones
+ Meanings that have constdefns. But arg variables don't need to be
+ cloned since the constants are handled by p_funcarglist. So skipped
+ cloning if Meaning's kind is MK_PARAM or MK_VARPARAM. Previous fix of
+ always cloning, but only copying meanings if not MK_PARAM seems to
+ have been incorrect.
+
+Sun Jun 1 13:15:06 1997 Harvey J. Stein <hjstein@blinky.bfr.co.il>
+
+ * src/sys.p2crc, src/trans.h, src/pexpr.c, src/parse.c, src/lex.c, src/p2c.hdrs, src/p2c.proto, src/funcs.c, src/decl.c:
+ Enhancements:
+
+ Added support for [truncate]. This involved:
+ 1. Added a truncated flag & a fakenumargs flag to the Meaning
+ structure.
+ 2. In p_funcdecl (decl.c), recognizing the [truncate] attribute in
+ argument lists. If it's seen, the argument's truncated flag is
+ set, and it and all arguments following are given default values
+ (assuming that they don't already have default values). The
+ default values gets p2c to automatically generate the correct
+ number of arguments for calling the subroutine when some are
+ left out.
+ 3. In p_funcdecl (decl.c), if any of the args are tagged with
+ [truncate], then add a hidden argument to the front of the
+ argument list - number_of_args. Flag it with fakenumargs.
+ 4. In p_funcarglist (pexpr.c), when the fcn has a fakenumargs
+ parameter as the first parameter, (and truncateisdefalt is zero)
+ compute the index of the last argument supplied, and pass it as
+ the first argument in the call.
+ 5. In funcs.c, added func_present to handle the PRESENT(x) calls.
+ It parses the call, figures out the index of the argument in the
+ fcns calling sequence (say n), and generates an expression
+ (number_of_args >= n) to be the output for the PRESENT(x) call.
+ 6. Added new config parameter - TruncateIsDefault to turn off
+ PRESENT support (in case one doesn't want the extra arg to be
+ generated).
+
+ Added support for CONTINUE & BREAK. Just had to basically declare
+ them as keywords in lex.c, and recognize them in parse.c, and declare
+ their tokens in trans.h (since p2c already supported them internally).
+
+ Added descriptions for SkipReIncludes, NoOutput, and TruncateIsDefault
+ to sys.p2crc.
+
+ Bug fixes:
+
+ Bug: args with default values which are also used in local functions
+ lose their default values.
+
+ Attempted fix: in var_reference (pexpr.c), don't zero out the
+ constdefn when the arg is cloned if the arg is a parameter.
+
+ Problems: This works, but it sometimes causes bogus declarations of
+ the old variable to be output.
+
+Wed May 14 14:27:32 1997 Harvey J. Stein <hjstein@blinky.bfr.co.il>
+
+ * src/stuff.c, src/p2c.hdrs, src/p2c.proto, src/out.c, src/expr.c, p2c.patch:
+ (Updated p2c.patch for last set of changes)
+
+ Bug: p2c was seg faulting when given expressions such as:
+ there :=
+ '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890' +
+ '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890' +
+ '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890' +
+ '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890' +
+ '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890';
+
+ and:
+
+ there :=
+ '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890' +
+ '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890' +
+ '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890' +
+ '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890' + where;
+
+ when there is VARYING [XXX] OF CHAR;
+
+ Analysis: There seem to be all sorts of fixed length character arrays
+ around the code. It seems that especially long expressions and/or
+ character strings can cause them to overflow.
+
+ Fix: I upped some of the limits, which at least avoided core dumps on
+ the code I'm currently processing, but really one needs to go through
+ and properly keep track of the amount copied into strings so as to
+ avoid buffer overruns. But, this is a real pain in the ass because of
+ the shitty semantics of the standard C library.
+
+ Basically, the stack allocated ones that I noticed in expr.c and out.c
+ I upped to length 2000, and in stuff.c, I upped the size of the
+ strings in formatbuf[] to 4000.
+
+Tue May 13 19:27:00 1997 Harvey J. Stein <hjstein@blinky.bfr.co.il>
+
+ * src/lex.c, src/p2c.hdrs, src/p2c.proto, src/trans.c, src/Makefile, src/decl.c, src/expr.c, src/funcs.c:
+ Minor fixes/changes:
+ -Was calling close in handle_include (lex.c) when it should have
+ been fclose.
+ -Modified src/Makefile to allow for using insure on the source code
+ (to catch memory bugs).
+
+
+ Major fixes:
+
+ Bug: p2c occasionally was freeing memory that was already freed.
+
+ Analysis: This seems to occur sometimes on constant string
+ definitions because mp->val.s might point to the same string as
+ mp->constdefn->val.s, and forget_ctx tries to free them both.
+
+ Fix: In decl.c, in forget_ctx: After calling free_value(&mp->val) when
+ mp->kind == MK_CONST, instead of always calling
+ freexpr(mp->constdefn), only call it when mp->kind != MK_CONST,
+ or when mp->constdefn->val.s != mp->val.s.
+
+ I also tried to fix this by copying mp->val.s in p_constdecl when
+ creating mp->constdefn->val.s, but never got this to work
+ correctly, so I commented it out.
+
+
+ Bug: p2c core dumped on:
+
+ readv(data, short_string);
+
+ when data is a packed array[1..7] of char, and
+ short_string is a packed array[1..3] of char.
+
+ Analysis: What was happening was that in handleread_text (funcs.c),
+ when the readv argument is an array, it was checking
+ ord_range(ex->val.type->indextype, ...), and ex was NULL.
+
+ Fix: It seems like this was a typo, so I change it to check
+ var->... instead of ex->...
+
+
+ Bug: p2c core dumped on:
+
+ WRITELN('%SQLMOD ', msg);
+
+ when msg was of type varying[x] of char.
+
+ Analysis: Some part of the code was converting the above string to
+ "%%SQLMOD %s". It seems that cleansprintf (from expr.c) didn't
+ realize that % is escaped by %%, so it thought that there should
+ be 2 arguments (maybe 3?) for the above printf string instead of
+ one, and thus was going off of the end of the args list (i.e. -
+ ex->args[j] out of range).
+
+ Fix: Inside the for loop, if the next character is also a %, then
+ skip arg processing, and skip the next character (just copy it
+ into fmtbuf).
+
+
+ Bug: p2c core dumps on:
+
+ readv(c, i);
+
+ when c is a char and i is an integer.
+
+ Analysis: In funcs.c, in handleread_text, var is never getting
+ initialized - it's getting passed in as NULL, and it only gets
+ set if isstrread is true. Since c is a char, fex->val.type->kind
+ is TK_CHAR, not TK_STRING, so isstrread is false, so var fails to
+ get initialized.
+
+ Fix: After the case that var is set when isstrread is true, if it's
+ still NULL, we set it to p_expr(NULL). This prevents the core
+ dump, but produces incorrect code! It outputs:
+
+ fscanf(c, "%ld", &i);
+
+ when it should more likely be something along the lines of
+ sscanf(&c, ...) (but safer).
+
+Mon May 5 15:23:04 1997 Harvey J. Stein <hjstein@blinky.bfr.co.il>
+
+ * src/out.c, src/p2c.hdrs, src/p2c.proto, src/trans.h, src/decl.c, src/lex.c, p2c.patch:
+ New features (out.c, trans.h):
+ New parameter NoOutput - setting it to 1 stops p2c from generating
+ output. Useful when trying to simulate Dec style modules via
+ include files - just convert INHERIT to %include, and put
+ {*NoOutput=1} at the top of each include file, and p2c does the
+ right thing. This was done by not pushing characters into the
+ output stream when nooutput is 1. The real code changes occur in
+ out.c, in putc_outf, and puts_outf. Accumulating the output, but
+ turning off writes (i.e. - wiring it into flush_outfilebuf) failed
+ because of timing differences btw when comment directives are
+ processed and when output occurs.
+
+ Bug fixes:
+
+ Bug: Some variable declarations weren't getting output. Most
+ noticable were the automatically generated Return variables.
+
+ Analysis: When using the {INTF-ONLY} directive in include files
+ then the fwd declaration of fcns was being interpreted as the fcn
+ definition, and so the variables generated when the declaration was
+ seen were marked as "wasdeclared". Then, when the code for the
+ function was being generated, these variables weren't getting
+ output because "wasdeclared" was 1. This was most visible from the
+ automatically generated Return variable, but occasionally happened
+ to other variables.
+
+ Fix: in decl.c:activatemeaning - added resetting of "wasdeclared"
+ if we can identify that the variable is the autogenerated return
+ variable. Detected them by snarfing code from isretvar. But this
+ was a lousy fix because as mentioned above, there are other
+ variables which are occasionally affected. And, it's no longer
+ needed because of the new NoOutput feature, so I commented out the
+ change, but left the code there as a reminder of the problem.
+
+
+ Bug: Comments weren't getting output in the correct places. This
+ is a serious problem when using {EMBED comments to insert C code
+ into the output stream. Sometimes code from the {EMBED comment
+ given in an include file showed up in the includer. Sometimes the
+ code didn't get emitted at all because of mistiming against
+ {nooutput} directives.
+
+ Analysis: p2c builds up a comment string structure as it parses
+ the code, and hangs it off of the code's internal representation.
+ Presumably this is so that when doing code transformations, the
+ comments are output in the correct places. However, this seems to
+ sometimes fail when using %include files. It seems that the
+ comments weren't getting processed & output until the current block
+ was finished. Included files don't start a new block because one
+ could conceivably include random snippets of code anywhere you want
+ (inside of RECORD declarations, for example). Thus, sometimes
+ comments from inside the include file don't get processed & output
+ until well after the include file itself is finished being
+ processed.
+
+ Fix: Added the call flushcomments(NULL, -1, -1) to both push_input
+ and pop_input (in lex.c). This seems to have fixed it with no
+ noticable side effects.
+
+Tue Apr 29 18:36:51 1997 Harvey J. Stein <hjstein@blinky.bfr.co.il>
+
+ * src/p2c.hdrs, src/p2c.proto, src/lex.c:
+ Added recognition of AND_THEN and OR_ELSE.
+
+ * src/trans.h, src/lex.c, src/p2c.hdrs, src/p2c.proto:
+ Added tracking of files that have been included so that they can
+ optionally be ignored the second time they're seen. This is needed
+ because a module (say X) can inherit from two other modules (say Y and
+ Z), both of whom inherit from a fourth module (say Z). Converting the
+ inherits to includes thus gets Z included twice. If it's not ignored,
+ it causes p2c to start renaming procedures so as to avoid name
+ clashes.
+
+ Added an rc file parameter (skipreincludes) for controling the above
+ action.
+
+ * src/decl.c, src/p2c.hdrs, src/p2c.proto, src/parse.c:
+ Various adjustments & bug fixes suggested by Dave Gillespie:
+
+ decl.c: Call format_s so that we work with a copy of the string
+ when removing dollar signs - a little more robust.
+
+ Missing ! on strcicmp caused bogus externs to be emitted on
+ some variable declarations.
+
+ parse.c: Sprinkle afew p_attributes around p_block so that p2c
+ properly parses attributes in front of declaration blocks.
+ In particular, this fixes the problem where p2c was choking
+ on [hidden] followed by TYPE, which appears in analytic.pas.
+
+Wed Apr 23 12:17:08 1997 Harvey J. Stein <hjstein@blinky.bfr.co.il>
+
+ * src/p2c.proto, src/decl.c, src/p2c.hdrs:
+ Modified addfield so that it removes dollar signs from record field
+ identifiers. This is more consistent with the handling of other
+ identifiers, and also needed by much of the Pascal code.
+
+Mon Apr 21 10:41:53 1997 Harvey J. Stein <hjstein@blinky.bfr.co.il>
+
+ * p2c.patch: Submitted new patch to Dave G.
+
+ * src/p2c.proto, src/lex.c, src/p2c.cat, src/p2c.hdrs, src/Makefile:
+ Changed VALUE from a keyword to a possible keyword when working with
+ Dec Pascal code. Original code set it to be a keyword for Dec, and a
+ possible keyword otherwise. However, if it's a keyword, then p2c
+ doesn't accept it the name of a slot in a record. Since Dec accepts
+ this usage, I figured that VALUE should always be a possible keyword
+ instead of a keyword.
+
+Thu Apr 17 11:33:22 1997 Harvey J. Stein <hjstein@blinky.bfr.co.il>
+
+ * p2c.patch: patches generated & mailed to Dave Gillespie
+
+Wed Apr 16 16:26:07 1997 Harvey J. Stein <hjstein@blinky.bfr.co.il>
+
+ * src/p2c.hdrs, src/p2c.proto, .cvsignore, examples/.cvsignore, src/.cvsignore, src/decl.c, src/p2c.cat:
+ Parser didn't expect a ( after the OTHERWISE keyword. Modified
+ decl.c to expect it.
+
+ * src/INSTALL, src/citmods.c, src/comment.c, src/decl.c, src/dir.c, src/expr.c, src/funcs.c, src/hpmods.c, src/lex.c, src/loc.p2clib.c, src/loc.p2crc, src/makeproto.c, src/out.c, src/p2c.cat, src/p2c.h, src/p2c.hdrs, src/p2c.proto, src/p2cc.cat, src/p2cc.man, src/p2cc.perl, src/p2clib.c, src/parse.c, src/pexpr.c, src/string.pas, src/system.imp, src/system.m2, src/trans.h, src/turbo.imp:
+ Import of p2c 1.21alpha2
+
+ * src/INSTALL, src/citmods.c, src/comment.c, src/decl.c, src/dir.c, src/expr.c, src/funcs.c, src/hpmods.c, src/lex.c, src/loc.p2clib.c, src/loc.p2crc, src/makeproto.c, src/out.c, src/p2c.cat, src/p2c.h, src/p2c.hdrs, src/p2c.proto, src/p2cc.cat, src/p2cc.man, src/p2cc.perl, src/p2clib.c, src/parse.c, src/pexpr.c, src/string.pas, src/system.imp, src/system.m2, src/trans.h, src/turbo.imp:
+ Initial revision
+
+ * HP/import/asm.imp, HP/import/fs.imp, HP/import/general_0.imp, HP/import/general_1.imp, HP/import/general_2.imp, HP/import/general_3.imp, HP/import/general_4.imp, HP/import/hpib_0.imp, HP/import/hpib_1.imp, HP/import/hpib_2.imp, HP/import/hpib_3.imp, HP/import/iodecl.imp, HP/import/misc.imp, HP/import/rnd.imp, HP/import/sysdevs.imp, HP/import/sysglobals.imp, HP/include/asm.h, HP/include/fs.h, HP/include/general_0.h, HP/include/general_1.h, HP/include/general_2.h, HP/include/general_3.h, HP/include/general_4.h, HP/include/hpib_0.h, HP/include/hpib_1.h, HP/include/hpib_2.h, HP/include/hpib_3.h, HP/include/iodecl.h, HP/include/misc.h, HP/include/rnd.h, HP/include/sysdevs.h, HP/include/sysglobals.h, Makefile, README, examples/Makefile, examples/README, examples/basic.doc, examples/basic.p, examples/c/basic.c, examples/c/cref.c, examples/c/e.c, examples/c/fact.c, examples/c/self.c, examples/cref.p, examples/e.p, examples/fact.p, examples/p2crc, examples/self.p, ftp.README, src/COPYING, src/HISTORY, src/Makefile, src/NOTES, src/README, src/p2c.man, src/stuff.c, src/sys.p2crc, src/trans.c:
+ Import of p2c 1.21alpha2
+
+ * HP/import/asm.imp, HP/import/fs.imp, HP/import/general_0.imp, HP/import/general_1.imp, HP/import/general_2.imp, HP/import/general_3.imp, HP/import/general_4.imp, HP/import/hpib_0.imp, HP/import/hpib_1.imp, HP/import/hpib_2.imp, HP/import/hpib_3.imp, HP/import/iodecl.imp, HP/import/misc.imp, HP/import/rnd.imp, HP/import/sysdevs.imp, HP/import/sysglobals.imp, HP/include/asm.h, HP/include/fs.h, HP/include/general_0.h, HP/include/general_1.h, HP/include/general_2.h, HP/include/general_3.h, HP/include/general_4.h, HP/include/hpib_0.h, HP/include/hpib_1.h, HP/include/hpib_2.h, HP/include/hpib_3.h, HP/include/iodecl.h, HP/include/misc.h, HP/include/rnd.h, HP/include/sysdevs.h, HP/include/sysglobals.h, Makefile, README, examples/Makefile, examples/README, examples/basic.doc, examples/basic.p, examples/c/basic.c, examples/c/cref.c, examples/c/e.c, examples/c/fact.c, examples/c/self.c, examples/cref.p, examples/e.p, examples/fact.p, examples/p2crc, examples/self.p, ftp.README, src/COPYING, src/HISTORY, src/Makefile, src/NOTES, src/README, src/p2c.man, src/stuff.c, src/sys.p2crc, src/trans.c:
+ Initial revision
+