Added support for deprecated POSIX functions on Windows.
authorTamar Christina <tamar@zhox.com>
Thu, 1 Sep 2016 20:30:07 +0000 (21:30 +0100)
committerTamar Christina <tamar@zhox.com>
Thu, 1 Sep 2016 20:31:52 +0000 (21:31 +0100)
commite5ecb2010514405ac1b9b1285a8a65c00a5fd4e0
tree866ae612180fb7fab7af9281d8f43980ec6718e1
parentf233f00b1915ac6c0a200b8017a9f07deefd401e
Added support for deprecated POSIX functions on Windows.

Summary:
With the introduction of 8.0.1 We've stopped supporting in GHCi
the use of POSIX functions under their deprecated names on Windows.

This to be compatible with object and libraries from the most
popular compilers on the platform (Microsoft and Intel compilers).

However this brings a confusing disparity between the compiled and
interpreted behavior since MingW-W64 does support the deprecated names.

Also It seems clear that package writers won't update their packages to
properly support Windows. As such I have added redirects in the RTS
for the deprecated functions as listed on

https://msdn.microsoft.com/en-us/library/ms235384.aspx.

This won't export the functions (as in, they won't be in the symbol table
of compiled code for the RTS.) but we inject them into the symbol table
of the dynamic linker at startup.

Test Plan:
./validate
and

make test TEST="ffi017 ffi021"

Reviewers: thomie, simonmar, RyanGlScott, bgamari, austin, hvr, erikd

Reviewed By: simonmar, bgamari

Subscribers: RyanGlScott, #ghc_windows_task_force

Differential Revision: https://phabricator.haskell.org/D2500

GHC Trac Issues: #12209, #12497, #12496
docs/users_guide/8.0.2-notes.rst
libraries/base/System/Posix/Internals.hs
rts/Linker.c
rts/RtsSymbols.c
rts/RtsSymbols.h
testsuite/tests/ffi/should_run/all.T
testsuite/tests/rts/Makefile
testsuite/tests/rts/T12497.hs [new file with mode: 0644]
testsuite/tests/rts/T12497.stdout [new file with mode: 0644]
testsuite/tests/rts/all.T