mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-11 16:37:42 +00:00
Handle multiple symbols having the same address.
I will add an explicit test in a second, but this fixes the bots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240372 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3f2dc2455d
commit
8bfd2e8447
@ -28,6 +28,8 @@ static int compareAddress(const SymEntry *A, const SymEntry *B) {
|
||||
return A->Address - B->Address;
|
||||
if (A->Section < B->Section)
|
||||
return -1;
|
||||
if (A->Section == B->Section)
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -73,7 +75,13 @@ llvm::object::computeSymbolSizes(const ObjectFile &O) {
|
||||
auto &P = Addresses[I];
|
||||
if (P.I == O.symbol_end())
|
||||
continue;
|
||||
uint64_t Size = Addresses[I + 1].Address - P.Address;
|
||||
|
||||
// If multiple symbol have the same address, give both the same size.
|
||||
unsigned NextI = I + 1;
|
||||
while (NextI < N && Addresses[NextI].Address == P.Address)
|
||||
++NextI;
|
||||
|
||||
uint64_t Size = Addresses[NextI].Address - P.Address;
|
||||
P.Address = Size;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user