[PATCH] [WineDump]: const
Eric Pouech
eric.pouech at wanadoo.fr
Mon Apr 10 13:53:50 CDT 2006
- constify some pointers
A+
---
tools/winedump/debug.c | 79 +++++++++++++++---------------
tools/winedump/dump.c | 38 +++++++-------
tools/winedump/minidump.c | 51 ++++++++++---------
tools/winedump/pe.c | 119 +++++++++++++++++++++++----------------------
tools/winedump/pe.h | 4 +-
tools/winedump/winedump.h | 6 +-
6 files changed, 149 insertions(+), 148 deletions(-)
diff --git a/tools/winedump/debug.c b/tools/winedump/debug.c
index 419447d..2a281e7 100644
--- a/tools/winedump/debug.c
+++ b/tools/winedump/debug.c
@@ -99,14 +99,13 @@
* (OMFDirHeader.cDir)
*/
-extern IMAGE_NT_HEADERS* PE_nt_headers;
+extern const IMAGE_NT_HEADERS* PE_nt_headers;
+static const void* cv_base /* = 0 */;
-static void* cv_base /* = 0 */;
-
-static int dump_cv_sst_module(OMFDirEntry* omfde)
+static int dump_cv_sst_module(const OMFDirEntry* omfde)
{
- OMFModule* module;
- OMFSegDesc* segDesc;
+ const OMFModule* module;
+ const OMFSegDesc* segDesc;
int i;
module = PRD(Offset(cv_base) + omfde->lfo, sizeof(OMFModule));
@@ -132,16 +131,16 @@ static int dump_cv_sst_module(OMFDirEntr
return TRUE;
}
-static int dump_cv_sst_global_pub(OMFDirEntry* omfde)
+static int dump_cv_sst_global_pub(const OMFDirEntry* omfde)
{
- long fileoffset;
- OMFSymHash* header;
- BYTE* symbols;
- BYTE* curpos;
- PUBSYM32* sym;
- unsigned symlen;
- int recordlen;
- char nametmp[256];
+ long fileoffset;
+ const OMFSymHash* header;
+ const BYTE* symbols;
+ const BYTE* curpos;
+ const PUBSYM32* sym;
+ unsigned symlen;
+ int recordlen;
+ char nametmp[256];
fileoffset = Offset(cv_base) + omfde->lfo;
printf (" GlobalPub section starts at file offset 0x%lx\n", fileoffset);
@@ -189,34 +188,34 @@ static int dump_cv_sst_global_pub(OMFDir
return TRUE;
}
-static int dump_cv_sst_global_sym(OMFDirEntry* omfde)
+static int dump_cv_sst_global_sym(const OMFDirEntry* omfde)
{
/*** NOT YET IMPLEMENTED ***/
return TRUE;
}
-static int dump_cv_sst_static_sym(OMFDirEntry* omfde)
+static int dump_cv_sst_static_sym(const OMFDirEntry* omfde)
{
/*** NOT YET IMPLEMENTED ***/
return TRUE;
}
-static int dump_cv_sst_libraries(OMFDirEntry* omfde)
+static int dump_cv_sst_libraries(const OMFDirEntry* omfde)
{
/*** NOT YET IMPLEMENTED ***/
return TRUE;
}
-static int dump_cv_sst_global_types(OMFDirEntry* omfde)
+static int dump_cv_sst_global_types(const OMFDirEntry* omfde)
{
/*** NOT YET IMPLEMENTED ***/
return TRUE;
}
-static int dump_cv_sst_seg_map(OMFDirEntry* omfde)
+static int dump_cv_sst_seg_map(const OMFDirEntry* omfde)
{
- OMFSegMap* segMap;
- OMFSegMapDesc* segMapDesc;
+ const OMFSegMap* segMap;
+ const OMFSegMapDesc* segMapDesc;
int i;
segMap = PRD(Offset(cv_base) + omfde->lfo, sizeof(OMFSegMap));
@@ -244,22 +243,22 @@ static int dump_cv_sst_seg_map(OMFDirEnt
return TRUE;
}
-static int dump_cv_sst_file_index(OMFDirEntry* omfde)
+static int dump_cv_sst_file_index(const OMFDirEntry* omfde)
{
/*** NOT YET IMPLEMENTED ***/
return TRUE;
}
-static int dump_cv_sst_src_module(OMFDirEntry* omfde)
+static int dump_cv_sst_src_module(const OMFDirEntry* omfde)
{
- int i, j;
- BYTE* rawdata;
- unsigned long* seg_info_dw;
- unsigned short* seg_info_w;
- unsigned ofs;
- OMFSourceModule* sourceModule;
- OMFSourceFile* sourceFile;
- OMFSourceLine* sourceLine;
+ int i, j;
+ const BYTE* rawdata;
+ const unsigned long* seg_info_dw;
+ const unsigned short* seg_info_w;
+ unsigned ofs;
+ const OMFSourceModule* sourceModule;
+ const OMFSourceFile* sourceFile;
+ const OMFSourceLine* sourceLine;
rawdata = PRD(Offset(cv_base) + omfde->lfo, omfde->cb);
if (!rawdata) {printf("Can't get srcModule subsection details, aborting\n");return FALSE;}
@@ -340,17 +339,17 @@ static int dump_cv_sst_src_module(OMFDir
return TRUE;
}
-static int dump_cv_sst_align_sym(OMFDirEntry* omfde)
+static int dump_cv_sst_align_sym(const OMFDirEntry* omfde)
{
/*** NOT YET IMPLEMENTED ***/
return TRUE;
}
-static void dump_codeview_all_modules(OMFDirHeader *omfdh)
+static void dump_codeview_all_modules(const OMFDirHeader *omfdh)
{
unsigned i;
- OMFDirEntry *dirEntry;
+ const OMFDirEntry* dirEntry;
const char* str;
if (!omfdh || !omfdh->cDir) return;
@@ -402,9 +401,9 @@ static void dump_codeview_all_modules(OM
static void dump_codeview_headers(unsigned long base, unsigned long len)
{
- OMFDirHeader *dirHeader;
- OMFSignature *signature;
- OMFDirEntry *dirEntry;
+ const OMFDirHeader* dirHeader;
+ const OMFSignature* signature;
+ const OMFDirEntry* dirEntry;
unsigned i;
int modulecount = 0, alignsymcount = 0, srcmodulecount = 0, librariescount = 0;
int globalsymcount = 0, globalpubcount = 0, globaltypescount = 0;
@@ -507,14 +506,14 @@ static const char* get_coff_name( PIMA
return nampnt;
}
-void dump_coff(unsigned long coffbase, unsigned long len, void* pmt)
+void dump_coff(unsigned long coffbase, unsigned long len, const void* pmt)
{
PIMAGE_COFF_SYMBOLS_HEADER coff;
PIMAGE_SYMBOL coff_sym;
PIMAGE_SYMBOL coff_symbols;
PIMAGE_LINENUMBER coff_linetab;
char * coff_strtab;
- IMAGE_SECTION_HEADER * sectHead = pmt;
+ const IMAGE_SECTION_HEADER * sectHead = pmt;
unsigned int i;
const char * nampnt;
int naux;
diff --git a/tools/winedump/dump.c b/tools/winedump/dump.c
index 91f4b0b..0382889 100644
--- a/tools/winedump/dump.c
+++ b/tools/winedump/dump.c
@@ -46,7 +46,7 @@
#include "winedump.h"
#include "pe.h"
-static void* dump_base;
+static const void* dump_base;
static unsigned long dump_total_len;
void dump_data( const unsigned char *ptr, unsigned int size, const char *prefix )
@@ -132,19 +132,19 @@ void dump_unicode_str( const WCHAR *str,
printf( "\"" );
}
-void* PRD(unsigned long prd, unsigned long len)
+const void* PRD(unsigned long prd, unsigned long len)
{
- return (prd + len > dump_total_len) ? NULL : (char*)dump_base + prd;
+ return (prd + len > dump_total_len) ? NULL : (const char*)dump_base + prd;
}
-unsigned long Offset(void* ptr)
+unsigned long Offset(const void* ptr)
{
if (ptr < dump_base) {printf("<<<<<ptr below\n");return 0;}
- if ((char *)ptr >= (char*)dump_base + dump_total_len) {printf("<<<<<ptr above\n");return 0;}
+ if ((const char *)ptr >= (const char*)dump_base + dump_total_len) {printf("<<<<<ptr above\n");return 0;}
return (char*)ptr - (char*)dump_base;
}
-static void do_dump( enum FileSig sig, void* pmt )
+static void do_dump( enum FileSig sig, const void* pmt )
{
if (sig == SIG_NE)
{
@@ -161,12 +161,12 @@ static void do_dump( enum FileSig sig, v
pe_dump(pmt);
}
-static enum FileSig check_headers(void** pmt)
+static enum FileSig check_headers(const void** pmt)
{
- WORD* pw;
- DWORD* pdw;
- IMAGE_DOS_HEADER* dh;
- enum FileSig sig;
+ const WORD* pw;
+ const DWORD* pdw;
+ const IMAGE_DOS_HEADER* dh;
+ enum FileSig sig;
pw = PRD(0, sizeof(WORD));
if (!pw) {printf("Can't get main signature, aborting\n"); return 0;}
@@ -188,11 +188,11 @@ static enum FileSig check_headers(void**
*pmt = PRD(dh->e_lfanew, sizeof(DWORD)+sizeof(IMAGE_FILE_HEADER));
sig = SIG_PE;
}
- else if (*(WORD *)pdw == IMAGE_OS2_SIGNATURE)
+ else if (*(const WORD *)pdw == IMAGE_OS2_SIGNATURE)
{
sig = SIG_NE;
}
- else if (*(WORD *)pdw == IMAGE_VXD_SIGNATURE)
+ else if (*(const WORD *)pdw == IMAGE_VXD_SIGNATURE)
{
sig = SIG_LE;
}
@@ -218,20 +218,20 @@ static enum FileSig check_headers(void**
sig = SIG_UNKNOWN;
break;
default:
- printf("No known main signature (%.2s/%x), aborting\n", (char*)pw, *pw);
+ printf("No known main signature (%.2s/%x), aborting\n", (const char*)pw, *pw);
sig = SIG_UNKNOWN;
}
return sig;
}
-int dump_analysis(const char* name, void (*fn)(enum FileSig, void*), enum FileSig wanted_sig)
+int dump_analysis(const char* name, file_dumper fn, enum FileSig wanted_sig)
{
int fd;
enum FileSig effective_sig;
int ret = 1;
struct stat s;
- void* pmt;
+ const void* pmt;
setbuf(stdout, NULL);
@@ -246,7 +246,7 @@ int dump_analysis(const char* name, void
#endif
{
if (!(dump_base = malloc( dump_total_len ))) fatal( "Out of memory" );
- if ((unsigned long)read( fd, dump_base, dump_total_len ) != dump_total_len) fatal( "Cannot read file" );
+ if ((unsigned long)read( fd, (void*)dump_base, dump_total_len ) != dump_total_len) fatal( "Cannot read file" );
}
effective_sig = check_headers(&pmt);
@@ -286,10 +286,10 @@ int dump_analysis(const char* name, void
if (ret) printf("Done dumping %s\n", name);
#ifdef HAVE_MMAP
- if (munmap(dump_base, dump_total_len) == -1)
+ if (munmap((void*)dump_base, dump_total_len) == -1)
#endif
{
- free( dump_base );
+ free( (void*)dump_base );
}
close(fd);
diff --git a/tools/winedump/minidump.c b/tools/winedump/minidump.c
index 4382c74..a8852d5 100644
--- a/tools/winedump/minidump.c
+++ b/tools/winedump/minidump.c
@@ -37,17 +37,17 @@ static void dump_mdmp_data(const MINIDUM
static void dump_mdmp_string(DWORD rva)
{
- MINIDUMP_STRING* ms = PRD(rva, sizeof(MINIDUMP_STRING));
+ const MINIDUMP_STRING* ms = PRD(rva, sizeof(MINIDUMP_STRING));
if (ms)
dump_unicode_str( ms->Buffer, ms->Length / sizeof(WCHAR) );
else
printf("<<?>>");
}
-static MINIDUMP_DIRECTORY* get_mdmp_dir(const MINIDUMP_HEADER* hdr, int str_idx)
+static const MINIDUMP_DIRECTORY* get_mdmp_dir(const MINIDUMP_HEADER* hdr, int str_idx)
{
- MINIDUMP_DIRECTORY* dir;
- unsigned int i;
+ const MINIDUMP_DIRECTORY* dir;
+ unsigned int i;
for (i = 0; i < hdr->NumberOfStreams; i++)
{
@@ -61,10 +61,10 @@ static MINIDUMP_DIRECTORY* get_mdmp_dir(
void mdmp_dump(void)
{
- MINIDUMP_HEADER* hdr = (MINIDUMP_HEADER*)PRD(0, sizeof(MINIDUMP_HEADER));
- ULONG idx, ndir = 0;
- MINIDUMP_DIRECTORY* dir;
- void* stream;
+ const MINIDUMP_HEADER* hdr = (const MINIDUMP_HEADER*)PRD(0, sizeof(MINIDUMP_HEADER));
+ ULONG idx, ndir = 0;
+ const MINIDUMP_DIRECTORY* dir;
+ const void* stream;
if (!hdr)
{
@@ -72,7 +72,7 @@ void mdmp_dump(void)
return;
}
- printf("Signature: %lu (%.4s)\n", hdr->Signature, (char*)&hdr->Signature);
+ printf("Signature: %lu (%.4s)\n", hdr->Signature, (const char*)&hdr->Signature);
printf("Version: %lx\n", hdr->Version);
printf("NumberOfStreams: %lu\n", hdr->NumberOfStreams);
printf("StreamDirectoryRva: %lu\n", hdr->StreamDirectoryRva);
@@ -90,9 +90,9 @@ void mdmp_dump(void)
{
case ThreadListStream:
{
- MINIDUMP_THREAD_LIST* mtl = (MINIDUMP_THREAD_LIST*)stream;
- MINIDUMP_THREAD* mt = &mtl->Threads[0];
- unsigned int i;
+ const MINIDUMP_THREAD_LIST* mtl = (const MINIDUMP_THREAD_LIST*)stream;
+ const MINIDUMP_THREAD* mt = &mtl->Threads[0];
+ unsigned int i;
printf("Threads: %lu\n", mtl->NumberOfThreads);
for (i = 0; i < mtl->NumberOfThreads; i++, mt++)
@@ -115,11 +115,11 @@ void mdmp_dump(void)
case ModuleListStream:
case 0xFFF0:
{
- MINIDUMP_MODULE_LIST* mml = (MINIDUMP_MODULE_LIST*)stream;
- MINIDUMP_MODULE* mm = &mml->Modules[0];
- unsigned int i;
- const char* p1;
- const char* p2;
+ const MINIDUMP_MODULE_LIST* mml = (const MINIDUMP_MODULE_LIST*)stream;
+ const MINIDUMP_MODULE* mm = &mml->Modules[0];
+ unsigned int i;
+ const char* p1;
+ const char* p2;
printf("Modules (%s): %lu\n",
dir->StreamType == ModuleListStream ? "PE" : "ELF",
@@ -207,9 +207,9 @@ void mdmp_dump(void)
break;
case MemoryListStream:
{
- MINIDUMP_MEMORY_LIST* mml = (MINIDUMP_MEMORY_LIST*)stream;
- MINIDUMP_MEMORY_DESCRIPTOR* mmd = &mml->MemoryRanges[0];
- unsigned int i;
+ const MINIDUMP_MEMORY_LIST* mml = (const MINIDUMP_MEMORY_LIST*)stream;
+ const MINIDUMP_MEMORY_DESCRIPTOR* mmd = &mml->MemoryRanges[0];
+ unsigned int i;
printf("Memory Ranges: %lu\n", mml->NumberOfMemoryRanges);
for (i = 0; i < mml->NumberOfMemoryRanges; i++, mmd++)
@@ -224,7 +224,7 @@ void mdmp_dump(void)
break;
case SystemInfoStream:
{
- MINIDUMP_SYSTEM_INFO* msi = (MINIDUMP_SYSTEM_INFO*)stream;
+ const MINIDUMP_SYSTEM_INFO* msi = (const MINIDUMP_SYSTEM_INFO*)stream;
const char* str;
char tmp[128];
@@ -307,7 +307,7 @@ void mdmp_dump(void)
if (msi->ProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL)
{
printf(" x86.VendorId: %.12s\n",
- (char*)&msi->Cpu.X86CpuInfo.VendorId[0]);
+ (const char*)&msi->Cpu.X86CpuInfo.VendorId[0]);
printf(" x86.VersionInformation: %lx\n",
msi->Cpu.X86CpuInfo.VersionInformation);
printf(" x86.FeatureInformation: %lx\n",
@@ -319,7 +319,8 @@ void mdmp_dump(void)
break;
case MiscInfoStream:
{
- MINIDUMP_MISC_INFO* mmi = (MINIDUMP_MISC_INFO*)stream;
+ const MINIDUMP_MISC_INFO* mmi = (const MINIDUMP_MISC_INFO*)stream;
+
printf("Misc Information\n");
printf(" Size: %lu\n", mmi->SizeOfInfo);
printf(" Flags: %s%s\n",
@@ -337,8 +338,8 @@ void mdmp_dump(void)
break;
case ExceptionStream:
{
- MINIDUMP_EXCEPTION_STREAM* mes = (MINIDUMP_EXCEPTION_STREAM*)stream;
- unsigned int i;
+ const MINIDUMP_EXCEPTION_STREAM* mes = (const MINIDUMP_EXCEPTION_STREAM*)stream;
+ unsigned int i;
printf("Exception:\n");
printf(" ThreadId: %08lx\n", mes->ThreadId);
diff --git a/tools/winedump/pe.c b/tools/winedump/pe.c
index eb70faa..d09e896 100644
--- a/tools/winedump/pe.c
+++ b/tools/winedump/pe.c
@@ -46,7 +46,7 @@
#include "winedump.h"
#include "pe.h"
-static IMAGE_NT_HEADERS32* PE_nt_headers;
+static const IMAGE_NT_HEADERS32* PE_nt_headers;
static const char* get_machine_str(DWORD mach)
{
@@ -66,7 +66,7 @@ static const char* get_machine_str(DWORD
return "???";
}
-static void* RVA(unsigned long rva, unsigned long len)
+static const void* RVA(unsigned long rva, unsigned long len)
{
IMAGE_SECTION_HEADER* sectHead;
int i;
@@ -87,11 +87,11 @@ static void* RVA(unsigned long rva, unsi
return NULL;
}
-static void *get_dir_and_size(unsigned int idx, unsigned int *size)
+static const void *get_dir_and_size(unsigned int idx, unsigned int *size)
{
if(PE_nt_headers->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC)
{
- IMAGE_OPTIONAL_HEADER64 *opt = (IMAGE_OPTIONAL_HEADER64*)&PE_nt_headers->OptionalHeader;
+ const IMAGE_OPTIONAL_HEADER64 *opt = (const IMAGE_OPTIONAL_HEADER64*)&PE_nt_headers->OptionalHeader;
if (idx >= opt->NumberOfRvaAndSizes)
return NULL;
if(size)
@@ -101,7 +101,7 @@ static void *get_dir_and_size(unsigned i
}
else
{
- IMAGE_OPTIONAL_HEADER32 *opt = (IMAGE_OPTIONAL_HEADER32*)&PE_nt_headers->OptionalHeader;
+ const IMAGE_OPTIONAL_HEADER32 *opt = (const IMAGE_OPTIONAL_HEADER32*)&PE_nt_headers->OptionalHeader;
if (idx >= opt->NumberOfRvaAndSizes)
return NULL;
if(size)
@@ -111,7 +111,7 @@ static void *get_dir_and_size(unsigned i
}
}
-static void* get_dir(unsigned idx)
+static const void* get_dir(unsigned idx)
{
return get_dir_and_size(idx, 0);
}
@@ -188,7 +188,7 @@ static inline void print_dllflags(const
#undef X
}
-static inline void print_datadirectory(DWORD n, IMAGE_DATA_DIRECTORY *directory)
+static inline void print_datadirectory(DWORD n, const IMAGE_DATA_DIRECTORY *directory)
{
unsigned i;
printf("Data Directory\n");
@@ -202,7 +202,7 @@ static inline void print_datadirectory(D
}
}
-static void dump_optional_header32(IMAGE_OPTIONAL_HEADER32 *optionalHeader)
+static void dump_optional_header32(const IMAGE_OPTIONAL_HEADER32 *optionalHeader)
{
print_word("Magic", optionalHeader->Magic);
print_ver("linker version",
@@ -238,7 +238,7 @@ static void dump_optional_header32(IMAGE
print_datadirectory(optionalHeader->NumberOfRvaAndSizes, optionalHeader->DataDirectory);
}
-static void dump_optional_header64(IMAGE_OPTIONAL_HEADER64 *optionalHeader)
+static void dump_optional_header64(const IMAGE_OPTIONAL_HEADER64 *optionalHeader)
{
print_word("Magic", optionalHeader->Magic);
print_ver("linker version",
@@ -275,7 +275,7 @@ static void dump_optional_header64(IMAGE
static void dump_pe_header(void)
{
- IMAGE_FILE_HEADER *fileHeader;
+ const IMAGE_FILE_HEADER *fileHeader;
printf("File Header\n");
fileHeader = &PE_nt_headers->FileHeader;
@@ -314,10 +314,10 @@ static void dump_pe_header(void)
printf("Optional Header (%s)\n", get_magic_type(PE_nt_headers->OptionalHeader.Magic));
switch(PE_nt_headers->OptionalHeader.Magic) {
case IMAGE_NT_OPTIONAL_HDR32_MAGIC:
- dump_optional_header32((IMAGE_OPTIONAL_HEADER32*)&PE_nt_headers->OptionalHeader);
+ dump_optional_header32((const IMAGE_OPTIONAL_HEADER32*)&PE_nt_headers->OptionalHeader);
break;
case IMAGE_NT_OPTIONAL_HDR64_MAGIC:
- dump_optional_header64((IMAGE_OPTIONAL_HEADER64*)&PE_nt_headers->OptionalHeader);
+ dump_optional_header64((const IMAGE_OPTIONAL_HEADER64*)&PE_nt_headers->OptionalHeader);
break;
default:
printf(" Unknown header magic: 0x%-4X\n", PE_nt_headers->OptionalHeader.Magic);
@@ -326,9 +326,9 @@ static void dump_pe_header(void)
printf("\n");
}
-static void dump_sections(void* addr, unsigned num_sect)
+static void dump_sections(const void* addr, unsigned num_sect)
{
- IMAGE_SECTION_HEADER* sectHead = addr;
+ const IMAGE_SECTION_HEADER* sectHead = addr;
unsigned i;
printf("Section Table\n");
@@ -400,19 +400,19 @@ static void dump_sections(void* addr, un
static void dump_dir_exported_functions(void)
{
unsigned int size = 0;
- IMAGE_EXPORT_DIRECTORY *exportDir = get_dir_and_size(IMAGE_FILE_EXPORT_DIRECTORY, &size);
+ const IMAGE_EXPORT_DIRECTORY*exportDir = get_dir_and_size(IMAGE_FILE_EXPORT_DIRECTORY, &size);
unsigned int i;
- DWORD* pFunc;
- DWORD* pName;
- WORD* pOrdl;
- DWORD* map;
+ const DWORD* pFunc;
+ const DWORD* pName;
+ const WORD* pOrdl;
+ DWORD* map;
parsed_symbol symbol;
if (!exportDir) return;
printf("Exports table:\n");
printf("\n");
- printf(" Name: %s\n", (char*)RVA(exportDir->Name, sizeof(DWORD)));
+ printf(" Name: %s\n", (const char*)RVA(exportDir->Name, sizeof(DWORD)));
printf(" Characteristics: %08lx\n", exportDir->Characteristics);
printf(" TimeDateStamp: %08lX %s\n",
exportDir->TimeDateStamp, get_time_str(exportDir->TimeDateStamp));
@@ -439,11 +439,11 @@ static void dump_dir_exported_functions(
for (i = 0; i < exportDir->NumberOfNames; i++, pName++, pOrdl++)
{
- char* name;
+ const char* name;
map[*pOrdl / 32] |= 1 << (*pOrdl % 32);
- name = (char*)RVA(*pName, sizeof(DWORD));
+ name = (const char*)RVA(*pName, sizeof(DWORD));
if (name && globals.do_demangle)
{
printf(" %08lX %4lu ", pFunc[*pOrdl], exportDir->Base + *pOrdl);
@@ -462,9 +462,9 @@ static void dump_dir_exported_functions(
printf(" %08lX %4lu %s", pFunc[*pOrdl], exportDir->Base + *pOrdl, name);
}
/* check for forwarded function */
- if ((char *)RVA(pFunc[*pOrdl],sizeof(void*)) >= (char *)exportDir &&
- (char *)RVA(pFunc[*pOrdl],sizeof(void*)) < (char *)exportDir + size)
- printf( " (-> %s)", (char *)RVA(pFunc[*pOrdl],1));
+ if ((const char *)RVA(pFunc[*pOrdl],sizeof(void*)) >= (const char *)exportDir &&
+ (const char *)RVA(pFunc[*pOrdl],sizeof(void*)) < (const char *)exportDir + size)
+ printf( " (-> %s)", (const char *)RVA(pFunc[*pOrdl],1));
printf("\n");
}
pFunc = RVA(exportDir->AddressOfFunctions, exportDir->NumberOfFunctions * sizeof(DWORD));
@@ -480,10 +480,10 @@ static void dump_dir_exported_functions(
printf("\n");
}
-static void dump_image_thunk_data64(IMAGE_THUNK_DATA64 *il)
+static void dump_image_thunk_data64(const IMAGE_THUNK_DATA64 *il)
{
/* FIXME: This does not properly handle large images */
- IMAGE_IMPORT_BY_NAME* iibn;
+ const IMAGE_IMPORT_BY_NAME* iibn;
for (; il->u1.Ordinal; il++)
{
if (IMAGE_SNAP_BY_ORDINAL64(il->u1.Ordinal))
@@ -499,9 +499,9 @@ static void dump_image_thunk_data64(IMAG
}
}
-static void dump_image_thunk_data32(IMAGE_THUNK_DATA32 *il)
+static void dump_image_thunk_data32(const IMAGE_THUNK_DATA32 *il)
{
- IMAGE_IMPORT_BY_NAME* iibn;
+ const IMAGE_IMPORT_BY_NAME* iibn;
for (; il->u1.Ordinal; il++)
{
if (IMAGE_SNAP_BY_ORDINAL32(il->u1.Ordinal))
@@ -519,18 +519,18 @@ static void dump_image_thunk_data32(IMAG
static void dump_dir_imported_functions(void)
{
- IMAGE_IMPORT_DESCRIPTOR *importDesc = get_dir(IMAGE_FILE_IMPORT_DIRECTORY);
+ const IMAGE_IMPORT_DESCRIPTOR *importDesc = get_dir(IMAGE_FILE_IMPORT_DIRECTORY);
DWORD directorySize;
if (!importDesc) return;
if(PE_nt_headers->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC)
{
- IMAGE_OPTIONAL_HEADER64 *opt = (IMAGE_OPTIONAL_HEADER64*)&PE_nt_headers->OptionalHeader;
+ const IMAGE_OPTIONAL_HEADER64 *opt = (const IMAGE_OPTIONAL_HEADER64*)&PE_nt_headers->OptionalHeader;
directorySize = opt->DataDirectory[IMAGE_FILE_IMPORT_DIRECTORY].Size;
}
else
{
- IMAGE_OPTIONAL_HEADER32 *opt = (IMAGE_OPTIONAL_HEADER32*)&PE_nt_headers->OptionalHeader;
+ const IMAGE_OPTIONAL_HEADER32 *opt = (const IMAGE_OPTIONAL_HEADER32*)&PE_nt_headers->OptionalHeader;
directorySize = opt->DataDirectory[IMAGE_FILE_IMPORT_DIRECTORY].Size;
}
@@ -538,11 +538,11 @@ static void dump_dir_imported_functions(
for (;;)
{
- IMAGE_THUNK_DATA32* il;
+ const IMAGE_THUNK_DATA32* il;
if (!importDesc->Name || !importDesc->FirstThunk) break;
- printf(" offset %08lx %s\n", Offset(importDesc), (char*)RVA(importDesc->Name, sizeof(DWORD)));
+ printf(" offset %08lx %s\n", Offset(importDesc), (const char*)RVA(importDesc->Name, sizeof(DWORD)));
printf(" Hint/Name Table: %08lX\n", (DWORD)importDesc->u.OriginalFirstThunk);
printf(" TimeDataStamp: %08lX (%s)\n",
importDesc->TimeDateStamp, get_time_str(importDesc->TimeDateStamp));
@@ -560,7 +560,7 @@ static void dump_dir_imported_functions(
else
{
if(PE_nt_headers->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC)
- dump_image_thunk_data64((IMAGE_THUNK_DATA64*)il);
+ dump_image_thunk_data64((const IMAGE_THUNK_DATA64*)il);
else
dump_image_thunk_data32(il);
printf("\n");
@@ -572,7 +572,7 @@ static void dump_dir_imported_functions(
static void dump_dir_delay_imported_functions(void)
{
- struct ImgDelayDescr
+ const struct ImgDelayDescr
{
DWORD grAttrs;
DWORD szName;
@@ -588,12 +588,12 @@ static void dump_dir_delay_imported_func
if (!importDesc) return;
if (PE_nt_headers->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC)
{
- IMAGE_OPTIONAL_HEADER64 *opt = (IMAGE_OPTIONAL_HEADER64 *)&PE_nt_headers->OptionalHeader;
+ const IMAGE_OPTIONAL_HEADER64 *opt = (const IMAGE_OPTIONAL_HEADER64 *)&PE_nt_headers->OptionalHeader;
directorySize = opt->DataDirectory[IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT].Size;
}
else
{
- IMAGE_OPTIONAL_HEADER32 *opt = (IMAGE_OPTIONAL_HEADER32 *)&PE_nt_headers->OptionalHeader;
+ const IMAGE_OPTIONAL_HEADER32 *opt = (const IMAGE_OPTIONAL_HEADER32 *)&PE_nt_headers->OptionalHeader;
directorySize = opt->DataDirectory[IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT].Size;
}
@@ -601,27 +601,27 @@ static void dump_dir_delay_imported_func
for (;;)
{
- BOOL use_rva = importDesc->grAttrs & 1;
- IMAGE_THUNK_DATA32 *il;
+ BOOL use_rva = importDesc->grAttrs & 1;
+ const IMAGE_THUNK_DATA32* il;
if (!importDesc->szName || !importDesc->pIAT || !importDesc->pINT) break;
printf(" grAttrs %08lx offset %08lx %s\n", importDesc->grAttrs, Offset(importDesc),
- use_rva ? (char *)RVA(importDesc->szName, sizeof(DWORD)) : (char *)importDesc->szName);
+ use_rva ? (const char *)RVA(importDesc->szName, sizeof(DWORD)) : (char *)importDesc->szName);
printf(" Hint/Name Table: %08lx\n", importDesc->pINT);
printf(" TimeDataStamp: %08lX (%s)\n",
importDesc->dwTimeStamp, get_time_str(importDesc->dwTimeStamp));
printf(" Ordn Name\n");
- il = use_rva ? (IMAGE_THUNK_DATA32 *)RVA(importDesc->pINT, sizeof(DWORD)) : (IMAGE_THUNK_DATA32 *)importDesc->pINT;
+ il = use_rva ? (const IMAGE_THUNK_DATA32 *)RVA(importDesc->pINT, sizeof(DWORD)) : (const IMAGE_THUNK_DATA32 *)importDesc->pINT;
if (!il)
printf("Can't grab thunk data, going to next imported DLL\n");
else
{
if (PE_nt_headers->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC)
- dump_image_thunk_data64((IMAGE_THUNK_DATA64 *)il);
+ dump_image_thunk_data64((const IMAGE_THUNK_DATA64 *)il);
else
dump_image_thunk_data32(il);
printf("\n");
@@ -631,7 +631,7 @@ static void dump_dir_delay_imported_func
printf("\n");
}
-static void dump_dir_debug_dir(IMAGE_DEBUG_DIRECTORY* idd, int idx)
+static void dump_dir_debug_dir(const IMAGE_DEBUG_DIRECTORY* idd, int idx)
{
const char* str;
@@ -666,7 +666,7 @@ static void dump_dir_debug_dir(IMAGE_DEB
break;
case IMAGE_DEBUG_TYPE_COFF:
dump_coff(idd->PointerToRawData, idd->SizeOfData,
- (char*)PE_nt_headers + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER) + PE_nt_headers->FileHeader.SizeOfOptionalHeader);
+ (const char*)PE_nt_headers + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER) + PE_nt_headers->FileHeader.SizeOfOptionalHeader);
break;
case IMAGE_DEBUG_TYPE_CODEVIEW:
dump_codeview(idd->PointerToRawData, idd->SizeOfData);
@@ -676,7 +676,7 @@ static void dump_dir_debug_dir(IMAGE_DEB
break;
case IMAGE_DEBUG_TYPE_MISC:
{
- IMAGE_DEBUG_MISC* misc = PRD(idd->PointerToRawData, idd->SizeOfData);
+ const IMAGE_DEBUG_MISC* misc = PRD(idd->PointerToRawData, idd->SizeOfData);
if (!misc) {printf("Can't get misc debug information\n"); break;}
printf(" DataType: %lu (%s)\n",
misc->DataType,
@@ -704,7 +704,7 @@ static void dump_dir_debug_dir(IMAGE_DEB
static void dump_dir_debug(void)
{
- IMAGE_DEBUG_DIRECTORY* debugDir = get_dir(IMAGE_FILE_DEBUG_DIRECTORY);
+ const IMAGE_DEBUG_DIRECTORY*debugDir = get_dir(IMAGE_FILE_DEBUG_DIRECTORY);
unsigned nb_dbg, i;
if (!debugDir) return;
@@ -765,15 +765,16 @@ static void dump_dir_tls(void)
void dump_separate_dbg(void)
{
- IMAGE_SEPARATE_DEBUG_HEADER*separateDebugHead = PRD(0, sizeof(separateDebugHead));
- unsigned nb_dbg;
- unsigned i;
- IMAGE_DEBUG_DIRECTORY* debugDir;
+ const IMAGE_SEPARATE_DEBUG_HEADER* separateDebugHead;
+ unsigned nb_dbg;
+ unsigned i;
+ const IMAGE_DEBUG_DIRECTORY* debugDir;
+ separateDebugHead = PRD(0, sizeof(separateDebugHead));
if (!separateDebugHead) {printf("Can't grab the separate header, aborting\n"); return;}
printf ("Signature: %.2s (0x%4X)\n",
- (char*)&separateDebugHead->Signature, separateDebugHead->Signature);
+ (const char*)&separateDebugHead->Signature, separateDebugHead->Signature);
printf ("Flags: 0x%04X\n", separateDebugHead->Flags);
printf ("Machine: 0x%04X (%s)\n",
separateDebugHead->Machine, get_machine_str(separateDebugHead->Machine));
@@ -1059,7 +1060,7 @@ static void dump_dir_resource(void)
printf( "\n\n" );
}
-void pe_dump(void* pmt)
+void pe_dump(const void* pmt)
{
int all = (globals.dumpsect != NULL) && strcmp(globals.dumpsect, "ALL") == 0;
@@ -1068,7 +1069,7 @@ void pe_dump(void* pmt)
{
dump_pe_header();
/* FIXME: should check ptr */
- dump_sections((char*)PE_nt_headers + sizeof(DWORD) +
+ dump_sections((const char*)PE_nt_headers + sizeof(DWORD) +
sizeof(IMAGE_FILE_HEADER) + PE_nt_headers->FileHeader.SizeOfOptionalHeader,
PE_nt_headers->FileHeader.NumberOfSections);
}
@@ -1135,13 +1136,13 @@ static void dll_close (void)
}
*/
-static void do_grab_sym( enum FileSig sig, void* pmt )
+static void do_grab_sym( enum FileSig sig, const void* pmt )
{
- IMAGE_EXPORT_DIRECTORY *exportDir;
+ const IMAGE_EXPORT_DIRECTORY*exportDir;
unsigned i, j;
- DWORD* pName;
- DWORD* pFunc;
- WORD* pOrdl;
+ const DWORD* pName;
+ const DWORD* pFunc;
+ const WORD* pOrdl;
const char* ptr;
DWORD* map;
diff --git a/tools/winedump/pe.h b/tools/winedump/pe.h
index ef0a269..cf09b0a 100644
--- a/tools/winedump/pe.h
+++ b/tools/winedump/pe.h
@@ -19,7 +19,7 @@
*/
extern void dump_codeview(unsigned long ptr, unsigned long len);
-extern void dump_coff(unsigned long coffbase, unsigned long len, void* sect_map);
+extern void dump_coff(unsigned long coffbase, unsigned long len, const void* sect_map);
extern void dump_frame_pointer_omission(unsigned long base, unsigned long len);
extern void dump_separate_dbg(void);
-extern void pe_dump(void*);
+extern void pe_dump(const void*);
diff --git a/tools/winedump/winedump.h b/tools/winedump/winedump.h
index 2fefbda..9e725df 100644
--- a/tools/winedump/winedump.h
+++ b/tools/winedump/winedump.h
@@ -225,10 +225,10 @@ char *str_toupper (char *str);
/* file dumping functions */
enum FileSig {SIG_UNKNOWN, SIG_DOS, SIG_PE, SIG_DBG, SIG_NE, SIG_LE, SIG_MDMP};
-void* PRD(unsigned long prd, unsigned long len);
-unsigned long Offset(void* ptr);
+const void* PRD(unsigned long prd, unsigned long len);
+unsigned long Offset(const void* ptr);
-typedef void (*file_dumper)(enum FileSig, void*);
+typedef void (*file_dumper)(enum FileSig, const void*);
int dump_analysis(const char*, file_dumper, enum FileSig);
void dump_data( const unsigned char *ptr, unsigned int size, const char *prefix );
More information about the wine-patches
mailing list