Compiling winelib on SPARC

David Lee Lambert lamber45 at egr.msu.edu
Wed Dec 5 13:56:56 CST 2001


On Tue, 4 Dec 2001, David Lee Lambert wrote:

> .configure   .. works fine
> make depend  .. works fine
> make         .. chokes as follows:

Changes I did to try to get it to compile...

(1) dlls/ntdll/Makefile:
(3) dlls/kernel/Makefile:
etc..
[I ended up making a patch to do this and running it on dlls/*/Makefile
with a one-line bash script.

The problem is that we have GNU's 'as' as /opt/bin/as,  but the installed
version of gcc doesn't call it for some reason.]

(near line 197)

.c.o:
	/opt/bin/gcc -S $(ALLCFLAGS) -o /tmp/temp-c.s $<
	/opt/bin/as -o $*.o /tmp/temp-c.s

(2) relay32/snoop.c: [function definition missing an argument]

(near line 390)

#else	/* !__i386__ */
void SNOOP_RegisterDLL(HMODULE hmod,LPCSTR name,
		       DWORD ordbase,DWORD nrofordinals) {
	if (!TRACE_ON(snoop)) return;
	FIXME("snooping works only on i386 for now.\n");
}

(4) dlls/msvcrt/math.c

complaints in functions 'div' and 'ldiv', fixed as follows:

unsigned int _controlfp(unsigned int newval, unsigned int mask)
{
#ifdef __i386__
  return _control87( newval, mask & ~_EM_DENORMAL );
#else
  FIXME("does nothing on SPARC");
  return 0;
#endif
}

#else
/*********************************************************************
 *		div (MSVCRT.@)
 * VERSION
 *	[!i386] Non-x86 can't run win32 apps so we don't need binary
compatibility
 */
MSVCRT_div_t MSVCRT_div(int num, int denom)
{
  div_t z;
  MSVCRT_div_t Z;
  z = div(num,denom);
  Z.quot = z.quot;
  Z.rem =  z.rem;
  return Z;
}
#endif /* ifdef __i386__ */

...

#else
/*********************************************************************
 *		ldiv (MSVCRT.@)
 * VERSION
 *	[!i386] Non-x86 can't run win32 apps so we don't need binary
compatibility
 */
MSVCRT_ldiv_t MSVCRT_ldiv(long num, long denom)
{
  ldiv_t z;
  MSVCRT_ldiv_t Z;
  z = ldiv(num,denom);
  Z.quot = z.quot;
  Z.rem =  z.rem;
  return Z;
}
#endif /* ifdef __i386__ */

(5) (not fixed yet) and,  finally,  an alignment error:

/opt/bin/as -o imagehlp.spec.o /tmp/temp-c.s
gcc -Wl,-G -Wl,-h,libimagehlp.so -Wl,-B,symbolic imagehlp.spec.o  access.o
debug.o imagehlp_main.o integrity.o internal.o modify.o symbol.o      -o
libimagehlp.so -L../../dlls  -L../../library -lwine  -lncurses -lsocket
-lnsl -lm  -ldl
Undefined                       first referenced
 symbol                             in file
main
/opt/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/crt1.o
ld: warning: Symbol referencing errors
ld: fatal: relocation error: R_SPARC_RELATIVE: file access.o: symbol
<unknown>: offset 0x1dcbe is non-aligned
ld: fatal: relocation error: R_SPARC_RELATIVE: file access.o: symbol
<unknown>: offset 0x1dcc2 is non-aligned
collect2: ld returned 1 exit status
make[1]: *** [libimagehlp.so] Error 1
make[1]: Leaving directory `/tmp/wine-20011108/dlls/imagehlp'
make: *** [imagehlp/libimagehlp.so] Error 2
<70 [lamber45 at mulder]:/tmp/wine-20011108/dlls >

I'd say that Winelib isn't ready to use for porting Windows to the SPARC
yet,  but the fact that 99% of it compiles OK is impressive...

--
DLL








More information about the wine-users mailing list