diff options
-rw-r--r-- | lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp | 7 | ||||
-rw-r--r-- | lld/test/pecoff/alternatename.test | 10 |
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 |