| /* libgcj_bc.c */ |
| |
| /* Copyright (C) 2006, 2009 Free Software Foundation |
| |
| This file is part of libgcj. |
| |
| This software is copyrighted work licensed under the terms of the |
| Libgcj License. Please consult the file "LIBGCJ_LICENSE" for |
| details. */ |
| |
| /* This file is used to build libgcj_bc.so, a 'fake' library that is |
| used at link time only. It ensures that binaries built with the |
| BC-ABI link against a constant SONAME. This way, BC-ABI binaries |
| continue to work if the SONAME underlying libgcj.so changes. */ |
| |
| #include <stdlib.h> |
| #include <stdio.h> |
| |
| static void print_wrong_lib_msg () |
| { |
| fprintf (stderr, "libgcj error: \ |
| This is libgcj_bc.so, a fake library used only for linking.\n\ |
| Please create a symlink from libgcj_bc.so.1 to the real libgcj.so.\n"); |
| exit (1); |
| } |
| |
| /* Functions called from code generated by gcj. */ |
| |
| void _Jv_AllocObject () {} |
| void _Jv_AllocObjectNoFinalizer () {} |
| void _Jv_CheckArrayStore () {} |
| void _Jv_CheckCast () {} |
| void _Jv_InitClass () {} |
| void _Jv_IsInstanceOf () {} |
| void _Jv_LookupInterfaceMethod () {} |
| void _Jv_LookupInterfaceMethodIdx () {} |
| void _Jv_MonitorEnter () {} |
| void _Jv_MonitorExit () {} |
| void _Jv_NewMultiArray () {} |
| void _Jv_NewObjectArray () {} |
| void _Jv_NewPrimArray () {} |
| void _Jv_RegisterResource () {} |
| void _Jv_ResolvePoolEntry () {} |
| void _Jv_Throw () {} |
| void _Jv_ThrowAbstractMethodError () {} |
| void _Jv_ThrowBadArrayIndex () {} |
| void _Jv_ThrowNoSuchFieldError () {} |
| void _Jv_ThrowNullPointerException () {} |
| void __gcj_personality_v0 () {} |
| |
| void _Jv_RegisterClasses () |
| { |
| print_wrong_lib_msg (); |
| } |
| |
| void _Jv_RegisterNewClasses () |
| { |
| print_wrong_lib_msg (); |
| } |
| |
| /* Symbols used by jvgenmain (-fmain). */ |
| |
| void JvRunMain () {} |
| void JvRunMainName () {} |
| const char **_Jv_Compiler_Properties; |
| |
| /* Functions used by -fjni. */ |
| |
| void _Jv_GetJNIEnvNewFrame () {} |
| void _Jv_LookupJNIMethod () {} |
| void _Jv_UnwrapJNIweakReference () {} |
| void _Jv_JNI_PopSystemFrame () {} |
| |
| |
| /* Checked divide (-fuse-divide-subroutine). */ |
| |
| void _Jv_divI () {} |
| void _Jv_divJ () {} |
| void _Jv_remI () {} |
| void _Jv_remJ () {} |
| |
| |
| /* CNI Functions. */ |
| |
| void _Jv_AllocBytes () {} |
| void _Jv_AllocString () {} |
| void _Jv_AttachCurrentThread () {} |
| void _Jv_AttachCurrentThreadAsDaemon () {} |
| void _Jv_CreateJavaVM () {} |
| void _Jv_DetachCurrentThread () {} |
| void _Jv_Free () {} |
| void _Jv_GetStringUTFLength () {} |
| void _Jv_GetStringUTFRegion () {} |
| void _Jv_Malloc () {} |
| void _Jv_NewString () {} |
| void _Jv_NewStringLatin1 () {} |
| void _Jv_NewStringUTF () {} |
| void _Jv_Realloc () {} |
| |
| |
| /* Classes for primitive types. */ |
| |
| #define DECLARE_PRIM_TYPE(NAME) \ |
| int _Jv_##NAME##Class; |
| |
| DECLARE_PRIM_TYPE(byte) |
| DECLARE_PRIM_TYPE(short) |
| DECLARE_PRIM_TYPE(int) |
| DECLARE_PRIM_TYPE(long) |
| DECLARE_PRIM_TYPE(boolean) |
| DECLARE_PRIM_TYPE(char) |
| DECLARE_PRIM_TYPE(float) |
| DECLARE_PRIM_TYPE(double) |
| DECLARE_PRIM_TYPE(void) |
| |
| |
| /* Force executable to export __data_start et al. */ |
| |
| #pragma weak __data_start |
| extern int __data_start[]; |
| #pragma weak data_start |
| extern int data_start[]; |
| #pragma weak _end |
| extern int _end[]; |
| static void *dummy[] __attribute__((used)) = {__data_start, data_start, _end}; |