mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
Be a bit more permissive about symbols we don't understand. Just skip them
rather than throwing an error. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131322 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f5895e9592
commit
1c3c8ea662
@ -296,11 +296,11 @@ loadSegment32(const MachOObject *Obj,
|
||||
|
||||
// FIXME: Check the symbol type and flags.
|
||||
if (STE->Type != 0xF) // external, defined in this section.
|
||||
return Error("unexpected symbol type!");
|
||||
continue;
|
||||
// Flags == 0x8 marks a thumb function for ARM, which is fine as it
|
||||
// doesn't require any special handling here.
|
||||
if (STE->Flags != 0x0 && STE->Flags != 0x8)
|
||||
return Error("unexpected symbol type!");
|
||||
continue;
|
||||
|
||||
// Remember the symbol.
|
||||
Symbols.push_back(SymbolEntry(STE->Value, Name));
|
||||
@ -311,6 +311,10 @@ loadSegment32(const MachOObject *Obj,
|
||||
// Sort the symbols by address, just in case they didn't come in that way.
|
||||
array_pod_sort(Symbols.begin(), Symbols.end());
|
||||
|
||||
// If there weren't any functions (odd, but just in case...)
|
||||
if (!Symbols.size())
|
||||
continue;
|
||||
|
||||
// Extract the function data.
|
||||
uint8_t *Base = (uint8_t*)Obj->getData(SegmentLC->FileOffset,
|
||||
SegmentLC->FileSize).data();
|
||||
@ -431,9 +435,9 @@ loadSegment64(const MachOObject *Obj,
|
||||
|
||||
// FIXME: Check the symbol type and flags.
|
||||
if (STE->Type != 0xF) // external, defined in this section.
|
||||
return Error("unexpected symbol type!");
|
||||
continue;
|
||||
if (STE->Flags != 0x0)
|
||||
return Error("unexpected symbol type!");
|
||||
continue;
|
||||
|
||||
// Remember the symbol.
|
||||
Symbols.push_back(SymbolEntry(STE->Value, Name));
|
||||
@ -444,6 +448,10 @@ loadSegment64(const MachOObject *Obj,
|
||||
// Sort the symbols by address, just in case they didn't come in that way.
|
||||
array_pod_sort(Symbols.begin(), Symbols.end());
|
||||
|
||||
// If there weren't any functions (odd, but just in case...)
|
||||
if (!Symbols.size())
|
||||
continue;
|
||||
|
||||
// Extract the function data.
|
||||
uint8_t *Base = (uint8_t*)Obj->getData(Segment64LC->FileOffset,
|
||||
Segment64LC->FileSize).data();
|
||||
|
Loading…
Reference in New Issue
Block a user