Merge pull request #98 from xantares/const dladdr: const void *addr
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
diff --git a/src/dlfcn.c b/src/dlfcn.c
index 86f24df..7bca267 100644
--- a/src/dlfcn.c
+++ b/src/dlfcn.c
@@ -216,7 +216,7 @@ static void save_err_ptr_str( const void *ptr, DWORD dwMessageId )
save_err_str( ptr_buf, dwMessageId );
}
-static HMODULE MyGetModuleHandleFromAddress( void *addr )
+static HMODULE MyGetModuleHandleFromAddress( const void *addr )
{
static BOOL (WINAPI *GetModuleHandleExAPtr)(DWORD, LPCSTR, HMODULE *) = NULL;
static BOOL failed = FALSE;
@@ -237,7 +237,7 @@ static HMODULE MyGetModuleHandleFromAddress( void *addr )
if( !failed )
{
/* If GetModuleHandleExA is available use it with GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS */
- if( !GetModuleHandleExAPtr( GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, (LPCSTR) addr, &hModule ) )
+ if( !GetModuleHandleExAPtr( GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, addr, &hModule ) )
return NULL;
}
else
@@ -595,7 +595,7 @@ static BOOL get_image_section( HMODULE module, int index, void **ptr, DWORD *siz
}
/* Return symbol name for a given address from export table */
-static const char *get_export_symbol_name( HMODULE module, IMAGE_EXPORT_DIRECTORY *ied, void *addr, void **func_address )
+static const char *get_export_symbol_name( HMODULE module, IMAGE_EXPORT_DIRECTORY *ied, const void *addr, void **func_address )
{
DWORD i;
void *candidateAddr = NULL;
@@ -628,7 +628,7 @@ static const char *get_export_symbol_name( HMODULE module, IMAGE_EXPORT_DIRECTOR
return NULL;
}
-static BOOL is_valid_address( void *addr )
+static BOOL is_valid_address( const void *addr )
{
MEMORY_BASIC_INFORMATION info;
SIZE_T result;
@@ -652,7 +652,7 @@ static BOOL is_valid_address( void *addr )
* the import address table (iat), which is partially maintained by
* the runtime linker.
*/
-static BOOL is_import_thunk( void *addr )
+static BOOL is_import_thunk( const void *addr )
{
return *(short *) addr == 0x25ff ? TRUE : FALSE;
}
@@ -660,7 +660,7 @@ static BOOL is_import_thunk( void *addr )
/* Return adress from the import address table (iat),
* if the original address points to a thunk table entry.
*/
-static void *get_address_from_import_address_table( void *iat, DWORD iat_size, void *addr )
+static void *get_address_from_import_address_table( void *iat, DWORD iat_size, const void *addr )
{
BYTE *thkp = (BYTE *) addr;
/* Get offset from thunk table (after instruction 0xff 0x25)
@@ -691,7 +691,7 @@ static void *get_address_from_import_address_table( void *iat, DWORD iat_size, v
/* Holds module filename */
static char module_filename[2*MAX_PATH];
-static BOOL fill_info( void *addr, Dl_info *info )
+static BOOL fill_info( const void *addr, Dl_info *info )
{
HMODULE hModule;
DWORD dwSize;
@@ -718,13 +718,13 @@ static BOOL fill_info( void *addr, Dl_info *info )
else
info->dli_sname = NULL;
- info->dli_saddr = info->dli_sname == NULL ? NULL : funcAddress != NULL ? funcAddress : addr;
+ info->dli_saddr = info->dli_sname == NULL ? NULL : funcAddress != NULL ? funcAddress : (void *) addr;
return TRUE;
}
DLFCN_EXPORT
-int dladdr( void *addr, Dl_info *info )
+int dladdr( const void *addr, Dl_info *info )
{
if( info == NULL )
return 0;
diff --git a/src/dlfcn.h b/src/dlfcn.h
index 164216f..bf5c7d4 100644
--- a/src/dlfcn.h
+++ b/src/dlfcn.h
@@ -85,7 +85,7 @@ DLFCN_EXPORT void *dlsym(void *handle, const char *name);
DLFCN_EXPORT char *dlerror(void);
/* Translate address to symbolic information (no POSIX standard) */
-DLFCN_EXPORT int dladdr(void *addr, Dl_info *info);
+DLFCN_EXPORT int dladdr(const void *addr, Dl_info *info);
#ifdef __cplusplus
}