[LLVMdev] Patches for Solaris on x86 solaris
Evan Cheng
evan.cheng at apple.com
Fri May 30 10:02:00 PDT 2008
Looks good. I'll commit the patches for you.
Thanks!
Evan
On May 29, 2008, at 10:17 PM, Nathan Keynes wrote:
> Hi all,
>
> As mentioned earlier, we've been working on getting LLVM to build on
> Solaris on x86/x86-64. The changes required turned out to be fairly
> minor, so it's perhaps a bit of a stretch to call it a "port". There
> were two main issues that we ran into here:
>
> 1. The Solaris x86 ABI by default defines the x86 registers CS,
> DS, ES, etc in the system headers, which clashes with their use in
> LLVM. It is possible to exclude these defines with -
> D_POSIX_C_SOURCE=199506L -U_XOPEN_SOURCE, which will compile LLVM
> successfully, but unfortunately llvm-gcc-4.2 will not build with
> these flags.
>
> Possible solutions:
> a. Add #undefs for all register names to the relevant header
> files
> b. Rename all clashing variable names in LLVM (some 950-odd
> lines)
> c. Rename all clashing variable names in LLVM include files,
> and compile LLVM only with the above flags
>
> The patches below implement the last solution above, as it's the
> smallest change - if there's a preference for a different approach
> I'm happy to modify accordingly. The global rename is perhaps the
> better solution long-term, but it would require changes to the
> current naming scheme. (eg CallSite CS, FileStream FS)
>
> 2. The output from Solaris nm is just sufficiently different from
> GNU nm to break GenLibDeps.pl - modified the latter to be slightly
> more permissive. An alternative fix would be to ensure that a GNU nm
> is located by configure, but this seems to be the simpler fix for now.
>
> Outstanding issues:
> 1. make check fails to run on default *-*-solaris* installations,
> primarily due to dependencies on GNU tools (grep, sh, etc).
> 2. llvm-gcc-4.2 fails to generate valid object code on Solaris
> (but does generate perfectly normal LLVM output with --emit-llvm).
> It also requires quite a complex configure line[0], but this looks
> to be an upstream (GCC 4.2) issue.
>
> Attached patches against svn trunk:
> llvm-solaris-1.patch - Add macro definitions to CXX.Flags for
> SunOS only
> llvm-solaris-2.patch - Lowercase all instances of CS/DS/ES/FS in
> llvm include files
> llvm-solaris-3.patch - Modify GenLibDeps.pl to accept Solaris nm
> output
> llvm-gcc-4.2-solaris.patch - Lowercase all instances of CS/DS/ES/
> FS in llvm-gcc-4.2 source
>
> Built successfully on i386-pc-solaris2.10 (32- & 64-bit), i386-pc-
> solaris2.11 (32- & 64-bit), sparc-sun-solaris2.10[1], and i686-apple-
> darwin9.
>
> Cheers,
> Nathan
>
> <llvm-solaris-1.patch><llvm-solaris-2.patch><llvm-solaris-3.patch>
> <llvm-gcc-4.2-solaris.patch>
>
>
> [0] e.g. ../llvm-gcc-4.2/configure --enable-llvm=${LLVMTARGET} --
> disable-shared --with-gnu-as --with-as=/usr/sfw/bin/gas --without-
> gnu-ld --with-ld=/usr/ccs/bin/ld --enable-languages=c,c++
> [1] There seems to be an unrelated issue preventing llvm-gcc-4.2
> compilation on SPARC, but LLVM itself builds without problems.
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
More information about the llvm-dev
mailing list