Paradigm C++ Release Notes - Product history
This reference is intended to help the Paradigm C++ user track the improvements and bug fixes added to Paradigm C++ from previous releases.
This is not a complete list of fixes and improvements but it does cover important changes.
Note: The items in the the Paradigm C++ history list can potentially change how your application behaves so please review them to make sure you are not affected.
Product history of Paradigm C++ Professional (6.0) Service Pack 6
Product history of Paradigm C++ Professional (6.0) Service Pack 5
Product history of Paradigm C++ Professional (6.0) Service Pack 4
Product history of Paradigm C++ Professional (6.0) Service Pack 3
Product history of Paradigm C++ Professional (6.0) Service Pack 2
Product history of Paradigm C++ Professional (6.0) Service Pack 1
Product history - Paradigm C++ Professional (6.0) Service Pack 6
Version history of Paradigm C++ Professional (6.0) Service Pack 6:
| v6.00.045 | Paradigm C++ Professional (6.0) Service Pack 6 |
Product history - Paradigm C++ Professional (6.0) Service Pack 5
Version history of Paradigm C++ Professional (6.0) Service Pack 5:
| v6.00.038 | Paradigm C++ Professional (6.0) Service Pack 5 |
The following changes have been made in the Paradigm C++ Professional (6.0) Service Pack 5:
| Compiler |
Improved 32-bit I/O performance. Fixed problem with h2ash utility and use of #undef. Fixed real mode compiler segment overflow error. |
| Debugger |
Fixed bug that could prevent older PDREMOTE/ROM monitors from working. Fixed debug session bug that prevented setting of breakpoints when using PromJET. Updated JTAG interface. |
| IDE | Updated hardware key support for Windows XP SP2. |
| Locate tool | Fixed locate CPUINIT bug when more than 1KB of initializations are specified. |
| Project Manager | Fixed bug that caused .pdl file to lose target connection settings when loaded. |
Product history - Paradigm C++ Professional (6.0) Service Pack 4
Version history of Paradigm C++ Professional (6.0) Service Pack 4:
| v6.00.037 | Paradigm C++ Professional (6.0) Service Pack 4 |
The following changes have been made in the Paradigm C++ Professional (6.0) Service Pack 4:
| Assembler | PASM32 has a fix for BSR/BSF instruction bug. |
| Compiler |
Fixed compiler bug where incorrect code was being generated when floating point constants were used. Fixed case where floating point code would cause an application crash when used with standard I/O functions, such as sprintf(). New function for real/extended mode, _outpcb(port, value), to perform I/O write operations to PCB registers. Exception handling is now off by default for command line compiler. |
| Debugger |
Fixed memory read crash in debugger when opening CPU window with protected mode PDREMOTE/ROM. ROM emulator communication test change to error reporting. Third party RTOS support fixes, added Nucleus Plus 16-bit support. Improved PDREMOTE/ROM download speeds for large applications. Added PDREMOTE/ROM tester in communication options. |
| IDE |
Increased line length capacity in editor. Mouse wheel support for the IDE. 'Keep response files' option now also controls the IDE created response files from the $RSP transfer macro. Leading spaces $INC transfer macro expansion removed to allow long file name support. Allow 'Paradigm C++ Technical Support' link under Help menu in IDE to launch a mail program if a mail program is not already running. |
| Locate tool | Locate INITCODE directive fix for 386EX processor. |
| Project Manager | Fix for .pdl files that prevented use of spaces in source/lib/include path. |
| Run-time libraries |
Improved real/extended mode 32-bit integer division performance. Protected mode floating point emulation fix. |
Product history - Paradigm C++ Professional (6.0) Service Pack 3
Version history of Paradigm C++ Professional (6.0) Service Pack 3:
| v6.00.033 | Paradigm C++ Professional (6.0) Service Pack 3 |
The following changes have been made in the Paradigm C++ Professional (6.0) Service Pack 3:
| Assembler |
Fixed problem with realloc() in extended address mode. Fixed problem with EXITDATA class alignment in extended address mode. |
| Compiler |
Fixes a bug affecting unsigned char arithmetic with signed integers. Real/extended mode fix for the casting of char types. Real/extended mode fix for "Unknown error" when using pre-compiled headers. Real/extended mode compile/assemble "out of hash space" fix. Fixed the 32-bit compiler so the macro _M_IX86 is guaranteed to be output. Fixed a problem with the 32-bit compiler not emitting a line number record for local declarations in processing switch case statements. Rebuilt compiler to support a 4096 path in the IDE version. Fixed a bug in the 16-bit compiler optimizer that caused the assignment to a needed local to be optimized away. Added error diagnostic to complain of automatic data using the nonvolatile property (which is not permitted). |
| Debugger |
Real/extended mode fix for missing call stack window entries. Allow inspect and watch window contents to be logged. |
| Finder | Fixed a problem where files containing a form-feed in the first 256 bytes were considered to be binary and were not searched. |
| IDE |
Fixed problem where zero-length temporary files were left in the TEMP directory from transfers that did not capture any output. Fixed a bug where opening project from command line could cause a crash. Lint tool now receives the predefined compiler macro _M_IX86 for the 32-bit compiler (used in Win32 header files). Fixed missing support for compiler coverage display in the options hierarchy window. Added code to the compiler and assembler tools to create the output directory if it does not exist. Fixed the project file to makefile utility to allow the continuation of long makefile lines so they do not exceed the editor line length capacity. Added ability to strip off debugging information (independently of the Options.Project settings) using the 'Exclude debugging information' checkbox in the node 'Edit node attributes' dialog. Fixed problem with generation of PASM filenames so that short filenames are created in the makefile since a long filename will not be accepted by PASM. |
| Librarian |
Added ability to work with quoted command lines containing spaces. Fixed problem with options getting set but never reset. Now IDE can set/reset /0 option using 'Exclude debug info' option. |
| Linker | Fixed problem in 16-bit linker with the unmangling of large STL template names emitted to the map file. |
| Locate tool |
Added support to CPUTYPE for Advantech EVA1611C to EVA1630C devices. Added support to CPUTYPE for Infinior IMS16B and IMS16C devices. Added support to CPUTYPE for RDC R1610, R1620, R2000, R2010, and R2020 devices. |
| Make utility | Filename used for temporary response files was changed from MAKE0000.@@@ to MAKE0000.MAK. |
| Project Manager |
Fixed bug where deleting a node from the project could cause a crash after clicking on a message referring to it in the message window. Added feature to copy the contents of the 'Options hierarchy' display to the clipboard. Fixed cases where a double-click on a source file in the project failed to open the file. Added support for a new, more version control system friendly .pdl file format for project files in addition to .ide files. |
Product history - Paradigm C++ Professional (6.0) Service Pack 2
Version history of Paradigm C++ Professional (6.0) Service Pack 2:
| v6.00.021 | Paradigm C++ Professional (6.0) Service Pack 2 |
The following changes have been made in the Paradigm C++ Professional (6.0) Service Pack 2:
| Debugger |
Memory map or I/O dialog change will refresh any opened memory displays. Third party RTOS 32-bit evaluator and menu fixes made. Support for the SC520 CodeTAP interface added. Support for RDC processor JTAG inferface added. Tool added to edit .EMU file to be loaded by debugger (right-click on .axe node, select View | Current .EMU file) for new projects that are created. Remote console window added to display PDREMOTE/ROM and SC520 JTAG remote console output (View | Remote console when in a debug session). |
| IDE |
Editor windows now open in an area consistent with the first editor window opened. Option for multi-seat licensing over network added. Hardware key support for license management implemented. |
| Project Manager | Added option to TargetExpert for protected mode applications to allow alternate application startup code to be added. |
Product history - Paradigm C++ Professional (6.0) Service Pack 1
Version history of Paradigm C++ Professional (6.0) Service Pack 1:
| v6.00.012 | Paradigm C++ Professional (6.0) Service Pack 1 |
| v6.00.008 | Initial Paradigm C++ Professional (6.0) release |
The following changes have been made in the Paradigm C++ Professional (6.0) Service Pack 1:
| Compiler |
(Real-mode) Added ability to place local scope automatic array/structure
initializers in the code segment using the automatic const data option (Real-mode) Added debug information for module-level static data to the ?DEBUG records in assembly language output (Real-mode) Fixed bug which prevented certain optimizations from being disabled (Real-mode) Added ability to detect a full define buffer and now issues an error when defines are passed in from the IDE (Real-mode) Added code to disable constant overflow checking when tree nodes are reordered for purposes of address calculations (Real-mode) Fixed a problem (when assembly language output is used) with the segments not being emitted in the same order as they were created. This caused the debug information to refer to incorrect segments New option to make all 'const' data automatically far so it can be placed in a read-only address space. This option is enabled with the -dx option Coverage records are now disabled by default but can be enabled using the -vc command line option The -Fp option can now be used (currently on an evaluation basis using #pragma option -Fp) to pack far undimensioned initialized arrays into optimally-sized segments. Without this option, undimensioned will always be placed in a new segment Handling of NULL pointers has been improved, especially the comparison of near and far pointers. One thing to consider if you mix pointer types is that promotion of a NULL near pointer to a far pointer will never be NULL, it will be DS:0 Bug in 16-bit intrinsic functions that limited the size to 32KB has now been fixed New compiler errors It is now an error to include an initializer on data that is declared as '__nonvolatile' Compiler now checks and warns if constant expressions do not fit in type int (16-bits for real/extended mode, 32-bits for protected mode) A warning will be issued for const declarations that do not include an initializer, such as const int x ; |
| Debugger |
Single step in CPU window now changed to stop on any unexpected break
condition IDE lockup when attempting to display an error dialog fixed Fixed case where a selection of a large block of text could cause crash when trying to evaluate it New 16-bit compiler option to make all 'const' data far can be found in Options.Project.16-bit compiler.Memory Model New compiler options to enable/disable the new compiler warnings are available in Options.Project.Messages New assembler options in Options.Project.Assembler.Code Generation allow control of smart code generation, smart conditional jumps, and version emulation The macro $ENV() is now supported in output directory definitions Spaces in macro definitions should now be supported for all tools. Previously some tool interfaces such as Lint could not handle 'DEBUG = 1' Option in Debugging allows the disabling of coverage records IDE no longer attempts to open files that no longer exist The IDE object in cScript now includes the CurrentProject() property Building of source files in the default project is no longer allowed User defined I/O interface fixes added AMDebug trace fixes, stepping with trace buffer open fix made Environment option added to toggle processor reset on connection/download Environment option added for real mode case sensitve inspections SuperTAP event system fix for != condition SuperTAP event system data mask support added (data value & 0xff to look at only 8 bits of value) Improved stepping when a source file is not in the path specified in its project node Environment option debugger behavior flag, "dynamic update" now saved/restored in .IDE file Emu file #include directive searches .EMU file path, project path, $pcpproot\bin and $pcpproot\include Emu file #load directive searches .EMU file path, then .AXE file path (FS2) added timestamp trace mode |
| Header files |
I80386EX.H now includes EMBEDDED.H The following RDC R1100 and R8800 header files are now included: (R1100.H, R1120.H, R1122.H, R8800.H, R8820.H, R8822.H) |
| IDE |
Added code to use double quotes '"" to deal with long filenames with embedded spaces for the linker Added the project directory to the path list for the assembler so the project directory is searched first for include files (same search order as the compiler) Added fix for the Visual Assist problem of crashing when windows were split Increased the maximum # of compiler defines to 4KB and fixed problem with buffer overruns when the $ENV and $INHERIT macros were used Feature added to allow printing of selected lines in the editor |
| Linker |
(Real-mode) Change made to detect segments that are not fully
addressable, for example, a segment starting at offset 8 could be at most
64KB-8 bytes in size (Real-mode) Improved support for the handing absolute segments (Real-mode) Problem with type information parent type indices being off by one was fixed (Real-mode) Fixed a number of minor problems: (virtual offset field was off by two, member folding problem with static member fixups, type folding did not use the second half of 2 record types) (Real-mode) Fixed to allow double quotes to be used with long filenames having white space (Real-mode) Added ability to split out absolute segments from the detailed segment map Worked around a problem with bad input debug information and now issues a warning when the problem is detected Static members from C++ classes are now handled correctly Detailed segment map no longer lists zero-length segments (other than the first) |
| Lint |
'__nonvolatile' and other Paradigm C++ key-works have been added Lint can now handle .C source files that are marked to use the CppCompile translator |
| Locator |
(Real-mode) Fixed problem where the wrong symbol was being displayed and the warning was issued
twice (Real-mode) Fixed problem with older Borland formats not handling scope record function symbol indices Added support for RDC R8800 and R1100 processors Increased the number of preprocessor include files supported to 100 |
| PDREMOTE/ROM |
Removed header file definitions that are part of Paradigm C++ (no more support for obsolete
BC++/MSC/C++ compilers) Support for RDC R8800 and R1100 processor types has been added |
| Project Manager |
New projects will no longer have compiler dependency information stored in the project file by
default. Default option for Autodependencies is now 'Use', which means that this information will
be obtained directly from object files Fixed View Options Hierarchy crash caused by a large number of compiler defines Fixed multi-target project when targets have different connections TargetExpert support for optional PEG graphics added |
| Run-time Library |
Startup priorities of run-time library are now more organized: (0 - 15 = C/C++ Run-time library initializers, 16 - 31 = RTKernel initializers, 32 and up = Application initializers) findfirst() and findnext() support has been added to the run-time library. |
| Visual Assist |
Fixed "blank window" bug that caused a crash when blank editor window was closed A bug that caused a crash when windows were splitting has been fixed Now remains disabled unless a project is open |
The following are the highlights included in the Paradigm C++ Summer 2000 (5.0):
| v5.10.021 | Paradigm C++ Summer 2000 (5.x) Service Pack 4 |
| v5.10.004 | Paradigm C++ Summer 2000 (5.0) Service Pack 3 |
| v500.028 | Paradigm C++ Summer 2000 (5.0) Service Pack 2 |
| v500.026 | Paradigm C++ Summer 2000 (5.0) Service Pack 1 |
| v500.025 | Paradigm C++ Summer 2000 (5.0) CD |
| v500.014 | Paradigm C++ Winter 2000 (5.0) CD |
| v500.010 | Paradigm C++ Summer 1999 (5.0) CD |
| v500.006 | Initial Paradigm C++ (5.0) release |
Product history - Paradigm C++ (5.0) Service Pack 1
The following changes have been made in the Paradigm C++ Summer 2000 (5.0) Service Pack 1:
|
CS.LIB CM.LIB CC.LIB CL.LIB CH.LIB |
Fixed a bug in FBRK.OBJ where an incorrect fixup record could cause a linker error. |
| LOCATE.EXE | The 16-bit locate tool now supports #message as a preprocessor directive. Use this FILTER.SPP to output informational messages from the locate tool, such as #message PDREMOTE/ROM is defined. |
| PLINK.EXE | Fixed an internal error when a linker defined symbol was used in an error diagnostic. |
| PCC.EXE | Fixed a bug that caused source files with hundreds of segments to overflow the BCWS16.DLL object file LNAMES record. |
| PDREMOTE/ROM | Fixed Windows 98 and Windows 2000 error and warning messages when generating Wizard PDREMOTE/ROM projects for some processor types. |
| Source files | Fixed source file correlation for source files referenced with the node's 'source' path specification. This bug was expressed when using the Debug Load command. Source file lines with debug information were not displayed with dots. |
| CPU window | Fixed a bug in the CPU Disassembly window where global symbols were not always displayed symbolically. |
| Debugger |
SuperTAP emulator specific - Fixed a bug where a memory map region fill, or a memory map copy from target into overlay command, resulted in a region that was 1 byte less than the desired length. FS2 specific - Fixes a hardware breakpoint bug occurring when a read or write memory break was encountered during a rep movsw (or equivalent), resulting in a corrupted CS:IP. FS2 specific - Trace displays for cores with deep traces ( > 16 ) are now ordered properly. FS2 specific - Trace entries at a software breakpoint were cleaned up. The breakpoint entry is now software breakpoint occurred and falso execution cycles following the break were stripped out. |
Product history - Paradigm C++ (5.0) Service Pack 2
The following changes have been made in the Paradigm C++ Summer 2000 (5.0) Service Pack 2:
| Compiler | Definition of NULL has been changed to '(void*)0' from 0 or 0L in C mode. |
| Compiler |
Bug fixed where too many segments overflow an OMF record. Optimizer bug fixed that causes a register allocation failure. |
| Examples | Changed to #pragma startup 64 or greater. 0-63 are reserved for the compiler and run-time libraries. |
| IDE |
$INHERIT is now expanded in the $DEF transfer macro. Add node can now add multiple nodes in Windows 2000. Ctrl-Brk can now be used in .KBD files. The size of the Source file path information has been expanded. Read-only files can now be optionally saved. ESC key in Options | Project crash fix. |
| Linker | Fixed a bug that caused PIDATA records to be expanded incorrectly. |
| Locate |
INITCODE NOTHING is now supported to generate a JMP to the application entry point at the address defined by class ??LOCATE. OMF86 output bug fix for PARAMETER types. |
| RTL | Startup code now initializes all registers to allow use on instruction set simulators that can't handle XOR AX, AX. |
| Debugger |
Basic 186CC register view support added. Module view address sort fixed. PDREMOTE/ROM wizard fixed. Communication fixes with PDREMOTE/ROM were made. Evaluator fix for SuperTAP trace buffer. Interval timer UI fix for SuperTAP. Copy/Fill overlay memory fix for SuperTAP. |
Product history - Paradigm C++ Professional (5.0) Service Pack 3
The following changes have been made in the Paradigm C++ Summer 2000 (5.0) Service Pack 3:
| Compiler |
Fixed bug with local common subexpressions. Command line size is no longer limited to a fixed size. Compiler memory limits increased. Fixed __emit__() tail merging bug. Fixed bug in inline assembler jump optimizations. Fixed bug found when calling interrupt routines from floating point code. |
| Debugger |
Symbol table parsing fixes were added. CPU view sub-menu has new log feature for disassembly. CPU and Dump views sub-menus now contain dialog for viewing I/O. Dump window sub-menu now has block fill, read from binary file, and write to binary file. User-defined I/O feature was added under View | Target peripherals for users to create their own list of I/O locations. |
| IDE |
Visual Studio editor emulation added. Selecting text with the mouse is now fixed. Command line builds can run minimized using the /b and /m options with /q. |
| Linker |
Added support for missing FIXUPP type. Added support for C++ namespaces. (Note: support for outputting namespace records in the debug record will be added into a future service pack) |
| RTL |
Floating emulator data structure members aligned for faster access. Libraries updated to support the Paradigm C++ RTKernel RTOS. |
Product history - Paradigm C++ Professional (5.x) Service Pack 4
The following changes have been made in the Paradigm C++ Summer 2000 (5.x) Service Pack 4:
| Compiler |
Local constant data feature added. Increased number of compiler defines that can be passed. New option to make all 'const' data automatically far so it can be placed in a read-only address space. This option is enabled with the -dx option. Coverage records are now disabled by default but can be enabled using the -vc command line option. The -Fp option can now be used (currently on an evaluation basis using #pragma option -Fp) to pack far undimensioned initialized arrays into optimally-sized segments. Without this option, undimensioned will always be placed in a new segment. Handling of NULL pointers has been improved, especially the comparison of near and far pointers. One thing to consider if you mix pointer types is that promotion of a NULL near pointer to a far pointer will never be NULL, it will be DS:0. Bug in 16-bit intrinsic functions that limited the size to 32KB has now been fixed. New compiler errors It is now an error to include an initializer on data that is declared as '__nonvolatile'. New compiler errors Compiler now checks and warns if constant expressions do not fit in type int (16-bits for real/extended mode, 32-bits for protected mode). A warning will be issued for const declarations that do not include an initializer, such as const int x ;. |
Debugger |
Memory map or I/O dialog change will refresh any opened memory displays. Tool added to edit .EMU file to be loaded by debugger (right-click on .axe node, select View | Current .EMU file) for new projects that are created. Remote console window added to display PDREMOTE/ROM console output (View | Remote console when in a debug session). Single step in CPU window now changed to stop on any unexpected break condition. New 16-bit compiler option to make all 'const' data far can be found in Options.Project.16-bit compiler.Memory Model. New compiler options to enable/disable the new compiler warnings are available in Options.Project.Messages. New assembler options in Options.Project.Assembler.Code Generation allow control of smart code generation, smart conditional jumps, and version emulation. The macro $ENV() is now supported in output directory definitions. Spaces in macro definitions should now be supported for all tools. Option in Debugging allows the disabling of coverage records. IDE no longer attempts to open files that no longer exist. The IDE object in cScript now includes the CurrentProject() property. Building of source files in the default project is no longer allowed. User defined I/O interface fixes added. Environment option added to toggle processor reset on connection/download. Environment option added for real mode case sensitve inspections. SuperTAP event system fix for != condition. SuperTAP event system data mask support added (data value & 0xff to look at only 8 bits of value). Improved stepping when a source file is not in the path specified in its project node. Environment option debugger behavior flag, "dynamic update" now saved/restored in .IDE file. Emu file #include directive searches .EMU file path, project path, $pcpproot\bin and $pcpproot\include. Emu file #load directive searches .EMU file path, then .AXE file path. |
| IDE |
Editor windows now open in an area consistent with the first editor window opened. Hardware key support for license management implemented. Option for multi-seat licensing over network added. |
Linker |
Static members from C++ classes are now handled correctly. Detailed segment map no longer lists zero-length segments (other than the first). |
| Locate |
Increased the number of preprocessor include files supported to 100. |
| Project Manager |
New projects will no longer have compiler dependency information stored in the project file by default. Default option for Autodependencies is now 'Use', which means that this information will be obtained directly from object files. Fixed View Options Hierarchy crash caused by a large number of compiler defines. Fixed multi-target project when targets have different connections. |