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 \
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 \
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
#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"
#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 */
/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
-#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
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(
--- /dev/null
+/*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 ----------------------------------- */
--- /dev/null
+/*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 ----------------------------------- */