summaryrefslogtreecommitdiff
path: root/win32
Commit message (Collapse)AuthorAgeFilesLines
* Added README.androidBrian Fraser2014-01-262-18/+22
|
* Added targetsh to all the canned config filesBrian Fraser2014-01-233-0/+3
|
* Update the WinCE files to the new cross modelBrian Fraser2014-01-222-63/+89
|
* create new perldelta for 5.19.9Ricardo Signes2014-01-203-4/+8
|
* bump version to 5.19.9!Ricardo Signes2014-01-202-2/+2
|
* config.h: Remove the exceptions for cross-compilation buildsBrian Fraser2014-01-173-4/+4
| | | | | This makes it so that the values for MEM_ALIGNBYTES and BYTEORDER are taken from config.sh, instead of always getting a default.
* [perl #120933] static extensions now depend on nonxs extensionsTony Cook2014-01-152-2/+2
| | | | | This means that changes to static extensions like Win32CORE actually result in them being rebuilt.
* fix missing _rotl64 symbol on Visual C 2003Daniel Dragan2014-01-091-0/+5
| | | | | | | | | Due to a bug in the CRT (msvcr71.dll), these 2 functions are not defined in any lib Perl can use (static link CRTs dont apply, Perl only uses DLL CRTs), but they are available as intrinsics. This solves a link error about missing symbol __rotl64 in hv.obj, from usage in hv_func.h, on 32 bit USE_64_BIT_INT VC 2003 builds. _rotr64 is included for completeness. This fix is filed as [perl #120925].
* Purge sfio support from configure.com, Configure and related files.Nicholas Clark2013-12-276-45/+0
| | | | | | | Most of these are actually generated, so the maintenance complexity reduction is not as impressive as the diffstat suggests. (Incorporating a fix from Merijn)
* Purge sfio support, which has been broken for a decade.Nicholas Clark2013-12-275-5/+2
| | | | | | | | | | | The last Perl release that built with -Dusesfio was v5.8.0, and even that failed many regression tests. Every subsequent release fails to build, and in the decade that has passed we have had no bug reports about this. So it's safe to delete all the code. The Configure related code will be purged in a subsequent commit. 2 references to sfio intentionally remain in fakesdio.h and nostdio.h, as these appear to be for using its stdio API-compatibility layer.
* Bump version number from 5.19.7 to 5.19.8.Abigail2013-12-202-2/+2
|
* Generate new perldeltaAbigail2013-12-203-4/+8
|
* config.ce: Use ~cc~, not ~CC~Brian Fraser2013-12-181-4/+4
| | | | | | This was preventing several things from working properly, like Errno_pm.PL, which tried to use $Config{cppstdin}, which was not set properly.
* WinCE makefile will now hypothetically build git_version.hDaniel Dragan2013-12-091-1/+8
| | | | | | | | | | | The dependency on $(CONFIGPM) is for git_version.h to exist early enough to be copied to the CORE dir. In real life, git_version.h still is built by a Desktop build since WinCE doesn't yet support being built with a system Perl. This commit is a step in getting WinCE to build without needing a Desktop build first and for better integration with Castaway's Cross changes in the future. The changes in this commit were tested with other unpublished changes that tried to do a WinCE build with a system Perl.
* cleanup ..\git_version.h rule in win32/MakefileDaniel Dragan2013-12-091-3/+1
| | | | | | | Group the nmake line onto 1 line similar to the dmake version, for 1 shell call out vs 3. "&&" makes sure the build stops if miniperl returns non-0 instead of ignoring the code, cd'ing back to dir win32, and continuing the build. Part of RT #120727.
* Merge branch 'dirnames' into bleadSteve Hay2013-12-021-0/+4
|\
| * Move Cwd and List-Util to folders named as per their CPAN distributionsSteve Hay2013-10-241-0/+4
| |
* | Extend Intel C++ compiler support (a48cc4c427) to dmake buildsSteve Hay2013-11-261-0/+18
| |
* | New perldelta for v5.19.7Chris 'BinGOs' Williams2013-11-203-4/+8
| |
* | Bump the perl version in various places for v5.19.7Chris 'BinGOs' Williams2013-11-202-2/+2
| |
* | add Intel C++ Compiler for Win32 supportDaniel Dragan2013-11-202-2/+30
| | | | | | | | | | | | | | | | | | | | | | | | -most fixes involve code detecting Perl on VC, and changing it to ICC is another kind of VC, but ICC's version isn't this "other kind of VC"'s version number, call the partner VC to find out the "VC version number" of ICC not yet done -no Intel C specific optimization flags -long doubles and C99 -ccversion behavior might not be ideal/rethink
* | Add Synology instructionsH.Merijn Brand2013-11-142-4/+6
| |
* | check existence of headers and libs for WinCE in Makefile.ceDaniel Dragan2013-11-121-3/+24
| | | | | | | | | | | | | | | | | | Macro LIBC was used since day 1 of WinCE port (commit e1caacb4fd ), but never before defined. On Desktop Win32 Perl, LIBC is msvcrt.lib, so fix corelibc/msvcrt to be LIBC and not part of CELIBS. Then use LIBC in a sanity check. Sanity checks will give an error message, vs running the C compiler and geting cryptic messages about unknown .hs and random missing symbols.
* | And the caretx object file for wince.Craig A. Berry2013-11-041-0/+1
| | | | | | | | Thanks to Daniel Dragan for pointing out the omission.
* | Also fix wince for caretx after e2051532106.Craig A. Berry2013-11-041-0/+1
| |
* | Restore Windows build following commit e205153210Steve Hay2013-11-052-0/+2
| |
* | win32/win32sck.c: dont close() a freed socket os handleDaniel Dragan2013-11-023-4/+121
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is in RT as [perl #120091] but also fixes [perl #118059]. Because the MS C lib, doesn't support sockets natively, Perl uses open_osfhandle, to wrap a socket into CRT fd. Sockets handles must be closed with closesocket, not CloseHandle (which CRT close calls). Undefined behavior will happen otherwise according to MS. Swap the now closed socket handle in the CRT to INVALID_HANDLE_VALUE. The CRT will not call CloseHandle on INVALID_HANDLE_VALUE and returns success if it sees INVALID_HANDLE_VALUE. CloseHandle will never be called on a socket handle with this patch. In #118059, a race condition was reported, where accept() failed with ENOTSOCK, when a psuedofork was done, and connection from the child fake perl process to parent fake perl process was done. The race condition's effects occur inside the user mode code in mswsock.dll!_WSPAccept in the parent perl, which winds up having a kernel handle of an unknown type in it that is invalid. The invalid handle is passed to kernel calls, which fail, because the handle is invalid, and the error is translated to ENOTSOCK. The exact mechanism of the bug and 100% reproducabilty of the race were never established, since mswsock.dll is closed source. Another benefit of this patch is making it easier to use C debuggers on a Win32 Perl because of less debugger-only bad handle exceptions (NtGlobalFlag FLG_ENABLE_HANDLE_EXCEPTIONS/0xC0000008 STATUS_INVALID_HANDLE). This commit reverts parts of commit 9b1f18150a "Get rid of PERL_MSVCRT_READFIX" and parts of commit 46e77f1118 "Don't use the PERL_MSVCRT_READFIX when using VC++ 7.x onwards." and contains additional changes not found in those 2 commits. The method for selecting the definition of struct ioinfo isn't perfect. It will break if VC > 6 is changed to use the older msvcrt.dll. For some versions of the CRT, like 2005/8.0, it is impossible to know the definition of ioinfo struct at C compile time, since the struct increased in size a number of times with higher build numbers of v8.0 CRT. SxS and security updates make that same perl binary will run with different v8.0 CRTs at different times. For the case when ioinfo can not be hard coded, introduce WIN32_DYN_IOINFO_SIZE. With WIN32_DYN_IOINFO_SIZE, the size of the ioinfo struct is determined on Perl process startup using _mize. Since VC 2013 is a brand new product at the time of this patch, even though its struct is known, and 2008 through 2012 have been stable so far, don't assume at this time 2013's ioinfo will be stable. Therefore, VC 2003 and older (including Mingw's v6.0), 2008 to 2012, are hard coded. 2013 is a candidate one day to be hard coded. VC 2005 can never be hard coded. All non-WIN32_DYN_IOINFO_SIZE compilers will work with WIN32_DYN_IOINFO_SIZE. Non-WIN32_DYN_IOINFO_SIZE mode is simply more efficient. For future compatibility concerns, 3 forms of protection are offered. If __pioinfo isn't exported anymore, the Perl build will break. In WIN32_DYN_IOINFO_SIZE mode, if __pioinfo isn't heap memory anymore or the start of a memory block, the runtime panic will happen. In with and without WIN32_DYN_IOINFO_SIZE, only on a DEBUGGING build, the handle returned by CRT's _get_osfhandle, which is the authentic handle in the CRT, is compared to the handle found by accessing the ioinfo struct directly. If they don't match, the handle swapping code is broken and the assert fails.
* | enable LTO/LTCG/WPO for most Visual CsDaniel Dragan2013-10-294-5/+12
|/ | | | | All Win32 Visual C compilers except for VC 6/_MSC_VER == 1200 support LTCG. LTCG generates slightly smaller and slightly faster binaries.
* Add support for building with Visual C++ 2013Steve Hay2013-10-223-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Two tests (t/io/fs.t and cpan/HTTP-Tiny/t/110_mirror.t) fail on my system, currently in Daylight Saving Time, both due to times written/read by utime()/stat() being off by one hour... Not sure what the issue is yet, but I've reproduced it in this C program: #include <stdio.h> #include <sys/stat.h> #include <sys/utime.h> void main(void) { struct _utimbuf ut; struct _stat st; time_t t; t = 760060800; printf("Setting: %ld\n", t); ut.actime = t; ut.modtime = t; if (_utime("test.c", &ut) == -1) { perror("_utime failed\n"); return; } if (_stat("test.c", &st) != 0) { perror("_stat failed\n"); return; } printf(" atime: %ld\n", st.st_atime); printf(" mtime: %ld\n", st.st_mtime); } which outputs Setting: 760060800 atime: 760057200 mtime: 760057200 with VC++ 2013, instead of Setting: 760060800 atime: 760060800 mtime: 760060800 like Visual C++ 6.0 through 2012 all do.
* WinCE Perl EVC4 supportDaniel Dragan2013-10-221-4/+46
| | | | | | | | | | | | | | | | - CCTYPE has always been empty string in Makefile.ce, makedef.pl does not complain about this, but it is a bug, so fix it - create a profile for a EVC4 arm build - put -GS- and -GL flags into compiler version specific defs so VC6 era EVC4 will work - don't delete ..\lib\Config.pm, it was made by win32/Makefile, for a Desktop Perl, deleting this breaks miniperl when it loads its pure perl modules for cross MakeMaker module building, and requires rebuilding the Desktop Perl so miniperl works again. CE Perl has its Config.pm in the xlib\$(MACHINE) dir
* .gitignore Win32's miniperl object filesDaniel Dragan2013-10-211-0/+1
| | | | | | | | | Comments from the committer: win32/mini/*.obj (and hence win32/mini/ since it contains nothing other than *.obj) should be .gitignored by the top-level .gitignore file anyway, but git clean -dfX doesn't remove them without this patch. (git clean -dfx does, but some developers want to keep untracked files other than build products explicitly listed by .gitignore files.)
* WinCE Makefile and make_ext.pl general and XS fixesDaniel Dragan2013-10-213-28/+175
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On a WinCE build. On the 2nd nmake run, using Makefile.ce, eventually calls the Extensions target which calls make_ext.pl. What happens is nmake for CE for each module is called on the Desktop per module makefile from the earlier Desktop build. Since the Desktop Perl already was built sucessfully, all rules/deps are met in the Desktop per module makefile, and nothing happens during the module building phase for a CE build. Previously I used external file management tools to delete the per module Makefiles before running Makefile.ce. *make_ext.pl - implement deleting and rebuilding the per module makefile on a Cross build - use constants for constant folding, there are opportunities for other variables to be converted to constants in the future - fix a bug from commit baff067e71 where unlink() on a file with an open handle ($mfh) didn't delete the file from disk and a new per module makefile would be not be built by make_ext.pl later since the per module makefile was still on disk. This was observed on Win32. Also harden the unlink code with a new _unlink sub that is fatal if the file is still on disk after unlink supposedly deleted it. - var $header and the quotemeta is because of an issue in Perl #119793 *Makefile.ce - bring the debugging symbol generation flags and optimization flags to be closer to a Dekstop VC Perl build - ICWD is obsolete as of commit f6b3c354c9 , remove it - MINIMOD is obsolete as of commit 7b4d95f74b , remove it - make a poisoned config.h so if there is a XS building mixup between a desktop and CE perl, the poisoned config.h for CE will stop the build gracefully - $(MINIPERL) has never been defined in Makefile.ce from day 1 (10 years) replace with $(HPERL) everywhere, this was causing things to not run silently since $(MINIPERL) was empty string. Use HPERL instead of MINIPERL to allow flexibility to use the full perl binary if necessery one day - better cleaning on root makefile clean target *win32/win32.h *win32/win32iop.h - silence alot of redefinition warnings which gave pages of warnings on each WinCE compliand *mg.c - win32_get_errno is only on WIN32 build not WINCE a "nmake -f Makefile.ce all" will now build the CE interp and all modules in 1 shot with no user intervention
* Bump version for Perl 5.19.6Steve Hay2013-10-202-2/+2
|
* Create new perldelta for Perl 5.19.6Steve Hay2013-10-203-4/+8
|
* Move B-Deparse from dist/ to lib/ since it is non-dual-lived and pure-PerlSteve Hay2013-10-192-2/+0
|
* Fix Win32 build with MinGW/gcc-4.8+ which define some errno.h values >= 100Steve Hay2013-10-173-22/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | Commit ea95436966 made changes to how errno.h constants are handled for VC++ 2010 and above, which have added new values in the range 100-140. Some versions of gcc-4.8.0 and above are now catching up and provide some of these new values too (e.g. binaries from http://mingw-w64.sourceforge.net/ but not currently those from http://www.mingw.org/), but they don't provide all of them. EADDRINUSE is provided, so convert_errno_to_wsa_error() gets included, but the compilation fails because the following #defines which VC++ 2010 and above provide are missing: EBADMSG EIDRM ENODATA ENOLINK ENOMSG ENOSR ENOSTR ENOTRECOVERABLE EOTHER ETIME ETXTBSY Simply ignore (#ifdef away) these constants for those compilers that don't provide them.
* Removed the ifdefs for INCOMPLETE_TAINTSBrian Fraser2013-09-211-2/+0
| | | | | This was added in 5.5/5.6 as a backwards-compatibility measure when taint was extended to happen in more places.
* Bump version for 5.19.5Steve Hay2013-09-202-2/+2
|
* Add new perldelta for 5.19.5Steve Hay2013-09-203-4/+8
|
* Add a USING_MSVC6 macro to identify Microsoft Visual C++ 6.0Steve Hay2013-09-191-1/+1
| | | | | | | This simplifies some of the logic necessary for coping with its various problems. Suggested by Nicholas Clark.
* Update win32/config_H.[gv]c canned configuration filesSteve Hay2013-09-182-32/+36
| | | | | | | | | | The win32/config.[gv]c files are generally kept up to date these days (and we have tests to check that) so no changes are required in them. The win32/config_H.[gv]c files are regenerated as per instructions in the win32/Makefile and win32/makefile.mk, being careful to restore a couple of things otherwise lost from the config_H.gc file. The files are now in sync with the top-level master configuration file, config_h.SH.
* depend on the new win32 sys/errno2.h headerTony Cook2013-09-183-0/+3
|
* make win32_link and win32_rename raise ENOSPC and EDQUOT when appropriateChristian Millour2013-09-171-0/+12
|
* Note that the USE_64_BIT_INT build option is not supported with MSVC++ 6.0Steve Hay2013-09-162-0/+15
| | | | | | | Also change the Windows makefiles to disable this option if it is set with this compiler selected. (Use !UNDEF (for nmake) and != (for dmake) to be sure of disabling the option if it is defined on the command-line rather than by editing the makefile.)
* Fix the #include of winsock2.h in win32/include/sys/errno2.hSteve Hay2013-09-162-6/+21
| | | | | | | | | | | | | | | | | | | | | | | For some reason (I didn't figure out why) cpan/Win32/Win32.xs did not compile as of the previous commit, but in any case we cannot just blindly include winsock2.h because (a) it is too late if winsock.h has already been included and (b) early WinCE doesn't have it. The definition of _WINSOCKAPI_ was also wrongly not updated to _WINSOCK2API_ but was mistaken in its comment "Don't drag in everything" anyway: it's actually just an old-fashioned "include guard", not a means to include a minimal API from the file. (The mistaken comment came from the original ext/Errno/Errno_pm.PL before this round of $!-related changes. That file also had a redundant "#include <winsock.h>" left in it which should have been removed along with earlier work that removed the other one, so tidy that up too.) Steal a hopefully more correct incantation from win32/include/sys/socket.h instead. Now that we allow for the possibility of winsock.h being used again, we must take care not to make use of WSAECANCELLED if it is not defined. (That is the only WSAExxx constant which we use that was new in winsock2.h.)
* We need winsock2.h for WSAECANCELLED in errno2.hSteve Hay2013-09-161-1/+1
|
* Clarify a comment in errno2.hSteve Hay2013-09-161-1/+2
|
* Fix Windows build for compilers other than VC10+Steve Hay2013-09-163-2/+16
| | | | | | | The new errno2.h only ensures that those new Exxx constants which are required by convert_wsa_error_to_errno() have definitions; the other new Exxx constants will remain undefined on compilers other than VC10+, so we must take care not to use them unless we know they are defined.
* Simplify errno2.h slightlySteve Hay2013-09-162-99/+92
| | | | | | | | | | | | | | | | | | | | | There is no need for it to worry about ensuring that standard errno.h values like EINTR are defined. There is no point in it defining dummy constants like EINVALIDPROCTABLE which do not exist in errno.h at all. They would only be given the corresponding WSAExxx values anyway, so the win32sck.c function might just as well return them directly. Other constants like ESOCKTNOSUPPORT which do not exist in errno.h on Windows but presumably exist elsewhere since POSIX tries to exports them are still worth defining (where possible -- it isn't possible for EHOSTDOWN since there is no corresponding WSAEHOSTDOWN); add comments for these for clarity. Also comment which errno.h constants are new in VC10, and mention three of the four that win32/include/sys/socket.h used to redefine because they are used in the perl core (ENOTSOCK, EAFNOSUPPORT and ECONNABORTED) -- the other one (ECONNRESET) does not appear to be used in the perl core as far as I can tell.
* Fix stringification of $! in VC10+ builds where errno > sys_nerrSteve Hay2013-09-163-10/+126
| | | | | | | | | | | | | | | | | | | | | | | | | VC++ 2010 and above define a "POSIX supplement" of errno values ranging from EADDRINUSE (100) to EWOULDBLOCK (140), but sys_nerr is still 43 and strerror() returns "Unknown error" for them. We already avoid using strerror() if errno > sys_nerr, but we treat such values as Windows error codes (i.e. <winerror.h> values) and look up the corresponding system messages for them. There is no better plan for these POSIX supplement errno values, but they must be converted from <errno.h> values to <winerror.h> values first otherwise we will look up the wrong system message. In practice, we only expect to find errno > sys_nerr in the case of Windows sockets errors (we used to assign WSAGetLastError() to errno), so we simply convert Exxx values to WSAExxx values where possible, and use a default <winerror.h> value otherwise (namely, ERROR_INVALID_FUNCTION). This change fixes code such as this: perl -le "$!=107; print $!" which now outputs the expected "No connection could be made because the target machine actively refused it." rather than "The program stopped because an alternate diskette was not inserted." (in VC10+ builds). Also: Fix the spelling of ECANCELED.