Dr.Deamon64 Git-Repository
(2014/03/01- Main-Repository: migrate from cvs)
Revision | 55e6d37252df0bd8923c7996e2e426a35845c4ce (tree) |
---|---|
Zeit | 2019-10-02 20:33:27 |
Autor | Koine Yuusuke(koinec) <koinec@user...> |
Commiter | Koine Yuusuke(koinec) |
@@ -57,6 +57,7 @@ OBJS = drd64_libgoblin_api.o \ | ||
57 | 57 | drd64_libgoblin_readbin.o \ |
58 | 58 | drd64_libgoblin_loadprog.o \ |
59 | 59 | drd64_libgoblin_objinfo.o \ |
60 | + drd64_libgoblin_objinfo_search.o \ | |
60 | 61 | drd64_libgoblin_objinfo_postproc.o \ |
61 | 62 | drd64_libgoblin_section.o \ |
62 | 63 | drd64_libgoblin_elf.o \ |
@@ -105,6 +106,7 @@ HEADER = drd64_libgoblin.h \ | ||
105 | 106 | drd64_libgoblin_readbin.h \ |
106 | 107 | drd64_libgoblin_loadprog.h \ |
107 | 108 | drd64_libgoblin_objinfo.h \ |
109 | + drd64_libgoblin_objinfo_search.h \ | |
108 | 110 | drd64_libgoblin_objinfo_postproc.h \ |
109 | 111 | drd64_libgoblin_section.h \ |
110 | 112 | drd64_libgoblin_elf.h \ |
@@ -207,6 +209,9 @@ drd64_libgoblin_loadprog.o: drd64_libgoblin_loadprog.c $(HEADER) | ||
207 | 209 | drd64_libgoblin_objinfo.o: drd64_libgoblin_objinfo.c $(HEADER) |
208 | 210 | $(CC) -c -o drd64_libgoblin_objinfo.o $(FLAGS_DEBUG) \ |
209 | 211 | 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 | |
210 | 215 | drd64_libgoblin_objinfo_postproc.o: drd64_libgoblin_objinfo_postproc.c $(HEADER) |
211 | 216 | $(CC) -c -o drd64_libgoblin_objinfo_postproc.o $(FLAGS_DEBUG) \ |
212 | 217 | drd64_libgoblin_objinfo_postproc.c |
@@ -83,6 +83,7 @@ Comment: | ||
83 | 83 | #include"drd64_libgoblin_loadprog.h" |
84 | 84 | #include"drd64_libgoblin_section.h" |
85 | 85 | #include"drd64_libgoblin_objinfo.h" |
86 | +#include"drd64_libgoblin_objinfo_search.h" | |
86 | 87 | #include"drd64_libgoblin_objinfo_postproc.h" |
87 | 88 | #include"drd64_libgoblin_elf.h" |
88 | 89 | #include"drd64_libgoblin_elf_dynamic.h" |
@@ -120,12 +121,13 @@ Comment: | ||
120 | 121 | #include"drd64_libgoblin_debug_objinfo.h" |
121 | 122 | |
122 | 123 | // 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 | |
129 | 131 | |
130 | 132 | #endif /* DRD64_HEADER_LIBGOBLIN_MAIN */ |
131 | 133 |
@@ -492,97 +492,6 @@ goto_ObjectInfo_InsetObject_post: | ||
492 | 492 | |
493 | 493 | /*---------------------------------------------------------------------- |
494 | 494 | ----------------------------------------------------------------------*/ |
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 | -----------------------------------------------------------------------*/ | |
586 | 495 | #define FUNCID_LibGoblin_ObjectInfo_FreeObjectInfo 0x12 |
587 | 496 | LIBGOBLIN_OBJINFO_EXTERN |
588 | 497 | int |
@@ -85,12 +85,6 @@ LIBGOBLIN_OBJINFO_EXTERN | ||
85 | 85 | LibGoblin_ProgramInfo *p_pginfo, PtrValue ptr_value, QWord qw_size, |
86 | 86 | LibGoblin_ObjectInfo *p_parent, Byte b_mode, Byte b_type ); |
87 | 87 | 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 | |
94 | 88 | int ObjectInfo_FreeObjectInfo( LibGoblin_ProgramInfo *p_pginfo, LibGoblin_ObjectInfo *p_binfo ); |
95 | 89 | LIBGOBLIN_OBJINFO_EXTERN |
96 | 90 | int ObjectInfo_DeleteObjectInfo( |
@@ -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 ----------------------------------- */ |
@@ -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 ----------------------------------- */ |