Add SGX system

This commit is contained in:
Andras Slemmer 2017-01-19 17:23:34 +00:00 committed by exfalso
parent 8a03bcee6a
commit f5bc0b783a
7 changed files with 3163 additions and 0 deletions

523
src/system/sgx.cpp Normal file
View File

@ -0,0 +1,523 @@
// (C) 2016 R3 CEV Ltd
//
// Platform implementation for an Intel SGX enclave, which is similar to having no platform at all.
#include <string.h>
#include <map>
#include <sys/time.h>
#include <avian/arch.h>
#include <avian/append.h>
#include <avian/system/system.h>
#include <avian/system/signal.h>
#include <avian/system/memory.h>
#include <avian/util/math.h>
#define PATH_MAX 256
extern std::map<std::string, void*> dispatch_table;
extern void init_sgx_dispatch_table();
using namespace vm;
using namespace avian::util;
// Weak link against the JAR functions that the Avian embedder must provide.
// This lets us look it up at runtime without having it be present in libavian.a
extern "C" __attribute__((weak)) const uint8_t* embedded_file_boot_jar(size_t* size);
extern "C" __attribute__((weak)) const uint8_t* embedded_file_app_jar(size_t* size);
extern "C" const uint8_t* javahomeJar(size_t* size);
extern "C" const void *find_in_dispatch_table(const char *name);
namespace {
void abort_with(const char *msg) {
printf("%s\n", msg);
while(true);
}
class MySystem;
MySystem* globalSystem;
const bool Verbose = false;
class MySystem : public System {
public:
class Thread : public System::Thread {
public:
Thread* next;
Thread(System* s UNUSED, System::Runnable* r UNUSED) : next(0)
{
}
virtual void interrupt()
{
printf("Thread::Interrupt()\n");
}
virtual bool getAndClearInterrupted()
{
printf("Thread::getAndClearInterrupted()\n");
return false;
}
virtual void join()
{
printf("Thread::Join()\n");
}
virtual void dispose()
{
}
};
class Mutex : public System::Mutex {
public:
Mutex(System* s) : s(s)
{
}
virtual void acquire()
{
}
virtual void release()
{
}
virtual void dispose()
{
}
System* s;
};
class Monitor : public System::Monitor {
public:
Monitor(System* s) : s(s), owner_(0), first(0), last(0), depth(0)
{
}
virtual bool tryAcquire(System::Thread* context UNUSED)
{
return true;
}
virtual void acquire(System::Thread* context UNUSED)
{
}
virtual void release(System::Thread* context UNUSED)
{
}
void append(Thread* t)
{
for (Thread* x = first; x; x = x->next) {
expect(s, t != x);
}
if (last) {
expect(s, t != last);
last->next = t;
last = t;
} else {
first = last = t;
}
}
void remove(Thread* t)
{
Thread* previous = 0;
for (Thread* current = first; current;) {
if (t == current) {
if (current == first) {
first = t->next;
} else {
expect(s, previous != t->next);
previous->next = t->next;
}
if (current == last) {
last = previous;
}
t->next = 0;
break;
} else {
previous = current;
current = current->next;
}
}
for (Thread* x = first; x; x = x->next) {
expect(s, t != x);
}
}
virtual void wait(System::Thread* context UNUSED, int64_t time UNUSED)
{
wait(context, time, false);
}
virtual bool waitAndClearInterrupted(System::Thread* context UNUSED, int64_t time UNUSED)
{
return wait(context, time, true);
}
bool wait(System::Thread* context UNUSED, int64_t time UNUSED, bool clearInterrupted UNUSED)
{
abort_with("STUB: Thread::Wait()");
return true;
}
void doNotify(Thread* t UNUSED)
{
printf("STUB: Thread::Notify()\n");
}
virtual void notify(System::Thread* context UNUSED)
{
}
virtual void notifyAll(System::Thread* context UNUSED)
{
}
virtual System::Thread* owner()
{
return owner_;
}
virtual void dispose()
{
expect(s, owner_ == 0);
::free(this);
}
System* s;
Thread* owner_;
Thread* first;
Thread* last;
unsigned depth;
};
class Local : public System::Local {
public:
void *value;
Local(System* s) : s(s)
{
}
virtual void* get()
{
return value;
}
virtual void set(void* p)
{
value = p;
}
virtual void dispose()
{
::free(this);
}
System* s;
};
class Region : public System::Region {
public:
Region(System* s, uint8_t* start, size_t length)
: s(s), start_(start), length_(length)
{
}
virtual const uint8_t* start()
{
return start_;
}
virtual size_t length()
{
return length_;
}
virtual void dispose()
{
if (start_) {
printf("STUB: munmap\n");
//munmap(start_, length_);
}
::free(this);
}
System* s;
uint8_t* start_;
size_t length_;
};
class Directory : public System::Directory {
public:
Directory(System* s, void* directory UNUSED) : s(s)
{
}
virtual const char* next()
{
return 0;
}
virtual void dispose()
{
::free(this);
}
System* s;
};
class Library : public System::Library {
public:
Library(System* s UNUSED) : next_(0) {}
virtual void* resolve(const char* function)
{
const void *ptr = NULL;
if (!strcmp(function, "embedded_file_boot_jar")) {
return (void *) &embedded_file_boot_jar;
} if (!strcmp(function, "embedded_file_app_jar")) {
return (void *) &embedded_file_app_jar;
} if (!strcmp(function, "javahomeJar")) {
return (void *) &javahomeJar;
} else if ((ptr = find_in_dispatch_table(function))) {
return (void *) ptr;
} else {
// If you seem to be hitting a JNI call you're sure should exist, try uncommenting this.
// It is expected that some resolutions won't work as multiple names are tried for each
// native call, which is why we don't spam them all to the logs here.
//
// printf("Could not resolve file/function %s, check dispatch tables\n", function);
return NULL;
}
}
virtual const char* name()
{
return "main";
}
virtual System::Library* next()
{
return next_;
}
virtual void setNext(System::Library* lib)
{
next_ = lib;
}
virtual void disposeAll()
{
if (next_) {
next_->disposeAll();
}
::free(this);
}
System* s;
System::Library* next_;
};
MySystem(bool reentrant) : reentrant(reentrant), threadVisitor(0), visitTarget(0)
{
if (not reentrant) {
expect(this, globalSystem == 0);
globalSystem = this;
expect(this, make(&visitLock) == 0);
}
}
bool unregisterHandler(int index UNUSED)
{
return true;
}
// Returns true on success, false on failure
bool registerHandler(int index UNUSED)
{
printf("System::registerHandler(%d)\n", index);
return true;
}
virtual void* tryAllocate(size_t sizeInBytes)
{
return malloc(sizeInBytes);
}
virtual void free(const void* p)
{
if (p)
::free(const_cast<void*>(p));
}
virtual bool success(Status s) {
return s == 0;
}
virtual Status attach(Runnable* r)
{
Thread* t = new (allocate(this, sizeof(Thread))) Thread(this, r);
r->attach(t);
return 0;
}
virtual Status start(Runnable* r)
{
Thread* t = new (allocate(this, sizeof(Thread))) Thread(this, r);
r->attach(t);
printf("System::start (thread!!)\n");
// We implement threads as blocking calls! This is of course totally wrong, but with extra threads
// patched out in a few places, it's hopefully sufficient.
r->run();
return 0;
}
virtual Status make(System::Mutex** m)
{
*m = new (allocate(this, sizeof(Mutex))) Mutex(this);
return 0;
}
virtual Status make(System::Monitor** m)
{
*m = new (allocate(this, sizeof(Monitor))) Monitor(this);
return 0;
}
virtual Status make(System::Local** l)
{
*l = new (allocate(this, sizeof(Local))) Local(this);
return 0;
}
virtual Status visit(System::Thread* st UNUSED,
System::Thread* sTarget UNUSED,
ThreadVisitor* visitor UNUSED)
{
printf("System::visit (threads)\n");
return 0;
}
virtual Status map(System::Region** region UNUSED, const char* name)
{
printf("System::map(%s)\n", name);
return 0;
}
virtual Status open(System::Directory** directory UNUSED, const char* name)
{
printf("System::open(%s)\n", name);
return 1;
}
virtual FileType stat(const char* name, size_t* length)
{
// Avian does a stat on the current directory during startup but doesn't seem to care about the result,
// so suppress stub logging of stat(".")
if (strcmp(name, "."))
printf("System::stat(%s)\n", name);
*length = 0;
return TypeDoesNotExist;
}
virtual const char* libraryPrefix()
{
return SO_PREFIX;
}
virtual const char* librarySuffix()
{
return SO_SUFFIX;
}
virtual const char* toAbsolutePath(AllocOnly* allocator, const char* name)
{
return copy(allocator, name);
}
virtual Status load(System::Library** lib, const char* name)
{
if (name != NULL) {
printf("System::load(%s)", name);
while(1);
}
// Request to get a System::Library for the main process.
*lib = new (allocate(this, sizeof(Library))) Library(this);
return 0;
}
virtual char pathSeparator()
{
return ':';
}
virtual char fileSeparator()
{
return '/';
}
virtual int64_t now()
{
timeval tv = {0, 0};
gettimeofday(&tv, 0);
return (static_cast<int64_t>(tv.tv_sec) * 1000) + (static_cast<int64_t>(tv.tv_usec) / 1000);
}
virtual void yield()
{
}
virtual void exit(int code UNUSED)
{
abort_with("exit()");
}
virtual void abort()
{
abort_with("abort!");
}
virtual void dispose()
{
if (not reentrant) {
visitLock->dispose();
globalSystem = 0;
}
::free(this);
}
bool reentrant;
ThreadVisitor* threadVisitor;
Thread* visitTarget;
System::Monitor* visitLock;
};
} // namespace
namespace vm {
AVIAN_EXPORT System* makeSystem(bool reentrant)
{
return new (malloc(sizeof(MySystem))) MySystem(reentrant);
}
} // namespace vm

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,53 @@
// Inside the enclave we don't have the rtld to do symbol lookups for us. So, we must manually compute
// the name->address mappings at compile time and then let the SGX ELF loader apply the relocs itself.
//
// Because there are quite a few symbols we might want to look up, the final file is generated using a script.
// This is just a template.
//
#ifndef AVIAN_SGX_DISPATCH_TABLE_H
#define AVIAN_SGX_DISPATCH_TABLE_H
#include <string>
#include <map>
#include <avian/common.h>
using namespace std;
extern "C" {
// EXTERNS HERE
}
namespace {
struct entry {
const char *name;
const void *addr;
} entries[] = {
// ENTRIES HERE
{ NULL, NULL }
};
static int symbol_table_size = -1;
static int comparator(const void *e1, const void *e2) {
const struct entry *entry1 = static_cast<const struct entry*>(e1);
const struct entry *entry2 = static_cast<const struct entry*>(e2);
return strcmp(entry1->name, entry2->name);
}
}
extern "C" const void *find_in_dispatch_table(const char *name) {
if (symbol_table_size == -1) {
symbol_table_size = 0;
while (entries[symbol_table_size].name) symbol_table_size++;
}
struct entry key = {name, NULL};
struct entry *result = (struct entry *) bsearch(&key, entries, symbol_table_size, sizeof(struct entry), comparator);
if (result) {
return result->addr;
} else {
return NULL;
}
}
#endif //AVIAN_SGX_DISPATCH_TABLE_H

View File

@ -0,0 +1,820 @@
# This file lists all the JNI symbols that can be looked up. It was generated by gen_dispatch_table.py
Avian_avian_avianvmresource_Handler_00024ResourceInputStream_available
Avian_avian_avianvmresource_Handler_00024ResourceInputStream_close
Avian_avian_avianvmresource_Handler_00024ResourceInputStream_getContentLength
Avian_avian_avianvmresource_Handler_00024ResourceInputStream_open
Avian_avian_avianvmresource_Handler_00024ResourceInputStream_read__JI
Avian_avian_avianvmresource_Handler_00024ResourceInputStream_read__JI_3BII
Avian_avian_Classes_acquireClassLock
Avian_avian_Classes_defineVMClass
Avian_avian_Classes_initialize
Avian_avian_Classes_makeString
Avian_avian_Classes_primitiveClass
Avian_avian_Classes_releaseClassLock
Avian_avian_Classes_resolveVMClass
Avian_avian_Classes_toVMClass
Avian_avian_Classes_toVMMethod
Avian_avian_Continuations_00024Continuation_handleException
Avian_avian_Continuations_00024Continuation_handleResult
Avian_avian_Continuations_callWithCurrentContinuation
Avian_avian_Continuations_dynamicWind2
Avian_avian_Machine_dumpHeap
Avian_avian_Machine_tryNative
Avian_avian_Singleton_getInt
Avian_avian_Singleton_getLong
Avian_avian_Singleton_getObject
Avian_avian_SystemClassLoader_00024ResourceEnumeration_nextResourceURLPrefix
Avian_avian_SystemClassLoader_appLoader
Avian_avian_SystemClassLoader_findLoadedVMClass
Avian_avian_SystemClassLoader_findVMClass
Avian_avian_SystemClassLoader_getClass
Avian_avian_SystemClassLoader_getPackageSource
Avian_avian_SystemClassLoader_resourceURLPrefix
Avian_avian_SystemClassLoader_vmClass
Avian_java_lang_Class_getEnclosingClass
Avian_java_lang_Class_getEnclosingConstructor
Avian_java_lang_Class_getEnclosingMethod
Avian_java_lang_Object_clone
Avian_java_lang_Object_getVMClass
Avian_java_lang_Object_hashCode
Avian_java_lang_Object_notify
Avian_java_lang_Object_notifyAll
Avian_java_lang_Object_toString
Avian_java_lang_Object_wait
Avian_java_lang_Runtime_exit
Avian_java_lang_Runtime_freeMemory
Avian_java_lang_Runtime_totalMemory
Avian_java_nio_FixedArrayByteBuffer_allocateFixed
Avian_sun_misc_Unsafe_allocateMemory
Avian_sun_misc_Unsafe_arrayBaseOffset
Avian_sun_misc_Unsafe_arrayIndexScale
Avian_sun_misc_Unsafe_compareAndSwapInt
Avian_sun_misc_Unsafe_compareAndSwapLong
Avian_sun_misc_Unsafe_compareAndSwapObject
Avian_sun_misc_Unsafe_copyMemory
Avian_sun_misc_Unsafe_freeMemory
Avian_sun_misc_Unsafe_getAddress__J
Avian_sun_misc_Unsafe_getBooleanVolatile
Avian_sun_misc_Unsafe_getByte__J
Avian_sun_misc_Unsafe_getByteVolatile
Avian_sun_misc_Unsafe_getChar__J
Avian_sun_misc_Unsafe_getCharVolatile
Avian_sun_misc_Unsafe_getDouble__J
Avian_sun_misc_Unsafe_getDoubleVolatile
Avian_sun_misc_Unsafe_getFloat__J
Avian_sun_misc_Unsafe_getFloatVolatile
Avian_sun_misc_Unsafe_getInt__J
Avian_sun_misc_Unsafe_getIntVolatile
Avian_sun_misc_Unsafe_getLong__J
Avian_sun_misc_Unsafe_getLongVolatile
Avian_sun_misc_Unsafe_getObject
Avian_sun_misc_Unsafe_getObjectVolatile
Avian_sun_misc_Unsafe_getShort__J
Avian_sun_misc_Unsafe_getShortVolatile
Avian_sun_misc_Unsafe_park
Avian_sun_misc_Unsafe_putAddress__JJ
Avian_sun_misc_Unsafe_putBooleanVolatile
Avian_sun_misc_Unsafe_putByte__JB
Avian_sun_misc_Unsafe_putByteVolatile
Avian_sun_misc_Unsafe_putChar__JC
Avian_sun_misc_Unsafe_putCharVolatile
Avian_sun_misc_Unsafe_putDouble__JD
Avian_sun_misc_Unsafe_putDoubleVolatile
Avian_sun_misc_Unsafe_putFloat__JF
Avian_sun_misc_Unsafe_putFloatVolatile
Avian_sun_misc_Unsafe_putInt__JI
Avian_sun_misc_Unsafe_putIntVolatile
Avian_sun_misc_Unsafe_putLong__JJ
Avian_sun_misc_Unsafe_putLongVolatile
Avian_sun_misc_Unsafe_putObject
Avian_sun_misc_Unsafe_putObjectVolatile
Avian_sun_misc_Unsafe_putOrderedInt
Avian_sun_misc_Unsafe_putOrderedLong
Avian_sun_misc_Unsafe_putOrderedObject
Avian_sun_misc_Unsafe_putShort__JS
Avian_sun_misc_Unsafe_putShortVolatile
Avian_sun_misc_Unsafe_setMemory
Avian_sun_misc_Unsafe_throwException
Avian_sun_misc_Unsafe_unpark
Avian_java_lang_Class_getSuperclass
Avian_sun_misc_Perf_createLong
Avian_sun_misc_Perf_registerNatives
Avian_sun_misc_Unsafe_addressSize
Avian_sun_misc_Unsafe_allocateInstance
Avian_sun_misc_Unsafe_defineClass__Ljava_lang_String_2_3BIILjava_lang_ClassLoader_2Ljava_security_ProtectionDomain_2
Avian_sun_misc_Unsafe_ensureClassInitialized
Avian_sun_misc_Unsafe_getBoolean__Ljava_lang_Object_2J
Avian_sun_misc_Unsafe_getByte__Ljava_lang_Object_2J
Avian_sun_misc_Unsafe_getChar__Ljava_lang_Object_2J
Avian_sun_misc_Unsafe_getDouble__Ljava_lang_Object_2J
Avian_sun_misc_Unsafe_getFloat__Ljava_lang_Object_2J
Avian_sun_misc_Unsafe_getInt__Ljava_lang_Object_2J
Avian_sun_misc_Unsafe_getLong__Ljava_lang_Object_2J
Avian_sun_misc_Unsafe_getShort__Ljava_lang_Object_2J
Avian_sun_misc_Unsafe_monitorEnter
Avian_sun_misc_Unsafe_monitorExit
Avian_sun_misc_Unsafe_objectFieldOffset
Avian_sun_misc_Unsafe_pageSize
Avian_sun_misc_Unsafe_putBoolean__Ljava_lang_Object_2JZ
Avian_sun_misc_Unsafe_putByte__Ljava_lang_Object_2JB
Avian_sun_misc_Unsafe_putChar__Ljava_lang_Object_2JC
Avian_sun_misc_Unsafe_putDouble__Ljava_lang_Object_2JD
Avian_sun_misc_Unsafe_putFloat__Ljava_lang_Object_2JF
Avian_sun_misc_Unsafe_putInt__Ljava_lang_Object_2JI
Avian_sun_misc_Unsafe_putLong__Ljava_lang_Object_2JJ
Avian_sun_misc_Unsafe_putShort__Ljava_lang_Object_2JS
Avian_sun_misc_Unsafe_registerNatives
Avian_sun_misc_Unsafe_staticFieldBase
Avian_sun_misc_Unsafe_staticFieldOffset
JVM_Accept
JVM_ActiveProcessorCount
JVM_AllocateNewArray
JVM_AllocateNewObject
JVM_ArrayCopy
JVM_AssertionStatusDirectives
JVM_Available
JVM_Bind
JVM_ClassDepth
JVM_ClassLoaderDepth
JVM_Clone
JVM_Close
JVM_CompileClass
JVM_CompileClasses
JVM_CompilerCommand
JVM_Connect
JVM_ConstantPoolGetClassAt
JVM_ConstantPoolGetClassAtIfLoaded
JVM_ConstantPoolGetDoubleAt
JVM_ConstantPoolGetFieldAt
JVM_ConstantPoolGetFieldAtIfLoaded
JVM_ConstantPoolGetFloatAt
JVM_ConstantPoolGetIntAt
JVM_ConstantPoolGetLongAt
JVM_ConstantPoolGetMemberRefInfoAt
JVM_ConstantPoolGetMethodAt
JVM_ConstantPoolGetMethodAtIfLoaded
JVM_ConstantPoolGetSize
JVM_ConstantPoolGetStringAt
JVM_ConstantPoolGetUTF8At
JVM_CountStackFrames
JVM_CurrentClassLoader
JVM_CurrentLoadedClass
JVM_CurrentThread
JVM_CurrentTimeMillis
JVM_CX8Field
JVM_DefineClass
JVM_DefineClassWithSource
JVM_DefineClassWithSourceCond
JVM_DesiredAssertionStatus
JVM_DisableCompiler
JVM_DoPrivileged
JVM_DumpAllStacks
JVM_DumpThreads
JVM_EnableCompiler
JVM_Exit
JVM_FillInStackTrace
JVM_FindClassFromBootLoader
JVM_FindClassFromCaller
JVM_FindClassFromClass
JVM_FindClassFromClassLoader
JVM_FindLibraryEntry
JVM_FindLoadedClass
JVM_FindPrimitiveClass
JVM_FindSignal
JVM_FreeMemory
JVM_GC
JVM_GetAllThreads
JVM_GetArrayElement
JVM_GetArrayLength
JVM_GetCallerClass
JVM_GetClassAccessFlags
JVM_GetClassAnnotations
JVM_GetClassConstantPool
JVM_GetClassContext
JVM_GetClassCPEntriesCount
JVM_GetClassCPTypes
JVM_GetClassDeclaredConstructors
JVM_GetClassDeclaredFields
JVM_GetClassDeclaredMethods
JVM_GetClassFieldsCount
JVM_GetClassInterfaces
JVM_GetClassLoader
JVM_GetClassMethodsCount
JVM_GetClassModifiers
JVM_GetClassName
JVM_GetClassNameUTF
JVM_GetClassSignature
JVM_GetClassSigners
JVM_GetClassTypeAnnotations
JVM_GetComponentType
JVM_GetCPClassNameUTF
JVM_GetCPFieldClassNameUTF
JVM_GetCPFieldModifiers
JVM_GetCPFieldNameUTF
JVM_GetCPFieldSignatureUTF
JVM_GetCPMethodClassNameUTF
JVM_GetCPMethodModifiers
JVM_GetCPMethodNameUTF
JVM_GetCPMethodSignatureUTF
JVM_GetDeclaredClasses
JVM_GetDeclaringClass
JVM_GetEnclosingMethodInfo
JVM_GetFieldIxModifiers
JVM_GetFieldTypeAnnotations
JVM_GetHostByAddr
JVM_GetHostByName
JVM_GetHostName
JVM_GetInheritedAccessControlContext
JVM_GetInterfaceVersion
JVM_GetLastErrorString
JVM_GetManagement
JVM_GetMethodIxArgsSize
JVM_GetMethodIxByteCode
JVM_GetMethodIxByteCodeLength
JVM_GetMethodIxExceptionIndexes
JVM_GetMethodIxExceptionsCount
JVM_GetMethodIxExceptionTableEntry
JVM_GetMethodIxExceptionTableLength
JVM_GetMethodIxLocalsCount
JVM_GetMethodIxMaxStack
JVM_GetMethodIxModifiers
JVM_GetMethodIxNameUTF
JVM_GetMethodIxSignatureUTF
JVM_GetMethodParameters
JVM_GetMethodTypeAnnotations
JVM_GetPrimitiveArrayElement
JVM_GetProtectionDomain
JVM_GetProtoByName
JVM_GetResourceLookupCacheURLs
JVM_GetSockName
JVM_GetSockOpt
JVM_GetStackAccessControlContext
JVM_GetStackTraceDepth
JVM_GetStackTraceElement
JVM_GetSystemPackage
JVM_GetSystemPackages
JVM_GetThreadStateNames
JVM_GetThreadStateValues
JVM_GetVersionInfo
JVM_Halt
JVM_HoldsLock
JVM_IHashCode
JVM_InitAgentProperties
JVM_InitializeCompiler
JVM_InitializeSocketLibrary
JVM_InitProperties
JVM_InternString
JVM_Interrupt
JVM_InvokeMethod
JVM_IsArrayClass
JVM_IsConstructorIx
JVM_IsInterface
JVM_IsInterrupted
JVM_IsNaN
JVM_IsPrimitiveClass
JVM_IsSameClassPackage
JVM_IsSilentCompiler
JVM_IsSupportedJNIVersion
JVM_IsThreadAlive
JVM_IsVMGeneratedMethodIx
JVM_LatestUserDefinedLoader
JVM_Listen
JVM_LoadClass0
JVM_LoadLibrary
JVM_Lseek
JVM_MaxMemory
JVM_MaxObjectInspectionAge
JVM_MonitorNotify
JVM_MonitorNotifyAll
JVM_MonitorWait
JVM_NanoTime
JVM_NativePath
JVM_NewArray
JVM_NewInstanceFromConstructor
JVM_NewMultiArray
JVM_OnExit
JVM_Open
JVM_PrintStackTrace
JVM_RaiseSignal
JVM_RawMonitorCreate
JVM_RawMonitorDestroy
JVM_RawMonitorEnter
JVM_RawMonitorExit
JVM_Read
JVM_Recv
JVM_RecvFrom
JVM_RegisterSignal
JVM_ReleaseUTF
JVM_ResolveClass
JVM_ResumeThread
JVM_Send
JVM_SendTo
JVM_SetArrayElement
JVM_SetClassSigners
JVM_SetLength
JVM_SetNativeThreadName
JVM_SetPrimitiveArrayElement
JVM_SetProtectionDomain
JVM_SetSockOpt
JVM_SetThreadPriority
JVM_Sleep
JVM_Socket
JVM_SocketAvailable
JVM_SocketClose
JVM_SocketShutdown
JVM_StartThread
JVM_StopThread
JVM_SupportsCX8
JVM_SuspendThread
JVM_Sync
JVM_Timeout
JVM_TotalMemory
JVM_TraceInstructions
JVM_TraceMethodCalls
JVM_UnloadLibrary
JVM_Write
JVM_Yield
JVM_GetResourceLookupCache
JVM_GetTemporaryDirectory
JVM_KnownToNotExist
Java_java_io_FileInputStream_available
Java_java_io_FileInputStream_initIDs
Java_java_io_FileInputStream_open0
Java_java_io_FileInputStream_read0
Java_java_io_FileInputStream_readBytes
Java_java_io_FileInputStream_skip
Java_java_io_ObjectInputStream_bytesToDoubles
Java_java_io_ObjectInputStream_bytesToFloats
Java_java_io_ObjectOutputStream_doublesToBytes
Java_java_io_ObjectOutputStream_floatsToBytes
Java_java_io_ObjectStreamClass_hasStaticInitializer
Java_java_io_ObjectStreamClass_initNative
Java_java_io_RandomAccessFile_getFilePointer
Java_java_io_RandomAccessFile_initIDs
Java_java_io_RandomAccessFile_length
Java_java_io_RandomAccessFile_open0
Java_java_io_RandomAccessFile_read0
Java_java_io_RandomAccessFile_readBytes
Java_java_io_RandomAccessFile_seek0
Java_java_io_RandomAccessFile_setLength
Java_java_io_RandomAccessFile_write0
Java_java_io_RandomAccessFile_writeBytes
Java_java_lang_Class_forName0
Java_java_lang_Class_getPrimitiveClass
Java_java_lang_Class_isAssignableFrom
Java_java_lang_Class_isInstance
Java_java_lang_Class_registerNatives
Java_java_lang_ClassLoader_00024NativeLibrary_find
Java_java_lang_ClassLoader_00024NativeLibrary_load
Java_java_lang_ClassLoader_00024NativeLibrary_unload
Java_java_lang_ClassLoader_defineClass0
Java_java_lang_ClassLoader_defineClass1
Java_java_lang_ClassLoader_defineClass2
Java_java_lang_ClassLoader_findBootstrapClass
Java_java_lang_ClassLoader_findBuiltinLib
Java_java_lang_ClassLoader_findLoadedClass0
Java_java_lang_ClassLoader_registerNatives
Java_java_lang_ClassLoader_resolveClass0
Java_java_lang_Compiler_registerNatives
Java_java_lang_Double_doubleToRawLongBits
Java_java_lang_Double_longBitsToDouble
Java_java_lang_Float_floatToRawIntBits
Java_java_lang_Float_intBitsToFloat
Java_java_lang_Object_getClass
Java_java_lang_Object_registerNatives
Java_java_lang_Package_getSystemPackage0
Java_java_lang_Package_getSystemPackages0
Java_java_lang_Runtime_availableProcessors
Java_java_lang_Runtime_freeMemory
Java_java_lang_Runtime_gc
Java_java_lang_Runtime_maxMemory
Java_java_lang_Runtime_runFinalization0
Java_java_lang_Runtime_totalMemory
Java_java_lang_Runtime_traceInstructions
Java_java_lang_Runtime_traceMethodCalls
Java_java_lang_SecurityManager_classDepth
Java_java_lang_SecurityManager_classLoaderDepth0
Java_java_lang_SecurityManager_currentClassLoader0
Java_java_lang_SecurityManager_currentLoadedClass0
Java_java_lang_SecurityManager_getClassContext
Java_java_lang_Shutdown_halt0
Java_java_lang_Shutdown_runAllFinalizers
Java_java_lang_StrictMath_acos
Java_java_lang_StrictMath_asin
Java_java_lang_StrictMath_atan
Java_java_lang_StrictMath_atan2
Java_java_lang_StrictMath_cbrt
Java_java_lang_StrictMath_cos
Java_java_lang_StrictMath_cosh
Java_java_lang_StrictMath_exp
Java_java_lang_StrictMath_expm1
Java_java_lang_StrictMath_hypot
Java_java_lang_StrictMath_IEEEremainder
Java_java_lang_StrictMath_log
Java_java_lang_StrictMath_log10
Java_java_lang_StrictMath_log1p
Java_java_lang_StrictMath_pow
Java_java_lang_StrictMath_sin
Java_java_lang_StrictMath_sinh
Java_java_lang_StrictMath_sqrt
Java_java_lang_StrictMath_tan
Java_java_lang_StrictMath_tanh
Java_java_lang_String_intern
Java_java_lang_System_identityHashCode
Java_java_lang_System_initProperties
Java_java_lang_System_mapLibraryName
Java_java_lang_System_registerNatives
Java_java_lang_System_setErr0
Java_java_lang_System_setIn0
Java_java_lang_System_setOut0
Java_java_lang_Thread_registerNatives
Java_java_lang_Throwable_fillInStackTrace
Java_java_lang_Throwable_getStackTraceDepth
Java_java_lang_Throwable_getStackTraceElement
Java_java_lang_reflect_Array_get
Java_java_lang_reflect_Array_getBoolean
Java_java_lang_reflect_Array_getByte
Java_java_lang_reflect_Array_getChar
Java_java_lang_reflect_Array_getDouble
Java_java_lang_reflect_Array_getFloat
Java_java_lang_reflect_Array_getInt
Java_java_lang_reflect_Array_getLength
Java_java_lang_reflect_Array_getLong
Java_java_lang_reflect_Array_getShort
Java_java_lang_reflect_Array_multiNewArray
Java_java_lang_reflect_Array_newArray
Java_java_lang_reflect_Array_set
Java_java_lang_reflect_Array_setBoolean
Java_java_lang_reflect_Array_setByte
Java_java_lang_reflect_Array_setChar
Java_java_lang_reflect_Array_setDouble
Java_java_lang_reflect_Array_setFloat
Java_java_lang_reflect_Array_setInt
Java_java_lang_reflect_Array_setLong
Java_java_lang_reflect_Array_setShort
Java_java_lang_reflect_Proxy_defineClass0
Java_java_net_DatagramPacket_init
Java_java_net_Inet4Address_init
Java_java_net_Inet6Address_init
Java_java_net_InetAddress_init
Java_java_nio_Bits_copyFromIntArray
Java_java_nio_Bits_copyFromLongArray
Java_java_nio_Bits_copyFromShortArray
Java_java_nio_Bits_copyToIntArray
Java_java_nio_Bits_copyToLongArray
Java_java_nio_Bits_copyToShortArray
Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2
Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2Ljava_security_AccessControlContext_2
Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2
Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2Ljava_security_AccessControlContext_2
Java_java_security_AccessController_getInheritedAccessControlContext
Java_java_security_AccessController_getStackAccessControlContext
Java_java_util_TimeZone_getSystemGMTOffsetID
Java_java_util_TimeZone_getSystemTimeZoneID
Java_java_util_concurrent_atomic_AtomicLong_VMSupportsCS8
Java_java_util_zip_Adler32_update
Java_java_util_zip_Adler32_updateByteBuffer
Java_java_util_zip_Adler32_updateBytes
Java_java_util_zip_CRC32_update
Java_java_util_zip_CRC32_updateByteBuffer
Java_java_util_zip_CRC32_updateBytes
Java_java_util_zip_Deflater_deflateBytes
Java_java_util_zip_Deflater_end
Java_java_util_zip_Deflater_getAdler
Java_java_util_zip_Deflater_init
Java_java_util_zip_Deflater_initIDs
Java_java_util_zip_Deflater_reset
Java_java_util_zip_Deflater_setDictionary
Java_java_util_zip_Inflater_end
Java_java_util_zip_Inflater_getAdler
Java_java_util_zip_Inflater_inflateBytes
Java_java_util_zip_Inflater_init
Java_java_util_zip_Inflater_initIDs
Java_java_util_zip_Inflater_reset
Java_java_util_zip_Inflater_setDictionary
Java_java_util_jar_JarFile_getMetaInfEntryNames
Java_java_util_zip_ZipFile_close
Java_java_util_zip_ZipFile_freeEntry
Java_java_util_zip_ZipFile_getCommentBytes
Java_java_util_zip_ZipFile_getEntry
Java_java_util_zip_ZipFile_getEntryBytes
Java_java_util_zip_ZipFile_getEntryCrc
Java_java_util_zip_ZipFile_getEntryCSize
Java_java_util_zip_ZipFile_getEntryFlag
Java_java_util_zip_ZipFile_getEntryMethod
Java_java_util_zip_ZipFile_getEntrySize
Java_java_util_zip_ZipFile_getEntryTime
Java_java_util_zip_ZipFile_getNextEntry
Java_java_util_zip_ZipFile_getTotal
Java_java_util_zip_ZipFile_getZipMessage
Java_java_util_zip_ZipFile_initIDs
Java_java_util_zip_ZipFile_open
Java_java_util_zip_ZipFile_read
Java_java_util_zip_ZipFile_startsWithLOC
Java_sun_management_VMManagementImpl_getAvailableProcessors
Java_sun_management_VMManagementImpl_getClassInitializationTime
Java_sun_management_VMManagementImpl_getClassLoadingTime
Java_sun_management_VMManagementImpl_getClassVerificationTime
Java_sun_management_VMManagementImpl_getDaemonThreadCount
Java_sun_management_VMManagementImpl_getInitializedClassCount
Java_sun_management_VMManagementImpl_getLiveThreadCount
Java_sun_management_VMManagementImpl_getLoadedClassSize
Java_sun_management_VMManagementImpl_getMethodDataSize
Java_sun_management_VMManagementImpl_getPeakThreadCount
Java_sun_management_VMManagementImpl_getProcessId
Java_sun_management_VMManagementImpl_getSafepointCount
Java_sun_management_VMManagementImpl_getSafepointSyncTime
Java_sun_management_VMManagementImpl_getStartupTime
Java_sun_management_VMManagementImpl_getTotalApplicationNonStoppedTime
Java_sun_management_VMManagementImpl_getTotalClassCount
Java_sun_management_VMManagementImpl_getTotalCompileTime
Java_sun_management_VMManagementImpl_getTotalSafepointTime
Java_sun_management_VMManagementImpl_getTotalThreadCount
Java_sun_management_VMManagementImpl_getUnloadedClassCount
Java_sun_management_VMManagementImpl_getUnloadedClassSize
Java_sun_management_VMManagementImpl_getUptime0
Java_sun_management_VMManagementImpl_getVerboseClass
Java_sun_management_VMManagementImpl_getVerboseGC
Java_sun_management_VMManagementImpl_getVersion0
Java_sun_management_VMManagementImpl_getVmArguments0
Java_sun_management_VMManagementImpl_initOptionalSupportFields
Java_sun_management_VMManagementImpl_isThreadAllocatedMemoryEnabled
Java_sun_management_VMManagementImpl_isThreadContentionMonitoringEnabled
Java_sun_management_VMManagementImpl_isThreadCpuTimeEnabled
Java_sun_misc_GC_maxObjectInspectionAge
Java_sun_misc_MessageUtils_toStderr
Java_sun_misc_MessageUtils_toStdout
Java_sun_misc_NativeSignalHandler_handle0
Java_sun_misc_Signal_findSignal
Java_sun_misc_Signal_handle0
Java_sun_misc_Signal_raise0
Java_sun_misc_URLClassPath_getLookupCacheForClassLoader
Java_sun_misc_URLClassPath_getLookupCacheURLs
Java_sun_misc_URLClassPath_knownToNotExist0
Java_sun_misc_VM_getThreadStateValues
Java_sun_misc_VM_initialize
Java_sun_misc_VM_latestUserDefinedLoader
Java_sun_misc_VMSupport_getVMTemporaryDirectory
Java_sun_misc_VMSupport_initAgentProperties
Java_sun_misc_Version_getJdkSpecialVersion
Java_sun_misc_Version_getJdkVersionInfo
Java_sun_misc_Version_getJvmSpecialVersion
Java_sun_misc_Version_getJvmVersionInfo
Java_sun_reflect_ConstantPool_getClassAt0
Java_sun_reflect_ConstantPool_getClassAtIfLoaded0
Java_sun_reflect_ConstantPool_getDoubleAt0
Java_sun_reflect_ConstantPool_getFieldAt0
Java_sun_reflect_ConstantPool_getFieldAtIfLoaded0
Java_sun_reflect_ConstantPool_getFloatAt0
Java_sun_reflect_ConstantPool_getIntAt0
Java_sun_reflect_ConstantPool_getLongAt0
Java_sun_reflect_ConstantPool_getMemberRefInfoAt0
Java_sun_reflect_ConstantPool_getMethodAt0
Java_sun_reflect_ConstantPool_getMethodAtIfLoaded0
Java_sun_reflect_ConstantPool_getSize0
Java_sun_reflect_ConstantPool_getStringAt0
Java_sun_reflect_ConstantPool_getUTF8At0
Java_sun_reflect_NativeConstructorAccessorImpl_newInstance0
Java_sun_reflect_NativeMethodAccessorImpl_invoke0
Java_sun_reflect_Reflection_getCallerClass__
Java_sun_reflect_Reflection_getCallerClass__I
Java_sun_reflect_Reflection_getClassAccessFlags
Java_java_io_Console_echo
Java_java_io_Console_encoding
Java_java_io_Console_istty
Java_java_io_FileDescriptor_initIDs
Java_java_io_FileDescriptor_sync
Java_java_io_FileInputStream_close0
Java_java_io_FileOutputStream_close0
Java_java_io_FileOutputStream_initIDs
Java_java_io_FileOutputStream_open0
Java_java_io_FileOutputStream_write
Java_java_io_FileOutputStream_writeBytes
Java_java_io_RandomAccessFile_close0
Java_java_io_UnixFileSystem_canonicalize0
Java_java_io_UnixFileSystem_checkAccess
Java_java_io_UnixFileSystem_createDirectory
Java_java_io_UnixFileSystem_createFileExclusively
Java_java_io_UnixFileSystem_delete0
Java_java_io_UnixFileSystem_getBooleanAttributes0
Java_java_io_UnixFileSystem_getLastModifiedTime
Java_java_io_UnixFileSystem_getLength
Java_java_io_UnixFileSystem_getSpace
Java_java_io_UnixFileSystem_initIDs
Java_java_io_UnixFileSystem_list
Java_java_io_UnixFileSystem_rename0
Java_java_io_UnixFileSystem_setLastModifiedTime
Java_java_io_UnixFileSystem_setPermission
Java_java_io_UnixFileSystem_setReadOnly
Java_java_lang_ProcessEnvironment_environ
Java_java_lang_UNIXProcess_destroyProcess
Java_java_lang_UNIXProcess_forkAndExec
Java_java_lang_UNIXProcess_init
Java_java_lang_UNIXProcess_waitForProcessExit
Java_sun_net_ExtendedOptionsImpl_flowSupported
Java_sun_net_ExtendedOptionsImpl_getFlowOption
Java_sun_net_ExtendedOptionsImpl_init
Java_sun_net_ExtendedOptionsImpl_setFlowOption
Java_java_net_Inet4AddressImpl_getHostByAddr
Java_java_net_Inet4AddressImpl_getLocalHostName
Java_java_net_Inet4AddressImpl_isReachable0
Java_java_net_Inet4AddressImpl_lookupAllHostAddr
Java_java_net_Inet6AddressImpl_getHostByAddr
Java_java_net_Inet6AddressImpl_getLocalHostName
Java_java_net_Inet6AddressImpl_isReachable0
Java_java_net_Inet6AddressImpl_lookupAllHostAddr
Java_java_net_InetAddressImplFactory_isIPv6Supported
Java_java_net_NetworkInterface_getAll
Java_java_net_NetworkInterface_getByIndex0
Java_java_net_NetworkInterface_getByInetAddress0
Java_java_net_NetworkInterface_getByName0
Java_java_net_NetworkInterface_getMacAddr0
Java_java_net_NetworkInterface_getMTU0
Java_java_net_NetworkInterface_init
Java_java_net_NetworkInterface_isLoopback0
Java_java_net_NetworkInterface_isP2P0
Java_java_net_NetworkInterface_isUp0
Java_java_net_NetworkInterface_supportsMulticast0
Java_java_net_PlainDatagramSocketImpl_bind0
Java_java_net_PlainDatagramSocketImpl_connect0
Java_java_net_PlainDatagramSocketImpl_dataAvailable
Java_java_net_PlainDatagramSocketImpl_datagramSocketClose
Java_java_net_PlainDatagramSocketImpl_datagramSocketCreate
Java_java_net_PlainDatagramSocketImpl_disconnect0
Java_java_net_PlainDatagramSocketImpl_getTimeToLive
Java_java_net_PlainDatagramSocketImpl_getTTL
Java_java_net_PlainDatagramSocketImpl_init
Java_java_net_PlainDatagramSocketImpl_join
Java_java_net_PlainDatagramSocketImpl_leave
Java_java_net_PlainDatagramSocketImpl_peek
Java_java_net_PlainDatagramSocketImpl_peekData
Java_java_net_PlainDatagramSocketImpl_receive0
Java_java_net_PlainDatagramSocketImpl_send
Java_java_net_PlainDatagramSocketImpl_setTimeToLive
Java_java_net_PlainDatagramSocketImpl_setTTL
Java_java_net_PlainDatagramSocketImpl_socketGetOption
Java_java_net_PlainDatagramSocketImpl_socketSetOption0
Java_java_net_PlainSocketImpl_initProto
Java_java_net_PlainSocketImpl_socketAccept
Java_java_net_PlainSocketImpl_socketAvailable
Java_java_net_PlainSocketImpl_socketBind
Java_java_net_PlainSocketImpl_socketClose0
Java_java_net_PlainSocketImpl_socketConnect
Java_java_net_PlainSocketImpl_socketCreate
Java_java_net_PlainSocketImpl_socketGetOption
Java_java_net_PlainSocketImpl_socketListen
Java_java_net_PlainSocketImpl_socketSendUrgentData
Java_java_net_PlainSocketImpl_socketSetOption0
Java_java_net_PlainSocketImpl_socketShutdown
Java_java_net_SocketInputStream_init
Java_java_net_SocketInputStream_socketRead0
Java_java_net_SocketOutputStream_init
Java_java_net_SocketOutputStream_socketWrite0
Java_java_nio_MappedByteBuffer_force0
Java_java_nio_MappedByteBuffer_isLoaded0
Java_java_nio_MappedByteBuffer_load0
Java_java_util_prefs_FileSystemPreferences_chmod
Java_java_util_prefs_FileSystemPreferences_lockFile0
Java_java_util_prefs_FileSystemPreferences_unlockFile0
Java_java_util_logging_FileHandler_isSetUID
Java_sun_net_dns_ResolverConfigurationImpl_fallbackDomain0
Java_sun_net_dns_ResolverConfigurationImpl_localDomain0
Java_sun_net_spi_DefaultProxySelector_getSystemProxy
Java_sun_net_spi_DefaultProxySelector_init
Java_sun_nio_ch_DatagramChannelImpl_disconnect0
Java_sun_nio_ch_DatagramChannelImpl_initIDs
Java_sun_nio_ch_DatagramChannelImpl_receive0
Java_sun_nio_ch_DatagramChannelImpl_send0
Java_sun_nio_ch_DatagramDispatcher_read0
Java_sun_nio_ch_DatagramDispatcher_readv0
Java_sun_nio_ch_DatagramDispatcher_write0
Java_sun_nio_ch_DatagramDispatcher_writev0
Java_sun_nio_ch_EPollArrayWrapper_epollCreate
Java_sun_nio_ch_EPollArrayWrapper_epollCtl
Java_sun_nio_ch_EPollArrayWrapper_epollWait
Java_sun_nio_ch_EPollArrayWrapper_init
Java_sun_nio_ch_EPollArrayWrapper_interrupt
Java_sun_nio_ch_EPollArrayWrapper_offsetofData
Java_sun_nio_ch_EPollArrayWrapper_sizeofEPollEvent
Java_sun_nio_ch_FileChannelImpl_close0
Java_sun_nio_ch_FileChannelImpl_initIDs
Java_sun_nio_ch_FileChannelImpl_map0
Java_sun_nio_ch_FileChannelImpl_position0
Java_sun_nio_ch_FileChannelImpl_transferTo0
Java_sun_nio_ch_FileChannelImpl_unmap0
Java_sun_nio_ch_FileDispatcherImpl_close0
Java_sun_nio_ch_FileDispatcherImpl_closeIntFD
Java_sun_nio_ch_FileDispatcherImpl_force0
Java_sun_nio_ch_FileDispatcherImpl_init
Java_sun_nio_ch_FileDispatcherImpl_lock0
Java_sun_nio_ch_FileDispatcherImpl_pread0
Java_sun_nio_ch_FileDispatcherImpl_preClose0
Java_sun_nio_ch_FileDispatcherImpl_pwrite0
Java_sun_nio_ch_FileDispatcherImpl_read0
Java_sun_nio_ch_FileDispatcherImpl_readv0
Java_sun_nio_ch_FileDispatcherImpl_release0
Java_sun_nio_ch_FileDispatcherImpl_size0
Java_sun_nio_ch_FileDispatcherImpl_truncate0
Java_sun_nio_ch_FileDispatcherImpl_write0
Java_sun_nio_ch_FileDispatcherImpl_writev0
Java_sun_nio_ch_FileKey_init
Java_sun_nio_ch_FileKey_initIDs
Java_sun_nio_ch_IOUtil_configureBlocking
Java_sun_nio_ch_IOUtil_drain
Java_sun_nio_ch_IOUtil_fdLimit
Java_sun_nio_ch_IOUtil_fdVal
Java_sun_nio_ch_IOUtil_initIDs
Java_sun_nio_ch_IOUtil_iovMax
Java_sun_nio_ch_IOUtil_makePipe
Java_sun_nio_ch_IOUtil_randomBytes
Java_sun_nio_ch_IOUtil_setfdVal
Java_sun_nio_ch_InheritedChannel_close0
Java_sun_nio_ch_InheritedChannel_dup
Java_sun_nio_ch_InheritedChannel_dup2
Java_sun_nio_ch_InheritedChannel_open0
Java_sun_nio_ch_InheritedChannel_peerAddress0
Java_sun_nio_ch_InheritedChannel_peerPort0
Java_sun_nio_ch_InheritedChannel_soType0
Java_sun_nio_ch_NativeThread_current
Java_sun_nio_ch_NativeThread_init
Java_sun_nio_ch_NativeThread_signal
Java_sun_nio_ch_Net_bind0
Java_sun_nio_ch_Net_blockOrUnblock4
Java_sun_nio_ch_Net_blockOrUnblock6
Java_sun_nio_ch_Net_canIPv6SocketJoinIPv4Group0
Java_sun_nio_ch_Net_canJoin6WithIPv4Group0
Java_sun_nio_ch_Net_connect0
Java_sun_nio_ch_Net_getInterface4
Java_sun_nio_ch_Net_getInterface6
Java_sun_nio_ch_Net_getIntOption0
Java_sun_nio_ch_Net_initIDs
Java_sun_nio_ch_Net_isExclusiveBindAvailable
Java_sun_nio_ch_Net_isIPv6Available0
Java_sun_nio_ch_Net_joinOrDrop4
Java_sun_nio_ch_Net_joinOrDrop6
Java_sun_nio_ch_Net_listen
Java_sun_nio_ch_Net_localInetAddress
Java_sun_nio_ch_Net_localPort
Java_sun_nio_ch_Net_poll
Java_sun_nio_ch_Net_pollconnValue
Java_sun_nio_ch_Net_pollerrValue
Java_sun_nio_ch_Net_pollhupValue
Java_sun_nio_ch_Net_pollinValue
Java_sun_nio_ch_Net_pollnvalValue
Java_sun_nio_ch_Net_polloutValue
Java_sun_nio_ch_Net_setInterface4
Java_sun_nio_ch_Net_setInterface6
Java_sun_nio_ch_Net_setIntOption0
Java_sun_nio_ch_Net_shutdown
Java_sun_nio_ch_Net_socket0
Java_sun_nio_ch_PollArrayWrapper_interrupt
Java_sun_nio_ch_PollArrayWrapper_poll0
Java_sun_nio_ch_ServerSocketChannelImpl_accept0
Java_sun_nio_ch_ServerSocketChannelImpl_initIDs
Java_sun_nio_ch_SocketChannelImpl_checkConnect
Java_sun_nio_ch_SocketChannelImpl_sendOutOfBandData
Java_sun_nio_fs_UnixNativeDispatcher_access0
Java_sun_nio_fs_UnixNativeDispatcher_chmod0
Java_sun_nio_fs_UnixNativeDispatcher_chown0
Java_sun_nio_fs_UnixNativeDispatcher_close
Java_sun_nio_fs_UnixNativeDispatcher_closedir
Java_sun_nio_fs_UnixNativeDispatcher_dup
Java_sun_nio_fs_UnixNativeDispatcher_fchmod
Java_sun_nio_fs_UnixNativeDispatcher_fchown
Java_sun_nio_fs_UnixNativeDispatcher_fclose
Java_sun_nio_fs_UnixNativeDispatcher_fdopendir
Java_sun_nio_fs_UnixNativeDispatcher_fopen0
Java_sun_nio_fs_UnixNativeDispatcher_fpathconf
Java_sun_nio_fs_UnixNativeDispatcher_fstat
Java_sun_nio_fs_UnixNativeDispatcher_fstatat0
Java_sun_nio_fs_UnixNativeDispatcher_futimes
Java_sun_nio_fs_UnixNativeDispatcher_getcwd
Java_sun_nio_fs_UnixNativeDispatcher_getgrgid
Java_sun_nio_fs_UnixNativeDispatcher_getgrnam0
Java_sun_nio_fs_UnixNativeDispatcher_getpwnam0
Java_sun_nio_fs_UnixNativeDispatcher_getpwuid
Java_sun_nio_fs_UnixNativeDispatcher_init
Java_sun_nio_fs_UnixNativeDispatcher_lchown0
Java_sun_nio_fs_UnixNativeDispatcher_link0
Java_sun_nio_fs_UnixNativeDispatcher_lstat0
Java_sun_nio_fs_UnixNativeDispatcher_mkdir0
Java_sun_nio_fs_UnixNativeDispatcher_mknod0
Java_sun_nio_fs_UnixNativeDispatcher_open0
Java_sun_nio_fs_UnixNativeDispatcher_openat0
Java_sun_nio_fs_UnixNativeDispatcher_opendir0
Java_sun_nio_fs_UnixNativeDispatcher_pathconf0
Java_sun_nio_fs_UnixNativeDispatcher_read
Java_sun_nio_fs_UnixNativeDispatcher_readdir
Java_sun_nio_fs_UnixNativeDispatcher_readlink0
Java_sun_nio_fs_UnixNativeDispatcher_realpath0
Java_sun_nio_fs_UnixNativeDispatcher_rename0
Java_sun_nio_fs_UnixNativeDispatcher_renameat0
Java_sun_nio_fs_UnixNativeDispatcher_rmdir0
Java_sun_nio_fs_UnixNativeDispatcher_stat0
Java_sun_nio_fs_UnixNativeDispatcher_statvfs0
Java_sun_nio_fs_UnixNativeDispatcher_strerror
Java_sun_nio_fs_UnixNativeDispatcher_symlink0
Java_sun_nio_fs_UnixNativeDispatcher_unlink0
Java_sun_nio_fs_UnixNativeDispatcher_unlinkat0
Java_sun_nio_fs_UnixNativeDispatcher_utimes0
Java_sun_nio_fs_UnixNativeDispatcher_write

View File

@ -0,0 +1,21 @@
#!/usr/bin/env python
# Generate a static symbol table suitable for an environment with no runtime dynamic linker.
# The table must be sorted as we scan it using a binary search.
import os
cmd = "nm --defined-only ../../../build/linux-x86_64-debug-openjdk-src/libavian.a | awk '{print $3}' | egrep '^(Avian|Java|JVM)_.*'"
fname = "dispatch_table.txt"
os.system("echo '# This file lists all the JNI symbols that can be looked up. It was generated by gen_dispatch_table.py' >%s; %s >> %s" % (fname, cmd, fname))
entries = [l.strip() for l in open(fname, "r").readlines() if not l.startswith("#")]
entries.sort()
template_lines = file("dispatch_table.cpp.template").readlines()
externs_index = template_lines.index("// EXTERNS HERE\n")
externs = ["void %s();\n" % entry for entry in entries]
template_lines[externs_index:externs_index + 1] = externs
dispatch_entries = ["{ \"%s\", vm::voidPointer(%s) },\n" % (e, e) for e in entries]
dispatch_entries_index = template_lines.index("// ENTRIES HERE\n")
template_lines[dispatch_entries_index:dispatch_entries_index + 1] = dispatch_entries
file("dispatch_table.cpp", "w").writelines(template_lines)

23
src/system/sgx/memory.cpp Normal file
View File

@ -0,0 +1,23 @@
#include <avian/system/memory.h>
#include <avian/util/assert.h>
namespace avian {
namespace system {
util::Slice<uint8_t> Memory::allocate(size_t sizeInBytes, Permissions)
{
void* p = malloc(sizeInBytes);
if (p == NULL) {
return util::Slice<uint8_t>(0, 0);
} else {
return util::Slice<uint8_t>(static_cast<uint8_t*>(p), sizeInBytes);
}
}
void Memory::free(util::Slice<uint8_t> slice)
{
::free(slice.begin());
}
} // namespace system
} // namespace avian

34
src/system/sgx/signal.cpp Normal file
View File

@ -0,0 +1,34 @@
#include "avian/arch.h"
#include <avian/system/system.h>
#include <avian/system/signal.h>
extern "C" {
void debug_print(const char *msg);
}
namespace avian {
namespace system {
SignalRegistrar::SignalRegistrar()
{
}
SignalRegistrar::~SignalRegistrar()
{
}
bool SignalRegistrar::registerHandler(Signal signal UNUSED, Handler* handler UNUSED)
{
return true;
}
bool SignalRegistrar::unregisterHandler(Signal signal UNUSED)
{
return true;
}
void SignalRegistrar::setCrashDumpDirectory(const char*)
{
}
} // namespace system
} // namespace avian