Commit Graph

11387 Commits

Author SHA1 Message Date
Jon Turney d4bed7c3af Use <example> tag at same level as <para>, not inside it
In Cygwin utils documentation, use the <example> tag at same level as
<para>, not inside it.

This improves the generated manpages.

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2016-07-07 14:48:09 +01:00
Corinna Vinschen a5d197eb48 Add release message for commit 8cff156
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-07-06 19:16:05 +02:00
Corinna Vinschen 8cff1569fc strace: Make sure strace timer isn't copied to child process
At fork time the .data and .bss segments of the Cygwin DLL are copied
over to the child process.  This also copies the strace timer since
it's in the .bss segment so far.  Fix that by moving the strace timer
out into the .data_cygwin_nocopy segment.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-07-06 19:12:59 +02:00
Corinna Vinschen a68ca43b90 Redefine locale info in struct _reent for per-thread locales
The _reent members _current_category and _current_locale are not
used at all.  _current_locale is set to "C" in various points of
the code but its value is just as unused as _current_category.

This patch redefines these members without changing the size of the
structure to allow for an implementation of per-thread locales per
POSIX-1.2008 (i.e. uselocale and usage of the per-thread locale in
subsequent function calls).

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-07-06 15:41:35 +02:00
Corinna Vinschen 85db21730b ldd: Handle executable relocation when setting breakpoint
set_entry_point_break() uses GetModuleInformation to fetch the
address of the exe's entry point.  However, just as with
lpStartAddress from the CREATE_PROCESS_DEBUG_EVENT event, the
returned address is only computed from the PE file header.  It's
not actually the entry point in memory, if the executable is
relocated (ASLR).  See
https://msdn.microsoft.com/en-us/library/windows/desktop/ms684229(v=vs.85).aspx

Convert this to using the info from CREATE_PROCESS_DEBUG_EVENT
combined with the offset from the PE file header's  AddressOfEntryPoint
to deal with relocation.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-07-02 12:36:05 +02:00
Corinna Vinschen 9f54ceadae ldd: terminate process on hitting breakpoint
So far ldd terminates the inferior process as soon as some thread
is started.  Apparently threads are started from even ntdll.dll
before the main thread of the application is started.  As a result
the dll list is cut short since ldd terminates prematurely.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-07-02 12:27:04 +02:00
Corinna Vinschen 29600e04e3 Make sure to use the Winsock definition of FIONREAD in ioctlsocket call
Commit b1b46d45 introduced a regression.  After redefining FIONREAD
as part of restructuring newlib/Cygwin headers, the call to ioctlsocket
in the FIONREAD branch of fhandler_socket::ioctl should have been
changed to use the Winsock definition of FIONREAD, which I neglected.
This only affects 64 bit Cygwin.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-07-01 16:56:07 +02:00
Jon Turney e27cfa4631 Restore mingw64-x86_64-gcc-core in FAQ listing required packages
Restore mingw64-x86_64-gcc-core to requirements for 32-bit builds in FAQ
listing required packages, and give reason.
2016-06-29 15:08:33 +01:00
Jon Turney 24b1c90116 Update FAQ listing required packages for building Cygwin
docbook2X is now required for building documentation
libiconv differences between x86_64 and x86 no longer exist
2016-06-28 20:11:12 +01:00
Corinna Vinschen c920bf0b01 Reformat some too-long lines
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-27 18:00:56 +02:00
Corinna Vinschen 532ecdd36f Add comment to point out missing access right per documentation
In get_mem_values we open the process without PROCESS_VM_READ access
and are *still* able to request working set information, despite
MSDN claiming we need it for this purpose.  Instead of adding this
access right, just add an comment to point this out for now.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-27 18:00:01 +02:00
Corinna Vinschen ba58e5f20c Use PROCESS/THREAD_QUERY_LIMITED_INFORMATION where appropriate
Using PROCESS/THREAD_QUERY_INFORMATION may limit the number of
processes/threads we can inspect depending on their integrity level.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-27 17:56:16 +02:00
Corinna Vinschen d21b63594c Set supported Windows release to Windows 10
This affects setting _WIN32_WINNT and WINVER.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-27 17:51:41 +02:00
Corinna Vinschen b6693e7c17 Remove pre-Vista considerations from utilities
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-27 17:50:25 +02:00
Corinna Vinschen 084253081a Add release message for commit b2867a6
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-27 13:21:19 +02:00
Jon Turney d3297c3304 Revert "Use .DELETE_ON_ERROR"
This reverts commit 62b0bf0b8b.
2016-06-25 17:08:18 +01:00
Jon Turney 62b0bf0b8b Use .DELETE_ON_ERROR
Use .DELETE_ON_ERROR
Make the fact that we are running dllfixdbg less obscure
2016-06-25 17:03:57 +01:00
Corinna Vinschen 6ef3cc7da3 Remove leftover useless copyright hints
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-25 13:36:52 +02:00
Corinna Vinschen 2a18fb4b94 Clarify setting of child_info::msv_count in child_info.h
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-25 10:21:45 +02:00
Corinna Vinschen cb34fffe07 Remove CYGWIN=detect_bloda option 2016-06-25 00:43:01 +02:00
Corinna Vinschen da5b48ef3c No longer support "Interact with desktop"
Always create child user window station and desktop, unless only
spawning with restricted token.  Also fix formatting of a few comments
in child_info_spawn::worker.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-25 00:42:36 +02:00
Corinna Vinschen cd93c771ef Fix comments for AI_ADDRCONFIG and AI_V4MAPPED 2016-06-24 23:35:13 +02:00
Corinna Vinschen 7c84bfdb5f syscalls.cc: Merge desktop_ini_ext into desktop_ini 2016-06-24 23:34:33 +02:00
Corinna Vinschen f4aaa21441 fhandler_pty_master::pty_master_thread: Always check for correct pid 2016-06-24 23:33:48 +02:00
Corinna Vinschen ceab4452f1 Remove unused GetTickCount_ns 2016-06-24 23:33:01 +02:00
Corinna Vinschen 00e9bf2bb3 Fix various OS-related comments
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-24 23:32:39 +02:00
Corinna Vinschen bb0fc7a2c0 cygheap_domain_info::init: Fix comment 2016-06-24 23:21:48 +02:00
Corinna Vinschen 54c284caf2 Remove XP and Server 2003 from documentation
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-24 23:21:10 +02:00
Corinna Vinschen 0f5afe895f net.cc (fdsock): Fix comment 2016-06-24 22:50:12 +02:00
Corinna Vinschen ba8d6a595a child_info.h: Fix a comment 2016-06-24 22:50:00 +02:00
Corinna Vinschen b87224fba5 child_info::child_info: Fix a comment 2016-06-24 22:49:48 +02:00
Corinna Vinschen ecea753689 sec_auth.cc: Drop prototype for CreateProfile, don't expect failed autoload 2016-06-24 22:49:18 +02:00
Corinna Vinschen bfb5d3ffbb include/cygwin/if.h: Fix a comment 2016-06-24 22:48:58 +02:00
Corinna Vinschen 8b7c4f67c6 fhandler_disk_file::opendir: Fix a comment 2016-06-24 22:48:40 +02:00
Corinna Vinschen 81031e6850 eval_start_address: Fix comment
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-24 21:58:46 +02:00
Corinna Vinschen 8cfa64140d fhandler_dev_floppy::get_drive_info: fix comment
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-24 21:56:34 +02:00
Corinna Vinschen a361f44c97 symlink_info::check fixup comment and two test for non-XP 2016-06-24 21:07:39 +02:00
Corinna Vinschen e855447fd2 Drop autoloading transaction functions from ntdll 2016-06-24 21:07:39 +02:00
Corinna Vinschen 9d163cf80c Drop autoloading kernel32 symbols available since Vista 2016-06-24 21:07:39 +02:00
Corinna Vinschen 450b2dc8ed Drop autoloading of CancelSynchronousIo 2016-06-24 21:07:39 +02:00
Corinna Vinschen 67fd2101ab Drop max_sys_priv wincap
Convert sys_privs to const struct with TOKEN_PRIVILEGES layout.
Drop function get_system_priv_list.  Just use pointer to sys_privs.

Dropping max_sys_priv from wincaps requires to make sure that the
bitfield is 8 byte aligned on x86_64, otherwise gcc (5.3 only?)
apparently breaks access to the bitfield (off by 4 bytes).

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-24 21:00:04 +02:00
Corinna Vinschen b15d129559 Drop accidentally leftover comment from wincapc::init 2016-06-24 16:02:41 +02:00
Corinna Vinschen c7fe56dd65 Default to latest wincap 2016-06-24 16:02:41 +02:00
Corinna Vinschen b47a67e493 Drop Windows XP/2003 wincaps 2016-06-24 16:02:40 +02:00
Corinna Vinschen 8dd446a7b1 Drop has_broken_rtl_query_process_debug_information flag 2016-06-24 16:02:40 +02:00
Corinna Vinschen 2467e6f99b Drop terminate_thread_frees_stack flag 2016-06-24 16:02:40 +02:00
Corinna Vinschen 0bf159ab72 Drop has_pipe_reject_remote_clients flag 2016-06-24 16:02:40 +02:00
Corinna Vinschen 23a556f2c5 Drop has_set_thread_stack_guarantee flag 2016-06-24 16:02:40 +02:00
Corinna Vinschen 8b8c6c014b Drop has_program_compatibility_assistant flag 2016-06-24 16:02:40 +02:00
Corinna Vinschen c356901f0d Rename if_indextoname to cygwin_if_indextoname (analag for if_nametoindex)
Just call OS functions
2016-06-24 16:02:39 +02:00
Corinna Vinschen bd4339e2a2 Drop wow64_has_secondary_stack flag 2016-06-24 15:49:45 +02:00
Corinna Vinschen 105f79b489 Drop use_dont_resolve_hack flag
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-24 15:42:06 +02:00
Corinna Vinschen 807a628ec6 Drop has_restricted_raw_disk_access flag 2016-06-24 14:31:56 +02:00
Corinna Vinschen 166d3ddf5a Fix major device check when locking partitions
The change introduced in commit b2867a6 contains a faulty check for
the major device number in fhandler_dev_floppy::lock_partition.
Fix this.  Also fix comments.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-24 13:40:02 +02:00
Corinna Vinschen 9aab8eb5b6 Drop has_transactions flag 2016-06-24 13:12:20 +02:00
Corinna Vinschen ffcef702e7 Drop has_fast_cwd flag 2016-06-24 13:08:36 +02:00
Corinna Vinschen 288df6f818 Add support for certain newer locales only available with Script
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-24 12:11:42 +02:00
Corinna Vinschen 94f98f18db Drop has_localenames flag 2016-06-23 22:21:23 +02:00
Corinna Vinschen ed0ff4b940 Drop has_always_all_codepages flag 2016-06-23 22:21:23 +02:00
Corinna Vinschen e931b1a0eb Drop has_broken_udf flag 2016-06-23 22:21:23 +02:00
Corinna Vinschen 222e412f8d Drop has_sendmsg flag 2016-06-23 22:21:23 +02:00
Corinna Vinschen aacc4f63d0 Drop has_mandatory_integrity_control flag 2016-06-23 22:21:23 +02:00
Corinna Vinschen 380b9affd1 Drop has_restricted_stack_args flag 2016-06-23 22:21:23 +02:00
Corinna Vinschen 6f560555bd Drop supports_all_posix_ai_flags 2016-06-23 22:21:23 +02:00
Corinna Vinschen a759558418 Drop has_gaa_on_link_prefix flag and remove obsolete functions thusly 2016-06-23 22:18:42 +02:00
Corinna Vinschen 2fb0813caa Drop has_recycle_dot_bin 2016-06-23 22:01:14 +02:00
Corinna Vinschen 0c8bbd5888 Add release message for commit 733af66
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-23 21:58:38 +02:00
Corinna Vinschen eba8d258f1 Clarify source file license in CYGWIN_LICENSE
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-23 21:52:12 +02:00
Corinna Vinschen 733af66c6e Remove support for SUNWNFS file system 2016-06-23 21:30:15 +02:00
Corinna Vinschen b2867a68b9 Handle up to 63 partitions per drive
Revamp device parsing code.  Introducing support for more partitions
into the shilka-generated parser has the unfortunate side-effect of
raising the size of the DLL by almost 2 Megs.  Therefore we split out
the handling for /dev/sdXY devices into a tiny bit of hand-written
code.

While at it, remove some unused cruft from devices.* and generally
clean up the device class to provide access methods instead of direct
access to members.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-23 16:56:41 +02:00
Corinna Vinschen bceb8ebebb Bump DLL minor version
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-23 15:21:44 +02:00
Corinna Vinschen 6e623e9320 Switching the Cygwin DLL to LGPLv3+, dropping commercial buyout option
Bump GPLv2+ to GPLv3+ for some files, clarify BSD 2-clause.

Everything else stays under GPLv3+.

New Linking Exception exempts resulting executables from LGPLv3 section 4.

Add CONTRIBUTORS file to keep track of licensing.

Remove 'Copyright Red Hat Inc' comments.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-23 10:09:17 +02:00
Corinna Vinschen 94e3a561d0 Add release message for commit 2c83227
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-21 13:43:53 +02:00
Corinna Vinschen 2c83227112 Drop useless calls to path_conv.isgood_inode
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-21 13:39:35 +02:00
Corinna Vinschen 4965cdc9ad Use correct file info (especially inode number) for newly created files
fhandler_base::open_fs has two problems:
- When newly creating a file, the file info in the path_conv is
  incorrect.  It points to info for the parent dir, not to info
  for the file itself (which, naturally, wasn't available before).
- Fetching the file's inode number only worked for non-NFS.

Both problems should be fixed now by reloading file info if the file
has just been created, as well as using the new FS-agnostic
path_conv::get_ino method.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-21 13:39:04 +02:00
Corinna Vinschen 36d4eb12b5 Use new path_conv_handle functions to access file info
This avoids having to call nfs_fetch_fattr3/file_get_fai depending
on FS type as well as having to extract the info FS dependent.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-21 13:28:12 +02:00
Corinna Vinschen f91865c8cf Improve encapsulation of FS type behind path_conv cover
Rather than having to check for the FS type in the caller and having
to call different functions whether FS is NFS or not, encapsulate the
info in path_conv_handle/path_conv methods to allow FS type agnostic
calling from upper level functions.

This patch only implements the methods.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-21 13:25:38 +02:00
Corinna Vinschen 747b3f44e3 uinfo.cc: More comment fixes, remove unused testing code.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-15 19:48:43 +02:00
Corinna Vinschen 5881f0c0c8 uinfo.cc: Fix comment
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-15 18:04:00 +02:00
Corinna Vinschen b1f63ce874 Fix typos in comments and debug output in select_stuff::wait
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-08 11:02:50 +02:00
Corinna Vinschen ffac52c1ab Add release message for commit 7239bb7b3d
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-06 19:02:08 +02:00
Corinna Vinschen 0177f12cf6 Add release message for select(2) changes
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-06 17:24:39 +02:00
Corinna Vinschen 7186b657e7 Improve timer handling in select.
Commit a23e6a35d8 introduced a timer
object to the WFMO handling in select_stuff::wait to allow sub-tickcount
timeout values in select.

Problems with this patch: The timer was created and destroyed on every
invocation of select_stuff::wait, thus potentially multiple times per
select.  Also, since the timer was prepended to the WFMO hande list,
the timer handle could shadow actual events on other objects, given that
WFMO checks the objects in the order they have been specified in the
HANDLE array.  The timer was also created/destroyed and added to the
HANDLE array even if it was not required.

This patch drops the local timer HANDLE and recycles the cw_timer HANDLE
in the cygtls area instead.  Thus we typically don't need to create the
timer in select at all, and we never have to destroy it.

The timer HANDLE is now also appended as last object to the HANDLE array,
and it's only added if actually needed.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-06 16:48:38 +02:00
Corinna Vinschen 83834110a0 Fix condition in select which results in busy loop.
The check for current timestamp > start timestamp has an unwelcome
side effect:  The loop is not left as long as the current timestamp
hasn't been incremented.  This leads to busy loops of about one tick
(10 to 16 ms per MSDN).

This fixes https://cygwin.com/ml/cygwin/2016-05/msg00327.html

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-06 16:18:53 +02:00
Takashi Yano 7239bb7b3d Return at most one line of input in canonical mode
'man termios' says:
"A read(2) returns at most one line of input" in canonical mode.

On cygwin 2.5.1, read(2) returns all data in buffer if the buffer
size specified is large enough. This behaviour is correct in
noncanonical mode, but is not correct in canonical mode.

While checking this problem, I found a bug of tcflush().  tcflush()
flushes only partial data in the buffer.  The patch also fixes this bug.

The patch has also been tested against the problem reported in
https://cygwin.com/ml/cygwin/2016-05/msg00318.html.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-06 15:10:25 +02:00
Ken Brown 97349b7870 Allow 'make distclean' to clean winsup/cygwin
But don’t let it remove source files.
2016-06-06 11:52:19 +02:00
Corinna Vinschen 7abe634731 Only regenerate tlsoffsets{64}.h if cygtls.h can be compiled
The rule to make tlsoffset{64}.h has a flaw.  If cygtls.h can't be
built for whatever reason, it *still* regenerates tlsoffsets{64}.h,
just with size 0.  If the bug is not in cygtls.h itself, this behaviour
breaks further building, because fixing the problem won't result in
regenerating tlsoffset{64}.h.  Manual intervention is required.

Fix that by removing tlsoffsets{64}.h if gentls_offsets fails.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-06 11:44:54 +02:00
Yaakov Selkowitz f4edc7fd6d cygwin: include sys/types.h in sys/xattr.h
Using libattr's <xattr/xattr.h> requires consumers to explicitly include
<sys/types.h> first, but glibc's header in sys/ already contains the include.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-06-03 03:34:11 -05:00
Corinna Vinschen b0b99e39dc sched.cc: Use PROCESS_QUERY_INFORMATION for now
Temporarily revert to use PROCESS_QUERY_INFORMATION instead of
PROCESS_QUERY_LIMITED_INFORMATION to make sure every aspect of the
next release is still XP/2003 compatible.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-03 10:28:44 +02:00
Corinna Vinschen 211a942ad2 Revert "Cygwin hangs up if several keys are typed during outputting a lot of texts."
This reverts commit 252a07b0ad.

This change introduced a hang in certain scenarios, for an example
see https://cygwin.com/ml/cygwin/2016-05/msg00318.html
2016-06-01 17:04:24 +02:00
Corinna Vinschen 8a31aa37bc dlopen: Add dot to filename if no slash is present
We're appending a dot to the filename before calling LoadLibrary to
override ".dll" automagic.  This only worked for paths, not for simple
filenames since it required a slash in the pathname.  Fix that.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-01 13:12:22 +02:00
Corinna Vinschen c496a068cf Cygwin: Add release messages for previous two commits
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-05-31 16:37:53 +02:00
Corinna Vinschen 5c759ab2f4 realpath: Handle Win32 and NT long path prefixes
So far drive letter paths have been handled special since path_conv
leaves the incoming path untouched except for converting backslashes
to forward slashes.  However, if the incoming path starts with a
long path prefix, the same problem occurs.  Therefore handle all
paths starting with a backslahs the same way.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-05-31 16:33:21 +02:00
Corinna Vinschen 030d86d04d TZ: Replace unreliable isupper calls on wchars
In case the TZ variable is empty, Cygwin fetches timezone info from
Windows.  Extracting the timezone short name uses isupper on wide chars.
Replace with explicit check for A <= character <= Z to be independent
of undefined behaviour.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-05-25 12:13:03 +02:00
Adam Dinwoodie 3b66731698 Git is Git, not GIT
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-05-24 12:09:10 +02:00
Corinna Vinschen 8d7b9a199c Fix typo and wrong URL in winsup/README
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-05-24 10:25:18 +02:00
Corinna Vinschen 4e434bf223 Add release message for previous mmap fix
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-05-20 21:50:41 +02:00
Corinna Vinschen 0aa738220b mmap: Fix size restriction of maps due to using 32 bit size type
Throughout mmap, size-related variables and parameters are still using
DWORD as type, which disallows mapping ranges > 4Gigs.  Fix this by
using SIZE_T throughout for those vars and parameters.
Also, drop unused off parameter from 1st variant of mmap_record::map_pages.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-05-20 21:48:10 +02:00
Corinna Vinschen 2e62d68ba5 Add release message for scheduler fixes
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-05-20 18:01:11 +02:00
Corinna Vinschen 4b51e4c142 Fix thread priority handling
So far pthread::postcreate() only sets the thread priority at all, only
if the inherit-scheduler attribute is PTHREAD_EXPLICIT_SCHED.  This
completely ignores the PTHREAD_INHERIT_SCHED case, since in contrast
to POSIX, a thread does not inherit its priority from the creating
thread, but always starts with THREAD_PRIORITY_NORMAL.

pthread_getschedparam() only returns what's stored in the thread attributes,
not the actual thread priority.

This patch fixes both problems.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-05-20 17:45:24 +02:00
Corinna Vinschen 450f557fee Rewrite scheduler functions getting and setting process and thread priority
So far the scheduler priority handling is not POSIX compatible.
The priorities use a range of -14 up to +15, which means it's not clear
if the POSIX-required return value of -1 in case of an error is *really*
an error or just the valid priority value -1.  Even more confusing, -14
is the *max* value and 15 is the *min* value.  Last but not least this
range doesn't match the POSIX requirement of at least 32 priority values.

This patch cleans up scheduler priority handling and moves the valid
priority range to 1 (min) - 32 (max).  It also adds a function
sched_get_thread_priority() which will help to make thread priority
more POSIX-like.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-05-20 17:38:22 +02:00
John Hood 6dd601af66 Miscellaneous style cleanup, whitespace only. 2016-05-20 12:11:18 +02:00
John Hood e5665d8c93 Improve and simplify select().
* select.h: Eliminate redundant select_stuff::select_loop state.
* select.cc (select): Eliminate redundant
  select_stuff::select_loop state.  Eliminate redundant code for
  zero timeout.  Do not return early on early timer return.
  (select_stuff::wait): Eliminate redundant
  select_stuff::select_loop state.
2016-05-20 12:00:58 +02:00
John Hood a23e6a35d8 Use high-resolution timebases for select().
* select.h: Change prototype for select_stuff::wait() for larger
  microsecond timeouts.
* select.cc (pselect): Convert from old cygwin_select().
  Implement microsecond timeouts.
  (cygwin_select): Rewrite as a wrapper on pselect().
  (select): Implement microsecond timeouts.
  (select_stuff::wait): Implement microsecond timeouts with a timer
  object.
2016-05-20 12:00:38 +02:00
Corinna Vinschen f6d9d8a182 Bump Cygwin DLL version to 2.5.2
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-05-18 21:27:57 +02:00
Sebastian Huber 51062c856b Always provide register_t via <sys/types.h>
Always provide register_t via <sys/types.h> for glibc and BSD
compatibility.  Define __BIT_TYPES_DEFINED__ to 1 like glibc for legacy
header files.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-21 10:28:13 +02:00
Corinna Vinschen 8cb99e8ba4 Remove cygwin/types.h 2016-04-21 10:12:02 +02:00
Sebastian Huber 9bb91b6c6b Resurrect <machine/types.h> for <sys/types.h>
Resurrect <machine/_user_types.h> for use in <sys/types.h>.  Newlib
targets may provide an own version of <machine/types.h> in their machine
directory to add custom user types for <sys/types.h>.  Check the
_SYS_TYPES_H header guard to prevent a direct include of
<machine/types.h>, since the <machine/types.h> file is a Newlib
speciality.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-21 10:08:19 +02:00
Corinna Vinschen 1f02aa08d1 Add release message for commit 9409c53 2016-04-20 12:34:07 +02:00
Corinna Vinschen 9409c5335b Don't test pthread objects for being already initialized at init time
For all pthread init functions, POSIX says

  Results are undefined if pthread_FOO_init() is called specifying an
  already initialized pthread_FOO object.

So far our pthread init functions tested the incoming object if it's
already an initialized object and, if so, returned EBUSY.  That's ok
*iff* the object was already initialized.  However, as the example in
https://cygwin.com/ml/cygwin/2016-04/msg00473.html shows, an uninitialized
pthread object could also accidentally look like an initialized object
and then returning EBUSY is not ok.

Consequentially, all those tests are dangerous.  Per POSIX, an application
has to know what its doing when calling any of the pthread init functions
anyway, and re-initializing the object is just as well as undefined
behaviour as is returning EBUSY on already initialized objects.

	* thread.cc (pthread_attr_init): Drop check for already initialized
	object.
	(pthread_condattr_init): Ditto.
	(pthread_rwlockattr_init): Ditto.
	(pthread_mutexattr_init): Ditto.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-20 12:31:45 +02:00
Sebastian Huber 7d22dc338d Provide in_port_t via <sys/types.h>
Provide in_port_t via <sys/types.h> if __BSD_VISIBLE for BSD
compatibility.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-19 23:40:53 +02:00
Sebastian Huber 3ce1e7901e Provide in_addr_t via <sys/types.h>
Provide in_addr_t via <sys/types.h> if __BSD_VISIBLE for BSD
compatibility.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-19 17:21:38 +02:00
Sebastian Huber e03a7056a6 Introduce __sa_family_t for BSD compatibiliy
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-19 17:06:49 +02:00
Sebastian Huber cb376b255d Introduce __socklen_t for BSD compatibility
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-19 16:51:00 +02:00
Sebastian Huber 76a2110b47 BSD compatibility for <machine/endian.h>
Introduce <machine/_endian.h> to let target based customization of
<machine/endian.h> via

 * _LITTLE_ENDIAN,
 * _BIG_ENDIAN,
 * _PDP_ENDIAN, and
 * _BYTE_ORDER.

defines.  Add definitions expected by FreeBSD to
<machine/endian.h> like

 * _QUAD_HIGHWORD,
 * _QUAD_LOWWORD,
 * __bswap16(),
 * __bswap32(),
 * __bswap64(),
 * __htonl(),
 * __htons(),
 * __ntohl(), and
 * __ntohs().

Also, if __BSD_VISIBLE

 * LITTLE_ENDIAN,
 * BIG_ENDIAN,
 * PDP_ENDIAN, and
 * BYTE_ORDER.

Targets that define __machine_host_to_from_network_defined in
<machine/_endian.h> must provide their own implementation of

 * __htonl(),
 * __htons(),
 * __ntohl(), and
 * __ntohs(),

otherwise a default implementation is provided by <machine/endian.h>.
In case of GCC defines to builtins are used.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-19 16:36:51 +02:00
Corinna Vinschen 7a5b452443 Disallow S_ISGID on directories without default ACL entries
We can't handle the S_ISGID bit if the child didn't inherit a NULL SID
ACE with the S_ISGID bit set.  On directories without default ACL
entries we would have to add an inheritable NULL SID ACE and nothing else.
This in turn results in permission problems when calling set_file_sd
from set_created_file_access.  That's fixable, but it would only work
for files created from Cygwin while files created from native Windows
tools end up with really ugly permissions.

This patch only makes sure that the S_ISGID bit is reset for a directory
if it has no inheritable ACEs.  Still having the 's' bit shown in ls or
getfacl output would be misleading.  So, calling `setfacl -k' on a dir
also removes the S_ISGID bit now.

	* sec_acl.cc (set_posix_access): Drop S_ISGID bit on directories
	without inheritable ACEs.  Explain why.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-19 10:23:49 +02:00
Corinna Vinschen 97d0449325 Handle permissions a bit closer to POSIX 1003.1e
So far we tweaked ACL_GROUP_OBJ and ACL_MASK values the same way when
creating a file.  We now do what POSIX requires, namely just change
ACL_MASK if it's present, otherwise ACL_GROUP_OBJ.  Note that we only
do this at creation time.  Chmod still tweaks both to create less
surprising results for the unsuspecting user.

Additionally make sure to take umask only into account if no ACL_MASK
value is present.  That has been missed so far.

	* sec_acl.cc (set_posix_access): Perform check for non-existant
	default	ACEs earlier.  Ignore umask also if ACL_MASK is present.
	Only set owner_eq_group if we're actually handling a user entry.
	Mention chmod in a comment.
	* security.cc (set_created_file_access): Perform group/mask
	permission setting as required by POSIX 1003.1e.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-18 20:43:00 +02:00
Corinna Vinschen 12cc8290e8 Also create NULL SID ACE if special POSIX bits are set
Commit e2ea143 forgot to take special POSIX bits into account.

	* sec_acl.cc (set_posix_access): Make sure to create NULL SID
	ACE if any special POSIX permission bits are set.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-18 15:36:34 +02:00
Corinna Vinschen c36070f2f6 Add release message for commit e2ea143 2016-04-18 12:09:18 +02:00
Corinna Vinschen e2ea143083 Fix attempt to create ACLs without NULL SID
Commit f75114fc was supposed to drop NULL SIDs in case the permissions
are simple enough not to require mask values or special POSIX bits
(S_ISVTX, etc).  The check was incorrect.  This patch is supposed to
fix the problem.

	* sec_acl.cc (set_posix_access): Fix condition under which we
	write a NULL SID.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-18 12:07:04 +02:00
Corinna Vinschen ea58e20c0e Cygwin: Drop definition and usage of _mode_t in favor of __mode_t
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-15 14:51:40 +02:00
Sebastian Huber f3e587d30a Provide POSIX defined fsblkcnt_t and fsfilcnt_t
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-15 14:51:40 +02:00
Sebastian Huber c5d5030aea Provide POSIX defined blksize_t in <sys/types.h>
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-15 14:51:40 +02:00
Sebastian Huber 57d2718c0e Provide POSIX defined blkcnt_t in <sys/types.h>
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-15 14:51:40 +02:00
Sebastian Huber eba91a5d0a Define mode_t via __mode_t
Use __uint32_t to avoid the use of GCC-specific _ST_INT32.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-15 14:51:39 +02:00
Sebastian Huber e77040b2bf Add BSD guard for ino_t in <sys/types.h>
Introduce internal type __ino_t.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-15 14:51:39 +02:00
Sebastian Huber eeded3c170 Provide POSIX defined id_t in <sys/types.h>
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-15 14:51:39 +02:00
Sebastian Huber 8a5af1a184 Use __machine_*_t_defined for internal types
Newlib defines defaults for internal types via <sys/_types.h> and uses
<machine/_types.h> to let targets define their own type if necessary.

Previously for example

	#ifndef __dev_t_defined
	typedef short __dev_t;
	#endif

However, the __*_t_defined pattern conflicts with the glibc type guard
pattern for user types, e.g. dev_t in this example.  Introduce a
__machine_*_t_defined pattern for internal types (defined by
<machine/_types.h>, used by <sys/_types.h>).  For example

	#ifndef __machine_dev_t_defined
	typedef short __dev_t;
	#endif

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-15 14:51:39 +02:00
Corinna Vinschen 7b39124400 Get rid of some special cases for Cygwin in sys/types.h
Remove off_t typedef from cygwin/types.h thus relying on sys/types.h.
Introduce winsup/cygwin/machine/_types.h and move some types shared
with newlib into it.  Get rid of their definition in cygwin/types.h.
Add same handling for __key_t/key_t as for the other types.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-13 21:00:17 +02:00
Sebastian Huber 477463a201 Eliminate use of Newlib-specific <machine/types.h>
This change solves a glibc/BSD compatibility problem.

glibc and BSD use double underscore types for internal types.  The Linux
port of Newlib uses some glibc provided internal type definitions which
are not protected by guard defines, e.g. __off_t.  To avoid a conflict
Newlib uses single underscore types for some internal types, e.g.
_off_t.  However, for BSD compatibility we have to define the internal
types with double underscore names in <sys/_types.h>.

The header file <machine/types.h> is Newlib-specific.  It was used
instead of <sys/_types.h> to provide the internal type definitions
_CLOCK_T, _TIME_T_, _CLOCKID_T_, _TIMER_T_, and __suseconds_t.  Move
these definitions to <sys/_types.h> (there exist two instances of this
file, one for Linux and one for all other targets).  This makes the
_HAVE_SYSTYPES configuration define obsolete (could possibly break the
__RDOS__ target).  Use the standard <sys/_types.h> include throughout.

Move __loff_t defintion to default (non-Linux) <sys/_types.h>.  Define
it via _off64_t to avoid a dependency on the compiler.

Provide the __off_t definition via default (non-Linux) <sys/_types.h>
based on _off_t for all systems except Cygwin.  For Cygwin use _off64_t.
Define off_t via __off_t.

Provide the __pid_t definition via default (non-Linux) <sys/_types.h>.
This prevents a potential __pid_t and pid_t incompatibility.  Add BSD
guard defines for pid_t.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-13 13:30:27 +02:00
Corinna Vinschen eb6f1d7b77 Add Cygwin 2.5.1 release message file
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-12 15:26:53 +02:00
Corinna Vinschen 002c9b468d Reformat comments in Cygwin's version.h, remove very outdated info
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-12 15:23:41 +02:00
Corinna Vinschen 308de2a1d4 Bump Cygwin DLL version to 2.5.1.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-12 15:18:29 +02:00
Corinna Vinschen e185421106 strxfrm/wcsxfrm: Always return length of the transformed string
Cygwin's strxfrm/wcsfrm treated a too short output buffer as an error
condition and always returned the size value provided as third parameter.
This is not as it's documented in POSIX.1-2008.  Rather, the only error
condition is an invalid input string(*).

Other than that, the functions are supposed to return the length of the
resulting sort key, even if the output buffer is too small.  In the latter
case the content of the output array is unspecified, but it's the job
of the application to check that the return value is greater or equal to
the provided buffer size.

(*) We have to make an exception in Cygwin:  strxfrm has to call the
    UNICODE function LCMapStringW for reasons outlined in a source comment.
    If the incoming multibyte string is so large that we fail to malloc
    the space required to convert it to a wchar_t string, we have to
    ser errno as well since we have nothing to call LCMapStringW with.

	* nlsfuncs.cc (wcsxfrm): Fix expression computing offset of
	trailing wchar_t NUL.  Compute correct return value even if
	output buffer is too small.
	(strxfrm): Handle failing malloc.  Compute correct return value
	even if	output buffer is too small.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-12 15:06:05 +02:00
Johannes Schindelin 03ecfb9280 Be truthful about reporting whether readahead is available
In 7346568 (Make requested console reports work, 2016-03-16), code was
introduced to report the current cursor position. It works by using a
pointer that either points to the next byte in the readahead buffer, or
to a NUL byte if the buffer is depleted, or the pointer is NULL.

These conditions are heeded in the fhandler_console::read() method, but
the condition that the pointer can point at the end of the readahead
buffer was not handled properly in the get_cons_readahead_valid()
method.

This poses a problem e.g. in Git for Windows (which uses a slightly
modified MSYS2 runtime which is in turn a slightly modified Cygwin
runtime) when vim queries the cursor position and immediately goes on to
read console input, erroneously thinking that the readahead buffer is
valid when it is already depleted instead. This condition results in an
apparent freeze that can be helped only by pressing keys repeatedly.

The full Git for Windows bug report is here:

	https://github.com/git-for-windows/git/issues/711

Let's just teach the get_cons_readahead_valid() method to handle a
depleted readahead buffer correctly.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2016-04-05 19:20:10 +02:00
Corinna Vinschen 8d67708a08 Add latest changes to release message
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-05 10:35:05 +02:00
Corinna Vinschen 41abcc5825 Revert "Refactor to avoid nonnull checks on "this" pointer."
This reverts commit 0008bdea02.

This patch introduced a regression.  Calling FOO=$(...) in zsh hangs
indefinitely and has to be killed forcefully.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-05 10:30:28 +02:00
Yaakov Selkowitz 8502abb674 winsup/utils: port getconf to 64-bit
The available specifications obviously differ on 32-bit and 64-bit, as
already handled in <sys/features.h>.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-04-04 10:25:39 -05:00
Yaakov Selkowitz 959d58ea7c cygwin: update sysconf for new features
POSIX spawn and thread barriers have since been added.  Also fix a typo in
_POSIX2_C_DEV (result is the same).

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-04-04 10:25:36 -05:00
Yaakov Selkowitz 929be8005c cygwin/math: make isinf functions signed
glibc returns -1 for negative infinity:

http://man7.org/linux/man-pages/man3/isinfl.3.html
https://sourceware.org/bugzilla/show_bug.cgi?id=15367

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-04-04 10:25:34 -05:00
Yaakov Selkowitz b3acb347c4 Feature test macros overhaul: Cygwin pthread.h
As a Cygwin-specific header, there is no need to guard functions based on
capability macros.  Instead, guard several blocks based on additions or
removals in later versions of POSIX.1, along with a few which are only
XSI or GNU extensions.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-04-04 10:25:32 -05:00
Peter Foley 0008bdea02 Refactor to avoid nonnull checks on "this" pointer.
G++ 6.0 asserts that the "this" pointer is non-null for member
functions.
Refactor methods that check if "this" is non-null to resolve this.

winsup/cygwin/ChangeLog:
external.cc (cygwin_internal): Check for a null pinfo before calling
cmdline.
fhandler_dsp.cc (Audio::blockSize): Make static.
fhandler_dsp.cc (Audio_in): add default_buf_info.
fhandler_dsp.cc (Audio_out): Ditto.
fhandler_dsp.cc (Audio_out::buf_info): Refactor method to call
default_buf_info if dev_ is null.
fhandler_dsp.cc (Audio_in::buf_info): Ditto.
fhandler_dsp.cc (fhandler_dev_dsp::_ioctl): Call Audio_out::default_buf_info if audio_out_ is null.
fhandler_dsp.cc (fhandler_dev_dsp::_ioctl): Call Audio_in::default_buf_info if audio_in_ is null.
fhandler_process.cc (format_process_fd): Check if pinfo is null.
fhandler_process.cc (format_process_root): Ditto.
fhandler_process.cc (format_process_cwd): Ditto.
fhandler_process.cc (format_process_cmdline): Ditto.
signal.cc (tty_min::kill_pgrp): Ditto.
signal.cc (_pinfo::kill0): Ditto.
sigproc.cc (pid_exists): Ditto.
sigproc.cc (remove_proc): Ditto.
times.cc (clock_gettime): Ditto.
times.cc (clock_getcpuclockid): Ditto.
path.cc (cwdstuff::override_win32_cwd): Check if old_cwd is null.
path.cc (fcwd_access_t::Free): Factor null check of "this" out to
caller(s).
pinfo.cc (_pinfo::exists): Ditto.
pinfo.cc (_pinfo::fd): Ditto.
pinfo.cc (_pinfo::fds): Ditto.
pinfo.cc (_pinfo::root): Ditto.
pinfo.cc (_pinfo::cwd): Ditto.
pinfo.cc (_pinfo::cmdline): Ditto.
signal.cc (_pinfo::kill): Ditto.
pinfo.cc (_pinfo::commune_request): remove non-null check on "this", as
this method is only called from pinfo.cc after null checks
pinfo.cc (_pinfo::pipe_fhandler): remove non-null check on "this", as
this method is only called from pipe.cc (fhandler_pipe::open) after a null check.

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-04-04 16:46:51 +02:00
Peter Foley e7e6119241 Rename without-mingw-progs to with-cross-bootstrap
Rename without-mingw-progs to with-cross-bootstrap, since it now
disables additional checks that are problematic for cross-compilers.

When cross-compiling a toolchain targeting cygwin, building cygwin1.dll
requires libgcc.
However, building libgcc requires the cygwin headers to be
installed.
Configuring cygwin requries the mingw-crt libraries, which require the
cygwin headers to be installed.
Work around this circular dependency by making the
--with-cross-bootstrap configure option skip cygwin's configure checks
for valid mingw-crt libraries. Cygwin will still properly link against
these libraries if they exist, but this allows configure to succeed even
if the libraries have not been built yet.
Since the mingw-crt libraries only require the cygwin headers to be
installed, this allows us to successfully configure cygwin so that we
can only install the headers without trying to build any
libraries.

winsup/ChangeLog
configure.ac: rename without-mingw-progs option to with-cross-bootstrap
configure: regenerate
winsup/cygserver/ChangeLog
configure.ac: don't check AC_WINDOWS_LIBS when using with-cross-bootstrap
configure: regenerate
winsup/cygwin/ChangeLog
configure.ac: don't check AC_WINDOWS_LIBS when using with-cross-bootstrap
configure: regenerate

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-04-04 16:39:41 +02:00
Peter Foley 44b72b43d6 Update autoconf for doc/lsaauth/utils
Don't use obsolete LIB_AC_PROG_CC.
Run autoupdate.

winsup/ChangeLog:
doc/aclocal.m4: delete
lsaauth/aclocal.m4: ditto
doc/configure.ac: refactor and update
lsaauth/configure.ac: ditto
utils/configure.ac: ditto
doc/configure: regenerate
lsaauth/configure: regenerate
utils/configure: regenerate

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-04-01 14:04:41 +02:00
Corinna Vinschen 8e732f7f7f Remove MALLOC_CHECK and calls to it entirely
MALLOC_CHECK got useless with commit b259af5.  Remove it throughout.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-01 14:04:09 +02:00
Peter Foley b259af51b8 Remove remnants of never-defined MALLOC_DEBUG and NEWVFORK
MALLOC_DEBUG and NEWVFORK haven't been defined since 2008 (4616253751).
Remove all references to tem.

winsup/cygwin/ChangeLog:
acconfig.h: delete
dcrt0.cc (dll_crt0_1): remove NEWVFORK code.
dcrt0.cc (do_exit): ditto.
debug.h: ditto.
dtable.h: ditto.
winsup.h: ditto.
globals.cc: ditto.
malloc_wrapper.cc: ditto.
malloc_wrapper.cc (malloc_init): ditto.
spawn.cc (spawnve): ditto.
syscalls.cc (setsid): ditto.

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-04-01 13:53:25 +02:00
Peter Foley 02cfe00445 Don't use deprecated acconfig.h for DEBUGGING
Use the 3-arg form of AC_DEFINE.

winsup/cygwin/ChangeLog:
acconfig.h: Remove DEBUGGING define.
configure.ac: Add description to DEBUGGING define.
config.h.in: Regenerate.
configure: Ditto.

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-04-01 13:46:04 +02:00
Peter Foley 5d89883790 Remove leftover cruft from config.h.in
HAVE_BUILTIN_MEMTEST and AC_ALLOCA were removed in 4bd8eb7d1b.
Cleanup leftover references.

winsup/cygwin/ChangeLog
acconfig.h: remove HAVE_BUILTIN_MEMTEST
config.h.in: regenerate

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-04-01 13:44:11 +02:00
Corinna Vinschen c8022ae3f0 mkvers.sh: Reformatting for better readability
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-30 17:06:50 +02:00
Peter Foley 4eca5e6a3f Use just-built gcc for windres
When building cygwin in a combined tree with binutils,
the just-built windres cannot find the just-buit gcc automatically.
Parse the CC env variable to use the correct compiler, rather then
falling back to the build-system's gcc which does not define the proper
preprocessor macros.

winsup/cygwin/ChangeLog
mkvers.sh: Manually specify preprocessor based on $CC

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-03-30 16:52:36 +02:00
Peter Foley 31dfc51a36 fix typo in netinit/ip.h
The type for the ip_tos member was typoed, fix it.

winsup/cygwin/ChangeLog:
include/netinet/ip.h: fix type of ip_tos

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-03-30 16:51:40 +02:00
Corinna Vinschen d6c651040d Add dependencies to tlsoffsets file
After `make clean', the build can fail because the dependencies don't
require the tlsoffsets file to exist before building obejct files.
This patch fixes it.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-30 14:35:46 +02:00
Corinna Vinschen 6436024c4c Replace AC_CANONICAL_SYSTEM with AC_CANONICAL_TARGET, fix AC_INIT usage
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-30 14:09:19 +02:00
Peter Foley cf41355aba Add option to not build mingw programs when cross compiling.
Add an option to not require a mingw compiler when bootstrapping a cross toolchain.
Defaults to existing behavior.
Also update some obsolete macros.

winsup/ChangeLog
configure.ac: Add option to skip building programs that require mingw.
configure: Regenerate.

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-03-30 13:50:16 +02:00
Corinna Vinschen 279aaeb5c7 fenv.h: Change fexcept_t to integral type for compatibility
On Linux and in Mingw-w64, fexcept_t is defined as type unsigned short.
There are packages in the wild which rely on the fact that fexcept_t is
an integral type.  We're changing the internal handling to use the bits
just as in GLibc, so only the 6 lowest bits are used to reflect the hw
bits.  We even change the header file guard to reflect GLibc for compatibility.

	* include/fenv.h (_FENV_H): Rename from _FENV_H_ and set to 1 as in
	GLibc's header.
	(fexcept_t): Change to __uint16_t to be an integral type as in GLibc.
	* fenv.cc (fegetexceptflag): Align to the *flagp's type change.
	(fesetexceptflag): Ditto.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-30 12:55:42 +02:00
Corinna Vinschen 3d90769979 Document implemented functions
* posix.xml (std-susv4): Add newly implemented math SUSv4 math
	functions.  Add missing functions strtold and tcgetsid.  Re-sort.
	(std-gnu): Add clog10l, exp10l, pow10l, sincos{f,l}.
	(std-notimpl): Drop now implemented functions.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-29 17:45:01 +02:00
Corinna Vinschen a638b8580b Add missing nanl
* Makefile.in (MATH_OFILES): Add nanl.o.
	* common.din (nanl): Export.
	* math/nanl.c: New file.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-29 17:39:17 +02:00
Corinna Vinschen 63e4f1291c Add release message for 792e51b
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-29 14:59:18 +02:00
Corinna Vinschen 792e51b721 Add missing long double functions to Cygwin
This patch adds the long double functions missing in newlib to Cygwin.
Apart from some self-written additions (exp10l, finite{f,l}, isinf{f,l},
isnan{f,l}, pow10l) the files are taken from the Mingw-w64 math lib.
Minor changes were required, e.g. substitue _WIN64 with __x86_64__ and
fixing __FLT_RPT_DOMAIN/__FLT_RPT_ERANGE for Cygwin.

Cygwin:
	* math: New subdir with math functions.
	* Makefile.in (VPATH): Add math subdir.
	(MATH_OFILES): List of object files collected from building files in
	math subdir.
	(DLL_OFILES): Add $(MATH_OFILES).
	${CURDIR}/libm.a: Add $(MATH_OFILES) to build.
	* common.din: Add new functions from math subdir.
	* i686.din: Align to new math subdir.  Remove functions now commonly
	available.
	* x86_64.din: Ditto.
	* math.h: math.h wrapper to define mingw structs used in some files in
	math subdir.
	* include/cygwin/version.h: Bump API minor version.

newlib:
	* libc/include/complex.h: Add prototypes for complex long double
	functions.  Only define for Cygwin.
	* libc/include/math.h: Additionally enable prototypes of long double
	functions for Cygwin.  Add Cygwin-only prototypes for dreml, sincosl,
	exp10l and pow10l.  Explain why we don't add them to newlib.
	* libc/include/tgmath.h: Enable long double handling on Cygwin.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-29 14:43:55 +02:00
Corinna Vinschen 087aca6163 Fix Cygwin setstate definition
setstate is supposed to take a char *, not a const char *.

	* random.cc (setstate): Unconstify parameter to align to stdlib.h.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-29 13:41:11 +02:00
Yaakov Selkowitz 660f84b15b cygwin: export __getpagesize
The inclusion of <sys/cygwin.h> by <sys/shm.h>, besides causing namespace
pollution, also makes it very difficult to get the WINVER-dependent parts
of the former.  This affects code (such as x11vnc -unixpw_nis) which use
both SysV shared memory (e.g. the X11 MIT-SHM extension) and user password
authentication.

getpagesize is the simplest function to retreive this information, but it
is a legacy function and would also pollute the global namespace. The LSB
lists another form which is in the implementation-reserved namespace:

http://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/baselib---getpagesize.html

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-03-29 12:14:18 +02:00
Joel Sherrill ecf453f963 Add simple versions of random() and srandom()
Prototypes also added for initstate() and setstate() but they
were not implemented in the shared newlib code.

	* newlib/libc/include/cygwin/stdlib.h: Prototypes added.
	* winsup/cygwin/include/cygwin/stdlib.h: Prototypes removed.
	* newlib/libc/stdlib/random.c: New file.
	* newlib/libc/machine/epiphany/machine/stdlib.h: Removed
	* newlib/libc/stdlib/Makefile.am: Added random.c.
	* newlib/libc/stdlib/stdlib.tex: Added random.def.
	* newlib/libc/stdlib/Makefile.in: Regenerated.
2016-03-28 22:39:50 -05:00
Corinna Vinschen a0c4772429 Add release text for 373f81d and 3e446e9
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-26 20:38:30 +01:00
Corinna Vinschen acc5f02ce8 Throughout Cygwin, use u_intN_t or uintN_t
Don't use u_char, u_short, u_int or u_long in Cygwin, unless it refers
to the Winsock types.  Use u_intN_t in BSD-based sources, unsigned char
where strings are concerned, uintN_t otherwise.  Also:

	* net.cc: Fix comment, we're not using u_long anymore.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-24 16:39:15 +01:00
Corinna Vinschen 6ba2b53c53 Change definition of b64_pton from K&R to ANSI
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-24 16:25:00 +01:00
Corinna Vinschen 34adefae7f Fix return type of get_routedst
* net.cc (get_routedst): Correctly return in_addr_t.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-24 16:23:50 +01:00
Corinna Vinschen c133a6a3d1 Remove unused function convert_ifr_flags
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-24 16:22:30 +01:00
Corinna Vinschen 977912ff93 Fix FIONBIO comments
FIONBIO is defined in sys/termios.h and asm/socket.h.  Align the comments.
Remove unused REAL_FIONBIO.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-24 16:12:28 +01:00
Corinna Vinschen b1b46d4580 Drop usage of old-age BSD types in generically used Cygwin headers
u_char, u_short, u_int, u_long are BSD-only types.  Remove them from
Cygwin headers which are supposed to be used in a non-BSD scenario.
Drop special Cygwin handling of those types in sys/types.h.

newlib:
	* libc/include/sys/types.h (u_char,u_short,u_int,u_long): Drop
	Cygwin exception.

cygwin:
	* fhandler_socket.cc (fhandler_socket::ioctl): Accommodate change
	in include/asm/socket.h.  Continue using u_long since that's the
	MS type here.
	* include/asm/socket.h: Since the type given in _IOR/_IOW macros
	is only used for its sizeof, replace u_long with equivalent long.
	* netdb.h (getnetbyaddr): Fix prototype.
	* netinet/ip.h: Replace old BSD-only types with generically defined
	old BSD types (u_char -> u_int8_t, etc).
	* netinet/tcp.h: Ditto.
	* netinet/udp.h: Ditto.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-24 15:55:25 +01:00
Corinna Vinschen db5bfdbd8a Define BSD u_intN_t types indiscriminately
The u_intN_t types are BSD types but sanctioned by POSIX.  They are
always defined when using Glibc headers so we follow suit.

newlib:
	* libc/include/sys/types.h: Drop outdated __INTTYPES_DEFINED__
	macro.  Always define u_intN_t types.

cygwin:
	* include/cygwin/types.h: Remove definition of u_intN_t types.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-24 15:51:14 +01:00
Corinna Vinschen 5b08c1bca1 Add release message for commit 59b3bd2 2016-03-23 18:11:38 +01:00
Corinna Vinschen 59b3bd2aa6 Only allow enabled groups as primary group
So far any group in the user's token could be used as primary group.
Windows doesn't check if the primary group is enabled or not, it just
has no meaning.  From a POSIXy point of view it can lead to weird
results though.

	* uinfo.cc (check_token_membership): New static function.
	(internal_getlogin): Only allow enabled groups as primary group.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-23 17:51:03 +01:00
Corinna Vinschen fc504453fd Use 64K buffers for TOKEN_GROUPS
A user token can be up to 64K in size.  Using 32K buffers for TOKEN_GROUPS
may be insufficient.

	* uinfo.cc (get_logon_sid): Use 64K buffers for the TOKEN_GROUPS
	array.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-23 17:42:04 +01:00
Corinna Vinschen 155a1ec5fb Allocate temporary TOKEN_GROUP arrays using TLS
A user token can be up to 64K in size.  The group list might take a lot
of that so use tmp_pathbuf allocated space rather than stack space
allocted via alloca.  In create_token the TOKEN_GROUP was allocated via
malloc, but the code is needlessly complicated.  Simplify by using
tmp_pathbuf as well.

	* sec_auth.cc (verify_token): Allocate TOKEN_GROUP via tmp_pathbuf.
	(create_token): Ditto.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-23 17:40:24 +01:00
Corinna Vinschen 117737a7fa cxx.cc: Disable C++14 warning for new sized delete operator
As long as we're not building in C++14 mode, the definition of the
sized delete operator results in a compatibility warning.

	* cxx.cc (operator delete): Disable C++14 warning for sized	variant.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-23 11:58:21 +01:00
Peter Foley 93c13ec6cc Add c++14 sized deallocation operator
When compiling with -std=c++14 (the default for gcc 6.0+), the sized
deallocation operator must be defined to prevent undefined symbols when
linking.

winsup/cygwin/ChangeLog:
cxx.cc (operator delete(void *p, size_t)): Define.

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-03-23 11:51:22 +01:00
Corinna Vinschen 3737bc4e98 Drop Cygwin-only posix_memalign prototype
newlib:
	* libc/include/stdlib.h (posix_memalign): Drop __rtmes__ guards.

cygwin:
	* include/cygwin/stdlib.h (posix_memalign): Drop prototype.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-23 11:50:27 +01:00
Peter Foley fa6a5a3a74 Use DnsFree instead of deprecated DnsRecordListFree
The latest version of the mingw headers have been updated to make
DnsRecordListFree an alias of DnsFree when targeting Windows XP or later.
Use DnsFree directly, avoiding the wrapper function.

/home/peter/cross/src/cygwin/winsup/cygwin/libc/minires-os-if.c:289:
undefined reference to `DnsFree'

winsup/cygwin/ChangeLog
autoload.cc: Load DnsFree rather then DnsRecordListFree
libc/minires-os-if.cc (cygwin_query): Use DnsFree rather then DnsRecordListFree

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-03-23 11:41:26 +01:00
Corinna Vinschen 445036bb98 Remove Mingw.org from FAQ, or replace with Mingw-w64.
* faq-api.xml: Change MingW to Mingw-w64.
	* faq-programming.xml: Ditto.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-21 21:09:23 +01:00
Peter Foley 3ba2c39fb2 Add nonnull annotation to posix_memalign.
GCC 6.0+ asserts that the memptr argument to the builtin function
posix_memalign is nonnull.
Add the necessary annotation to the prototype and
remove the now unnecessary check to fix a warning.

newlib/Changelog
newlib/libc/include/stdlib.h: Annotate arg to posix_memalign as
non-null.

winsup/cygwin/ChangeLog
malloc_wrapper.cc (posix_memalign): Remove always true nonnull check.

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-03-21 20:27:16 +01:00
Peter Foley 6699e21ffb Remove misleading indentation
GCC 6.0+ warns on misleading indentation, so fix it.

winsup/cygserver/ChangeLog
* sysv_msg.cc (msgsnd): Fix misleading indentation.
* sysv_msg.cc (msgrcv): Ditto.
* sysv_sem.cc (semop): Ditto.

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-03-21 20:16:01 +01:00
Sebastian Huber 08537d88f6 Move arc4random Cygwin only code to Cygwin
Keep the Newlib arc4random.c identical to the OpenBSD upstream version.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>.
2016-03-21 11:12:19 +01:00
Corinna Vinschen 2519f0ef0c srandom: Replace accessing /dev/random by equivalent getentropy call
/dev/random calls getentropy.  So there's no good reason to go out of
our way to open /dev/random just to call getentropy anyway.

	* random.cc (srandomdev): Drop opening /dev/random in favor of
	calling getentropy.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-20 22:29:03 +01:00
Corinna Vinschen 58988463cc Revert "Use high-resolution timebases for select()."
This reverts commit 6e70fd315a.

Revert accidental push
2016-03-20 21:59:47 +01:00
Corinna Vinschen bf0f4baf95 Revert "Debug printfs."
This reverts commit 9f82de59a0.

Revert accidental push
2016-03-20 21:59:43 +01:00
Corinna Vinschen 66dc7d731a Revert "Improve and simplify select()."
This reverts commit 472d0a228c.

Revert accidental push
2016-03-20 21:59:27 +01:00
Corinna Vinschen 1cca343e47 Drop redundant arc4random prototypes from cygwin/stdlib.h
Newlib's default stdlib.h now defines these functions so we can
drop them from the Cygwin-specific header.  Remove the arc4random_stir
and arc4random_uniform prototypes entirely.  They shouldn't be used
by applications anymore.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-20 21:30:58 +01:00
Corinna Vinschen f7f26f65ab Allow machine-dependent arc4 locking
newlib:
	* libc/stdlib/arc4random.h: Remove Cygwin-specific locking code.
	Conditionalize arc4 locking.  Check for _ARC4_LOCK_INIT being
	undefined to fall back to default implementation.

cygwin:
	* include/machine/_arc4random.h: New file.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-20 21:30:08 +01:00
John Hood 472d0a228c Improve and simplify select().
* cygwait.h (cygwait_us) Remove; this reverts previous changes.
	* select.h: Eliminate redundant select_stuff::select_loop state.
	* select.cc (select): Eliminate redundant
	select_stuff::select_loop state.  Eliminate redundant code for
	zero timeout.  Do not return early on early timer return.
	(select_stuff::wait): Eliminate redundant
	select_stuff::select_loop state.
2016-03-20 15:26:32 +01:00
John Hood 9f82de59a0 Debug printfs.
* fhandler.cc (fhandler_base::get_readahead): Add debug code.
	* fhandler_console.cc (fhandler_console::read): Add debug code.
	* select.cc (pselect): Add debug code.
	(peek_console): Add debug code.
2016-03-20 15:26:31 +01:00
John Hood 6e70fd315a Use high-resolution timebases for select().
* cygwait.h: Add cygwait_us() methods.
	* select.h: Change prototype for select_stuff::wait() for larger
	microsecond timeouts.
	* select.cc (pselect): Convert from old cygwin_select().
	Implement microsecond timeouts.
	(cygwin_select): Rewrite as a wrapper on pselect().
	(select): Implement microsecond timeouts.
	(select_stuff::wait): Implement microsecond timeouts with a timer
	object.
2016-03-20 15:26:31 +01:00
John Hood 313fcaf1bc * winsup/testsuite/configure: chmod a+x 2016-03-20 15:21:24 +01:00
John Hood b92b47b7bc Move get_nonascii_key into fhandler_console.
* fhandler.h (fhandler_console): Move get_nonascii_key() from
	select.c into this class.
	* select.cc (peek_console): Move get_nonascii_key() into
	fhandler_console class.
2016-03-20 14:14:27 +01:00
Peter Foley 3bc912c02b respect datarootdir
Recent versions of autoconf define datadir/infodir in terms of
datarootdir. Add it.

winsup/ChangeLog
* Makefile.in: define datarootdir

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-03-20 12:36:40 +01:00
Peter Foley 5bc753c5a2 Fix strict aliasing
Fix a strict aliasing error detected by gcc 6.0+

winsup/cygwin/ChangeLog
* pinfo.cc (winpids::enum_process): Fix strict aliasing.

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-03-20 12:31:42 +01:00
Peter Foley 0611132f04 Fix typoed comparison
winsup/cygwin/ChangeLog
* thread.cc (semaphore::open): Fix mistaken conditional.

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-03-20 12:19:35 +01:00
Peter Foley 1eb7cb2553 The address of an class always evaluates to true
winsup/cygwin/pinfo.cc:465:14: error: the compiler can assume that the
address of 'tc' will always evaluate to 'true' [-Werror=address]

winsup/cygwin/ChangeLog
* pinfo.cc (_pinfo::set_ctty): remove always true check.

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-03-20 12:16:42 +01:00
Peter Foley 2f310e44c4 Remove misleading indentation
* syscalls.cc (getpriority): Fix misleading indentation.

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-03-20 11:58:57 +01:00
Peter Foley dc85a189a4 Add necessary braces to if statements
The missing braces cause only the first expression to be guarded by the
else clause.

winsup/cygwin/ChangeLog
* fhandler_disk_file.cc (facl): Add missing braces to if statement.
* mount.cc (dos_drive_mappings): Add missing braces to if statement.

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-03-20 11:55:08 +01:00
Peter Foley 922e21a3ea Remove dead code from fhandler_console.
This if is unconditionally false, so remove it.

winsup/cygwin/fhandler_console.cc: In member function 'bool dev_console::fillin(HANDLE)':
winsup/cygwin/fhandler_console.cc:740:22: error: self-comparison always evaluates to false [-Werror=tautological-compare]
       if (b.dwSize.Y != b.dwSize.Y || b.dwSize.X != b.dwSize.X)
           ~~~~~~~~~~~^~~~~~~~~~~~~
winsup/cygwin/fhandler_console.cc:740:50: error: self-comparison always evaluates to false [-Werror=tautological-compare]
       if (b.dwSize.Y != b.dwSize.Y || b.dwSize.X != b.dwSize.X)
                                       ~~~~~~~~~~~^~~~~~~~~~~~~

winsup/cygwin/ChangeLog
* fhandle_console.cc (fillin): remove dead code

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-03-20 11:54:49 +01:00