mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			126 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
| /* 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};
 |