Updated copyright year
[ikiwiki.git] / docs / developer / clang / index.html
index 8857928..1c186f8 100644 (file)
@@ -1,14 +1,4 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title>Compiling DragonFly BSD using llvm/clang</title>
-
-
-
-</head>
-<body>
+<div>
 <style TYPE="text/css">
 <!-- 
 .programlisting {
        Padding: 5pt;
        Width: 90%;
 }
+
+table
+{
+       margin: 0.5em 0 0 0.5em;
+       border-collapse: collapse;
+}
+
+th, td
+{
+       padding: 0.25em 0.5em 0.25em 0.5em;
+       border: 1pt solid #ADB9CC;
+}
+
+tr {
+       Vertical-Align: top;
+}
+
+td {
+       Vertical-Align: top;
+}
+
+th, td.theader {
+       Background-Color: #f8f8f8;
+       Font-Weight: bold;
+       Vertical-Align: middle;
+       Padding: 5pt;
+}
+
 --> 
 </style>
-<div>
 <h1 align="center">Compiling DragonFly BSD using llvm/clang </h1>
+
+<!-- 
+<h2> THIS NEEDS AN UPDATE !!!! </h2>
+-->
+
 <h2>Overview</h2>
-This page tracks the progress on an effort to compile the DragonFly
-BSD system with llvm/clang instead of gcc.
+This page tracks the progress on an effort to compile DragonFly with llvm/clang instead of gcc.
  
  
 <h2>How?</h2>
  
+First, you'll need to build clang as described <a href="http://clang.llvm.org/get_started.html">here</a> (it builds out of the box on DragonFly).
+
 <pre class="programlisting">
-cd sys/config
-config GENERIC
-cd ../compile/GENERIC
-make depend
-env CC=clang COPTFLAGS=-O make MODULES_OVERRIDE=
-make install MODULES_OVERRIDE=
+cd /usr/src
+env WORLD_CCVER=clang make -DNO_GCC44 buildworld
+env WORLD_CCVER=clang make buildkernel KERNCONF=...
 </pre>
  
  
-<h2>HostInfo patch</h2>
-<strike>This <a href="http://leaf.dragonflybsd.org/~alexh/clang/clang_ccclib.patch">patch</a> enables a DragonFly BSD target for ccc with its own toolchain configuration.</strike>
-<h2>Notes</h2>
-llvm/clang bug <a href="http://llvm.org/bugs/show_bug.cgi?id=3812">#3812</a> was reopened as it seems to be an actual bug. The patch (atomic.patch) is only intended to be TEMPORARY and will kill gcc compatibility! I will update this as soon as a llvm/clang is fixed.
 <h2>Status (Kernel/pc32)</h2>
 <table>
 <tbody>
@@ -66,9 +77,7 @@ href="http://llvm.org/bugs/show_bug.cgi?id=3805"><strike>#3805</strike></a></td>
 llvm/clang bug <a href="http://llvm.org/bugs/show_bug.cgi?id=3812">#3812</a>. </td></tr>
  
 <tr><td >GENERIC </td><td >67025 </td><td >Boots, seems to work ok </td><td >network adapters removed from system</td></tr>
-<tr><td >GENERIC </td><td >67025 </td><td >Boots, survives stress test (buildworld)</td><td ><a href="http://leaf.dragonflybsd.org/~alexh/clang/atomic.patch">This patch</a> temporarily fixes the previous boot issue (see NOTES), no further problems so far.</td></tr>
-<tr><td >LINT </td><td >69545 </td><td >Doesn't compile </td><td >Filed llvm/clang bug <a 
-href="http://llvm.org/bugs/show_bug.cgi?id=4022">#4022</a>, also: clang doesn't know itry and another issue possibly related to the bug report</td></tr>
+<tr><td >GENERIC </td><td >67025 </td><td >Boots, survives stress test (buildworld)</td><td></td></tr>
 </tbody>
 </table>
  
@@ -79,59 +88,40 @@ href="http://llvm.org/bugs/show_bug.cgi?id=4022">#4022</a>, also: clang doesn't
 <tr><td >world </td><td >67025 </td><td >Doesn't compile </td><td>all</td><td > Filed llvm/clang bug <a 
 href="http://llvm.org/bugs/show_bug.cgi?id=3853"><strike>#3853</strike></a> </td></tr>
 <tr><td >world </td><td >69545 </td><td >Partially compiles </td><td >lib/libc</td><td >Issue with zero-size arrays (see note below), filed llvm/clang bug <a 
-href="http://llvm.org/bugs/show_bug.cgi?id=4020">#4020</a></td></tr>
+href="http://llvm.org/bugs/show_bug.cgi?id=4020">#4020</a> Edit: <a href="http://gitweb.dragonflybsd.org/dragonfly.git/commit/c4b81afc2638e5b2a17902644721fc0594615287">This commit</a> solves this issue</td></tr>
 </tbody>
 </table>
  
-<h4>Zero-size arrays</h4>
-While currently no decision has been made by the llvm/clang team on whether to support zero-size arrays or not, imho we should remove all its uses. Main problem currently occurs with genassym and related code (e.g. asmcontext.c (lib/libc)), as the output is not correct for clang due to some array sizes being 1 instead of 0. (see llvm/clang oddities - zero-size arrays)
  
 <h2>Related llvm/clang bug reports</h2>
 <table>
 <tbody>
 <tr><td><b></b>Bug #</td><td><b>Bug Description</b></td><td><b>Affects</b> </td><td><b>Status</b></td></tr>
 <tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=3805">3805</a></td><td >ccc ignores -x assembler-with-cpp</td><td>build of locore.s</td><td >Fixed</td></tr>
-<tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=3812">3812</a></td><td >assembler doesn't properly process clobber,input and output register lists</td><td>atomic_intr_cond_try in atomic.h</td><td >Open</td></tr>
+<tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=3812">3812</a></td><td >assembler doesn't properly process clobber,input and output register lists</td><td>atomic_intr_cond_try in atomic.h</td><td >Closed</td></tr>
 <tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=3822">3822</a></td><td >failed assertion with -O2</td><td>build of GENERIC with -O2</td><td >Fixed</td></tr>
 <tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=3853">3853</a></td><td >__thread keyword not supported</td><td>build of all userland base tools</td><td >Fixed</td></tr>
 <tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=4007">4007</a></td><td > clang doesn't know  -Werror-foo is the same as -Werror=foo</td><td>barrage of warnings during make depend</td><td >Fixed</td></tr>
-<tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=4020">4020</a></td><td >clang doesn't allow zero-sized arrays</td><td>build of lib/libc</td><td >New</td></tr>
-<tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=4022">4022</a></td><td >incorrect handling of __inline</td><td>build of LINT</td><td >New</td></tr>
+<tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=4020">4020</a></td><td >clang doesn't allow zero-sized arrays</td><td>build of lib/libc</td><td >Closed (won't fix)</td></tr>
+<tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=4022">4022</a></td><td >incorrect handling of __inline</td><td>build of LINT</td><td >Closed</td></tr>
 </tbody>
  
 </table>
  
- <h2>Current Log</h2>
-This is the log of the previous problem which already was solved with a temporary fix (see atomic.patch above) and which was reported to llvm/clang for a permanent fix.
-<pre class="programlisting">
-Page fault during DHCP configuration at boot:
-Fatal trap 12: page fault while in kernel mode
-Fault virtual address = 0x0
-fault code = supervisor write, page not present
-code segment = base 0x0
-Stopped at atomic_intr_cond_try+0xC: btsl $0x1f, 0(%eax)
-</pre>
-<br/>
-<div align="center">
-<img src="df_clang_1.jpg"/>
-</div>
+ <h2>atomic_intr_cond_try</h2>
+The long standing atomic_intr_cond_try issue has been solved in commit <a href="http://gitweb.dragonflybsd.org/dragonfly.git/commit/caae4d604234d17dff3080f60624a583965c2cf4">caae4d604234d17dff3080f60624a583965c2cf4</a>.
  
  
 <h2>llvm/clang oddities</h2>
 <h3>zero-size arrays</h3>
-llvm/clang doesn't support zero sized arrays and automatically generates arrays with a size 1 when a zero-size array is specified. This causes problems with current genassym and asmcontext.c (lib/libc) as these rely on zero-sized arrays.<br>
-This also makes it impossible to use make depend with clang for sys.
+llvm/clang doesn't support zero sized arrays and automatically generates arrays with a size 1 when a zero-size array is specified.
+
 <h3>__i386__ vs i386</h3>
 NOTE: This issue has been fixed in <a href="http://llvm.org/viewvc/llvm-project?view=rev&revision=67378">this commit</a>.
  
  
 </div>
-</body>
-</html>
+