Index: lld/trunk/ELF/InputFiles.cpp =================================================================== --- lld/trunk/ELF/InputFiles.cpp +++ lld/trunk/ELF/InputFiles.cpp @@ -316,8 +316,7 @@ InputSectionBase *Sec = getSection(*Sym); if (Binding == STB_LOCAL) { if (Sym->st_shndx == SHN_UNDEF) - return new (Alloc) - Undefined(Sym->st_name, Sym->st_other, Sym->getType(), Sym->st_size); + return new (Alloc) Undefined(Sym->st_name, Sym->st_other, Sym->getType()); return new (Alloc) DefinedRegular(*Sym, Sec); } @@ -325,9 +324,8 @@ switch (Sym->st_shndx) { case SHN_UNDEF: - return new (Alloc) - Undefined(Name, Binding, Sym->st_other, Sym->getType(), Sym->st_size, - /*IsBitcode*/ false); + return new (Alloc) Undefined(Name, Binding, Sym->st_other, Sym->getType(), + /*IsBitcode*/ false); case SHN_COMMON: return new (Alloc) DefinedCommon(Name, Sym->st_size, Sym->st_value, Binding, Sym->st_other, Sym->getType()); @@ -340,9 +338,8 @@ case STB_WEAK: case STB_GNU_UNIQUE: if (Sec == &InputSection::Discarded) - return new (Alloc) - Undefined(Name, Binding, Sym->st_other, Sym->getType(), Sym->st_size, - /*IsBitcode*/ false); + return new (Alloc) Undefined(Name, Binding, Sym->st_other, Sym->getType(), + /*IsBitcode*/ false); return new (Alloc) DefinedRegular(Name, *Sym, Sec); } } @@ -548,14 +545,14 @@ if (const Comdat *C = GV->getComdat()) if (!KeptComdats.count(C)) { Body = new (Alloc) Undefined(NameRef, Binding, Visibility, /*Type*/ 0, - /*Size*/ 0, /*IsBitcode*/ true); + /*IsBitcode*/ true); return Body; } const Module &M = Obj.getModule(); if (Flags & BasicSymbolRef::SF_Undefined) return new (Alloc) Undefined(NameRef, Binding, Visibility, /*Type*/ 0, - /*Size*/ 0, /*IsBitcode*/ true); + /*IsBitcode*/ true); if (Flags & BasicSymbolRef::SF_Common) { // FIXME: Set SF_Common flag correctly for module asm symbols, and expose // size and alignment. Index: lld/trunk/ELF/SymbolTable.cpp =================================================================== --- lld/trunk/ELF/SymbolTable.cpp +++ lld/trunk/ELF/SymbolTable.cpp @@ -150,9 +150,8 @@ // Add an undefined symbol. template SymbolBody *SymbolTable::addUndefined(StringRef Name) { - auto *Sym = new (Alloc) - Undefined(Name, STB_GLOBAL, STV_DEFAULT, /*Type*/ 0, /*Size*/ 0, - /*IsBitcode*/ false); + auto *Sym = new (Alloc) Undefined(Name, STB_GLOBAL, STV_DEFAULT, /*Type*/ 0, + /*IsBitcode*/ false); resolve(Sym); return Sym; } Index: lld/trunk/ELF/Symbols.h =================================================================== --- lld/trunk/ELF/Symbols.h +++ lld/trunk/ELF/Symbols.h @@ -312,10 +312,8 @@ class Undefined : public SymbolBody { public: Undefined(StringRef Name, uint8_t Binding, uint8_t StOther, uint8_t Type, - uint64_t Size, bool IsBitcode); - Undefined(uint32_t NameOffset, uint8_t StOther, uint8_t Type, uint64_t Size); - - uint64_t Size; + bool IsBitcode); + Undefined(uint32_t NameOffset, uint8_t StOther, uint8_t Type); static bool classof(const SymbolBody *S) { return S->kind() == UndefinedKind; Index: lld/trunk/ELF/Symbols.cpp =================================================================== --- lld/trunk/ELF/Symbols.cpp +++ lld/trunk/ELF/Symbols.cpp @@ -174,8 +174,6 @@ return DR->Size; if (const auto *S = dyn_cast>(this)) return S->Sym.st_size; - if (const auto *U = dyn_cast(this)) - return U->Size; return 0; } @@ -232,16 +230,13 @@ } Undefined::Undefined(StringRef Name, uint8_t Binding, uint8_t StOther, - uint8_t Type, uint64_t Size, bool IsBitcode) - : SymbolBody(SymbolBody::UndefinedKind, Name, Binding, StOther, Type), - Size(Size) { + uint8_t Type, bool IsBitcode) + : SymbolBody(SymbolBody::UndefinedKind, Name, Binding, StOther, Type) { this->IsUndefinedBitcode = IsBitcode; } -Undefined::Undefined(uint32_t NameOffset, uint8_t StOther, uint8_t Type, - uint64_t Size) - : SymbolBody(SymbolBody::UndefinedKind, NameOffset, StOther, Type), - Size(Size) { +Undefined::Undefined(uint32_t NameOffset, uint8_t StOther, uint8_t Type) + : SymbolBody(SymbolBody::UndefinedKind, NameOffset, StOther, Type) { this->IsUndefinedBitcode = false; } Index: lld/trunk/test/ELF/resolution.s =================================================================== --- lld/trunk/test/ELF/resolution.s +++ lld/trunk/test/ELF/resolution.s @@ -309,7 +309,7 @@ // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: UndefWeak_with_UndefWeak // CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 15 +// CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Weak // CHECK-NEXT: Type: None // CHECK-NEXT: Other: 0