OSDN Git Service

(LibGoblin)
authorKoine Yuusuke(koinec) <koinec@users.osdn.me>
Wed, 2 Oct 2019 11:33:27 +0000 (20:33 +0900)
committerKoine Yuusuke(koinec) <koinec@users.osdn.me>
Wed, 2 Oct 2019 11:33:27 +0000 (20:33 +0900)
  * WorkBackup

libgoblin/Makefile
libgoblin/drd64_libgoblin.h
libgoblin/drd64_libgoblin_objinfo.c
libgoblin/drd64_libgoblin_objinfo.h
libgoblin/drd64_libgoblin_objinfo_search.c [new file with mode: 0644]
libgoblin/drd64_libgoblin_objinfo_search.h [new file with mode: 0644]

index 6d6aaa4..9b591d1 100644 (file)
@@ -57,6 +57,7 @@ OBJS = drd64_libgoblin_api.o \
                drd64_libgoblin_readbin.o \
                drd64_libgoblin_loadprog.o \
                drd64_libgoblin_objinfo.o \
+               drd64_libgoblin_objinfo_search.o \
                drd64_libgoblin_objinfo_postproc.o \
                drd64_libgoblin_section.o \
                drd64_libgoblin_elf.o \
@@ -105,6 +106,7 @@ HEADER = drd64_libgoblin.h \
                drd64_libgoblin_readbin.h \
                drd64_libgoblin_loadprog.h \
                drd64_libgoblin_objinfo.h \
+               drd64_libgoblin_objinfo_search.h \
                drd64_libgoblin_objinfo_postproc.h \
                drd64_libgoblin_section.h \
                drd64_libgoblin_elf.h \
@@ -207,6 +209,9 @@ drd64_libgoblin_loadprog.o: drd64_libgoblin_loadprog.c $(HEADER)
 drd64_libgoblin_objinfo.o: drd64_libgoblin_objinfo.c $(HEADER)
        $(CC) -c -o drd64_libgoblin_objinfo.o $(FLAGS_DEBUG) \
                                drd64_libgoblin_objinfo.c
+drd64_libgoblin_objinfo_search.o: drd64_libgoblin_objinfo_search.c $(HEADER)
+       $(CC) -c -o drd64_libgoblin_objinfo_search.o $(FLAGS_DEBUG) \
+                               drd64_libgoblin_objinfo_search.c
 drd64_libgoblin_objinfo_postproc.o: drd64_libgoblin_objinfo_postproc.c $(HEADER)
        $(CC) -c -o drd64_libgoblin_objinfo_postproc.o $(FLAGS_DEBUG) \
                                drd64_libgoblin_objinfo_postproc.c
index 478d574..51cce94 100644 (file)
@@ -83,6 +83,7 @@ Comment:
 #include"drd64_libgoblin_loadprog.h"
 #include"drd64_libgoblin_section.h"
 #include"drd64_libgoblin_objinfo.h"
+#include"drd64_libgoblin_objinfo_search.h"
 #include"drd64_libgoblin_objinfo_postproc.h"
 #include"drd64_libgoblin_elf.h"
 #include"drd64_libgoblin_elf_dynamic.h"
@@ -120,12 +121,13 @@ Comment:
 #include"drd64_libgoblin_debug_objinfo.h"
 
 // Defines LibGoblin SourceFileID for ErrorSystem ---
-#define        DRD64_SRCID_LIBGOBLIN_API                       0x01
-#define        DRD64_SRCID_LIBGOBLIN_PROGINFO          0x11
-#define        DRD64_SRCID_LIBGOBLIN_BINARYINFO        0x12
-#define        DRD64_SRCID_LIBGOBLIN_BINARYFILE        0x13
-#define        DRD64_SRCID_LIBGOBLIN_SRCFILE           0x14
-#define        DRD64_SRCID_LIBGOBLIN_OBJINFO           0x15
+#define        DRD64_SRCID_LIBGOBLIN_API                               0x01
+#define        DRD64_SRCID_LIBGOBLIN_PROGINFO                  0x11
+#define        DRD64_SRCID_LIBGOBLIN_BINARYINFO                0x12
+#define        DRD64_SRCID_LIBGOBLIN_BINARYFILE                0x13
+#define        DRD64_SRCID_LIBGOBLIN_SRCFILE                   0x14
+#define        DRD64_SRCID_LIBGOBLIN_OBJINFO                   0x15
+#define        DRD64_SRCID_LIBGOBLIN_OBJINFO_SEARCH    0x16
 
 #endif /* DRD64_HEADER_LIBGOBLIN_MAIN */
 
index 4ec9c01..450e084 100644 (file)
@@ -492,97 +492,6 @@ goto_ObjectInfo_InsetObject_post:
 
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
-#define        FUNCID_LibGoblin_ObjectInfo_SearchAddressSize   0x41
-LIBGOBLIN_OBJINFO_EXTERN
-LibGoblin_ObjectInfo *
-       ObjectInfo_SearchAddressSize(
-                       LibGoblin_ProgramInfo   *p_pginfo,
-                       PtrValue                                ptr_value,
-                       QWord                                   qw_size )
-{
-       LibGoblin_ObjectInfo    *p_objnow;
-       LibGoblin_ObjectInfo    *p_objret       = NULL;
-
-       // Check exist MasterObject ---
-       if( NO_OBJ == p_pginfo->objinfo.i_topid )
-               { goto  goto_ObjectInfo_SearchObjectInfo_post; }
-
-
-       // Search ObjectInfo Inset Location. (Address Order)---
-       p_objnow        = OBJINFO( p_pginfo, p_pginfo->objinfo.i_topid );
-       assert( NULL != p_objnow );
-
-       do      {
-               if( p_objnow->addr.ptr_addr.value > ptr_value )
-                       { break; }
-               else if( p_objnow->addr.ptr_addr.value == ptr_value )   {
-                       if(( 0 == qw_size )
-                                       || (( 0 < qw_size ) && ( p_objnow->addr.qw_size == qw_size )))  {
-                               p_objret        = p_objnow;
-                               break;
-                       }
-               }
-               
-               p_objnow        = ((NO_OBJ != p_objnow->addrlink.i_next_id)
-                                               ? OBJINFO( p_pginfo, p_objnow->addrlink.i_next_id ) : NULL );
-       }while( NULL != p_objnow );
-
-       goto_ObjectInfo_SearchObjectInfo_post:
-       return p_objret;
-}
-
-
-/*----------------------------------------------------------------------
-----------------------------------------------------------------------*/
-#define        FUNCID_LibGoblin_ObjectInfo_SearchDynamicSymbol 0x42
-LIBGOBLIN_OBJINFO_EXTERN
-LibGoblin_ObjectInfo *
-       ObjectInfo_SearchDynamicSymbol(
-                       LibGoblin_ProgramInfo   *p_pginfo,
-                       PtrValue                                ptr_value,
-                       char                                    *pstr_symname,
-                       DWord                                   dw_status )
-{
-       LibGoblin_ObjectInfo    *p_objnow;
-       LibGoblin_ObjectInfo    *p_objret       = NULL;
-       DWord                                   dw_hash;
-
-       // Check exist MasterObject ---
-       if( NO_OBJ == p_pginfo->objinfo.i_topid )
-               { goto  goto_ObjectInfo_SearchDynamicSymbol_post; }
-
-
-       // Search ObjectInfo Inset Location. (Address Order)---
-       p_objnow        = OBJINFO( p_pginfo, p_pginfo->objinfo.i_topid );
-       assert( NULL != p_objnow );
-
-       dw_hash = Common_CalcDJBhash( pstr_symname );
-
-       do      {
-               if( p_objnow->addr.ptr_addr.value > ptr_value )
-                       { break; }
-               else if( p_objnow->addr.ptr_addr.value == ptr_value )   {
-                       if( dw_hash == p_objnow->dw_hash )      {
-                               if(( 0x00 == dw_status ) || ( p_objnow->dw_status & dw_status ))        {
-                                       if( !strncmp( pstr_symname, p_objnow->pstr_name, 256 ) )        {
-                                               p_objret        = p_objnow;
-                                               break;
-                                       }
-                               }
-                       }
-               }
-               
-               p_objnow        = ((NO_OBJ != p_objnow->addrlink.i_next_id)
-                                               ? OBJINFO( p_pginfo, p_objnow->addrlink.i_next_id ) : NULL );
-       }while( NULL != p_objnow );
-
-goto_ObjectInfo_SearchDynamicSymbol_post:
-       return p_objret;
-}
-
-
-/*----------------------------------------------------------------------
-----------------------------------------------------------------------*/
 #define        FUNCID_LibGoblin_ObjectInfo_FreeObjectInfo      0x12
 LIBGOBLIN_OBJINFO_EXTERN
 int
index 8f66820..eba768c 100644 (file)
@@ -85,12 +85,6 @@ LIBGOBLIN_OBJINFO_EXTERN
                        LibGoblin_ProgramInfo *p_pginfo, PtrValue ptr_value, QWord qw_size,
             LibGoblin_ObjectInfo *p_parent, Byte b_mode, Byte b_type );
 LIBGOBLIN_OBJINFO_EXTERN
-       LibGoblin_ObjectInfo *ObjectInfo_SearchAddressSize(
-                       LibGoblin_ProgramInfo *p_pginfo, PtrValue ptr_value, QWord qw_size );
-LIBGOBLIN_OBJINFO_EXTERN
-       LibGoblin_ObjectInfo *ObjectInfo_SearchDynamicSymbol(
-                       LibGoblin_ProgramInfo *p_pginfo, PtrValue ptr_value, char *pstr_symname, DWord dw_status );
-LIBGOBLIN_OBJINFO_EXTERN
        int ObjectInfo_FreeObjectInfo( LibGoblin_ProgramInfo *p_pginfo, LibGoblin_ObjectInfo *p_binfo );
 LIBGOBLIN_OBJINFO_EXTERN
        int ObjectInfo_DeleteObjectInfo(
diff --git a/libgoblin/drd64_libgoblin_objinfo_search.c b/libgoblin/drd64_libgoblin_objinfo_search.c
new file mode 100644 (file)
index 0000000..baba18d
--- /dev/null
@@ -0,0 +1,135 @@
+/*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
+
+                         D r . D e a m o n  6 4
+                        for INTEL64(R), AMD64(R)
+       
+   Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
+
+/* File Info -----------------------------------------------------------
+File: drd64_.c
+Function: 
+Comment: 
+----------------------------------------------------------------------*/
+
+#define        DRD64_SRC_LIBGOBLIN_OBJINFO_SEARCH
+#include"drd64_libgoblin.h"
+
+#define LOCATION(n) DRD64_ERR_LOCATION( \
+                                               DRD64_ERROR_MODULE_LIBGOBLIN, DRD64_ERROR_ARCH_NODEPEND, \
+                                               DRD64_SRCID_LIBGOBLIN_OBJINFO_SEARCH, (n))
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+#define        FUNCID_LibGoblin_ObjectInfo_SearchAddressSize   0x41
+LIBGOBLIN_OBJINFO_SEARCH_EXTERN
+LibGoblin_ObjectInfo *
+       ObjectInfo_SearchAddressSize(
+                       LibGoblin_ProgramInfo   *p_pginfo,
+                       PtrValue                                ptr_value,
+                       QWord                                   qw_size )
+{
+       LibGoblin_ObjectInfo    *p_objnow;
+       LibGoblin_ObjectInfo    *p_objret       = NULL;
+
+       // Check exist MasterObject ---
+       if( NO_OBJ == p_pginfo->objinfo.i_topid )
+               { goto  goto_ObjectInfo_SearchObjectInfo_post; }
+
+
+       // Search ObjectInfo Inset Location. (Address Order)---
+       p_objnow        = OBJINFO( p_pginfo, p_pginfo->objinfo.i_topid );
+       assert( NULL != p_objnow );
+
+       do      {
+               if( p_objnow->addr.ptr_addr.value > ptr_value )
+                       { break; }
+               else if( p_objnow->addr.ptr_addr.value == ptr_value )   {
+                       if(( 0 == qw_size )
+                                       || (( 0 < qw_size ) && ( p_objnow->addr.qw_size == qw_size )))  {
+                               p_objret        = p_objnow;
+                               break;
+                       }
+               }
+               
+               p_objnow        = ((NO_OBJ != p_objnow->addrlink.i_next_id)
+                                               ? OBJINFO( p_pginfo, p_objnow->addrlink.i_next_id ) : NULL );
+       }while( NULL != p_objnow );
+
+       goto_ObjectInfo_SearchObjectInfo_post:
+       return p_objret;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+#define        FUNCID_LibGoblin_ObjectInfo_SearchDynamicSymbol 0x42
+LIBGOBLIN_OBJINFO_SEARCH_EXTERN
+LibGoblin_ObjectInfo *
+       ObjectInfo_SearchDynamicSymbol(
+                       LibGoblin_ProgramInfo   *p_pginfo,
+                       PtrValue                                ptr_value,
+                       char                                    *pstr_symname,
+                       DWord                                   dw_status )
+{
+       LibGoblin_ObjectInfo    *p_objnow;
+       LibGoblin_ObjectInfo    *p_objret       = NULL;
+       DWord                                   dw_hash;
+
+       // Check exist MasterObject ---
+       if( NO_OBJ == p_pginfo->objinfo.i_topid )
+               { goto  goto_ObjectInfo_SearchDynamicSymbol_post; }
+
+
+       // Search ObjectInfo Inset Location. (Address Order)---
+       p_objnow        = OBJINFO( p_pginfo, p_pginfo->objinfo.i_topid );
+       assert( NULL != p_objnow );
+
+       dw_hash = Common_CalcDJBhash( pstr_symname );
+
+       do      {
+               if( p_objnow->addr.ptr_addr.value > ptr_value )
+                       { break; }
+               else if( p_objnow->addr.ptr_addr.value == ptr_value )   {
+                       if( dw_hash == p_objnow->dw_hash )      {
+                               if(( 0x00 == dw_status ) || ( p_objnow->dw_status & dw_status ))        {
+                                       if( !strncmp( pstr_symname, p_objnow->pstr_name, 256 ) )        {
+                                               p_objret        = p_objnow;
+                                               break;
+                                       }
+                               }
+                       }
+               }
+               
+               p_objnow        = ((NO_OBJ != p_objnow->addrlink.i_next_id)
+                                               ? OBJINFO( p_pginfo, p_objnow->addrlink.i_next_id ) : NULL );
+       }while( NULL != p_objnow );
+
+goto_ObjectInfo_SearchDynamicSymbol_post:
+       return p_objret;
+}
+
+
+/* EOF of drd64_.c ----------------------------------- */
diff --git a/libgoblin/drd64_libgoblin_objinfo_search.h b/libgoblin/drd64_libgoblin_objinfo_search.h
new file mode 100644 (file)
index 0000000..bd041d0
--- /dev/null
@@ -0,0 +1,59 @@
+/*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
+
+                         D r . D e a m o n  6 4
+                        for INTEL64(R), AMD64(R)
+       
+   Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
+
+/* File Info -----------------------------------------------------------
+File: drd64_.h
+Function: Header 
+Comment: 
+----------------------------------------------------------------------*/
+
+#ifndef DRD64_HEADER_LIBGOBLIN_OBJINFO_SEARCH
+#define DRD64_HEADER_LIBGOBLIN_OBJINFO_SEARCH
+
+#include"drd64_libgoblin.h"
+
+#ifdef DRD64_SRC_LIBGOBLIN_OBJINFO_SEARCH
+       #define LIBGOBLIN_OBJINFO_SEARCH_EXTERN
+#else
+       #define LIBGOBLIN_OBJINFO_SEARCH_EXTERN extern
+#endif
+
+
+LIBGOBLIN_OBJINFO_SEARCH_EXTERN
+       LibGoblin_ObjectInfo *ObjectInfo_SearchAddressSize(
+                       LibGoblin_ProgramInfo *p_pginfo, PtrValue ptr_value, QWord qw_size );
+LIBGOBLIN_OBJINFO_SEARCH_EXTERN
+       LibGoblin_ObjectInfo *ObjectInfo_SearchDynamicSymbol(
+                       LibGoblin_ProgramInfo *p_pginfo, PtrValue ptr_value, char *pstr_symname, DWord dw_status );
+
+
+#endif /* DRD64_HEADER_LIBGOBLIN_OBJINFO_SEARCH */
+
+/* EOF of drd64_.h ----------------------------------- */