home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sys.amiga.programmer
- Path: sparky!uunet!destroyer!gatech!darwin.sura.net!mlb.semi.harris.com!news
- From: RSTACKHOUSE@JAGUAR.ESS.HARRIS.COM ( 57577 Stackhouse ke)
- Subject: SAS 6.2 update on ftp.luth.se /biz/patches
- Date: Sun, 24 Jan 1993 21:47:55 GMT
- Nntp-Posting-Host: jaguar.ess.harris.com
- X-News-Reader: VMS NEWS 1.24
- Organization: Harris Information Systems Division
- Sender: news@mlb.semi.harris.com
- Message-ID: <1993Jan24.214755.15630@mlb.semi.harris.com>
- Lines: 599
-
- SAS 6.1 and 6.2 fixes:
- =============================
- Library and Header Changes
- =============================
-
- Fixed in 6.2
-
- #pragmas were incorrect for CachePreDMA() and CachePostDMA().
-
- errno was not set correctly if open() failed.
-
- datecmp() function did not return correct values.
-
- libinit.o did not properly set up global data for the __aligned
- keyword.
-
- The format specifier %06.2f did not properly pad with zeros.
-
- The base of the system library keymap.library, KeymapBase, was not being
- auto-initialized properly.
-
- fclose(stderr) caused the invoking shell to stay locked.
-
- cback.a did not work under 1.3.
-
- fputc() did not return the proper value for negative numbers.
-
- __aligned did not work for global variables in a shared library
- because of a problem in libinit.c
-
- Fixed in 6.1
-
- The tmpnam() function used the first three characters of the command
- as invoked in constructing the name of the temporary file. This did not
- work if you invoked a command via an explicit path that contains a ':' or
- '/' in the first three characters. This was the cause of several strange
- problems in the SC and SLINK commands as well.
-
- In __main(), the return value for the Open() which opens the stdio window
- was never checked. Also, __main() now checks the __stdiowin[] array and
- does not add the program name if __stdiowin[] does not end in a "/".
-
- Some system tagcall routines did not have tagcall pragmas, most notably
- EasyRequest() and BuildEasyRequest().
-
- <dos.h> did not include the definitions for REG_FP0 - REG_FP7. These
- definitions are used by getreg() and putreg().
-
- scanf() routine failed to scan a floating point number with a leading '+'
- character.
-
- fread() did not set EOF flag properly. (It did return the correct return
- code, however.)
-
- forkl() did not correctly open "*" for stdin and stdout.
-
- If the UTILLIB option was used and an auto-open library failed to open,
- the __autoopenfail() function crashed the machine when invoked.
-
- Autoopen libraries were opened twice and closed once because the autoopen
- functions were compiled with PARMS=BOTH.
-
- <sys/dir.h> was not protected from multiple #includes.
-
- m68881.h did not include definitions for fgetexp() and flog2().
-
- <stat.h> did not contain definitions for the S_xxx bits. (They were
- previously defined in <fcntl.h>; now they are in both files.)
-
- The bits returned by stat() in the st_mode field were incorrect.
- The 4 bits corresponding to the "rwed" attributes were OPPOSITE what
- they should be. All other bits were correct.
-
- <proto/all.h> did not include all <proto/xxx.h> files, notably
- <proto/rexxsyslib.h>.
-
- __builtin_memcmp() generated incorrect code when a variable
- containing zero for the length to be compared was passed to it.
-
- In <proto/layers.h>, LayersBase was declared struct LayersBase *; it is
- now declared struct Library *.
-
- Closing a file descriptor twice caused a crash. While this is arguably
- an illegal operation, most systems accept it silently.
-
- =====================
- CPR Debugger Changes
- =====================
-
- Fixed in 6.2
-
- CPR crashed when opened on a WorkBench screen in Productivity mode.
-
- CPR got enforcer hits when using the MODULE command or window.
-
- CPR crashed on exit under 1.3.
-
- Typedefs of arrays were not handled properly.
-
-
- Fixed in 6.1
-
- CPR didn't pass argv[0] correctly when invoked from WorkBench.
-
- CPR didn't get the address right for the first data item in the FAR
- or CHIP sections.
-
- The -device, -unit and -speed parameters were not implemented on
- cross CPR.
-
- Some programs required abnormally long times to load under CPR. This load
- time has been reduced.
-
- Watch and register windows are no longer covered up by the source window
- if they are opened via command-line options.
-
- Hitting the ESC key in the CPR WMSG window caused the window to go away.
- Additional WMSG commands after this crashed CPR.
-
- Highlighting was messed up if a window was resized while something was
- highlighted.
-
- The ECHO command didn't work reliably from an externally-
- invoked AREXX script.
-
- The CPR screen stayed open if a visitor window was present, but CPR
- exited anyway.
-
- The Calls window sometimes trashed its own bottom border.
-
- CPR was doing incorrect pointer arithmetic for multidimensional
- arrays.
-
- ==============================
- Parsing and Diagnostic Changes
- ==============================
-
- Fixed in 6.2
-
- There was a problem if a C source file was used to create a GST,
- and that file defined external data. IT IS NOW NOT POSSIBLE TO
- DEFINE EXTERNAL DATA if the MAKEGST option is on. We recommend
- compiling the file twice, once with MAKEGST and NOOBJNAME, the
- second time with the normal GST option, or that you use a
- standalone .c file not part of your project as your GST
- generator file.
-
- An extra quoted string at the end of a preprocessor statement (illegal
- according to the ANSI standard) was incorrectly concatenated to the
- next quoted string in the source.
-
- The OBJNAME option did not accept the null string "", which should
- indicate the current directory. It now does.
-
- String constants that appeared on a preprocessor statement in an
- illegal position sometimes were concatenated before the next string
- constant to appear in legal code.
-
- The compiler was producing an invalid error if the GENPROTO option
- was on and an __asm function was declared that took no parameters,
- and the function so declared was used somewhere in the same file
- without otherwise being declared.
-
- Error 72, "conflict with previous declaration", is now a warning if
- the only conflict is in a "const" or "volatile" specification on
- the item declared or parameters to a function declared.
-
- The compiler silently accepted the following illegal
- constructs:
-
- char x[] = {"ab", "cd"};
- char y[] = {'a', "bc"};
-
- The compiler did not put the "const" or "volatile" keywords on
- prototypes generated with the GENPROTO option, or on types printed
- in error and warning messages.
-
- If the NOMULTIPLEINCLUDES option was on, but you included the same
- file with differences only in the case of the filename, the file was
- included twice anyway.
-
- Fixed in 6.1
-
- The __chip keyword produced an Error 82 for arrays declared that were
- larger than 64k-1 bytes. This restriction has been removed.
-
- No diagnostic was produced for assigning a regargs function to a stdargs
- function pointer, or vice-versa. However, the warning "stdargs used for
- indirect function call" was produced inappropriately for calls through
- function pointers declared __stdargs. The inappropriate warning has been
- removed; the assignment now generates Warning 225.
-
- Error 15 was generated inappropriately for a call via a function
- pointer defined via a typedef.
-
- Invoking a preprocessor macro with no parameters that is followed
- immediately by a parameter list containing the preprocessor macro name once
- again followed by a parameter list failed to expand the second invocation of
- the macro. (This is an extremely obscure case, so don't worry if you didn't
- understand the explanation.)
-
- If an undefined member of a structure was accessed, that structure was no
- longer considered equivalent to other structures with identical member
- lists. This generated warning cascades.
-
- National characters above 0x80 were not permitted in variable names.
-
- When using the GenProto option for a file with more than one period in the
- name, (ex. a.b.c), the generated proto file was placed into a .h file with
- only the first part if the original name (ex. a.h).
-
- The ERROR=ALL option to the SC command turned on all messages, including
- those normally suppressed. It should have just promoted the warnings that
- were already enabled to errors.
-
- The -ca option on the SC5 command incorrectly enabled Warning 148.
-
- Error 67 was generated if the __inline keyword was placed on the
- definition of a function returning a pointer to a structure.
-
- C++-style comments were not recognized if the ANSI option is on. While
- this is arguably correct, since C++ comments are non-ANSI, many users
- requested that they be made to work.
-
- If the GST has only <proto/intuition.h> in it, then you #include
- <intuition/intuitionbase.h> in the .c file, IntuitionBase was considered
- to be an undefined structure tag.
-
- Generating a GST when the file being compiled erroneously tried to access a
- structure that had not been defined resulted in a crash.
-
- Generating a GST with static data defined in a header file now generates an
- error message. This is invalid; data cannot be defined in a header file,
- and there is no way to make a static data item into a simple declaration, as
- is done with external data.
-
- ====================================
- Code Generation/Optimization Changes
- ====================================
-
- Fixed in 6.2
-
- MATH=68881 was broken when dealing with constants.
-
- With CODE=FAR and CPU=68020, foward references to functions were
- not right.
-
- Bitfields of 32 bits with CPU=68020 did not work.
-
- Referencing formal register parameters when there were more than
- 32k of autos was broken.
-
- SC2 could generate bad code for __asm functions with many parameters
-
- Fixed in 6.1
-
- The return value of a function was lost when returning from a call in
- which the stack extension code allocated additional stack.
-
- Auto variables sometimes got trashed when using longjmp() to jump
- up the stack.
-
- When SHORTINT is selected, all numbers between 32k and 64k were translated
- improperly as negative numbers between -1 and -32k.
-
- Initialization of automatic arrays and structures didn't work if the
- initializers did not contain as many elements as the array or struct
- and the STRMERGE option was used.
-
- The DISASM option caused a crash if you specified a directory name
- as the output filename.
-
- The assembler code produced by the DISASM option included MULSL.L and
- DIVSL.L instructions instead of MULS.L and DIVS.L.
-
- The DISASM option produced bad assembly code if you had calls to
- __builtin_emit() in your code.
-
- An incorrect function pointer was generated for a forward reference
- to a static function if the ABSFUNCPOINTER option was specified.
-
- With the global optimizer active, calls to tagcall functions made
- via #pragma tagcall sometimes did not clean up the stack properly.
-
- Functions declared __inline sometimes did not generate actual callable
- instances of themselves when they should have. This occurred if you
- did not run the global optimizer; if the function called itself
- recursively; or if the function was called from outside the current
- module. The functions would generate an unresolved symbol at link
- time.
-
- FPrintf and other tagcall functions that take an OPTIONAL tagcall list
- generated an error message from phase 2. #pragma tagcall functions
- now silently accept empty tagcall lists.
-
- Implicit references to substructures generated incorrect offsets if the
- substructure was not the first item inside the main structure.
-
- Adjacent bitfields declared explicitly "short" or "long" were not merged
- properly. This caused the structures containing them to be larger than
- they needed to be. Bitfields declared "int" or "char" were not affected.
-
- Some variables were listed with the wrong type in the compiler-generated
- cross-reference. This occurred after a typedef definition.
-
- =================
- SE Editor Changes
- =================
-
- Fixed in 6.2
-
- Busy pointer did not change back to ready after a compile until
- it was moved.
-
- SE hung if the zoom gadget was hit with a large font.
-
- SE did not save backup file and protection bit if rename backup
- option was selected.
-
- Going from an interlaced screen to a non-interlaced screen would fail
- if the interlaced window was too small.
-
-
- Fixed in 6.1
-
- SE was not pure (as reported by WShell).
-
- SE returned immediately when asked to compile the file in the editor
- buffer (F4 key) if the flag was enabled under AmigaDOS 2.0 that allows
- the "*" character to be a wild card (RNF_WILDSTAR).
-
- Turning on the "Use TAB Character" option and the Autoindent option
- resulted in garbage characters being added to the file when you hit
- RETURN after entering an open curly brace.
-
- SE did not turn the mouse pointer back on during time-consuming operations
- (like SEARCH/REPLACE).
-
- SE sometimes opened a window smaller than its menus required when switching
- from interlaced to non-interlaced mode.
-
- It was impossible to configure the screen colors and save them. You
- could cycle the colors while in SE, but when you exited, the colors weren't
- saved.
-
- A bad version of the editor macro "findsym.se" was provided.
-
- SE set no pointer during compilation. It now sets a busy pointer.
-
- SE did not correctly add the backup file extension when saving backup files.
-
- SE did not accept national characters that were entered through a REXX script.
-
- =============================
- SCMSG Message Browser Changes
- =============================
-
- Fixed in 6.2
-
- The NEXT and PREV REXX commands didn't cycle back to the top or bottom
- of the message list as documented.
-
- The PREV REXX command returned an incorrect return code regardless
- of the success status.
-
- Fixed in 6.1
-
- SCMSG menu colors were funny-looking on an 8-color workbench screen.
-
- SCMSG didn't protect itself against the editor exiting while it was
- processing a message to the editor.
-
- SCMSG did not open on the default public screen. It now does so; it
- also accepts a SCREEN <name> command-line parameter and an
- "opts screen <name>" AREXX command (see below).
-
- SCMSG redrew its message lines even if they had not changed when receiving
- new messages. This caused unnecessary flicker.
-
- SCMSG didn't set the AUTOEDIT option even if the options file said to.
- It also reset the GOTOFILE and GOTOLINE options to the SE defaults even
- if the user had erased those values.
-
- SCMSG now accepts the following escape sequences in the REXX commands that
- it sends to the programmed editor. These are in addition to the %f, %l
- and so forth that are documented in the manual:
-
- %# - message number
- %m - message text
- %e - alternate filename
- %k - alternate line number
-
- Note also that the %c escape sequence gives the message Class (ERROR/
- WARNING) rather than the column number, as documented in the manual. This
- was an error in the manaul.
-
- SCMSG now accepts the following new or modified REXX commands. All old
- commands still work.
-
- "build [options]"
-
- The "build" REXX command now passes any options specified on to the
- SMAKE utility.
-
- "hide" [option]
- The "hide" REXX command takes "rexxonly", "norexxonly", "autoedit",
- and "noautoedit" as options. The options control when the window will
- reappear. The "wait" option listed in the manual is the default, so
- there is no need to specify it.
-
- "number"
- synonym for "errnum"
-
- "newbld <compunit>"
- tells SCMSG to clear all messages for the specified compilation unit.
- Sent by the compiler when a new compile is begun to delete all old
- messages. It also forces SCMSG to invoke the editor on the next new
- message if the AUTOEDIT option is on.
-
- "newmsg "<compunit>" "<file>" <line> 0 "" 0 <class> <errnum> <text>"
- adds a message to SCMSG's list. <compunit> is the compilation unit
- the message is associated with (the .c filename), <file> and <line>
- indicate the filename and line number of the message, <class> is
- one of "Error", "Warning" or "Info", <errnum> is a positive error
- number, and <text> is the message text. The 0 "" 0 in the middle
- must appear exactly as written. If the message text contains the
- words 'See line <number> file "name"', the <number> is taken to be
- the alternate line number and the <name> is taken to be the
- alternate file name.
-
- "opts [option]"
- where [option] is one of the following:
-
- load <filename> - Load options from the specified file
- save <filename> - Save options to the specified file
- portname <xxx> - Set the name of the editor's AREXX port to
- the specified value
- screen <name> - Close the SCMSG window and reopen it on the
- specified public screen.
-
- The default value for the GOTOLINE option, intended for use with the SE
- editor, is now
-
- LL "%l\n" DM %m
-
- instead of just
-
- LL "%l\n"
-
- This displays the message text in the message line of SE after taking you
- to the line of the message.
-
- =====================
- Other Utility Changes
- =====================
-
- Fixed in 6.2
-
- ASM's macro handling with respect to local labels was broken.
-
- REG was not implemented in ASM.
-
- ASM did not detect zero-length short branches.
-
- Fixed in 6.1
-
- SMAKE didn't read the tooltypes array as documented; it also reported that
- A: is a "bad drive specifier" when it was used in a target.
-
- Closing the SMAKE window after SLINK started caused a system crash.
-
- SMAKE did not use the SYS_UserShell tag when calling the System() routine
- under AmigaDOS 2.0. It now does.
-
- If multiple targets were passed to SMAKE on the command line and the first
- was up to date, the subsequent targets were not built.
-
- ASM didn't deal with packed decimal mode constants correctly.
-
- OML gave a "phase error" if you attempted to place object files in
- the library that contained chip data.
-
- LCTOSC and DUMPBOJ did not set the return code correctly.
-
- LCTOSC incorrectly translated '-Ln' to 'LINK DEBUGSTRIP' instead of 'LINK
- STRIPDEBUG'
-
- HyperGST could not locate header files obtained from the local project
- if invoked from WorkBench.
-
- SLINK did not always set the execute bit on the generated executables.
-
- LPROF/LSTAT were giving strange results when used on programs with
- multiple code hunks. This is a very long-standing bug dating back to
- version 5.0.
-
- Scsetup did not correctly process the '?' parameter when invoked from
- the Shell. It printed its command template, then started working on
- the current directory as if no parameters were entered.
-
- SCOPTS only saved to ENV: when asked to "Save Default". It now saves to
- ENVARC: as well.
-
- ===============================
- Documentation/Help File Changes
- ===============================
-
- Fixed in 6.1
-
- The sc.guide hypertext file incorrectly listed 255 as the default value
- for the IDENTIFIERLENGTH option, instead of the correct value of 31.
- 255 is the maximum value.
-
- Some new "Common Problems" were added to the Common Problems document.
-
- The scmsg.guide hypertext file was modified to add Error 145, which is
- new to this patch release, and to update or add descriptions for Warning 7,
- Error 82, Warning 184, Warning 198, and Error 200. In addition, the Global
- Optimizer warnings which were left out of the documentation were added to
- the Compiler Errors and Warnings section of scmsg.guide. The warnings
- added are warnings 301, 302, 303, 304, 305 and Note 306.
-
- Additional information was added to the ANSI compiler option description
- in sc.guide. The ANSI option has effects other than simply turning on
- warning messages. These effects are now described.
-
- Three data item names and one function were added to sc_lib.guide. All
- four additions are listed separately in the main Library Functions help
- screen under the button "Newly Documented Functions and Data Names".
-
- Additional corrections to the documentation can be found in the "Changes
- to the Documentation" help screen (sc_changes.guide) under the button
- "Version 6.1 (Error Correction Patch) Changes".
-
- The "compile.ced" macro intended for use with CygnusEd had a bug in its
- use of the "jumpto" command. "jumpto" expects both a line number and a
- column number, and only the line number was provided. CygnusEd users may
- want to copy the new version of the macro into their REXX:CED drawer.
-
- The TurboText macros referenced explicit directory paths, but the
- directory was renamed in the final version; therefore, they did not work
- correctly as installed. The TurboText directory has been renamed.
- Please reinstall these macros if you had problems with them in 6.0.
-
- ======================
- List of Modified Files
- ======================
-
- The following files were modified during the 6.2 patch installation
- process. If they have version numbers, the version should be 6.2.
-
- Drawer Files
-
- SC:C se, scopts, cpr, cprx, cprk, hypergst, asm, sc5, lctosc,
- scmsg
-
- SC:LIBS sc1.library, sc2.library, schi.library, scpeep.library,
- scdebug.library, sclist.library
-
- SC:LIB all .lib files and cback.o.
-
- SC:INCLUDE stdio.h pragmas/exec_pragmas.h pragmas/exec_sysbase.h
-
- SC:HELP sc_6.2.guide
-
- SC:SOURCE cback.a, libinit.c
-
-
- The following files were modified during the 6.2 patch installation
- process, but are the same as they were in version 6.1. If they have
- version numbers, the version should be 6.1.
-
- Drawer Files
-
- SC: read.me
-
- SC:C smake, slink, scompact, omd, dumpobj, oml, lstat, lprof, tb
-
- SC:ENV se.dat
-
- SC:LIBS sekeymap.library
-
- SC:LIB all startup modules other than cback.o.
-
- SC:INCLUDE fcntl.h, stat.h, dos.h, m68881.h, mffp.h, mieeedoub.h,
- stdarg.h, sys/dir.h, proto/all.h, proto/layers.h,
- pragmas/intuition_pragmas.h
-
- SC:REXX findsym.se, showcli.cpr, showprocess.cpr
-
- SC:HELP sc_prob.guide, sc_lib.guide, sc_6.1.guide, scmsg.guide,
- sc_util.guide, sc.guide, cpr.guide
-
- SC:SOURCE autoopenfail.c, _main.c, _oserr.c, intuitlib.c, _cxferr.c,
- c.a
-
- SC:EXTRAS TTX/instructions, CED/rexx/ced/Compile.ced
-
-
-