+ if( !symtab ) {
+ SysDebug("ERRO - No DT_SYMTAB in %p", Base);
+ return 0;
+ }
+ if( !pBuckets ) {
+ SysDebug("ERRO - No DT_HASH in %p", Base);
+ return 0;
+ }
+ if( !dynstrtab ) {
+ SysDebug("ERRO - No DT_STRTAB in %p", Base);
+ return 0;
+ }
+
+ // ... ok... maybe they haven't been relocated
+ if( (uintptr_t)symtab < (uintptr_t)Base )
+ {
+ symtab = (void*)( (uintptr_t)symtab + iBaseDiff );
+ pBuckets = (void*)( (uintptr_t)pBuckets + iBaseDiff );
+ dynstrtab = (void*)( (uintptr_t)dynstrtab + iBaseDiff );
+ SysDebug("Executable not yet relocated");
+ }
+