[llvm-commits] [lld] Patch for ReaderELF and Symbol Resolution

Shankar Easwaran shankare at codeaurora.org
Thu Dec 20 13:53:19 PST 2012


Hi,

This is the first set of diff's for the changes to lld Helloworld bringup.

The  changes are attached as part of this mail.

Includes :

1) A test case
2) Diff for ReaderELF and SymbolTable changes
3) Modified test for phdr

Thanks

Shankar Easwaran

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation

-------------- next part --------------
Index: test/absolute-muldef.objtxt
===================================================================
--- test/absolute-muldef.objtxt	(revision 0)
+++ test/absolute-muldef.objtxt	(revision 0)
@@ -0,0 +1,22 @@
+# RUN: lld-core %s | FileCheck %s
+
+#
+# Test that multiple definitions of the same absolute symbol are handled
+#
+
+---
+atoms:
+    - name:              putchar
+      definition:        absolute
+      value:             0xFFFF0040
+      
+    - name:              putchar
+      definition:        absolute
+      value:             0xFFFF0080
+
+...
+
+# CHECK:       name:         putchar
+# CHECK:       definition:   absolute
+# CHECK:       value:        0xffff0040
+# CHECK:       ...
Index: test/elf/phdr.objtxt
===================================================================
--- test/elf/phdr.objtxt	(revision 170767)
+++ test/elf/phdr.objtxt	(working copy)
@@ -2,16 +2,17 @@
 
 ED: # Program Header 0
 ED: 'p_flags', 0x00000005
-ED: 'p_filesz', 0x0000002a
+ED: 'p_filesz', 0x00000025
 ED: # Program Header 1
 ED: 'p_flags', 0x00000004
-ED: 'p_vaddr', 0x004010e0
+ED: 'p_vaddr', 0x004010dc
 ED: 'p_memsz', 0x00000078
 ED: # Program Header 2
 ED: 'p_flags', 0x00000006
-ED: 'p_vaddr', 0x00402158
-ED: 'p_memsz', 0x000000ac
+ED: 'p_vaddr', 0x00402154
+ED: 'p_memsz', 0x000000b0
 ED: # Program Header 3
 ED: 'p_flags', 0x00000006
 ED: 'p_vaddr', 0x00404000
 ED: 'p_memsz', 0x00000005
+
Index: lib/ReaderWriter/ELF/ReaderELF.cpp
===================================================================
--- lib/ReaderWriter/ELF/ReaderELF.cpp	(revision 170767)
+++ lib/ReaderWriter/ELF/ReaderELF.cpp	(working copy)
@@ -317,7 +317,8 @@
         || _symbol->st_shndx == llvm::ELF::SHN_COMMON) {
       return Alignment(llvm::Log2_64(_symbol->st_value));
     }
-    return Alignment(llvm::Log2_64(_section->sh_addralign));
+    return Alignment(llvm::Log2_64(_section->sh_addralign),
+                     _symbol->st_value % _section->sh_addralign);
   }
 
   // Do we have a choice for ELF?  All symbols live in explicit sections.
Index: lib/Core/SymbolTable.cpp
===================================================================
--- lib/Core/SymbolTable.cpp	(revision 170767)
+++ lib/Core/SymbolTable.cpp	(working copy)
@@ -73,7 +73,7 @@
   },
   {
     // first is absolute
-    NCR_Error,  NCR_Error,  NCR_First, NCR_First
+    NCR_Error,  NCR_First,  NCR_First, NCR_First
   },
   {
     // first is undef


More information about the llvm-commits mailing list