| /* 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}; |