/* Pro-process emacs.exe for profiling by MSVC.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+ 2008 Free Software Foundation, Inc.
This file is part of GNU Emacs.
-GNU Emacs is free software; you can redistribute it and/or modify
+GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.
+along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
Andrew Innes <andrewi@harlequin.co.uk> 16-Jan-1999
based on code from addsection.c
#include <stdio.h>
#include <fcntl.h>
#include <time.h>
+#ifdef __GNUC__
+#define _ANONYMOUS_UNION
+#define _ANONYMOUS_STRUCT
+#endif
#include <windows.h>
/* Include relevant definitions from IMAGEHLP.H, which can be found
file = CreateFile (filename, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
- if (file == INVALID_HANDLE_VALUE)
+ if (file == INVALID_HANDLE_VALUE)
return FALSE;
size = GetFileSize (file, &upper_size);
- file_mapping = CreateFileMapping (file, NULL, PAGE_READONLY,
+ file_mapping = CreateFileMapping (file, NULL, PAGE_READONLY,
0, size, NULL);
- if (!file_mapping)
+ if (!file_mapping)
return FALSE;
file_base = MapViewOfFile (file_mapping, FILE_MAP_READ, 0, 0, size);
- if (file_base == 0)
+ if (file_base == 0)
return FALSE;
p_file->name = filename;
file = CreateFile (filename, GENERIC_READ | GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
- if (file == INVALID_HANDLE_VALUE)
+ if (file == INVALID_HANDLE_VALUE)
return FALSE;
- file_mapping = CreateFileMapping (file, NULL, PAGE_READWRITE,
+ file_mapping = CreateFileMapping (file, NULL, PAGE_READWRITE,
0, size, NULL);
- if (!file_mapping)
+ if (!file_mapping)
return FALSE;
-
+
file_base = MapViewOfFile (file_mapping, FILE_MAP_WRITE, 0, 0, size);
- if (file_base == 0)
+ if (file_base == 0)
return FALSE;
-
+
p_file->name = filename;
p_file->size = size;
p_file->file = file;
file = CreateFile (filename, GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
- if (file == INVALID_HANDLE_VALUE)
+ if (file == INVALID_HANDLE_VALUE)
return FALSE;
size = GetFileSize (file, &upper_size);
file_mapping = CreateFileMapping (file, NULL, PAGE_READWRITE,
0, size, NULL);
- if (!file_mapping)
+ if (!file_mapping)
return FALSE;
file_base = MapViewOfFile (file_mapping, FILE_MAP_WRITE, 0, 0, size);
- if (file_base == 0)
+ if (file_base == 0)
return FALSE;
p_file->name = filename;
#define PTR_TO_RVA(ptr) ((DWORD)(ptr) - (DWORD) GetModuleHandle (NULL))
#define PTR_TO_OFFSET(ptr, pfile_data) \
- ((char *)(ptr) - (pfile_data)->file_base)
+ ((unsigned char *)(ptr) - (pfile_data)->file_base)
#define OFFSET_TO_PTR(offset, pfile_data) \
((pfile_data)->file_base + (DWORD)(offset))
easy to parse. */
static void
-copy_executable_and_move_sections (file_data *p_infile,
+copy_executable_and_move_sections (file_data *p_infile,
file_data *p_outfile)
{
unsigned char *dst;
Note that dst is updated implicitly by each COPY_CHUNK. */
dos_header = (PIMAGE_DOS_HEADER) p_infile->file_base;
- nt_header = (PIMAGE_NT_HEADERS) (((unsigned long) dos_header) +
+ nt_header = (PIMAGE_NT_HEADERS) (((unsigned long) dos_header) +
dos_header->e_lfanew);
section = IMAGE_FIRST_SECTION (nt_header);
-
+
import_dir = &nt_header->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT];
import_section = rva_to_section (import_dir->VirtualAddress, nt_header);
dropped from NT4 anyway. */
abort ();
break;
-#ifndef IMAGE_REL_BASED_SECTION
+#ifdef IMAGE_REL_BASED_SECTION
case IMAGE_REL_BASED_SECTION:
case IMAGE_REL_BASED_REL32:
/* Docs don't say what these values mean. */
/* Open the original (dumped) executable file for reference. */
if (!open_input_file (&in_file, in_filename))
{
- printf ("Failed to open %s (%d)...bailing.\n",
+ printf ("Failed to open %s (%d)...bailing.\n",
in_filename, GetLastError ());
exit (1);
}
which should fit in the alignment slop. */
if (!open_output_file (&out_file, out_filename, in_file.size))
{
- printf ("Failed to open %s (%d)...bailing.\n",
+ printf ("Failed to open %s (%d)...bailing.\n",
out_filename, GetLastError ());
exit (1);
}
}
/* eof */
+
+/* arch-tag: 144ca747-168e-43a0-9736-3f4c0ba1657f
+ (do not change this comment) */