drd64_libgoblin_analyze.o \
drd64_libgoblin_readbin.o \
drd64_libgoblin_symwork.o \
+ drd64_libgoblin_addrinfo.o \
drd64_libgoblin_elf.o \
drd64_libgoblin_elf64.o \
drd64_libgoblin_elf32.o \
drd64_libgoblin_symwork.o: drd64_libgoblin_symwork.c $(HEADER)
$(CC) -c -o drd64_libgoblin_symwork.o $(FLAGS_DEBUG) \
drd64_libgoblin_symwork.c
+drd64_libgoblin_addrinfo.o: drd64_libgoblin_addrinfo.c $(HEADER)
+ $(CC) -c -o drd64_libgoblin_addrinfo.o $(FLAGS_DEBUG) \
+ drd64_libgoblin_addrinfo.c
drd64_libgoblin_elf.o: drd64_libgoblin_elf.c $(HEADER)
$(CC) -c -o drd64_libgoblin_elf.o $(FLAGS_DEBUG) \
#include"drd64_libgoblin_analyze.h"
#include"drd64_libgoblin_readbin.h"
#include"drd64_libgoblin_symwork.h"
+#include"drd64_libgoblin_addrinfo.h"
#include"drd64_libgoblin_elf.h"
#include"drd64_libgoblin_elf64.h"
#include"drd64_libgoblin_elf32.h"
--- /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_ADDRINFO
+#include"drd64_libgoblin.h"
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+LIBGOBLIN_ADDRINFO_EXTERN
+int
+ LibGoblin_AddrInfo_AllocAddrInfo(
+ LibGoblin_BinaryInfo *p_binfo,
+ DWord dw_initsymbols )
+{
+ DWord dw_allocs;
+ LibGoblin_AddressInfo *p_addr;
+
+ assert( NULL != p_binfo );
+
+ if( NULL != p_binfo->p_addrinfo ) {
+ return 0x01;
+ }
+
+ dw_allocs = ((dw_initsymbols / LIBGOBLIN_ADDRINFO_ALLOC_UNITS) + 2)
+ * LIBGOBLIN_ADDRINFO_ALLOC_UNITS;
+ p_addr = (LibGoblin_AddressInfo *)malloc(
+ dw_allocs * sizeof( LibGoblin_AddressInfo ) );
+ if( NULL == p_addr ) {
+ return -0x02;
+ }
+ memset( p_addr, 0x00, dw_allocs * sizeof( LibGoblin_AddressInfo ) );
+
+ p_binfo->p_addrinfo = p_addr;
+ p_binfo->dw_alloc_addrinfo = dw_allocs;
+ p_binfo->dw_max_addrinfo = 0;
+
+ return 0x00;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+LIBGOBLIN_ADDRINFO_EXTERN
+int
+ LibGoblin_AddrInfo_FreeAddrInfo(
+ LibGoblin_BinaryInfo *p_binfo )
+{
+ assert( NULL != p_binfo );
+
+ if( NULL == p_binfo->p_addrinfo ) {
+ return -0x01;
+ }
+
+ free( p_binfo->p_addrinfo );
+ p_binfo->p_addrinfo = NULL;
+
+ p_binfo->dw_alloc_addrinfo = 0;
+ p_binfo->dw_max_addrinfo = 0;
+
+ return 0x00;
+}
+
+
+/* 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_ADDRINFO
+#define DRD64_HEADER_LIBGOBLIN_ADDRINFO
+
+#ifdef DRD64_SRC_LIBGOBLIN_ADDRINFO
+ #define LIBGOBLIN_ADDRINFO_EXTERN
+#else
+ #define LIBGOBLIN_ADDRINFO_EXTERN extern
+#endif
+
+#if defined DRD64_SRC_LIBGOBLIN_ADDRINFO
+ #define LIBGOBLIN_ADDRINFO_INTERNALFUNC
+#elif defined DRD64_SRC_TEST_LIBGOBLIN_ADDRINFO
+ #define LIBGOBLIN_ADDRINFO_INTERNALFUNC
+#endif
+
+#define LIBGOBLIN_ADDRINFO_ALLOC_UNITS 256
+
+
+LIBGOBLIN_ADDRINFO_EXTERN
+ int LibGoblin_AddrInfo_AllocAddrInfo( LibGoblin_BinaryInfo *p_binfo, DWord dw_initsymbols );
+LIBGOBLIN_ADDRINFO_EXTERN
+ int LibGoblin_AddrInfo_FreeAddrInfo( LibGoblin_BinaryInfo *p_binfo );
+
+
+#endif /* DRD64_HEADER_XXX */
+
+/* EOF of drd64_.h ----------------------------------- */
if( NULL == p_symtmp ) {
return -0x01;
}
+ memset( (p_symtmp + p_symworktbl->dw_alloc_symwork), 0x00,
+ LIBGOBLIN_SYMWORKINFO_UNITS * sizeof( LibGoblin_SymbolWorkInfo ) );
p_symwork = p_symtmp;
+ p_symworktbl->dw_alloc_symwork += LIBGOBLIN_SYMWORKINFO_UNITS;
}
p_symwork += p_symworktbl->dw_max_symwork;
/* Address Table Info. */
LibGoblin_AddressInfo *p_addrinfo;
+ DWord dw_alloc_addrinfo;
+ DWord dw_max_addrinfo;
/* Exec. File Info. */
LibGoblin_BinaryFile t_binfile[3];