<p dir="ltr">Awesome!</p>
<div class="gmail_quote">On Jan 7, 2013 3:02 AM, "Michael J. Spencer" <<a href="mailto:bigcheesegs@gmail.com">bigcheesegs@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Author: mspencer<br>
Date: Mon Jan  7 02:00:42 2013<br>
New Revision: 171711<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=171711&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=171711&view=rev</a><br>
Log:<br>
[ELF] Properly handle constant data.<br>
<br>
With this hello world works with dietlibc on x86-64 Linux.<br>
<br>
Added:<br>
    lld/trunk/test/elf/Inputs/constdata.x86-64<br>
    lld/trunk/test/elf/rodata.test<br>
Modified:<br>
    lld/trunk/lib/ReaderWriter/ELF/WriterELF.cpp<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/WriterELF.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/WriterELF.cpp?rev=171711&r1=171710&r2=171711&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/WriterELF.cpp?rev=171711&r1=171710&r2=171711&view=diff</a><br>

==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/WriterELF.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/WriterELF.cpp Mon Jan  7 02:00:42 2013<br>
@@ -273,6 +273,7 @@<br>
       switch(definedAtom->contentType()) {<br>
       case  DefinedAtom::typeCode:<br>
       case  DefinedAtom::typeData:<br>
+      case  DefinedAtom::typeConstant:<br>
         _atoms.push_back(std::make_pair(atom, std::make_pair(fOffset, 0)));<br>
         this->_fsize = fOffset + definedAtom->size();<br>
         this->_msize = mOffset + definedAtom->size();<br>
@@ -456,6 +457,8 @@<br>
     uint8_t *chunkBuffer = buffer->getBufferStart();<br>
     for (auto &ai : _atoms) {<br>
       const DefinedAtom *definedAtom = llvm::dyn_cast<DefinedAtom>(ai.first);<br>
+      if (definedAtom->contentType() == DefinedAtom::typeZeroFill)<br>
+        continue;<br>
       // Copy raw content of atom to file buffer.<br>
       ArrayRef<uint8_t> content = definedAtom->rawContent();<br>
       uint64_t contentSize = content.size();<br>
@@ -1067,6 +1070,7 @@<br>
         type = ELF::STT_FUNC;<br>
         break;<br>
       case  DefinedAtom::typeData:<br>
+      case  DefinedAtom::typeConstant:<br>
         symbol->st_value = addr;<br>
         type = ELF::STT_OBJECT;<br>
         break;<br>
<br>
Added: lld/trunk/test/elf/Inputs/constdata.x86-64<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Inputs/constdata.x86-64?rev=171711&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Inputs/constdata.x86-64?rev=171711&view=auto</a><br>

==============================================================================<br>
Binary files lld/trunk/test/elf/Inputs/constdata.x86-64 (added) and lld/trunk/test/elf/Inputs/constdata.x86-64 Mon Jan  7 02:00:42 2013 differ<br>
<br>
Added: lld/trunk/test/elf/rodata.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/rodata.test?rev=171711&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/rodata.test?rev=171711&view=auto</a><br>

==============================================================================<br>
--- lld/trunk/test/elf/rodata.test (added)<br>
+++ lld/trunk/test/elf/rodata.test Mon Jan  7 02:00:42 2013<br>
@@ -0,0 +1,4 @@<br>
+RUN: lld -flavor ld -target x86_64-linux -o %t %p/Inputs/constdata.x86-64<br>
+RUN: llvm-objdump -s %t | FileCheck %s<br>
+<br>
+CHECK: Hellooooooooo<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>