if (wasInserted || isa<Undefined>(s) || s->isLazy())
replaceSymbol<DefinedAbsolute>(s, n, sym);
else if (auto *da = dyn_cast<DefinedAbsolute>(s)) {
- if (!da->isEqual(sym))
+ if (da->getVA() != sym.getValue())
reportDuplicate(s, nullptr);
} else if (!isa<DefinedCOFF>(s))
reportDuplicate(s, nullptr);
if (wasInserted || isa<Undefined>(s) || s->isLazy())
replaceSymbol<DefinedAbsolute>(s, n, va);
else if (auto *da = dyn_cast<DefinedAbsolute>(s)) {
- if (!da->isEqual(va))
+ if (da->getVA() != va)
reportDuplicate(s, nullptr);
} else if (!isa<DefinedCOFF>(s))
reportDuplicate(s, nullptr);
uint64_t getRVA() { return va - config->imageBase; }
void setVA(uint64_t v) { va = v; }
-
- bool isEqual(COFFSymbolRef s) const {
- return va == s.getValue();
- }
-
- bool isEqual(uint64_t otherVa) const {
- return va == otherVa;
- }
+ uint64_t getVA() const { return va; }
// Section index relocations against absolute symbols resolve to
// this 16 bit number, and it is the largest valid section index
// RUN: llvm-mc -triple x86_64-windows-msvc -filetype obj -o %t.obj %s
// RUN: echo -e ".globl myabsolute\nmyabsolute = 0" > %t.dupl.s
// RUN: llvm-mc -triple x86_64-windows-msvc -filetype obj -o %t.dupl.obj %t.dupl.s
-// RUN: lld-link /out:%t.exe %t.obj %t.dupl.obj -subsystem:console -entry:entry 2>&1 | FileCheck --allow-empty %s
+// RUN: lld-link /out:%t.exe %t.obj %t.dupl.obj -subsystem:console -entry:entry 2>&1 | count 0
-// CHECK-NOT: error: duplicate symbol: myabsolute
+// This shouldn't produce any duplicate symbol error.
.globl myabsolute
myabsolute = 0