summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp7
-rw-r--r--lld/test/pecoff/alternatename.test10
2 files changed, 14 insertions, 3 deletions
diff --git a/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp b/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
index 353f52cc59a..0b829d745eb 100644
--- a/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
+++ b/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
@@ -88,7 +88,8 @@ public:
return _absoluteAtoms;
}
- void addDefinedAtom(const DefinedAtom *atom) {
+ void addDefinedAtom(AliasAtom *atom) {
+ atom->setOrdinal(_ordinal++);
_definedAtoms._atoms.push_back(atom);
}
@@ -1068,13 +1069,13 @@ private:
// Iterates over defined atoms and create alias atoms if needed.
void createAlternateNameAtoms(FileCOFF &file) const {
- std::vector<const DefinedAtom *> aliases;
+ std::vector<AliasAtom *> aliases;
for (const DefinedAtom *atom : file.defined()) {
auto it = _ctx.alternateNames().find(atom->name());
if (it != _ctx.alternateNames().end())
aliases.push_back(createAlias(file, it->second, atom));
}
- for (const DefinedAtom *alias : aliases) {
+ for (AliasAtom *alias : aliases) {
file.addDefinedAtom(alias);
}
}
diff --git a/lld/test/pecoff/alternatename.test b/lld/test/pecoff/alternatename.test
index ff6617ebdd6..56cd57de00a 100644
--- a/lld/test/pecoff/alternatename.test
+++ b/lld/test/pecoff/alternatename.test
@@ -10,6 +10,10 @@
#
# RUN: lld -flavor link /force /out:%t3.exe -- %t3.obj
# RUN: llvm-objdump -d %t3.exe | FileCheck -check-prefix=CHECK3 %s
+#
+# RUN: lld -flavor link /force /out:%t4.exe /alternatename:_main=_foo \
+# RUN: /alternatename:_xyz=_foo -- %t1.obj
+# RUN: llvm-objdump -d %t4.exe | FileCheck -check-prefix=CHECK4 %s
CHECK1: nop
CHECK1-NEXT: nop
@@ -28,3 +32,9 @@ CHECK3-NEXT: nop
CHECK3-NEXT: nop
CHECK3-NEXT: nop
CHECK3-NOT: int3
+
+CHECK4: nop
+CHECK4-NEXT: nop
+CHECK4-NEXT: nop
+CHECK4-NEXT: nop
+CHECK4-NOT: int3
OpenPOWER on IntegriCloud