Return-Path: smlieu Return-Path: Received: by cygnus.com (4.1/SMI-4.1) id AA23740; Mon, 23 Aug 93 20:30:58 PDT Date: Mon, 23 Aug 93 20:30:58 PDT From: smlieu (Sun Ming Lieu) Message-Id: <9308240330.AA23740@cygnus.com> To: engnews-distrib ------------------------------------------------------------------------- Vol 2 No 8 INSIDE CYGNUS ENGINEERING August 1993 ------------------------------------------------------------------------- Inside Cygnus Engineering (ICE) is published monthly for customers of Cygnus Support. Our objective is to provide a relevant but informal summary of news and ongoing activities. Please send all comments, suggestions, and subscription requests to engnews@cygnus.com. TABLE OF CONTENTS ----------------- . G++ Reno 1.2 Release . GDB 4.10 Release . Selective Linkage of BFD Backends . Multiple Thread Support in GDB . Chill Compiler Update . New scheme for "fixing" C and C++ header files . Software maintenance status . First Cygnus CD . New Colorado Engineering Office . Embedded Systems Conference West . Customer Forum (New Support Product) . Customer Forum Responses (Distribution Media) . Hackers Index PRODUCTS AND RELEASES --------------------- 1. G++ Reno 1.2 Release G++ Reno 1.2 was released to selected sites at the end of July, and will be part of the Q3 release at the end of September. This release includes rewrites of argument matching for improved compliance with ARM (Annotated Reference Manual) specifications for overloading, generation of default constructors and destructors, improved ANSI-related warnings and errors, an option to control when templates are expanded (to reduce memory usage) as well as many small enhancements and bug fixes. We have written a new G++ driver to replace the original shell script, greatly enhancing startup performance on systems with complex NFS (Network File System) linkages. This release of the G++ compiler introduces two binary incompatibilities in the functionality of "operator new" and "operator delete", and in demangling virtual table names. Although we try to avoid introducing incompatibilities, these were required for the correct behaviour of the compiler. With the enhancements in Reno 1.2, G++ can now be used to compile a broad spectrum of complex C++ applications and class libraries, including groff, ptolemy, flexfax, leda, and interviews. Work has now begun on the Reno 2.0 release. This will include fully ANSI-compliant exception handling, support for the DWARF debugging format, further modifications for ANSI compliance, enhancements to debugging with GDB, and performance improvements in terms of compiler and code size. Run time type identification (RTTI) will also be added if it becomes part of the ANSI standard. The schedule for Reno 2.0 has not been finalized; our goal is to complete the release by year end. 2. GDB 4.10 Release GDB 4.10 was released to the Net on August 13. Key additions in this release include multithread support (see "Multiple Thread Support in GDB" section below) and support for cross-debugging from a DEC Alpha host. Native Alpha debugging is not yet supported. In response to customer requests, a user-defineable timeout value is now available for VxWorks-based targets. Other user-visible changes include filename completion, "info line" support in emacs mode, as well as many minor enhancements and bug fixes. GNU software evolves quickly and we have found that frequent and regular releases help maintain the overall stability of the software. We are currently making a quarterly Net release of GDB which then becomes part of the Cygnus progressive releases. As this Net release schedule becomes established, we may become the first organization to post its software release schedules on the Internet. NEW AND ONGOING DEVELOPMENTS ---------------------------- 1. Selective Linkage of BFD Backends Historically, all the backends supported by the BFD library (libbfd) are linked into any program that uses it, e.g., GDB, ld, and the binary utilities. This provides great flexibility and ease of testing at a major cost in code size and memory requirements. A new configuration option, "--with-targets=" has now been implemented. This allows you to specify the backend(s) that you link into a given program. In the Q3 release, only the target-specific backend will be linked in. For the old behaviour, the remaining targets can be added at configure time with the "--with-target=all" option. Here are some sample results of minimizing the number of BFD backends for the linker (ld) and the binary utilities objdump and strings. These results are based on statically linked SPARC binaries, and unless otherwise specified, are unstripped and unoptimized. --------------------------------------------------------------- Size in % Configuration kbytes of max --------------------------------------------------------------- ld: all backends (maximum size) 2187 100 m68k-coff, mips-ecoff, rs6000-xcoff 944 43 sparc-aout 664 30 sparc-aout with -O2 and stripped 270 12 objdump: all backends (maximum size) 1843 100 m68k-coff, mips-ecoff, rs6000-xcoff 680 40 sparc-aout 500 27 sparc-aout with -O2 and stripped 279 15 strings: all backends (maximum size) 1327 100 m68k-coff, mips-ecoff, rs6000-xcoff 516 39 sparc-aout 352 27 sparc-aout with -O2 and stripped 172 13 --------------------------------------------------------------- 2. Multiple Thread Support in GDB The requirements for thread support in GDB vary with the definition of a "thread". The definition can range from distinct executables running in separate processes (commonly referred to via system exec() calls) to "lightweight threads" that are entirely implemented in user code. GDB 4.10 includes support for debugging threads in the Lynx Realtime kernel. Minor modifications required to support other models will be added in later releases. Each Lynx thread occupies a common address space, and all resources (except for registers) are shared. Because the kernel manages the threads, a system call interface can be used to get at all the per-thread information. The threads are handled in a synchronous manner, i.e., all threads are suspended if one of them stops. GDB knows about only a single thread/process at a time. All commands operate only upon the current thread. A command similar to "attach" is used for switching the current thread. Commands acting on all threads or an arbitrary subset of threads, including one to list all threads and the status of each, will be added in the next release. 3. Chill Compiler Update Work on the CHILL telecommunications language front end continues. CHILL is inherently a two-pass language. Users may freely make forward references, and there is no partial-declaration syntax or forward directive. To support this, we have now implemented a two- pass front end for GNU CHILL. In pass one, the compiler collects declarations. Before each scope is processed in pass two, those declarations are 'satisfied', i.e. the forward references, if any, are filled in. The basic work has been completed and the compiler passes most of our CHILL test cases. All CHILL compilers support some subset or dialect of the CHILL specification given by the "Blue Book" (CCITT High Level Language (CHILL) Recommendation Z200, ISO/IEC 9496). The subset supported by GNU CHILL is larger than most. Our current implementation includes modes, expressions, actions, exception handling, interprocess communications, multimodule programming, and a basic runtime library. I/O, time supervision and a real time kernel for the multitasking functions are not yet available. Because GNU CHILL is based on the gcc backend, it takes full advantage of all the gcc optimizations and availability on multiple microprocessor architectures. We are looking for microprocessor vendors and/or CHILL users as partners to productize a generic GNU CHILL that can be used directly for new applications or enhanced to support existing code. 4. New scheme for "fixing" C and C++ header files Part of the installation process of the native compiler release is to "fix" the header files, such as stdio.h, on the host system to remove ANSI incompatibilities. Likewise, C++ programmers require C++-ready, ANSI-compatible versions of the standard C header files. These used to be provided with libg++, but were difficult to maintain due to the design compromises (and outright "kludges") that were necessary to make these work on all the systems we support. We have recently introduced what we believe to be a better solution in the form of a new shell script, "fixproto". Fixproto analyzes all the header files in /usr/include, and adds any missing standard ANSI and Posix.2 prototypes. The 'extern "C"' braces needed to specify that these are C (not C++) functions are also added as needed. It is run as part of the installation and/or build of a native compiler. The resulting header files are also used for C, with the result that the -Wimplicit option for gcc is much more useful. This new scheme will be part of the Q3 release. Its most obvious drawback is that the fixproto script take longer to run, so any installation of a native compiler will be noticeably slower. Performance improvements will be made as part of the Q4 release. SUPPORT ACTIVITIES ------------------- In addition to new development, a significant part of our engineering resources is devoted to answering questions, fixing problems in the GNU software, and providing a range of support services to our customers. 1. Software maintenance status The following table shows the maintenance statistics for the last five weeks. We continue to need your help: please let us know when you agree that a problem has been fixed so that we can move it from a "feedback" state to a "closed" state. # # # # # # Date Open Analzd Fdback Closed Suspnd Total ------------------------------------------------------------ 07/19/93 436 211 587 1,543 131 2,908 08/16/93 497 235 577 1,699 144 3,152 ------------------------------------------------------------ Change +61 +24 -10 +156 +13 +244 OTHER ITEMS ----------- 1. First Cygnus CD As part of our joint promotional campaign with AMD (Advanced Micro Devices), we have just pressed our first CD. Although our software has appeared on Sun Microsystems Catalyst CDWare (volumes 4 and 5) and on the Prime Time Freeware CD, this is the first one that we ourselves have produced. Called the "Cygnus Freedom Software 930630" CD, it includes Sun3, Sun4, Sun3 x AMD29k, Sun4 x AMD29k, and DOS x AMD29k toolkits based on the Q2 release. With the increasing number of platforms we support, customer preference (see section on Customer Forum Responses), and improved accessibility of the CD technology, CD distribution looks like an attractive option for future progressive and special releases. 2. New Colorado Engineering Office The Cygnus engineering team is now over 30 strong. As part of our commitment to being a distributed company, we have main offices in Mountain View, CA, and Cambridge, MA. We also have home-based offices in Reseda, CA, Tempe, AZ, Nederland, CO, Minneapolis, MN, and Beltsville, MD. We have recently moved into formal office space in Nederland, CO (alt. 8300', pop. 1100). 3. Embedded Systems Conference West We will be exhibiting at the Embedded Systems Conference West held October 5-7 at the Santa Clara Convention Center just a few miles from our home office. In addition to having our own booth, we will participate in the booths of a number of our microprocessor partners. Mark Eichin will speak on "Security Issues in Embedded Networking". See you at the show! 4. Customer Forum We value your suggestions, and would like your response (to engnews@cygnus.com) to the following questions. We will publish summaries of answers of general interest in a future issue. 1. What other language front ends would you like to see supported by Cygnus? Ada? Cobol? FORTRAN? Modula-3? Pascal? PL/M? 2. In addition to improvements to the compiler tools, we would like to add value to our development toolkit offerings. What other tools would you like to see supported? browsers class libraries cvs (source code control) gcov/gprof (profiling and code coverage analysis) make memory trace and leakage detection tools simulators for GDB others - please specify 5. Customer Forum Responses Our questions last month about media for software releases elicited a wide variety of responses. The preferred medium for receiving software releases varied, including CD-ROM for random access and reliability, to QIC drives for availability, interchangeability, and low cost, to the Internet. In terms of future interest, CD-ROM dominated the responses, with the Internet a close second; there was also some interest in 4mm DAT. 6. Hackers Index Number of platforms on the Q3 Standard Support Matrix: 66 Amount of disc online at Cygnus: 83 gigabytes (and growing) --------------------------------------------------------------------- Cygnus Support 1937 Landings Drive One Kendall Square Mountain View, CA 94043 Cambridge, MA 02139 +1 415 903 1400 voice +1 617 494 1040 voice +1 415 903 0122 fax +1 617 494 1325 fax ---------------------------------------------------------------------