<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    I'd like to announce the LLVMLinux project. This project aims to
    fully build the Linux kernel using Clang/LLVM on the various
    architectures supported by the Linux kernel. The project
    consolidates the work of the lll-project, the PAX team, and Mark
    Charlebois' work on the ARM kernel.<br>
    <br>
       
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <a href="http://llvm.linuxfoundation.org/">http://llvm.linuxfoundation.org</a><br>
    <br>
    The hope is that this project will help reduce duplicate work, as
    well as concentrate, and accelerate efforts around this subject
    matter in order to allow Linux Kernel developers, and system
    integrators to have the choice of a Clang compiled Linux kernel. The
    goal is for this project to be a testing/proving ground for these
    updates and to get patches that make this possible upstream to their
    respective projects (Clang/LLVM and the Linux Kernel).<br>
    <br>
    Currently the work is centred around the ARM, x86 and x86_64
    architectures but contributions to support other architectures are
    welcome. Patches accepted!<br>
    <br>
    The Linux Kernel has some issues with being compiled with Clang;
    these are issues which the LLVMLinux project is attempting to fix in
    the Linux Kernel code base and pushed upstream:<br>
    <br>
    * The use of variable length arrays in structs (VLAIS)<br>
    * Kbuild support for Clang (currently Kbuild is gcc specific)<br>
    * Use of explicit register variables<br>
    * Extra __refdata annotations needed to overcome segment reference
    errors<br>
    * EXPORT_SYMBOL of inline functions<br>
    <br>
    However, there are some things in Clang/LLVM which also need to be
    addressed in order to make a Clang compiled Linux Kernel possible.
    Amongst other things these are:<br>
    <br>
    * The Linux kernel currently uses compiler flags which are
    unsupported in Clang:<br>
      * -fdelete-null-pointer-checks    <br>
      * –fno-inline-functions-called-once<br>
      * –Wno-unused-but-set-variable vs –Wno-unused-variable (GCC 4.6)<br>
      * –mabi=aapcs-linux (Bug 11326)<br>
    * Clang also reports errors for redefinitions of posix functions
    used in Linux kernel. It should be possible to suppress this.<br>
    <br>
    The LLVMLinux project is certainly following and hope to contribute
    to issues listed in the LLVM Meta bug 4068.<br>
    <br>
    But let me finish by thanking you all for the LLVM project and Clang
    toolchain. They are truly an awesome accomplishment.<br>
    <br>
    Behan<br>
    <pre class="moz-signature" cols="72">-- 
Behan Webster
<a class="moz-txt-link-abbreviated" href="mailto:behanw@converseincode.com">behanw@converseincode.com</a></pre>
  </body>
</html>