aboutsummaryrefslogtreecommitdiff
path: root/winsup
AgeCommit message (Collapse)AuthorFilesLines
2016-04-21Always provide register_t via <sys/types.h>Sebastian Huber1-5/+0
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-21Remove cygwin/types.hCorinna Vinschen1-22/+0
2016-04-21Resurrect <machine/types.h> for <sys/types.h>Sebastian Huber2-123/+143
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-20Add release message for commit 9409c53Corinna Vinschen1-0/+4
2016-04-20Don't test pthread objects for being already initialized at init timeCorinna Vinschen1-12/+0
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-19Provide in_port_t via <sys/types.h>Sebastian Huber1-1/+4
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-19Provide in_addr_t via <sys/types.h>Sebastian Huber1-1/+5
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-19Introduce __sa_family_t for BSD compatibiliySebastian Huber2-1/+4
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-19Introduce __socklen_t for BSD compatibilitySebastian Huber2-5/+7
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-19BSD compatibility for <machine/endian.h>Sebastian Huber3-29/+59
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-19Disallow S_ISGID on directories without default ACL entriesCorinna Vinschen1-1/+13
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-18Handle permissions a bit closer to POSIX 1003.1eCorinna Vinschen2-10/+10
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-18Also create NULL SID ACE if special POSIX bits are setCorinna Vinschen1-0/+1
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-18Add release message for commit e2ea143Corinna Vinschen1-0/+4
2016-04-18Fix attempt to create ACLs without NULL SIDCorinna Vinschen1-3/+6
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-15Cygwin: Drop definition and usage of _mode_t in favor of __mode_tCorinna Vinschen2-4/+3
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-15Provide POSIX defined fsblkcnt_t and fsfilcnt_tSebastian Huber2-12/+8
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-15Provide POSIX defined blksize_t in <sys/types.h>Sebastian Huber2-5/+3
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-15Provide POSIX defined blkcnt_t in <sys/types.h>Sebastian Huber2-6/+4
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-15Define mode_t via __mode_tSebastian Huber1-4/+0
Use __uint32_t to avoid the use of GCC-specific _ST_INT32. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-15Add BSD guard for ino_t in <sys/types.h>Sebastian Huber2-8/+4
Introduce internal type __ino_t. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-15Provide POSIX defined id_t in <sys/types.h>Sebastian Huber1-6/+0
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-15Use __machine_*_t_defined for internal typesSebastian Huber1-4/+4
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-13Get rid of some special cases for Cygwin in sys/types.hCorinna Vinschen3-31/+27
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-13Eliminate use of Newlib-specific <machine/types.h>Sebastian Huber1-6/+1
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-12Add Cygwin 2.5.1 release message fileCorinna Vinschen1-0/+14
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-12Reformat comments in Cygwin's version.h, remove very outdated infoCorinna Vinschen1-475/+434
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-12Bump Cygwin DLL version to 2.5.1.Corinna Vinschen1-1/+1
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-12strxfrm/wcsxfrm: Always return length of the transformed stringCorinna Vinschen1-12/+24
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-05Be truthful about reporting whether readahead is availableJohannes Schindelin1-1/+2
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-05Add latest changes to release messageCorinna Vinschen2-0/+18
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-05Revert "Refactor to avoid nonnull checks on "this" pointer."Corinna Vinschen9-75/+38
This reverts commit 0008bdea02b690ab19ffe997499cb9a96ee5a66d. 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-04winsup/utils: port getconf to 64-bitYaakov Selkowitz1-12/+23
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-04cygwin: update sysconf for new featuresYaakov Selkowitz1-3/+3
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-04cygwin/math: make isinf functions signedYaakov Selkowitz1-3/+3
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-04Feature test macros overhaul: Cygwin pthread.hYaakov Selkowitz1-8/+21
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-04Refactor to avoid nonnull checks on "this" pointer.Peter Foley9-38/+75
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-04Rename without-mingw-progs to with-cross-bootstrapPeter Foley6-18/+33
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-01Update autoconf for doc/lsaauth/utilsPeter Foley7-1949/+11
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-01Remove MALLOC_CHECK and calls to it entirelyCorinna Vinschen11-62/+0
MALLOC_CHECK got useless with commit b259af5. Remove it throughout. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-04-01Remove remnants of never-defined MALLOC_DEBUG and NEWVFORKPeter Foley10-81/+0
MALLOC_DEBUG and NEWVFORK haven't been defined since 2008 (46162537516c5e5fbb). 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-01Don't use deprecated acconfig.h for DEBUGGINGPeter Foley4-8/+6
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-01Remove leftover cruft from config.h.inPeter Foley2-30/+4
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-03-30mkvers.sh: Reformatting for better readabilityCorinna Vinschen1-36/+46
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-30Use just-built gcc for windresPeter Foley1-1/+20
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-30fix typo in netinit/ip.hPeter Foley1-1/+1
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-30Add dependencies to tlsoffsets fileCorinna Vinschen1-2/+2
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-30Replace AC_CANONICAL_SYSTEM with AC_CANONICAL_TARGET, fix AC_INIT usageCorinna Vinschen11-22/+12
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-30Add option to not build mingw programs when cross compiling.Peter Foley2-9/+30
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-30fenv.h: Change fexcept_t to integral type for compatibilityCorinna Vinschen2-14/+9
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>