#!/usr/bin/python import os, sys, mmap from regression import Regression loader = os.environ['PAL_LOADER'] regression = Regression(loader, "Symbols") all_symbols = [ 'DkVirtualMemoryAlloc', 'DkVirtualMemoryFree', 'DkVirtualMemoryProtect', 'DkProcessCreate', 'DkProcessExit', 'DkProcessSandboxCreate', 'DkStreamOpen', 'DkStreamWaitForClient', 'DkStreamRead', 'DkStreamWrite', 'DkStreamDelete', 'DkStreamMap', 'DkStreamUnmap', 'DkStreamSetLength', 'DkStreamFlush', 'DkSendHandle', 'DkReceiveHandle', 'DkStreamAttributesQuery', 'DkStreamAttributesQuerybyHandle', 'DkStreamAttributesSetbyHandle', 'DkStreamGetName', 'DkStreamChangeName', 'DkThreadCreate', 'DkThreadDelayExecution', 'DkThreadYieldExecution', 'DkThreadExit', 'DkThreadResume', 'DkSetExceptionHandler', 'DkExceptionReturn', 'DkSemaphoreCreate', 'DkSemaphoreRelease', 'DkNotificationEventCreate', 'DkSynchronizationEventCreate', 'DkEventSet', 'DkEventClear', 'DkObjectsWaitAny', 'DkObjectReference', 'DkObjectClose', 'DkSystemTimeQuery', 'DkRandomBitsRead', 'DkInstructionCacheFlush', 'DkSegmentRegister', 'DkMemoryAvailableQuota', 'DkCreatePhysicalMemoryChannel', 'DkPhysicalMemoryCommit', 'DkPhysicalMemoryMap'] def check_symbols(res): for sym in all_symbols: found = False for line in res[0].log: if line and line.startswith(sym + ' = '): if line == sym + ' = 0x0': return False found = True break if not found: return False return True regression.add_check(name="Symbol Resolution", check=check_symbols); rv = regression.run_checks() if rv: sys.exit(rv)