diff options
Diffstat (limited to 'lld/ELF/SyntheticSections.cpp')
| -rw-r--r-- | lld/ELF/SyntheticSections.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lld/ELF/SyntheticSections.cpp b/lld/ELF/SyntheticSections.cpp index 19b08152ae08..ea9b87952cd8 100644 --- a/lld/ELF/SyntheticSections.cpp +++ b/lld/ELF/SyntheticSections.cpp @@ -3784,9 +3784,10 @@ void VersionTableSection::writeTo(uint8_t *buf) { buf += 2; for (const SymbolTableEntry &s : getPartition(ctx).dynSymTab->getSymbols()) { // For an unextracted lazy symbol (undefined weak), it must have been - // converted to Undefined and have VER_NDX_GLOBAL version here. + // converted to Undefined. assert(!s.sym->isLazy()); - write16(ctx, buf, s.sym->versionId); + // Undefined symbols should use index 0 when unversioned. + write16(ctx, buf, s.sym->isUndefined() ? 0 : s.sym->versionId); buf += 2; } } |
