Usermode/libc - Cleanup of source
[tpg/acess2.git] / Usermode / Libraries / libc.so_src / stub.c
index 55f4ca6..20e796e 100644 (file)
@@ -4,15 +4,25 @@
 #include "stdio_int.h"\r
 #include "lib.h"\r
 #include <stdio.h>\r
-#include <sys/sys.h>\r
+#include <acess/sys.h>\r
 \r
 #define USE_CPUID      0\r
 \r
+// === TYPES ===\r
+typedef struct {\r
+       intptr_t        Base;\r
+       char    *Name;\r
+}      tLoadedLib;\r
+\r
 // === PROTOTYPES ===\r
 #if USE_CPUID\r
 static void    cpuid(uint32_t Num, uint32_t *EAX, uint32_t *EBX, uint32_t *EDX, uint32_t *ECX);\r
 #endif\r
-void   ErrorHandler(int Fault);\r
+ int   ErrorHandler(int Fault);\r
+\r
+// === IMPORTS ===\r
+extern tLoadedLib      gLoadedLibraries[64];\r
+extern int     _SysSetFaultHandler(int (*Handler)(int));\r
 \r
 // === GLOBALS ===\r
 extern char **_envp;\r
@@ -34,10 +44,22 @@ tCPUID      gCPU_Features;
  * \param argv Unused - Arguments (NULL for current version of ld-acess)\r
  * \param envp Environment Pointer\r
  */\r
-int SoMain(unsigned int BaseAddress, int argc, char **argv, char **envp)\r
+int SoMain(UNUSED(uintptr_t, BaseAddress), UNUSED(int, argc), UNUSED(char **, argv), char **envp)\r
 {\r
        // Init for env.c\r
        _envp = envp;\r
+\r
+       #if 0   \r
+       {\r
+                int    i = 0;\r
+               char    **tmp;\r
+               _SysDebug("envp = %p", envp);\r
+               for(tmp = envp; *tmp; tmp++,i++)\r
+               {\r
+                       _SysDebug("envp[%i] = '%s'", i, *tmp);\r
+               }\r
+       }\r
+       #endif\r
        \r
        // Init FileIO Pointers\r
        stdin = &_iob[0];\r
@@ -56,14 +78,25 @@ int SoMain(unsigned int BaseAddress, int argc, char **argv, char **envp)
        }\r
        #endif\r
        \r
+       // Set Error handler\r
        _SysSetFaultHandler(ErrorHandler);\r
        \r
        return 1;\r
 }\r
 \r
-void ErrorHandler(int Fault)\r
+int ErrorHandler(int Fault)\r
 {\r
-       fprintf(stderr, "Fault = %i\n", Fault);\r
+        int    i;\r
+       fprintf(stderr, "ErrorHandler: (Fault = %i)\n", Fault);\r
+       fprintf(stderr, "Loaded Libraries:\n");\r
+       for( i = 0; i < 64; i ++ )\r
+       {\r
+               //if(gLoadedLibraries[i].Base == 0)     continue;\r
+       //      fprintf(stderr, "%02i: %p  %s\n", i, gLoadedLibraries[i].Base, gLoadedLibraries[i].Name);\r
+       }\r
+       fprintf(stderr, "\n");\r
+       exit(-1);\r
+       return -1;\r
 }\r
 \r
 #if USE_CPUID\r

UCC git Repository :: git.ucc.asn.au