[llvm-commits] [lld] r167394 - in /lld/trunk: lib/Core/Resolver.cpp lib/ReaderWriter/YAML/ReaderYAML.cpp test/absolute-local.objtxt
Hemant Kulkarni
khemant at codeaurora.org
Mon Nov 5 11:13:55 PST 2012
Author: khemant
Date: Mon Nov 5 13:13:54 2012
New Revision: 167394
URL: http://llvm.org/viewvc/llvm-project?rev=167394&view=rev
Log:
Add absolute symbol scope recognition in lld/Core
Added:
lld/trunk/test/absolute-local.objtxt
Modified:
lld/trunk/lib/Core/Resolver.cpp
lld/trunk/lib/ReaderWriter/YAML/ReaderYAML.cpp
Modified: lld/trunk/lib/Core/Resolver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Core/Resolver.cpp?rev=167394&r1=167393&r2=167394&view=diff
==============================================================================
--- lld/trunk/lib/Core/Resolver.cpp (original)
+++ lld/trunk/lib/Core/Resolver.cpp Mon Nov 5 13:13:54 2012
@@ -151,7 +151,9 @@
_atoms.push_back(&atom);
// tell symbol table
- _symbolTable.add(atom);
+ if (atom.scope() != Atom::scopeTranslationUnit) {
+ _symbolTable.add(atom);
+ }
}
Modified: lld/trunk/lib/ReaderWriter/YAML/ReaderYAML.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/YAML/ReaderYAML.cpp?rev=167394&r1=167393&r2=167394&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/YAML/ReaderYAML.cpp (original)
+++ lld/trunk/lib/ReaderWriter/YAML/ReaderYAML.cpp Mon Nov 5 13:13:54 2012
@@ -419,10 +419,11 @@
///
class YAMLAbsoluteAtom : public AbsoluteAtom {
public:
- YAMLAbsoluteAtom(YAMLFile &f, int32_t, StringRef name, uint64_t v)
+ YAMLAbsoluteAtom(YAMLFile &f, int32_t, StringRef name, uint64_t v, Atom::Scope scope)
: _file(f)
, _name(name)
- , _value(v) {
+ , _value(v)
+ , _scope(scope){
}
virtual const class File &file() const {
@@ -430,7 +431,7 @@
}
virtual Scope scope() const {
- return scopeGlobal;
+ return _scope;
}
virtual StringRef name() const {
@@ -445,6 +446,7 @@
YAMLFile &_file;
StringRef _name;
uint64_t _value;
+ Atom::Scope _scope;
};
@@ -779,7 +781,8 @@
+ "' has attributes only allowed on shared library atoms");
_error = make_error_code(yaml_reader_error::illegal_value);
}
- AbsoluteAtom *a = new YAMLAbsoluteAtom(*_file, _ordinal, _name, _value);
+ AbsoluteAtom *a = new YAMLAbsoluteAtom(*_file, _ordinal, _name, _value,
+ _scope);
_file->addAbsoluteAtom(a);
}
@@ -939,7 +942,6 @@
_stream->printError(node, "Invalid value for 'scope:'");
_error = make_error_code(yaml_reader_error::illegal_value);
}
- _hasDefinedAtomAttributes = true;
}
void YAMLState::parseAtomDefinition(ScalarNode *node) {
Added: lld/trunk/test/absolute-local.objtxt
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/absolute-local.objtxt?rev=167394&view=auto
==============================================================================
--- lld/trunk/test/absolute-local.objtxt (added)
+++ lld/trunk/test/absolute-local.objtxt Mon Nov 5 13:13:54 2012
@@ -0,0 +1,26 @@
+# RUN: lld-core %s | FileCheck %s
+
+#
+# Test that absolute symbols with local scope do not cause name conflict
+#
+---
+atoms:
+ - name: putchar
+ definition: absolute
+ value: 0xFFFF0040
+ scope: static
+
+ - name: putchar
+ definition: absolute
+ value: 0xFFFF0040
+ scope: static
+...
+
+# CHECK: ---
+# CHECK: - name: putchar
+# CHECK: definition: absolute
+# CHECK: value: 0xffff0040
+# CHECK: - name: putchar
+# CHECK: definition: absolute
+# CHECK: value: 0xffff0040
+# CHECK: ...
More information about the llvm-commits
mailing list