OSDN Git Service

2019/04/11(Thr) 05:51
authorKoine Yuusuke(koinec) <koinec@users.osdn.me>
Wed, 10 Apr 2019 20:51:32 +0000 (05:51 +0900)
committerKoine Yuusuke(koinec) <koinec@users.osdn.me>
Wed, 10 Apr 2019 20:51:32 +0000 (05:51 +0900)
 (LibGoblin)
  * WorkBackup (working for support ErrorSystem with libbrownie)

libgoblin/Makefile
libgoblin/drd64_libgoblin.h
libgoblin/drd64_libgoblin_api.c

index 39fbd42..23629a5 100644 (file)
@@ -108,7 +108,8 @@ HEADER = drd64_libgoblin.h \
                drd64_libgoblin_debug_objinfo.h \
                drd64_libgoblin_addrinfo.h \
                $(USER_HEADER) $(SUPER_HEADER) $(LIB_HEADER) 
-LIBRARY = ../libfiletype.a
+LIBRARY = ../libfiletype.a \
+                       ../libbrownie.a
 
 TEST_FLAGS_COMPILE = -I/usr/local/include
 TEST_FLAGS_LINKER = -L/usr/local/lib -lcunit -L.. -lfiletype -lbrownie
@@ -136,7 +137,7 @@ test:       $(TEST_TARGET) $(TESTPROG)
 
 
 $(TARGET): $(OBJS) $(LIB_OBJS)
-       ar rv $(TARGET) $(OBJS)
+       ar rv $(TARGET) $(OBJS) $(LIBRARY)
        ranlib $(TARGET)
        cp $(TARGET) ..
 
@@ -273,6 +274,9 @@ test_libgoblin_readbin.o: test_libgoblin_readbin.c $(HEADER) $(TEST_HEADER)
 ../libfiletype.a:
        $(MAKE) -C ../libfiletype all
 
+../libbrownie.a:
+       $(MAKE) -C ../libbrownie all
+
 
 $(TEST_TARGET): $(TEST_OBJS) $(TARGET) $(LIBRARY)
        $(CC) -o $(TEST_TARGET) $(FLAGS_DEBUG) $(TEST_OBJS) $(TARGET) $(TEST_FLAGS_LINKER)
index 445cd59..b9452a8 100644 (file)
@@ -45,6 +45,7 @@ Comment:
 #include<unistd.h>
 #include<assert.h>
 #include<libgen.h>
+#include<errno.h>
 #include<sys/param.h>
 #include<sys/limits.h>
 
@@ -68,6 +69,7 @@ Comment:
 #include"../include/drd64_conf.h"
 #include"../include/libgoblin.h"
 #include"../include/libfiletype.h"
+#include"../include/libbrownie.h"
 #include"drd64_libgoblin_section_defs.h"
 #include"drd64_libgoblin_type.h"
 #include"drd64_libgoblin_proginfo.h"
@@ -99,6 +101,9 @@ Comment:
 #include"drd64_libgoblin_debug_elf.h"
 #include"drd64_libgoblin_debug_objinfo.h"
 
+// Defines LibGoblin SourceFileID for ErrorSystem ---
+#define        DRD64_SRCID_LIBGOBLIN_API               0x01
+
 #endif /* DRD64_HEADER_LIBGOBLIN_MAIN */
 
 /* EOF of drd64_.h ----------------------------------- */
index 0ea47a3..0928ded 100644 (file)
@@ -38,6 +38,10 @@ Comment:
 #include"drd64_libgoblin.h"
 
 
+#define        LOCATION(n) DRD64_ERR_LOCATION( \
+                                               DRD64_ERROR_MODULE_LIBGOBLIN, DRD64_ERROR_ARCH_NODEPEND, \
+                                               DRD64_SRCID_LIBGOBLIN_API, (n))
+
 /***********************************************************************
 ***********************************************************************/
 LIBGOBLIN_API
@@ -318,9 +322,9 @@ int
        return 0x00;
 }
 
-
 /***********************************************************************
 ***********************************************************************/
+#define        FUNCID_LibGoblin_Init   0x01
 LIBGOBLIN_API
 int
        LibGoblin_Init(
@@ -328,14 +332,35 @@ int
 {
        int             i_err;
        
-       i_err   = LibFileType_Init();
+       i_err   = LibBrownie_Init();
        if( 0x00 != i_err )             { return i_err; }
 
+       i_err   = LibFileType_Init();
+       if( 0x00 != i_err )             {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_LIBCALL, 0x01, 0x01 ),
+                               LOCATION( FUNCID_LibGoblin_Init ),
+                               errno, (QWord)i_err, (QWord)0x00, __LINE__ );
+               return i_err;
+       }
+
        i_err   = ProgInfo_Init();
-       if( 0x00 != i_err )             { return i_err; }
+       if( 0x00 != i_err )             {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_LIBCALL, 0x01, 0x02 ),
+                               LOCATION( FUNCID_LibGoblin_Init ),
+                               errno, (QWord)i_err, (QWord)0x00, __LINE__ );
+               return i_err;
+       }
 
        i_err   = BinaryInfo_Init();
-       if( 0x00 != i_err )             { return i_err; }
+       if( 0x00 != i_err )             {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_LIBCALL, 0x01, 0x03 ),
+                               LOCATION( FUNCID_LibGoblin_Init ),
+                               errno, (QWord)i_err, (QWord)0x00, __LINE__ );
+               return i_err;
+       }
 
        return 0x00;
 }
@@ -343,6 +368,7 @@ int
 
 /***********************************************************************
 ***********************************************************************/
+#define        FUNCID_LibGoblin_Term   0x02
 LIBGOBLIN_API
 int
        LibGoblin_Term(
@@ -351,13 +377,33 @@ int
        int             i_err;
 
        i_err   = BinaryInfo_Term();
-       if( 0x00 != i_err )             { return i_err; }
+       if( 0x00 != i_err )             {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_LIBCALL, 0x01, 0x01 ),
+                               LOCATION( FUNCID_LibGoblin_Term ),
+                               errno, (QWord)i_err, (QWord)0x00, __LINE__ );
+               return i_err;
+       }
 
        i_err   = ProgInfo_Term();
-       if( 0x00 != i_err )             { return i_err; }
+       if( 0x00 != i_err )             {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_LIBCALL, 0x01, 0x02 ),
+                               LOCATION( FUNCID_LibGoblin_Term ),
+                               errno, (QWord)i_err, (QWord)0x00, __LINE__ );
+               return i_err;
+       }
 
        i_err   = LibFileType_Term();
-       if( 0x00 != i_err )             { return i_err; }
+       if( 0x00 != i_err )             {
+               LibBrownie_Error_SetErrorInfo(
+                               DRD64_ERROR( DRD64_ERROR_PTN_LIBCALL, 0x01, 0x03 ),
+                               LOCATION( FUNCID_LibGoblin_Term ),
+                               errno, (QWord)i_err, (QWord)0x00, __LINE__ );
+               return i_err;
+       }
+       
+       LibBrownie_Term();
 
        return 0x00;
 }