Then let's go with Jerry's original patch then.

It is attached.

Margot

> Date: Thu, 08 Dec 2005 16:01:18 -0800
> From: Greg Wright <[EMAIL PROTECTED]>
> User-Agent: Thunderbird 1.4 (Windows/20050908)
> MIME-Version: 1.0
> To: Margot Miller <[EMAIL PROTECTED]>
> CC: [email protected], [EMAIL PROTECTED]
> Subject: Re: [Audio-dev] CR: Sporadic Relocation error on Solaris
> Content-Transfer-Encoding: 7bit
> 
> Why was it necessary to change all the #if to #elifs? It is just a little
> scary because there is a *lot* of platforms that could be affected. Can you
> just make the change without all those? I really don't see anything wrong
> with it but I also can't guarantee that nothing will break with some random
> compiler/platform. I just can't tell from the diff how nested things might
> be.
> 
> If you could try that the CR would be a lot faster.
> 
> --greg.
> 
> 
> 
> Margot Miller wrote:
> > Modified by: [EMAIL PROTECTED],[EMAIL PROTECTED]
> > Reviewed by: NEEDED
> > Date: 10:06:05
> > Project:  Support for Solaris X86 
> > 
> > Synopsis:  
> > 
> > Adding full Solaris Sparc and X86 support in math64.h to fix
> > sporadic MulShift30 unreference symbol error.
> > 
> > Overview: 
> > 
> > This was reported in Bug 3533:
> > 
> > Running Solaris 10 (beta 72) on a Sun Blade 1500,
> > RealPlayer 10.0.2.619 dies while streaming audio from
> > 
> > <rtsp://real.advance.net:7071/encoder/frodo/frodo.rm>
> > after a few minutes with the message:
> > 
> > ld.so.1: /path/RealPlayer10/realplay.bin: fatal: relocation error: file
> > /path/RealPlayer10/common/clntcore.so: symbol MulShift30: referenced symbol 
not 
> > found
> > 
> > Also reported in Bug 4687:
> > 
> >>>>>> ld.so.1: realplay.bin: fatal: relocation error: file 
> >>>>>> /usr/local/RealPlayer/common/clntcore.so: symbol MulShift30: 
> >>>>>> referenced symbol not found
> >>>>>>
> >>>>>> at various times in the middle of a stream. It's not deterministic, 
> >>>>>> I can play the same stream again and not get it. This has occurred 
> >>>>>> from time to time with any of the realplay sparc downloads, most 
> >>>>>> recently I'm running 10.0.6.1219 RXEN10.
> > 
> > 
> > Built using:
> > 
> >  [0] Set BIF branch (realplayer_gtk_stable)
> >  [1] Set Target(s) (player_all)
> >  [2] Set Profile 
(/build1/buildingNOV/build/umakepf/helix-client-all-defines)
> > 
> > math64.h was modified before in cayenne branch and Head for Solaris
> > X86.  This fix for Neptune branch is similar. Now, Sparc and X86
> > Solaris will share the same block of code.
> > 
> > As a result, the fix for this problem is to:
> > 
> >   -  Use the HPUX block of code for Solaris X86 and Solaris
> >      SPARC by adding the correct defines for Solaris:
> >      
> >      #elif defined(_HPUX) || (defined (_SOLARIS) && !defined (__GNUC__)) 
> >    
> >   -  Delete the block of code that has similar functions
> >      that the HPUX block of code already has.
> >      
> >      The block of code being deleted was:
> >      
> >      #if (defined(__SVR4) && defined(__i386) && (defined(_NO_GNU_AS) ||
> >         !defined(__GNUC__)) )
> >      /* No 64bit, no asm provided in some other file..
> >      * need normal funcs for sun forte CC + 386
> >      * However... forte's inline assembly for MulShift32 is just as good
> >      * as the "hand tuned" gcc version, if you use
> >      *  cc -fast
> >      */
> >      ....
> >   
> >   -  Delete the sparc block of code; it was missing MulShift30.
> >   
> >   -  Use #if/#elif constructs
> >   
> > This should be very similar to what is in the HEAD and cayenne
> > now. Only difference should be that SPARC and X86 SOLARIS using same
> > block of code.
> >      
> > Files Added:
> > [File 1] - NONE
> > 
> > Files Modified:
> > [File 3] -  audio/fixptutil/pub/math64.h
> > 
> > Image Size and Heap Use impact (Client -Only):
> > <Description of image size and heaps size impact. >
> > 
> > Platforms and Profiles Affected:
> > Tested on X86 with helix-client-all-defines profile
> > 
> > Distribution Libraries Affected:
> > <List of distribution libraries affected>
> > 
> > Distribution library impact and planned action:
> > <Is an update required and if so when will it occur>
> > 
> > Platforms and Profiles Build Verified:
> > 
> > Platform - x86.
> > brion% uname -a
> > SunOS brion 5.10 Generic i86pc i386 i86pc
> > brion% 
> > Profile:helix-client-all-defines
> > 
> > Platforms and Profiles Functionality verified:
> > Same as above
> > 
> > Branch: <code branch(es) change is for>
> > 
> > Head, Neptune, Cayenne.
> > 
> > Copyright assignment: <MUST be one of the following statements >
> > 
> > 
> >    3.      My company SUN is bound by the terms
> >            of a commercial contribution agreement with RealNetworks,
> >            and I am authorized to contribute this code under said 
> > agreement. 
> > 
> >    
> > QA Instructions:
> > 
> > Full test suites run on an X86 and Sparc machines running Solaris 10.
> > 
> > 
> > 
> > 
> > ------------- End Forwarded Message -------------
> > 
> > 
> > 
> > 
> > ------------------------------------------------------------------------
> > 
> > _______________________________________________
> > Audio-dev mailing list
> > [email protected]
> > http://lists.helixcommunity.org/mailman/listinfo/audio-dev

Index: math64.h
===================================================================
RCS file: /cvsroot/audio/fixptutil/pub/math64.h,v
retrieving revision 1.18.8.4
diff -u -r1.18.8.4 math64.h
--- math64.h    25 Apr 2005 20:13:04 -0000      1.18.8.4
+++ math64.h    7 Dec 2005 05:05:49 -0000
@@ -205,88 +205,7 @@
 // Sun native compiler / Sparc
 
///////////////////////////////////////////////////////////////////////////////////////
 
-#if defined(__sparc)
 
-// the macros definitions come from an il file here.
-#define HAVE_PLATFORM_MACROS
-
-/* Compute a * b / c, using 64-bit intermediate result */
-signed int MulDiv64(signed int a, signed int b, signed int c) ;
-
-/* Compute (a * b) >> 31, using 64-bit intermediate result */
-signed int MulShift31(signed int a, signed int b) ;
-
-/* Compute (a * b) >> 32, using 64-bit intermediate result */
-signed int MulShift32(signed int a, signed int b) ;
-
-/* Compute (a * b) >> n, using 64-bit intermediate result */
-signed int MulShiftN(signed int a, signed int b, signed int n) ;
-
-#ifdef TIMING
-int _t1 ;
-int rdtsc() ;
-#define TICK() _t1 = rdtsc()
-#define TOCK(nsamples) (_t1 = rdtsc()-_t1 , printf("cycles = %4.1f\n", \
-  _t1 / (double)(nsamples)), _t1 )
-#endif
-
-
-#define HAVE_FASTABS
-static inline int FASTABS(int x) 
-{
-       int sign;
-
-       sign = x >> 31;
-       x ^= sign;
-       x -= sign;
-
-       return x;
-}
-
-
-#ifdef DEBUG
-#include <assert.h>
-#define ASSERT(x)  assert(x)
-#endif
-#endif // defined(__sparc)
-
-#if (defined(__SVR4) && defined(__i386) && (defined(_NO_GNU_AS) || 
!defined(__GNUC__)) )
-/* No 64bit, no asm provided in some other file..
- * need normal funcs for sun forte CC + 386 
- * However... forte's inline assembly for MulShift32 is just as good
- * as the "hand tuned" gcc version, if you use
- *  cc -fast
- */
-static inline int MulDiv64(int a, int b, int c)
-{
-       long long t = (long long)((long long)a * (long long)b) ;
-       return (int)(t / c) ;
-}
-/* Compute (a * b) >> 32, using 64-bit intermediate result */
-static inline int MulShift32(int a, int b)
-{
-       long long res ;
-       res = (long long)((long long)a * (long long)b);
-       return (res>>32);
-}
-
-/* Compute (a * b) >> 31, using 64-bit intermediate result */
-static inline int MulShift31(int a, int b)
-{
-       long long res ;
-       res = (long long)((long long)a * (long long)b);
-       return (res>>31);
-}
-
-/* Compute (a * b) >> 30, using 64-bit intermediate result */
-static inline int MulShift30(int a, int b)
-{
-       long long res ;
-       res = (long long)((long long)a * (long long)b);
-       return (res>>30);
-}
-
-#endif
 
 
///////////////////////////////////////////////////////////////////////////////////////
 // Codewarrior / PowerPC
@@ -766,7 +685,7 @@
 #define TOCK(nsamples) 1
 #endif
 
-#if defined(_HPUX)
+#if defined(_HPUX) || (defined(_SOLARIS) && !defined(__GNUC__))
 #define HAVE_PLATFORM_MACROS
 static __inline int MulDiv64(int a, int b, int c)
 {
_______________________________________________
Audio-dev mailing list
[email protected]
http://lists.helixcommunity.org/mailman/listinfo/audio-dev

Reply via email to