[lld] r184035 - [PECOFF] Handle scope of absolute atom correctly.
Rui Ueyama
ruiu at google.com
Fri Jun 14 22:04:07 PDT 2013
Author: ruiu
Date: Sat Jun 15 00:04:07 2013
New Revision: 184035
URL: http://llvm.org/viewvc/llvm-project?rev=184035&view=rev
Log:
[PECOFF] Handle scope of absolute atom correctly.
Added:
lld/trunk/test/pecoff/Inputs/static-data1.obj
lld/trunk/test/pecoff/Inputs/static-data2.obj
lld/trunk/test/pecoff/Inputs/static-main.obj
lld/trunk/test/pecoff/multi.test
Modified:
lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
Modified: lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp?rev=184035&r1=184034&r2=184035&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp (original)
+++ lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp Sat Jun 15 00:04:07 2013
@@ -64,10 +64,10 @@ private:
class COFFAbsoluteAtom : public AbsoluteAtom {
public:
- COFFAbsoluteAtom(const File &F, llvm::StringRef N, uint64_t V)
+ COFFAbsoluteAtom(const File &F, llvm::StringRef N, const coff_symbol *S)
: OwningFile(F)
, Name(N)
- , Value(V)
+ , Symbol(S)
{}
virtual const class File &file() const {
@@ -75,6 +75,8 @@ public:
}
virtual Scope scope() const {
+ if (Symbol->StorageClass == llvm::COFF::IMAGE_SYM_CLASS_STATIC)
+ return scopeTranslationUnit;
return scopeGlobal;
}
@@ -83,13 +85,13 @@ public:
}
virtual uint64_t value() const {
- return Value;
+ return Symbol->Value;
}
private:
const File &OwningFile;
llvm::StringRef Name;
- uint64_t Value;
+ const coff_symbol *Symbol;
};
class COFFUndefinedAtom : public UndefinedAtom {
@@ -341,7 +343,7 @@ private:
// Create an absolute atom.
if (SectionIndex == llvm::COFF::IMAGE_SYM_ABSOLUTE) {
auto *atom = new (AtomStorage.Allocate<COFFAbsoluteAtom>())
- COFFAbsoluteAtom(*this, Name, Symb->Value);
+ COFFAbsoluteAtom(*this, Name, Symb);
if (!Name.empty())
symbolToAtom[Name] = atom;
absoluteAtoms.push_back(atom);
Added: lld/trunk/test/pecoff/Inputs/static-data1.obj
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/Inputs/static-data1.obj?rev=184035&view=auto
==============================================================================
Binary files lld/trunk/test/pecoff/Inputs/static-data1.obj (added) and lld/trunk/test/pecoff/Inputs/static-data1.obj Sat Jun 15 00:04:07 2013 differ
Added: lld/trunk/test/pecoff/Inputs/static-data2.obj
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/Inputs/static-data2.obj?rev=184035&view=auto
==============================================================================
Binary files lld/trunk/test/pecoff/Inputs/static-data2.obj (added) and lld/trunk/test/pecoff/Inputs/static-data2.obj Sat Jun 15 00:04:07 2013 differ
Added: lld/trunk/test/pecoff/Inputs/static-main.obj
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/Inputs/static-main.obj?rev=184035&view=auto
==============================================================================
Binary files lld/trunk/test/pecoff/Inputs/static-main.obj (added) and lld/trunk/test/pecoff/Inputs/static-main.obj Sat Jun 15 00:04:07 2013 differ
Added: lld/trunk/test/pecoff/multi.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/multi.test?rev=184035&view=auto
==============================================================================
--- lld/trunk/test/pecoff/multi.test (added)
+++ lld/trunk/test/pecoff/multi.test Sat Jun 15 00:04:07 2013
@@ -0,0 +1,12 @@
+# Verify that lld can handle multiple input files.
+#
+# RUN: lld -flavor link -out %t1 -subsystem console \
+# RUN: -- %p/Inputs/static-main.obj %p/Inputs/static-data1.obj \
+# RUN: %p/Inputs/static-data2.obj \
+# RUN: && llvm-objdump -d %t1 | FileCheck %s
+
+CHECK: Disassembly of section .text:
+CHECK: .text:
+CHECK: 1000: a1 00 00 00 00
+CHECK: 1005: 03 05 00 00 00 00
+CHECK: 100b: c3
More information about the llvm-commits
mailing list