[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