Add support for weak symbols.
llvm-svn: 244636
diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp
index 9dcd2fa..3a11967 100644
--- a/lld/ELF/InputFiles.cpp
+++ b/lld/ELF/InputFiles.cpp
@@ -75,9 +75,17 @@
ErrorOr<StringRef> NameOrErr = Sym->getName(StringTable);
error(NameOrErr.getError());
StringRef Name = *NameOrErr;
- if (Sym->isUndefined())
- return new (Alloc) Undefined(Name);
- return new (Alloc) DefinedRegular<ELFT>(Name);
+ switch (Sym->getBinding()) {
+ default:
+ error("unexpected binding");
+ case STB_GLOBAL:
+ if (Sym->isUndefined())
+ return new (Alloc) Undefined(Name);
+ return new (Alloc) DefinedRegular<ELFT>(Name);
+ case STB_WEAK:
+ // FIXME: add support for weak undefined
+ return new (Alloc) DefinedWeak<ELFT>(Name);
+ }
}
namespace lld {