mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-27 14:24:40 +00:00
Change how symbol sizes are handled in lib/Object.
COFF and MachO only define symbol sizes for common symbols. Reflect that in the class hierarchy by having a method for common symbols only in the base and a general one in ELF. This avoids the need of using a magic value for the size, which had a few problems * Most callers didn't check for it. * The ones that did could not tell the magic value from a file actually having that value. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240529 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -784,7 +784,7 @@ static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) {
|
||||
uint64_t Address;
|
||||
if (error(Symbol.getAddress(Address)))
|
||||
break;
|
||||
if (Address == UnknownAddressOrSize)
|
||||
if (Address == UnknownAddress)
|
||||
continue;
|
||||
Address -= SectionAddr;
|
||||
if (Address >= SectSize)
|
||||
@ -1101,9 +1101,9 @@ void llvm::PrintSymbolTable(const ObjectFile *o) {
|
||||
bool Hidden = Flags & SymbolRef::SF_Hidden;
|
||||
|
||||
if (Common)
|
||||
Address = Symbol.getSize();
|
||||
Address = Symbol.getCommonSize();
|
||||
|
||||
if (Address == UnknownAddressOrSize)
|
||||
if (Address == UnknownAddress)
|
||||
Address = 0;
|
||||
char GlobLoc = ' ';
|
||||
if (Type != SymbolRef::ST_Unknown)
|
||||
@ -1149,7 +1149,8 @@ void llvm::PrintSymbolTable(const ObjectFile *o) {
|
||||
|
||||
outs() << '\t';
|
||||
if (Common || isa<ELFObjectFileBase>(o)) {
|
||||
uint64_t Val = Common ? Symbol.getAlignment() : Symbol.getSize();
|
||||
uint64_t Val = Common ? Symbol.getAlignment()
|
||||
: cast<ELFObjectFileBase>(o)->getSymbolSize(Symbol);
|
||||
outs() << format("\t %08" PRIx64 " ", Val);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user