diff options
| author | Fabrice Popineau | 2012-09-30 23:36:42 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2012-09-30 23:36:42 +0200 |
| commit | 62aba0d4973c5cba7ac7c387bbe133e0e3061c5c (patch) | |
| tree | 19fa592c7c48ffdbd0ebae36de7f516f8c749226 /lib-src | |
| parent | e7a2937b11bffc9ac24936e9f46201ce2abf38cc (diff) | |
| download | emacs-62aba0d4973c5cba7ac7c387bbe133e0e3061c5c.tar.gz emacs-62aba0d4973c5cba7ac7c387bbe133e0e3061c5c.zip | |
Support x64 build on MS-Windows with MSVC.
src/w32term.h (SCROLL_BAR_PACK, SCROLL_BAR_UNPACK): Define for x64.
(SET_SCROLL_BAR_W32_WINDOW): Cast ID to intptr_t, for
compatibility with x64.
src/w32term.c (w32_draw_underwave): Don't use GCC extensions for
defining an XRectangle structure.
src/w32proc.c (RVA_TO_PTR, w32_executable_type): Fix pointer
arithmetics for compatibility with x64.
src/w32menu.c (add_menu_item): Use UINT_PTR instead of UINT, for
compatibility with x64.
src/w32heap.h: Adjust prototypes and declarations.
src/w32heap.c (RVA_TO_PTR, allocate_heap, sbrk, init_heap)
(round_heap): Use DWORD_PTR, ptrdiff_t and size_t instead of
DWORD, long, and unsigned long, for compatibility with x64.
(allocate_heap) [_WIN64]: Reserve 32GB of memory.
(sbrk): Argument is now of type ptrdiff_t.
src/w32fns.c (HMONITOR): Condition declaration on _WIN32_WINNT being
less than 0x0500.
(w32_msg_pump): Use WPARAM type for 'result'.
src/w32.c (init_environment, get_emacs_configuration): Support AMD64
architecture.
(init_ntproc): Cast arguments of _open_osfhandle to intptr_t, for
compatibility with x64.
src/vm-limit.c (lim_data): Now size_t.
(check_memory_limits): Adjust prototypes of real_morecore and
__morecore to receive argument of type ptrdiff_t. Use size_t for
five_percent and data_size.
src/unexw32.c: Use DWORD_PTR instead of DWORD for file-scope
variables, for compatibility with x64.
(rva_to_section, offset_to_section, relocate_offset)
(OFFSET_TO_RVA, RVA_TO_OFFSET, RVA_TO_SECTION_OFFSET)
(PTR_TO_RVA, RVA_TO_PTR, OFFSET_TO_PTR, get_section_info)
(copy_executable_and_dump_data): Use DWORD_PTR instead of DWORD
for compatibility with x64.
src/sysdep.c (STDERR_FILENO): Define if not already defined.
src/ralloc.c (real_morecore): Argument type is now ptrdiff_t.
(__morecore): Argument type is now ptrdiff_t.
(ROUNDUP, MEM_ROUNDUP): Use size_t instead of 'unsigned long'.
(relinquish): Use ptrdiff_t type for 'excess'.
(r_alloc_sbrk): Argument type is now ptrdiff_t.
src/makefile.w32-in (HEAPSIZE): Get value from EMACS_HEAPSIZE.
(bootstrap-temacs-CMD, bootstrap-temacs-SH): Use $(EMACS_PURESIZE)
instead of a literal number.
src/gmalloc.c [WINDOWSNT]: Include w32heap.h.
(min): Define only if not already defined.
src/frame.c (x_report_frame_params): Use EMACS_UINT for the return
value of FRAME_X_WINDOW, to fit a 64-bit pointer on 64-bit Windows
hosts.
src/image.c (x_bitmap_pixmap): Return ptrdiff_t, not int, since
'bitmaps' is a pointer.
src/dispextern.h (x_bitmap_pixmap): Adjust prototype.
src/alloc.c (gdb_make_enums_visible): Now conditional on __GNUC__.
nt/makefile.w32-in ($(TRES)): Use $(EMACS_MANIFEST).
nt/inc/sys/socket.h: Don't map Winsock error codes to standard ones
that are already defined.
nt/inc/ms-w32.h (EMACS_INT, EMACS_UINT, EMACS_INT_MAX, PRIuMAX)
(pI, _INTPTR) [_MSC_VER]: Fix definitions for MSVC.
[_MSC_VER]: Add pragmas to suppress some MSVC warnings.
nt/preprep.c (pfnCheckSumMappedFile, rva_to_section)
(offset_to_section, relocate_offset, OFFSET_TO_RVA)
(RVA_TO_OFFSET, RVA_TO_SECTION_OFFSET, PTR_TO_RVA)
(OFFSET_TO_PTR, ROUND_UP, ROUND_DOWN)
(copy_executable_and_move_sections, ADJUST_IMPORT_RVA, main): Use
DWORD_PTR instead of DWORD for compatibility with x64.
nt/nmake.defs: Support AMD64.
(EMACS_HEAPSIZE, EMACS_PURESIZE, EMACS_MANIFEST): New macros.
nt/gmake.defs: (EMACS_HEAPSIZE, EMACS_PURESIZE, EMACS_MANIFEST):
New macros.
nt/addsection.c (pfnCheckSumMappedFile, rva_to_section)
(offset_to_section, relocate_offset, OFFSET_TO_RVA)
(RVA_TO_OFFSET, RVA_TO_SECTION_OFFSET, PTR_TO_RVA)
(OFFSET_TO_PTR, ROUND_UP, ROUND_DOWN)
(copy_executable_and_add_section, main): Use DWORD_PTR instead of
DWORD, for compatibility with x64.
nt/emacs-x64.manifest: New file.
nt/emacs-x86.manifest: Renamed from emacs.manifest.
lib-src/ntlib.c (gettimeofday): Copy from src/w32.c. lib/gettime.
needs this function.
Diffstat (limited to 'lib-src')
| -rw-r--r-- | lib-src/ChangeLog | 5 | ||||
| -rw-r--r-- | lib-src/ntlib.c | 30 |
2 files changed, 35 insertions, 0 deletions
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 4c25f54545d..32aa985eaff 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2012-09-30 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * ntlib.c (gettimeofday): Copy from src/w32.c. lib/gettime.c | ||
| 4 | needs this function. | ||
| 5 | |||
| 1 | 2012-09-26 Juanma Barranquero <lekktu@gmail.com> | 6 | 2012-09-26 Juanma Barranquero <lekktu@gmail.com> |
| 2 | 7 | ||
| 3 | * makefile.w32-in (obj): Add profiler.o. | 8 | * makefile.w32-in (obj): Add profiler.o. |
diff --git a/lib-src/ntlib.c b/lib-src/ntlib.c index 2cc791fb56a..feaad1c1bb7 100644 --- a/lib-src/ntlib.c +++ b/lib-src/ntlib.c | |||
| @@ -29,9 +29,16 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 29 | #include <sys/stat.h> | 29 | #include <sys/stat.h> |
| 30 | #include <errno.h> | 30 | #include <errno.h> |
| 31 | #include <ctype.h> | 31 | #include <ctype.h> |
| 32 | #include <sys/timeb.h> | ||
| 32 | 33 | ||
| 33 | #include "ntlib.h" | 34 | #include "ntlib.h" |
| 34 | 35 | ||
| 36 | struct timezone | ||
| 37 | { | ||
| 38 | int tz_minuteswest; /* minutes west of Greenwich */ | ||
| 39 | int tz_dsttime; /* type of dst correction */ | ||
| 40 | }; | ||
| 41 | |||
| 35 | #define MAXPATHLEN _MAX_PATH | 42 | #define MAXPATHLEN _MAX_PATH |
| 36 | 43 | ||
| 37 | /* Emulate sleep...we could have done this with a define, but that | 44 | /* Emulate sleep...we could have done this with a define, but that |
| @@ -202,6 +209,29 @@ getpass (const char * prompt) | |||
| 202 | return NULL; | 209 | return NULL; |
| 203 | } | 210 | } |
| 204 | 211 | ||
| 212 | /* This is needed because lib/gettime.c calls gettimeofday, which MSVC | ||
| 213 | doesn't have. Copied from w32.c. */ | ||
| 214 | void | ||
| 215 | gettimeofday (struct timeval *tv, struct timezone *tz) | ||
| 216 | { | ||
| 217 | struct _timeb tb; | ||
| 218 | _ftime (&tb); | ||
| 219 | |||
| 220 | tv->tv_sec = tb.time; | ||
| 221 | tv->tv_usec = tb.millitm * 1000L; | ||
| 222 | /* Implementation note: _ftime sometimes doesn't update the dstflag | ||
| 223 | according to the new timezone when the system timezone is | ||
| 224 | changed. We could fix that by using GetSystemTime and | ||
| 225 | GetTimeZoneInformation, but that doesn't seem necessary, since | ||
| 226 | Emacs always calls gettimeofday with the 2nd argument NULL (see | ||
| 227 | current_emacs_time). */ | ||
| 228 | if (tz) | ||
| 229 | { | ||
| 230 | tz->tz_minuteswest = tb.timezone; /* minutes west of Greenwich */ | ||
| 231 | tz->tz_dsttime = tb.dstflag; /* type of dst correction */ | ||
| 232 | } | ||
| 233 | } | ||
| 234 | |||
| 205 | int | 235 | int |
| 206 | fchown (int fd, unsigned uid, unsigned gid) | 236 | fchown (int fd, unsigned uid, unsigned gid) |
| 207 | { | 237 | { |