• R/O
  • HTTP
  • SSH
  • HTTPS

drdeamon64: Commit

Dr.Deamon64 Git-Repository
(2014/03/01- Main-Repository: migrate from cvs)


Commit MetaInfo

Revision55e6d37252df0bd8923c7996e2e426a35845c4ce (tree)
Zeit2019-10-02 20:33:27
AutorKoine Yuusuke(koinec) <koinec@user...>
CommiterKoine Yuusuke(koinec)

Log Message

(LibGoblin)
  • WorkBackup

Ändern Zusammenfassung

Diff

--- a/libgoblin/Makefile
+++ b/libgoblin/Makefile
@@ -57,6 +57,7 @@ OBJS = drd64_libgoblin_api.o \
5757 drd64_libgoblin_readbin.o \
5858 drd64_libgoblin_loadprog.o \
5959 drd64_libgoblin_objinfo.o \
60+ drd64_libgoblin_objinfo_search.o \
6061 drd64_libgoblin_objinfo_postproc.o \
6162 drd64_libgoblin_section.o \
6263 drd64_libgoblin_elf.o \
@@ -105,6 +106,7 @@ HEADER = drd64_libgoblin.h \
105106 drd64_libgoblin_readbin.h \
106107 drd64_libgoblin_loadprog.h \
107108 drd64_libgoblin_objinfo.h \
109+ drd64_libgoblin_objinfo_search.h \
108110 drd64_libgoblin_objinfo_postproc.h \
109111 drd64_libgoblin_section.h \
110112 drd64_libgoblin_elf.h \
@@ -207,6 +209,9 @@ drd64_libgoblin_loadprog.o: drd64_libgoblin_loadprog.c $(HEADER)
207209 drd64_libgoblin_objinfo.o: drd64_libgoblin_objinfo.c $(HEADER)
208210 $(CC) -c -o drd64_libgoblin_objinfo.o $(FLAGS_DEBUG) \
209211 drd64_libgoblin_objinfo.c
212+drd64_libgoblin_objinfo_search.o: drd64_libgoblin_objinfo_search.c $(HEADER)
213+ $(CC) -c -o drd64_libgoblin_objinfo_search.o $(FLAGS_DEBUG) \
214+ drd64_libgoblin_objinfo_search.c
210215 drd64_libgoblin_objinfo_postproc.o: drd64_libgoblin_objinfo_postproc.c $(HEADER)
211216 $(CC) -c -o drd64_libgoblin_objinfo_postproc.o $(FLAGS_DEBUG) \
212217 drd64_libgoblin_objinfo_postproc.c
--- a/libgoblin/drd64_libgoblin.h
+++ b/libgoblin/drd64_libgoblin.h
@@ -83,6 +83,7 @@ Comment:
8383 #include"drd64_libgoblin_loadprog.h"
8484 #include"drd64_libgoblin_section.h"
8585 #include"drd64_libgoblin_objinfo.h"
86+#include"drd64_libgoblin_objinfo_search.h"
8687 #include"drd64_libgoblin_objinfo_postproc.h"
8788 #include"drd64_libgoblin_elf.h"
8889 #include"drd64_libgoblin_elf_dynamic.h"
@@ -120,12 +121,13 @@ Comment:
120121 #include"drd64_libgoblin_debug_objinfo.h"
121122
122123 // Defines LibGoblin SourceFileID for ErrorSystem ---
123-#define DRD64_SRCID_LIBGOBLIN_API 0x01
124-#define DRD64_SRCID_LIBGOBLIN_PROGINFO 0x11
125-#define DRD64_SRCID_LIBGOBLIN_BINARYINFO 0x12
126-#define DRD64_SRCID_LIBGOBLIN_BINARYFILE 0x13
127-#define DRD64_SRCID_LIBGOBLIN_SRCFILE 0x14
128-#define DRD64_SRCID_LIBGOBLIN_OBJINFO 0x15
124+#define DRD64_SRCID_LIBGOBLIN_API 0x01
125+#define DRD64_SRCID_LIBGOBLIN_PROGINFO 0x11
126+#define DRD64_SRCID_LIBGOBLIN_BINARYINFO 0x12
127+#define DRD64_SRCID_LIBGOBLIN_BINARYFILE 0x13
128+#define DRD64_SRCID_LIBGOBLIN_SRCFILE 0x14
129+#define DRD64_SRCID_LIBGOBLIN_OBJINFO 0x15
130+#define DRD64_SRCID_LIBGOBLIN_OBJINFO_SEARCH 0x16
129131
130132 #endif /* DRD64_HEADER_LIBGOBLIN_MAIN */
131133
--- a/libgoblin/drd64_libgoblin_objinfo.c
+++ b/libgoblin/drd64_libgoblin_objinfo.c
@@ -492,97 +492,6 @@ goto_ObjectInfo_InsetObject_post:
492492
493493 /*----------------------------------------------------------------------
494494 ----------------------------------------------------------------------*/
495-#define FUNCID_LibGoblin_ObjectInfo_SearchAddressSize 0x41
496-LIBGOBLIN_OBJINFO_EXTERN
497-LibGoblin_ObjectInfo *
498- ObjectInfo_SearchAddressSize(
499- LibGoblin_ProgramInfo *p_pginfo,
500- PtrValue ptr_value,
501- QWord qw_size )
502-{
503- LibGoblin_ObjectInfo *p_objnow;
504- LibGoblin_ObjectInfo *p_objret = NULL;
505-
506- // Check exist MasterObject ---
507- if( NO_OBJ == p_pginfo->objinfo.i_topid )
508- { goto goto_ObjectInfo_SearchObjectInfo_post; }
509-
510-
511- // Search ObjectInfo Inset Location. (Address Order)---
512- p_objnow = OBJINFO( p_pginfo, p_pginfo->objinfo.i_topid );
513- assert( NULL != p_objnow );
514-
515- do {
516- if( p_objnow->addr.ptr_addr.value > ptr_value )
517- { break; }
518- else if( p_objnow->addr.ptr_addr.value == ptr_value ) {
519- if(( 0 == qw_size )
520- || (( 0 < qw_size ) && ( p_objnow->addr.qw_size == qw_size ))) {
521- p_objret = p_objnow;
522- break;
523- }
524- }
525-
526- p_objnow = ((NO_OBJ != p_objnow->addrlink.i_next_id)
527- ? OBJINFO( p_pginfo, p_objnow->addrlink.i_next_id ) : NULL );
528- }while( NULL != p_objnow );
529-
530- goto_ObjectInfo_SearchObjectInfo_post:
531- return p_objret;
532-}
533-
534-
535-/*----------------------------------------------------------------------
536-----------------------------------------------------------------------*/
537-#define FUNCID_LibGoblin_ObjectInfo_SearchDynamicSymbol 0x42
538-LIBGOBLIN_OBJINFO_EXTERN
539-LibGoblin_ObjectInfo *
540- ObjectInfo_SearchDynamicSymbol(
541- LibGoblin_ProgramInfo *p_pginfo,
542- PtrValue ptr_value,
543- char *pstr_symname,
544- DWord dw_status )
545-{
546- LibGoblin_ObjectInfo *p_objnow;
547- LibGoblin_ObjectInfo *p_objret = NULL;
548- DWord dw_hash;
549-
550- // Check exist MasterObject ---
551- if( NO_OBJ == p_pginfo->objinfo.i_topid )
552- { goto goto_ObjectInfo_SearchDynamicSymbol_post; }
553-
554-
555- // Search ObjectInfo Inset Location. (Address Order)---
556- p_objnow = OBJINFO( p_pginfo, p_pginfo->objinfo.i_topid );
557- assert( NULL != p_objnow );
558-
559- dw_hash = Common_CalcDJBhash( pstr_symname );
560-
561- do {
562- if( p_objnow->addr.ptr_addr.value > ptr_value )
563- { break; }
564- else if( p_objnow->addr.ptr_addr.value == ptr_value ) {
565- if( dw_hash == p_objnow->dw_hash ) {
566- if(( 0x00 == dw_status ) || ( p_objnow->dw_status & dw_status )) {
567- if( !strncmp( pstr_symname, p_objnow->pstr_name, 256 ) ) {
568- p_objret = p_objnow;
569- break;
570- }
571- }
572- }
573- }
574-
575- p_objnow = ((NO_OBJ != p_objnow->addrlink.i_next_id)
576- ? OBJINFO( p_pginfo, p_objnow->addrlink.i_next_id ) : NULL );
577- }while( NULL != p_objnow );
578-
579-goto_ObjectInfo_SearchDynamicSymbol_post:
580- return p_objret;
581-}
582-
583-
584-/*----------------------------------------------------------------------
585-----------------------------------------------------------------------*/
586495 #define FUNCID_LibGoblin_ObjectInfo_FreeObjectInfo 0x12
587496 LIBGOBLIN_OBJINFO_EXTERN
588497 int
--- a/libgoblin/drd64_libgoblin_objinfo.h
+++ b/libgoblin/drd64_libgoblin_objinfo.h
@@ -85,12 +85,6 @@ LIBGOBLIN_OBJINFO_EXTERN
8585 LibGoblin_ProgramInfo *p_pginfo, PtrValue ptr_value, QWord qw_size,
8686 LibGoblin_ObjectInfo *p_parent, Byte b_mode, Byte b_type );
8787 LIBGOBLIN_OBJINFO_EXTERN
88- LibGoblin_ObjectInfo *ObjectInfo_SearchAddressSize(
89- LibGoblin_ProgramInfo *p_pginfo, PtrValue ptr_value, QWord qw_size );
90-LIBGOBLIN_OBJINFO_EXTERN
91- LibGoblin_ObjectInfo *ObjectInfo_SearchDynamicSymbol(
92- LibGoblin_ProgramInfo *p_pginfo, PtrValue ptr_value, char *pstr_symname, DWord dw_status );
93-LIBGOBLIN_OBJINFO_EXTERN
9488 int ObjectInfo_FreeObjectInfo( LibGoblin_ProgramInfo *p_pginfo, LibGoblin_ObjectInfo *p_binfo );
9589 LIBGOBLIN_OBJINFO_EXTERN
9690 int ObjectInfo_DeleteObjectInfo(
--- /dev/null
+++ b/libgoblin/drd64_libgoblin_objinfo_search.c
@@ -0,0 +1,135 @@
1+/*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
2+
3+ D r . D e a m o n 6 4
4+ for INTEL64(R), AMD64(R)
5+
6+ Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
7+
8+Redistribution and use in source and binary forms, with or without
9+modification, are permitted provided that the following conditions are met:
10+
11+ 1. Redistributions of source code must retain the above copyright notice,
12+ this list of conditions and the following disclaimer.
13+ 2. Redistributions in binary form must reproduce the above copyright
14+ notice, this list of conditions and the following disclaimer in the
15+ documentation and/or other materials provided with the distribution.
16+
17+THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
18+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20+DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
21+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
27+OF THE POSSIBILITY OF SUCH DAMAGE.
28+
29+DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
30+
31+/* File Info -----------------------------------------------------------
32+File: drd64_.c
33+Function:
34+Comment:
35+----------------------------------------------------------------------*/
36+
37+#define DRD64_SRC_LIBGOBLIN_OBJINFO_SEARCH
38+#include"drd64_libgoblin.h"
39+
40+#define LOCATION(n) DRD64_ERR_LOCATION( \
41+ DRD64_ERROR_MODULE_LIBGOBLIN, DRD64_ERROR_ARCH_NODEPEND, \
42+ DRD64_SRCID_LIBGOBLIN_OBJINFO_SEARCH, (n))
43+
44+/*----------------------------------------------------------------------
45+----------------------------------------------------------------------*/
46+#define FUNCID_LibGoblin_ObjectInfo_SearchAddressSize 0x41
47+LIBGOBLIN_OBJINFO_SEARCH_EXTERN
48+LibGoblin_ObjectInfo *
49+ ObjectInfo_SearchAddressSize(
50+ LibGoblin_ProgramInfo *p_pginfo,
51+ PtrValue ptr_value,
52+ QWord qw_size )
53+{
54+ LibGoblin_ObjectInfo *p_objnow;
55+ LibGoblin_ObjectInfo *p_objret = NULL;
56+
57+ // Check exist MasterObject ---
58+ if( NO_OBJ == p_pginfo->objinfo.i_topid )
59+ { goto goto_ObjectInfo_SearchObjectInfo_post; }
60+
61+
62+ // Search ObjectInfo Inset Location. (Address Order)---
63+ p_objnow = OBJINFO( p_pginfo, p_pginfo->objinfo.i_topid );
64+ assert( NULL != p_objnow );
65+
66+ do {
67+ if( p_objnow->addr.ptr_addr.value > ptr_value )
68+ { break; }
69+ else if( p_objnow->addr.ptr_addr.value == ptr_value ) {
70+ if(( 0 == qw_size )
71+ || (( 0 < qw_size ) && ( p_objnow->addr.qw_size == qw_size ))) {
72+ p_objret = p_objnow;
73+ break;
74+ }
75+ }
76+
77+ p_objnow = ((NO_OBJ != p_objnow->addrlink.i_next_id)
78+ ? OBJINFO( p_pginfo, p_objnow->addrlink.i_next_id ) : NULL );
79+ }while( NULL != p_objnow );
80+
81+ goto_ObjectInfo_SearchObjectInfo_post:
82+ return p_objret;
83+}
84+
85+
86+/*----------------------------------------------------------------------
87+----------------------------------------------------------------------*/
88+#define FUNCID_LibGoblin_ObjectInfo_SearchDynamicSymbol 0x42
89+LIBGOBLIN_OBJINFO_SEARCH_EXTERN
90+LibGoblin_ObjectInfo *
91+ ObjectInfo_SearchDynamicSymbol(
92+ LibGoblin_ProgramInfo *p_pginfo,
93+ PtrValue ptr_value,
94+ char *pstr_symname,
95+ DWord dw_status )
96+{
97+ LibGoblin_ObjectInfo *p_objnow;
98+ LibGoblin_ObjectInfo *p_objret = NULL;
99+ DWord dw_hash;
100+
101+ // Check exist MasterObject ---
102+ if( NO_OBJ == p_pginfo->objinfo.i_topid )
103+ { goto goto_ObjectInfo_SearchDynamicSymbol_post; }
104+
105+
106+ // Search ObjectInfo Inset Location. (Address Order)---
107+ p_objnow = OBJINFO( p_pginfo, p_pginfo->objinfo.i_topid );
108+ assert( NULL != p_objnow );
109+
110+ dw_hash = Common_CalcDJBhash( pstr_symname );
111+
112+ do {
113+ if( p_objnow->addr.ptr_addr.value > ptr_value )
114+ { break; }
115+ else if( p_objnow->addr.ptr_addr.value == ptr_value ) {
116+ if( dw_hash == p_objnow->dw_hash ) {
117+ if(( 0x00 == dw_status ) || ( p_objnow->dw_status & dw_status )) {
118+ if( !strncmp( pstr_symname, p_objnow->pstr_name, 256 ) ) {
119+ p_objret = p_objnow;
120+ break;
121+ }
122+ }
123+ }
124+ }
125+
126+ p_objnow = ((NO_OBJ != p_objnow->addrlink.i_next_id)
127+ ? OBJINFO( p_pginfo, p_objnow->addrlink.i_next_id ) : NULL );
128+ }while( NULL != p_objnow );
129+
130+goto_ObjectInfo_SearchDynamicSymbol_post:
131+ return p_objret;
132+}
133+
134+
135+/* EOF of drd64_.c ----------------------------------- */
--- /dev/null
+++ b/libgoblin/drd64_libgoblin_objinfo_search.h
@@ -0,0 +1,59 @@
1+/*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
2+
3+ D r . D e a m o n 6 4
4+ for INTEL64(R), AMD64(R)
5+
6+ Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
7+
8+Redistribution and use in source and binary forms, with or without
9+modification, are permitted provided that the following conditions are met:
10+
11+ 1. Redistributions of source code must retain the above copyright notice,
12+ this list of conditions and the following disclaimer.
13+ 2. Redistributions in binary form must reproduce the above copyright
14+ notice, this list of conditions and the following disclaimer in the
15+ documentation and/or other materials provided with the distribution.
16+
17+THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
18+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20+DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
21+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
27+OF THE POSSIBILITY OF SUCH DAMAGE.
28+
29+DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
30+
31+/* File Info -----------------------------------------------------------
32+File: drd64_.h
33+Function: Header
34+Comment:
35+----------------------------------------------------------------------*/
36+
37+#ifndef DRD64_HEADER_LIBGOBLIN_OBJINFO_SEARCH
38+#define DRD64_HEADER_LIBGOBLIN_OBJINFO_SEARCH
39+
40+#include"drd64_libgoblin.h"
41+
42+#ifdef DRD64_SRC_LIBGOBLIN_OBJINFO_SEARCH
43+ #define LIBGOBLIN_OBJINFO_SEARCH_EXTERN
44+#else
45+ #define LIBGOBLIN_OBJINFO_SEARCH_EXTERN extern
46+#endif
47+
48+
49+LIBGOBLIN_OBJINFO_SEARCH_EXTERN
50+ LibGoblin_ObjectInfo *ObjectInfo_SearchAddressSize(
51+ LibGoblin_ProgramInfo *p_pginfo, PtrValue ptr_value, QWord qw_size );
52+LIBGOBLIN_OBJINFO_SEARCH_EXTERN
53+ LibGoblin_ObjectInfo *ObjectInfo_SearchDynamicSymbol(
54+ LibGoblin_ProgramInfo *p_pginfo, PtrValue ptr_value, char *pstr_symname, DWord dw_status );
55+
56+
57+#endif /* DRD64_HEADER_LIBGOBLIN_OBJINFO_SEARCH */
58+
59+/* EOF of drd64_.h ----------------------------------- */
Show on old repository browser