[PATCH] D72252: [LLD] [COFF] Fix post-commit suggestions for absolute symbol equality

Martin Storsjö via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 6 03:57:49 PST 2020


mstorsjo created this revision.
mstorsjo added reviewers: ruiu, MaskRay, rnk.
Herald added a project: LLVM.

Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D72252

Files:
  lld/COFF/SymbolTable.cpp
  lld/COFF/Symbols.h
  lld/test/COFF/duplicate-absolute-same.s


Index: lld/test/COFF/duplicate-absolute-same.s
===================================================================
--- lld/test/COFF/duplicate-absolute-same.s
+++ lld/test/COFF/duplicate-absolute-same.s
@@ -2,9 +2,9 @@
 // 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
Index: lld/COFF/Symbols.h
===================================================================
--- lld/COFF/Symbols.h
+++ lld/COFF/Symbols.h
@@ -228,14 +228,7 @@
 
   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
Index: lld/COFF/SymbolTable.cpp
===================================================================
--- lld/COFF/SymbolTable.cpp
+++ lld/COFF/SymbolTable.cpp
@@ -592,7 +592,7 @@
   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);
@@ -607,7 +607,7 @@
   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);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D72252.236323.patch
Type: text/x-patch
Size: 2238 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200106/8b045e2a/attachment.bin>


More information about the llvm-commits mailing list