[LLVMdev] Re: questions about LLVM

Andrew Lenharth alenhar2 at uiuc.edu
Wed Nov 17 19:07:40 PST 2004


On Wed, 2004-11-17 at 19:41, John T. Criswell wrote:
> In theory, the only difficult part about getting a C library to work is 
> the interface to system calls.  In a traditional libc, assembly code is 
> used to provide that functionality and is part of the C library source 
> code.  Since LLVM cannot use assembly code, there are two options:
> 
> o Add an LLVM syscall intrinsic
> o Write a small asm library that wraps the system calls

Or both.  Writing the syscall intrinsic is easy, especially if it simply
links into a native asm library to do the actuall syscall.  Not that it
is hard to do the codegen for the intrinsic (well, x86 linux is tricky
due to the change in calling conventions at 6 args syscalls).  Somewhere
I have code that kind of works for x86.

> In practice, getting libc compiled with LLVM is painful because C 
> libraries tend to have terrible build environments.  For example, glibc 
> (used on Linux) assumes that you're compiling for ELF or a.out format 
> and uses every GCC feature that could possibly exist.  Other C libraries 
> have had strange configuration systems, or make assumptions about the 
> operating system, etc.

Also, at least with glibc, it makes uses of several C99 style variable
length array at the end of stucts being statically initialized syntax
that isn't supported by the current cfrontend.

I've tried some other c libraries, and they were smaller than glibc, but
they relied much more on assembly tricks.

So the summary from last time I tried this, before I gave up for a
while, is that glibc uses some C99 that isn't supported, is big and
takes a while to figure out how best to convince it not to think it is
compiling with gcc and asm, and other c libraries are probably even
harder.

Andrew Lenharth
http://www.lenharth.org/~andrewl/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20041117/b0a6224a/attachment.sig>


More information about the llvm-dev mailing list