Patch-ID# 109513-11 Keywords: C 5.2 Synopsis: C 5.2: Patch for Forte Developer 6 Update 1 C compiler Date: Feb/03/2003 Install Requirements: None Solaris Release: 2.6 7 8 SunOS Release: 5.6 5.7 5.8 Unbundled Product: Forte Developer 6 Update 1 Unbundled Release: C_5.2 Xref: Topic: Relevant Architectures: sparc BugId's fixed with this patch: 4375097 4375977 4387115 4390827 4405238 4414290 4415917 4423502 4424121 4427975 4458596 4473515 4486317 4522629 4524014 4639260 4766782 Changes incorporated in this version: 4766782 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/WS6U1/bin/acc /SUNWspro/WS6U1/bin/acomp /SUNWspro/WS6U1/bin/acompegr /SUNWspro/WS6U1/bin/c89 /SUNWspro/WS6U1/bin/cc /SUNWspro/WS6U1/bin/lint /SUNWspro/WS6U1/bin/lint1 /SUNWspro/WS6U1/bin/lint2 /SUNWspro/WS6U1/bin/lint2n Problem Description: 4766782 C file loops in acomp / ir_mkoverlap() (from 109513-10) 4423502 Provide way to provide source name to be used in stabs and STT_FILE symbol 4639260 compiling via intermediary file -E > .i misses stabs info to .c file in .o (from 109513-09) 4524014 lint too smart for own good (thinks 5.10 < 5.7) (from 109513-08) 4522629 Disagreement between C++ and C when returning a struct (C violates ABI) (from 109513-07) 4486317 switch statements don't work properly (from 109513-06) 4427975 WS6 lint returns "internal compiler error:" 4473515 cc -native expands to -xtarget=generic on recent Sun boxes (from 109513-05) 4458596 Invalid loop code generated when no opt or tcov flags, causes Oracle failures (from 109513-04) 4424121 S/ PROBLEM with a packed struct inside another packed struct. (from 109513-03) 4415917 SC6.1 horks up a recursive stab for a K&R function with a short arg 4414290 C compile time doubled from compiler 4.2 to 5.2 (from 109513-02) 4390827 compiler asserts with -KPIC and optimization 4405238 ws6u1 compiler includes function names in .rodata section 4387115 SC5.2 (and 5.1) generate wrong code for long longs in 32bit mode (from 109513-01) 4375097 Internal compiler error with -xdepend compiling Pro/E code 4375977 acomp crashes compiling Pro/E code in 64-bit mode 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: Monday, February 3, 2003