mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-26 07:34:06 +00:00
Fix handling of asm specifiers for external globals. This unbreaks many programs
on leopard in the jit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29391 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
dacbe7b171
commit
513748dfc1
@ -100,9 +100,20 @@ void *JIT::getPointerToNamedFunction(const std::string &Name) {
|
||||
// but print a warning.
|
||||
if (Name == "__main") return (void*)(intptr_t)&__mainFunc;
|
||||
|
||||
const char *NameStr = Name.c_str();
|
||||
// If this is an asm specifier, skip the sentinal.
|
||||
if (NameStr[0] == 1) ++NameStr;
|
||||
|
||||
// If it's an external function, look it up in the process image...
|
||||
void *Ptr = sys::DynamicLibrary::SearchForAddressOfSymbol(Name);
|
||||
void *Ptr = sys::DynamicLibrary::SearchForAddressOfSymbol(NameStr);
|
||||
if (Ptr) return Ptr;
|
||||
|
||||
// If it wasn't found and if it starts with an underscore ('_') character, and
|
||||
// has an asm specifier, try again without the underscore.
|
||||
if (Name[0] == 1 && NameStr[0] == '_') {
|
||||
Ptr = sys::DynamicLibrary::SearchForAddressOfSymbol(NameStr+1);
|
||||
if (Ptr) return Ptr;
|
||||
}
|
||||
|
||||
std::cerr << "ERROR: Program used external function '" << Name
|
||||
<< "' which could not be resolved!\n";
|
||||
|
Loading…
x
Reference in New Issue
Block a user