Patch-ID# 111679-14 Keywords: c 5.3 ws6u2 Synopsis: C 5.3: Patch for Forte Developer 6 update 2 C compiler Date: Mar/12/2004 Install Requirements: None Solaris Release: 2.6 7 8 9 SunOS Release: 5.6 5.7 5.8 5.9 Unbundled Product: Forte Developer 6 Update 2 Unbundled Release: C_5.3 Xref: Topic: Relevant Architectures: sparc BugId's fixed with this patch: 4423502 4427975 4434792 4465047 4467473 4486317 4489516 4493917 4509092 4522629 4524014 4527934 4593140 4599678 4639260 4649023 4658693 4764299 4766782 4784986 4799818 4808597 4859958 4907885 4984367 Changes incorporated in this version: 4984367 Patches accumulated and obsoleted by this patch: Patches which conflict with this patch: Patches required with this patch: Obsoleted by: Files included with this patch: /SUNWspro/WS6U2/bin/acomp /SUNWspro/WS6U2/bin/acompegr /SUNWspro/WS6U2/bin/c89 /SUNWspro/WS6U2/bin/cc /SUNWspro/WS6U2/bin/lint /SUNWspro/WS6U2/bin/lint1 /SUNWspro/WS6U2/bin/lint2 /SUNWspro/WS6U2/bin/lint2n /SUNWspro/WS6U2/bin/ssbd /SUNWspro/WS6U2/lib/locale/C/LC_MESSAGES/SUNW_SPRO_SC_acomp.error_help.html /SUNWspro/WS6U2/lib/locale/C/LC_MESSAGES/SUNW_SPRO_SC_acomp.msg Problem Description: 4984367 problems with 64-bit compilation using F6U2 as well S1S8 with "c" compiler. (from 111679-13) 4907885 bug in cc when -g or -O are not used (from 111679-12) 4859958 C 5.3 Wasted space internal compiler error and cu can't use 4806237 work-around (from 111679-11) 4808597 mlib_ImageAffineIndex (v8plusa) test coredump under k2 (from 111679-10) 4766782 C file loops in acomp / ir_mkoverlap() 4784986 Patch 111679-09 causes: internal compiler error: Wasted space 4799818 Nozomi patch: Assertion failed at line 2250 of ../src/xlate.c (from 111679-09) 4764299 Compiling an Oracle source file runs forever (from 111679-08) 4593140 fail to handle a casting properly (from 111679-07) 4423502 Provide way to provide source name to be used in stabs and STT_FILE symbol 4467473 cc w/o any option breaks mozilla build 4489516 test compiled with -xarch=v9 fails 4527934 yabe over-aggressively optimizes routines containing calls to setjmp 4639260 compiling via intermediary file -E > .i misses stabs info to .c file in .o 4649023 C program that uses malloc works with WS5.0/F6U1 fails with forte6U2 4658693 64bit module built without any options returns the different value. (from 111679-06) 4599678 F61 & 2 fails w/left operand of "." must be lvalue in this context (from 111679-05) 4434792 compiler spews unusable error/warning messages on struct type mismatch 4465047 C compiler error messages should contain Error: 4509092 -errwarn=E_SLASH_STAR_IN_CMNT is processed incorrectly 4524014 lint too smart for own good (thinks 5.10 < 5.7) (from 111679-04) 4522629 Disagreement between C++ and C when returning a struct (C violates ABI) (from 111679-03) 4493917 -xstrconst option causes bus error (from 111679-02) 4486317 switch statements don't work properly (from 111679-01) 4427975 WS6 lint returns "internal compiler error:" Patch Installation Instructions: -------------------------------- For Solaris 2.0-2.6 releases, refer to the Install.info file and/or the README within the patch for instructions on using the generic 'installpatch' and 'backoutpatch' scripts provided with each patch." For Solaris 7-8 releases, refer to the man pages for instructions on using 'patchadd' and 'patchrm' scripts provided with Solaris. Any other special or non-generic installation instructions should be described below as special instructions. The following example installs a patch to a standalone machine: example# patchadd /var/spool/patch/106326-01 The following example removes a patch from a standalone system: example# patchrm 104945-02 For additional examples please see the appropriate man pages. Special Install Instructions: ----------------------------- The fix for bugid 4522629 "Disagreement between C++ and C when returning a struct (C violates ABI)" in 111679-04 breaks binary compatibility on sparc V9 architectures only. This is because C currently does not conform to the v9 ABI and the fix changes C to conform to the V9 ABI. The codes affected will be any code with a function definition or function reference where the return value or any argument is defined as a small struct containing an array of floating-point type, i.e. float, double, or long double. The incompatibility will exhibit undefined behavior if the function definition and the function reference are compiled using different C compilers. The difference between those C compilers being one with this patch applied or one without this patch applied. A small struct is defined as 16 bytes for arguments, 32 bytes for return values. The patches that will introduce this incompatibility are 111679-04 for C Forte Developer 6 Update 2, and 109513-08 for C Forte Developer 6 Update 1. Compatible compilers: C Forte Developer 6 Update 1 109513-08 C Forte Developer 6 Update 2 111679-04 Binaries compiled with earlier versions of these two compilers, or earlier versions of Forte Developer or DevPro compilers that have function definitions or function references where the return value or any argument is defined as a small struct containing an array of floating-point as shown in the following list will be incompatible with binaries compiled with the above listed compilers. Example of a small struct containing an array of floating-point type that will be incompatible: Functions returning a small struct containing a 3 or 4 element array of double: typedef struct { double tf[4]; } t4_st; typedef struct { double tf[3]; } t3_st; Functions returning a small struct containing a 3, 4, 5, 6, 7, or 8 element array of float typedef struct { float tf[8]; } t8_st; typedef struct { float tf[7]; } t7_st; typedef struct { float tf[6]; } t6_st; typedef struct { float tf[5]; } t5_st; typedef struct { float tf[4]; } t4_st; typedef struct { float tf[3]; } t3_st; Functions passing as an argument a small struct containing a 3, or 4 element array of float typedef struct { float tf[4]; } t4_st; typedef struct { float tf[3]; } t3_st; README -- Last modified date: Friday, March 12, 2004