home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / prog / c / sc6_1.lha / ReadMe_6.1 < prev    next >
Text File  |  1992-11-23  |  21KB  |  514 lines

  1.  
  2.  Copyright (c) 1992 SAS Institute, Inc, Cary, NC
  3.  All Rights Reserved
  4.  
  5.  This document describes bug fixes and enhancements made in the 6.1 release
  6.  of the SAS/C Development System for AmigaDOS.
  7.  
  8.  Our philosophy in reporting fixed bugs is that users have a need and a right
  9.  to know what has changed in the latest release.  This means publishing a 
  10.  list of fixed bugs with each update.  Please don't be alarmed by the number
  11.  of items on the list; many of the "bugs" reported here are not very serious,
  12.  and others are very obscure.  Some of them have only been reported once,
  13.  others have been reported many times.  Thanks to all the alert programmers
  14.  out there who have brought problems to our attention and provided the
  15.  detailed information necessary for us to reproduce and fix the problem.
  16.  
  17.  If this update does not fix a problem that you have been having, please
  18.  contact our Technical Support Division for help as soon as possible.
  19.  
  20.  All reported CXERRs, Enforcer hits, and cases of bad code are fixed.  If you
  21.  get one of these, please contact technical support immediately.  It will 
  22.  help if you have a compilable test case.
  23.  
  24.  In addition to the specific bugs listed, several code generation bugs were
  25.  fixed in the peephole optimizer and the code generator (sc2).  No bugs were
  26.  found or fixed in the global optimizer, but some sc2 or peepholer bugs only
  27.  showed up when the global optimizer was run.  Since the code generation bugs
  28.  did not affect most people, and they are not easy to describe or reproduce,
  29.  we will not describe them individually here.  We suggest that you recompile
  30.  all your code if it is behaving strangely.
  31.  
  32.  A note about the release numbering system is probably in order.  With 
  33.  version 6.0, we have adopted Commodore's shared library numbering system for
  34.  the entire product.  This means that the number to the right of the decimal
  35.  in the version number should be considered a number in its own right, not 
  36.  merely as a fraction.  For example, our first release was 6.0;  this release
  37.  is 6.1; the logical progression will be 6.2, 6.3, ... 6.9, 6.10, 6.11, 
  38.  ... 6.99, 6.100, 6.101 and so forth.  This is a change from version 5, in 
  39.  which the number to the right of the decimal was considered a fraction, with
  40.  possible leading zeros.  We reserve the right to skip some numbers to keep
  41.  track of internal releases, but the number to the right of the decimal will
  42.  always increase with a new release.
  43.  
  44.  Also note that not all executables and shared libraries have been modified.
  45.  Those that have not been modified keep their old version number of 6.0.  
  46.  This is normal.  A list of modified files appears at the end of this 
  47.  document.
  48.  
  49.  Users of Comeau C++ should be aware that Comeau Systems has produced a
  50.  new version, version 3.0b, that has integrated support for SAS/C V6.x.
  51.  Version 6.1 works well with Comeau C++.  Contact Comeau Systems for
  52.  information on obtaining the 3.0b patch, which is a free upgrade for
  53.  registered Comeau C++ V3.0 customers.
  54.  
  55.  ***************************** IMPORTANT ************************************
  56.  Many customers are experiencing problems that could easily be avoided by 
  57.  referring to the correct sections of the manual. Specifically
  58.  
  59.  1)  There are two sections in the manual covering GST's.  The first
  60.      is in the User's Guide Volume 2 in the Utilities section.  The
  61.      second starts on page 21 in the Library Reference Manual.  Both
  62.      sections contain information needed to use GSTs.
  63.  
  64.  2)  A guide to converting programs from version 5 to version 6 can be found
  65.      in Appendix 5 of the User's Guide Volume 1.  
  66.  
  67.  3)  With a floppy disk install, no icons will be copied to the created
  68.      disks.  This means that you will have to work from the CLI only,
  69.      or that you will have to delete something off of the disks in order
  70.      to make room for the icons.  This is not mentioned in the manual
  71.      and should be.  For more information on workarounds for this,
  72.      refer to Problem 5 under the Miscellaneous Problems button on the 
  73.      main help screen for Common Problems.
  74.  
  75. =============================
  76. Library and Header Changes
  77. =============================
  78.  
  79.  The tmpnam() function used the first three characters of the command
  80.  as invoked in constructing the name of the temporary file.  This did not
  81.  work if you invoked a command via an explicit path that contains a ':' or 
  82.  '/' in the first three characters.  This was the cause of several strange 
  83.  problems in the SC and SLINK commands as well.
  84.  
  85.  In __main(), the return value for the Open() which opens the stdio window
  86.  was never checked.  Also, __main() now checks the __stdiowin[] array and
  87.  does not add the program name if __stdiowin[] does not end in a "/".
  88.  
  89.  Some system tagcall routines did not have tagcall pragmas, most notably
  90.  EasyRequest() and BuildEasyRequest().
  91.  
  92.  <dos.h> did not include the definitions for REG_FP0 - REG_FP7.  These
  93.  definitions are used by getreg() and putreg().
  94.  
  95.  scanf() routine failed to scan a floating point number with a leading '+'
  96.  character.
  97.  
  98.  fread() did not set EOF flag properly.  (It did return the correct return
  99.  code, however.)
  100.  
  101.  forkl() did not correctly open "*" for stdin and stdout.
  102.  
  103.  If the UTILLIB option was used and an auto-open library failed to open,
  104.  the __autoopenfail() function crashed the machine when invoked.
  105.  
  106.  Autoopen libraries were opened twice and closed once because the autoopen
  107.  functions were compiled with PARMS=BOTH.
  108.  
  109.  <sys/dir.h> was not protected from multiple #includes.
  110.  
  111.  m68881.h did not include definitions for fgetexp() and flog2().
  112.  
  113.  <stat.h> did not contain definitions for the S_xxx bits.  (They were
  114.  previously defined in <fcntl.h>; now they are in both files.)
  115.  
  116.  The bits returned by stat() in the st_mode field were incorrect.
  117.  The 4 bits corresponding to the "rwed" attributes were OPPOSITE what
  118.  they should be.  All other bits were correct.
  119.  
  120.  <proto/all.h> did not include all <proto/xxx.h> files, notably
  121.  <proto/rexxsyslib.h>.
  122.  
  123.  __builtin_memcmp() generated incorrect code when a variable
  124.  containing zero for the length to be compared was passed to it.
  125.  
  126.  In <proto/layers.h>, LayersBase was declared struct LayersBase *; it is
  127.  now declared struct Library *.
  128.  
  129.  Closing a file descriptor twice caused a crash.  While this is arguably
  130.  an illegal operation, most systems accept it silently.
  131.  
  132. =====================
  133. CPR Debugger Changes
  134. =====================
  135.  
  136.  CPR didn't pass argv[0] correctly when invoked from WorkBench.
  137.  
  138.  CPR didn't get the address right for the first data item in the FAR
  139.  or CHIP sections.
  140.  
  141.  The -device, -unit and -speed parameters were not implemented on
  142.  cross CPR.
  143.  
  144.  Some programs required abnormally long times to load under CPR.  This load
  145.  time has been reduced.
  146.  
  147.  Watch and register windows are no longer covered up by the source window
  148.  if they are opened via command-line options.
  149.  
  150.  Hitting the ESC key in the CPR WMSG window caused the window to go away.
  151.  Additional WMSG commands after this crashed CPR.
  152.  
  153.  Highlighting was messed up if a window was resized while something was
  154.  highlighted.
  155.  
  156.  The ECHO command didn't work reliably from an externally-
  157.  invoked AREXX script.
  158.  
  159.  The CPR screen stayed open if a visitor window was present, but CPR
  160.  exited anyway.
  161.  
  162.  The Calls window sometimes trashed its own bottom border.
  163.  
  164.  CPR was doing incorrect pointer arithmetic for multidimensional
  165.  arrays.
  166.  
  167. ==============================
  168. Parsing and Diagnostic Changes
  169. ==============================
  170.  
  171.  The __chip keyword produced an Error 82 for arrays declared that were
  172.  larger than 64k-1 bytes.  This restriction has been removed.
  173.  
  174.  No diagnostic was produced for assigning a regargs function to a stdargs
  175.  function pointer, or vice-versa.  However, the warning "stdargs used for
  176.  indirect function call" was produced inappropriately for calls through
  177.  function pointers declared __stdargs.  The inappropriate warning has been
  178.  removed;  the assignment now generates Warning 225.
  179.  
  180.  Error 15 was generated inappropriately for a call via a function
  181.  pointer defined via a typedef.
  182.  
  183.  Invoking a preprocessor macro with no parameters that is followed
  184.  immediately by a parameter list containing the preprocessor macro name once
  185.  again followed by a parameter list failed to expand the second invocation of
  186.  the macro.  (This is an extremely obscure case, so don't worry if you didn't
  187.  understand the explanation.)
  188.  
  189.  If an undefined member of a structure was accessed, that structure was no
  190.  longer considered equivalent to other structures with identical member
  191.  lists.  This generated warning cascades.
  192.  
  193.  National characters above 0x80 were not permitted in variable names.
  194.  
  195.  When using the GenProto option for a file with more than one period in the
  196.  name, (ex. a.b.c), the generated proto file was placed into a .h file with
  197.  only the first part if the original name (ex. a.h).
  198.  
  199.  The ERROR=ALL option to the SC command turned on all messages, including
  200.  those normally suppressed.  It should have just promoted the warnings that
  201.  were already enabled to errors.
  202.  
  203.  The -ca option on the SC5 command incorrectly enabled Warning 148.
  204.  
  205.  Error 67 was generated if the __inline keyword was placed on the
  206.  definition of a function returning a pointer to a structure.
  207.  
  208.  C++-style comments were not recognized if the ANSI option is on.  While
  209.  this is arguably correct, since C++ comments are non-ANSI, many users 
  210.  requested that they be made to work.
  211.  
  212.  If the GST has only <proto/intuition.h> in it, then you #include
  213.  <intuition/intuitionbase.h> in the .c file, IntuitionBase was considered
  214.  to be an undefined structure tag.
  215.  
  216.  Generating a GST when the file being compiled erroneously tried to access a
  217.  structure that had not been defined resulted in a crash.
  218.  
  219.  Generating a GST with static data defined in a header file now generates an
  220.  error message.  This is invalid; data cannot be defined in a header file, 
  221.  and there is no way to make a static data item into a simple declaration, as
  222.  is done with external data.
  223.  
  224. ====================================
  225. Code Generation/Optimization Changes
  226. ====================================
  227.  
  228.  The return value of a function was lost when returning from a call in
  229.  which the stack extension code allocated additional stack.
  230.  
  231.  Auto variables sometimes got trashed when using longjmp() to jump
  232.  up the stack.
  233.  
  234.  When SHORTINT is selected, all numbers between 32k and 64k were translated
  235.  improperly as negative numbers between -1 and -32k.
  236.  
  237.  Initialization of automatic arrays and structures didn't work if the
  238.  initializers did not contain as many elements as the array or struct
  239.  and the STRMERGE option was used.
  240.  
  241.  The DISASM option caused a crash if you specified a directory name
  242.  as the output filename.
  243.  
  244.  The assembler code produced by the DISASM option included MULSL.L and
  245.  DIVSL.L instructions instead of MULS.L and DIVS.L.
  246.  
  247.  The DISASM option produced bad assembly code if you had calls to
  248.  __builtin_emit() in your code.
  249.  
  250.  An incorrect function pointer was generated for a forward reference
  251.  to a static function if the ABSFUNCPOINTER option was specified.
  252.  
  253.  With the global optimizer active, calls to tagcall functions made
  254.  via #pragma tagcall sometimes did not clean up the stack properly.
  255.  
  256.  Functions declared __inline sometimes did not generate actual callable
  257.  instances of themselves when they should have.  This occurred if you
  258.  did not run the global optimizer; if the function called itself
  259.  recursively; or if the function was called from outside the current
  260.  module.  The functions would generate an unresolved symbol at link
  261.  time.
  262.  
  263.  FPrintf and other tagcall functions that take an OPTIONAL tagcall list
  264.  generated an error message from phase 2.  #pragma tagcall functions
  265.  now silently accept empty tagcall lists.
  266.  
  267.  Implicit references to substructures generated incorrect offsets if the
  268.  substructure was not the first item inside the main structure.
  269.  
  270.  Adjacent bitfields declared explicitly "short" or "long" were not merged
  271.  properly.  This caused the structures containing them to be larger than
  272.  they needed to be.  Bitfields declared "int" or "char" were not affected.
  273.  
  274.  Some variables were listed with the wrong type in the compiler-generated
  275.  cross-reference.  This occurred after a typedef definition.
  276.  
  277. =================
  278. SE Editor Changes
  279. =================
  280.  
  281.  SE was not pure (as reported by WShell).
  282.  
  283.  SE returned immediately when asked to compile the file in the editor
  284.  buffer (F4 key) if the flag was enabled under AmigaDOS 2.0 that allows
  285.  the "*" character to be a wild card (RNF_WILDSTAR).
  286.  
  287.  Turning on the "Use TAB Character" option and the Autoindent option
  288.  resulted in garbage characters being added to the file when you hit
  289.  RETURN after entering an open curly brace.
  290.  
  291.  SE did not turn the mouse pointer back on during time-consuming operations
  292.  (like SEARCH/REPLACE).
  293.  
  294.  SE sometimes opened a window smaller than its menus required when switching
  295.  from interlaced to non-interlaced mode.
  296.  
  297.  It was impossible to configure the screen colors and save them.  You
  298.  could cycle the colors while in SE, but when you exited, the colors weren't
  299.  saved.
  300.  
  301.  A bad version of the editor macro "findsym.se" was provided.
  302.  
  303.  SE set no pointer during compilation.  It now sets a busy pointer.
  304.  
  305.  SE did not correctly add the backup file extension when saving backup files.
  306.  
  307.  SE did not accept national characters that were entered through a REXX script.
  308.  
  309. =============================
  310. SCMSG Message Browser Changes
  311. =============================
  312.  
  313.  SCMSG menu colors were funny-looking on an 8-color workbench screen.
  314.  
  315.  SCMSG didn't protect itself against the editor exiting while it was
  316.  processing a message to the editor.
  317.  
  318.  SCMSG did not open on the default public screen.  It now does so; it
  319.  also accepts a SCREEN <name> command-line parameter and an
  320.  "opts screen <name>" AREXX command (see below).
  321.  
  322.  SCMSG redrew its message lines even if they had not changed when receiving
  323.  new messages. This caused unnecessary flicker.
  324.  
  325.  SCMSG didn't set the AUTOEDIT option even if the options file said to.
  326.  It also reset the GOTOFILE and GOTOLINE options to the SE defaults even
  327.  if the user had erased those values.
  328.  
  329.  SCMSG now accepts the following escape sequences in the REXX commands that
  330.  it sends to the programmed editor.  These are in addition to the %f, %l
  331.  and so forth that are documented in the manual:
  332.  
  333.     %# - message number
  334.     %m - message text
  335.     %e - alternate filename
  336.     %k - alternate line number
  337.  
  338.  Note also that the %c escape sequence gives the message Class (ERROR/
  339.  WARNING) rather than the column number, as documented in the manual.  This
  340.  was an error in the manaul.
  341.  
  342.  SCMSG now accepts the following new or modified REXX commands.  All old
  343.  commands still work.
  344.  
  345.     "build [options]"
  346.  
  347.        The "build" REXX command now passes any options specified on to the
  348.        SMAKE utility.
  349.  
  350.     "hide" [option]
  351.        The "hide" REXX command takes "rexxonly", "norexxonly", "autoedit", 
  352.        and "noautoedit" as options.  The options control when the window will
  353.        reappear.  The "wait" option listed in the manual is the default, so
  354.        there is no need to specify it.
  355.  
  356.     "number"
  357.        synonym for "errnum"
  358.  
  359.     "newbld <compunit>"
  360.        tells SCMSG to clear all messages for the specified compilation unit.
  361.        Sent by the compiler when a new compile is begun to delete all old
  362.        messages.  It also forces SCMSG to invoke the editor on the next new
  363.        message if the AUTOEDIT option is on.
  364.  
  365.     "newmsg "<compunit>" "<file>" <line> 0 "" 0 <class> <errnum> <text>"
  366.        adds a message to SCMSG's list.  <compunit> is the compilation unit
  367.        the message is associated with (the .c filename), <file> and <line>
  368.        indicate the filename and line number of the message, <class> is
  369.        one of "Error", "Warning" or "Info", <errnum> is a positive error
  370.        number, and <text> is the message text.  The 0 "" 0 in the middle
  371.        must appear exactly as written.  If the message text contains the
  372.        words 'See line <number> file "name"', the <number> is taken to be
  373.        the alternate line number and the <name> is taken to be the
  374.        alternate file name.
  375.  
  376.     "opts [option]"
  377.        where [option] is one of the following:
  378.  
  379.           load <filename>  - Load options from the specified file
  380.           save <filename>  - Save options to the specified file
  381.           portname <xxx>   - Set the name of the editor's AREXX port to
  382.                              the specified value
  383.           screen <name>    - Close the SCMSG window and reopen it on the
  384.                              specified public screen.
  385.  
  386.   The default value for the GOTOLINE option, intended for use with the SE 
  387.   editor, is now
  388.  
  389.      LL "%l\n" DM %m
  390.  
  391.   instead of just
  392.  
  393.      LL "%l\n"
  394.  
  395.   This displays the message text in the message line of SE after taking you 
  396.   to the line of the message.
  397.  
  398. =====================
  399. Other Utility Changes
  400. =====================
  401.  
  402.  SMAKE didn't read the tooltypes array as documented; it also reported that
  403.  A: is a "bad drive specifier" when it was used in a target.
  404.  
  405.  Closing the SMAKE window after SLINK started caused a system crash.
  406.  
  407.  SMAKE did not use the SYS_UserShell tag when calling the System() routine
  408.  under AmigaDOS 2.0.  It now does.
  409.  
  410.  If multiple targets were passed to SMAKE on the command line and the first 
  411.  was up to date, the subsequent targets were not built.
  412.  
  413.  ASM didn't deal with packed decimal mode constants correctly.
  414.  
  415.  OML gave a "phase error" if you attempted to place object files in
  416.  the library that contained chip data.
  417.  
  418.  LCTOSC and DUMPBOJ did not set the return code correctly.
  419.  
  420.  LCTOSC incorrectly translated '-Ln' to 'LINK DEBUGSTRIP' instead of 'LINK
  421.  STRIPDEBUG'
  422.  
  423.  HyperGST could not locate header files obtained from the local project
  424.  if invoked from WorkBench.
  425.  
  426.  SLINK did not always set the execute bit on the generated executables.
  427.  
  428.  LPROF/LSTAT were giving strange results when used on programs with
  429.  multiple code hunks.  This is a very long-standing bug dating back to
  430.  version 5.0.
  431.  
  432.  Scsetup did not correctly process the '?' parameter when invoked from
  433.  the Shell.  It printed its command template, then started working on
  434.  the current directory as if no parameters were entered.
  435.  
  436.  SCOPTS only saved to ENV: when asked to "Save Default".  It now saves to
  437.  ENVARC: as well.
  438.  
  439. ===============================
  440. Documentation/Help File Changes
  441. ===============================
  442.  
  443.  The sc.guide hypertext file incorrectly listed 255 as the default value
  444.  for the IDENTIFIERLENGTH option, instead of the correct value of 31.
  445.  255 is the maximum value.
  446.  
  447.  Some new "Common Problems" were added to the Common Problems document.
  448.  
  449.  The scmsg.guide hypertext file was modified to add Error 145, which is
  450.  new to this patch release, and to update or add descriptions for Warning 7,
  451.  Error 82, Warning 184, Warning 198, and Error 200.  In addition, the Global 
  452.  Optimizer warnings which were left out of the documentation were added to
  453.  the Compiler Errors and Warnings section of scmsg.guide.  The warnings 
  454.  added are warnings 301, 302, 303, 304, 305 and Note 306.
  455.  
  456.  Additional information was added to the ANSI compiler option description
  457.  in sc.guide.  The ANSI option has effects other than simply turning on 
  458.  warning messages.  These effects are now described.
  459.  
  460.  Three data item names and one function were added to sc_lib.guide.  All 
  461.  four additions are listed separately in the main Library Functions help 
  462.  screen under the button "Newly Documented Functions and Data Names".
  463.  
  464.  Additional corrections to the documentation can be found in the "Changes
  465.  to the Documentation" help screen (sc_changes.guide) under the button
  466.  "Version 6.1 (Error Correction Patch) Changes".
  467.  
  468.  The "compile.ced" macro intended for use with CygnusEd had a bug in its 
  469.  use of the "jumpto" command.  "jumpto" expects both a line number and a 
  470.  column number, and only the line number was provided.  CygnusEd users may 
  471.  want to copy the new version of the macro into their REXX:CED drawer.
  472.  
  473.  The TurboText macros referenced explicit directory paths, but the 
  474.  directory was renamed in the final version; therefore, they did not work 
  475.  correctly as installed.  The TurboText directory has been renamed.  
  476.  Please reinstall these macros if you had problems with them in 6.0.
  477.  
  478. ======================
  479. List of Modified Files
  480. ======================
  481.  
  482. The following files were modified during the 6.1 patch installation
  483. process:
  484.  
  485. Drawer       Files
  486.  
  487. SC:          read.me
  488.  
  489. SC:C         smake, slink, se, scopts, scmsg, cpr, cprx, cprk, scompact,
  490.              omd, dumpobj, hypergst, asm, oml, lstat, lprof, sc5, tb,
  491.              lctosc
  492.  
  493. SC:LIBS      sc1.library, sc2.library, schi.library, scpeep.library,
  494.              sekeymap.library, scdebug.library, sclist.library
  495.  
  496. SC:ENV       se.dat
  497.  
  498. SC:LIB       all .lib files and startup modules
  499.  
  500. SC:INCLUDE   fcntl.h, stat.h, dos.h, m68881.h, mffp.h, mieeedoub.h,
  501.              stdarg.h, sys/dir.h, proto/all.h, proto/layers.h, 
  502.              pragmas/intuition_pragmas.h
  503.  
  504. SC:REXX      findsym.se, showcli.cpr, showprocess.cpr
  505.  
  506. SC:HELP      sc_prob.guide, sc_lib.guide, sc_change.guide, scmsg.guide,
  507.              sc_util.guide, sc.guide, cpr.guide
  508.  
  509. SC:SOURCE    autoopenfail.c, _main.c, _oserr.c, intuitlib.c, _cxferr.c,
  510.              c.a, cback.a
  511.  
  512. SC:EXTRAS    TTX/instructions, CED/rexx/ced/Compile.ced
  513.  
  514.