]> sourceware.org Git - newlib-cygwin.git/log
newlib-cygwin.git
23 months agoCygwin: drop all usages of WINAPI
Corinna Vinschen [Thu, 4 Aug 2022 19:16:32 +0000 (21:16 +0200)]
Cygwin: drop all usages of WINAPI

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: clock.cc: Drop redundant Windows prototypes
Corinna Vinschen [Thu, 4 Aug 2022 19:13:15 +0000 (21:13 +0200)]
Cygwin: clock.cc: Drop redundant Windows prototypes

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop obsolete _cygwin_noncygwin_dll_entry entry point
Corinna Vinschen [Thu, 4 Aug 2022 19:02:11 +0000 (21:02 +0200)]
Cygwin: drop obsolete _cygwin_noncygwin_dll_entry entry point

This was obsoleted more than 22 years ago. Time to drop it.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: syscalls.cc: remove ".dll" from blessed_executable_suffixes
Ken Brown [Wed, 3 Aug 2022 20:45:23 +0000 (16:45 -0400)]
Cygwin: syscalls.cc: remove ".dll" from blessed_executable_suffixes

This reverts commit d9e9c7b5a7.  The latter added ".dll" to the
blessed_executable_suffixes array because on 32-bit Windows, the
GetBinaryType function would report that a 64-bit DLL is an
executable, contrary to the documentation of that function.

That anomaly does not exist on 64-bit Windows, so we can remove ".dll"
from the list.  Reverting the commit does, however, change the
behavior of the rename(2) syscall in the following unlikely situation:
Suppose we have an executable foo.exe and we make the call

  rename ("foo", "bar.dll");

Previously, foo.exe would be renamed to bar.dll.  So bar.dll would
then be an executable without the .exe extension.  The new behavior is
that foo.exe will be renamed to bar.dll.exe.  [Exception: If there
already existed an executable (not a DLL!) with the name bar.dll, then
.exe will not be appended.]

23 months agoCygwin: Drop outdated IsWow64Process2 prototype
Corinna Vinschen [Thu, 4 Aug 2022 18:55:52 +0000 (20:55 +0200)]
Cygwin: Drop outdated IsWow64Process2 prototype

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop outdated __MINGW64_VERSION_MAJOR checks
Corinna Vinschen [Thu, 4 Aug 2022 18:55:25 +0000 (20:55 +0200)]
Cygwin: drop outdated  __MINGW64_VERSION_MAJOR checks

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop __stdcall usage
Corinna Vinschen [Thu, 4 Aug 2022 18:53:59 +0000 (20:53 +0200)]
Cygwin: drop __stdcall usage

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: syscalls.cc: drop masking macros for standard IO functions
Corinna Vinschen [Thu, 4 Aug 2022 18:32:36 +0000 (20:32 +0200)]
Cygwin: syscalls.cc: drop masking macros for standard IO functions

The actual reason for these wrappers are lost in time, there's no
hint even in the pre-2000 ChangeLog files.  Apparently they were
masking the prototypes or, alternatively, macros from newlib to
clash with the definitions in syscalls.cc.

They are not needed anymore, so just drop them.

This uncovered that the buffer pointer to pwrite is erronously
non-const.  Fix this on the way out.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: Drop export aliases and masking macros for stdio64 functions
Corinna Vinschen [Thu, 4 Aug 2022 15:30:48 +0000 (17:30 +0200)]
Cygwin: Drop export aliases and masking macros for stdio64 functions

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: create sparse errmap array
Corinna Vinschen [Thu, 4 Aug 2022 13:16:23 +0000 (15:16 +0200)]
Cygwin: create sparse errmap array

To avoid linear searches for error codes, autogenerate errmap as
simple array of errno values indexed by Windows error codes.
Restrict to the first 9000 Windows error codes, we don't care for
most of them anyway.

Define errmap in its own file errmap.h to clean up errno.cc.

Change geterrno_from_win_error accordingly.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agocacosh: Use approximation for large input.
Markus Mützel [Thu, 4 Aug 2022 10:55:52 +0000 (12:55 +0200)]
cacosh: Use approximation for large input.

Signed-off-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agocasinh: Use approximation for large input.
Markus Mützel [Thu, 4 Aug 2022 10:55:17 +0000 (12:55 +0200)]
casinh: Use approximation for large input.

Signed-off-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: net.cc: convert wsock_errmap into a simple array of error codes
Corinna Vinschen [Thu, 4 Aug 2022 09:45:58 +0000 (11:45 +0200)]
Cygwin: net.cc: convert wsock_errmap into a simple array of error codes

Avoid linear searches for error codes by converting wsock_errmap
to a ordered array, indexed by WinSock error code (subtracted by
WSABASEERR.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: net.cc: create own type host_errmap_t for host_errmap
Corinna Vinschen [Thu, 4 Aug 2022 09:37:58 +0000 (11:37 +0200)]
Cygwin: net.cc: create own type host_errmap_t for host_errmap

This decouples host_errmap from the errmap_t definition which is
about to be changed in a followup patch.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: net.cc: constify gai_errmap
Corinna Vinschen [Thu, 4 Aug 2022 09:36:24 +0000 (11:36 +0200)]
Cygwin: net.cc: constify gai_errmap

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: fix/drop a few comments
Corinna Vinschen [Wed, 3 Aug 2022 16:14:39 +0000 (18:14 +0200)]
Cygwin: fix/drop a few comments

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: __WORDSIZE: Drop 32 bit considerations
Corinna Vinschen [Wed, 3 Aug 2022 15:48:20 +0000 (17:48 +0200)]
Cygwin: __WORDSIZE: Drop 32 bit considerations

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop macro and code for CYGWIN_VERSION_DLL_EPOCH
Corinna Vinschen [Wed, 3 Aug 2022 14:16:14 +0000 (16:16 +0200)]
Cygwin: drop macro and code for CYGWIN_VERSION_DLL_EPOCH

fix a comment in check_sanity_and_sync() on the way

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop unused CYGWIN_VERSION_CYGWIN_CONV macro
Corinna Vinschen [Wed, 3 Aug 2022 14:09:00 +0000 (16:09 +0200)]
Cygwin: drop unused CYGWIN_VERSION_CYGWIN_CONV macro

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: version.h: document API_VERSION of the first 64 bit build
Corinna Vinschen [Wed, 3 Aug 2022 14:04:42 +0000 (16:04 +0200)]
Cygwin: version.h: document API_VERSION of the first 64 bit build

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop macro and code for CYGWIN_VERSION_USE_PSEUDO_RELOC_IN_DLL
Corinna Vinschen [Wed, 3 Aug 2022 14:01:29 +0000 (16:01 +0200)]
Cygwin: drop macro and code for CYGWIN_VERSION_USE_PSEUDO_RELOC_IN_DLL

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop macro and code for CYGWIN_VERSION_CHECK_FOR_OLD_CTYPE
Corinna Vinschen [Wed, 3 Aug 2022 13:59:37 +0000 (15:59 +0200)]
Cygwin: drop macro and code for CYGWIN_VERSION_CHECK_FOR_OLD_CTYPE

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop macro and code for CYGWIN_VERSION_CHECK_FOR_OLD_IFREQ
Corinna Vinschen [Wed, 3 Aug 2022 13:57:30 +0000 (15:57 +0200)]
Cygwin: drop macro and code for CYGWIN_VERSION_CHECK_FOR_OLD_IFREQ

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop macro and code for CYGWIN_VERSION_CHECK_FOR_USING_WINSOCK1_VALUES
Corinna Vinschen [Wed, 3 Aug 2022 13:53:41 +0000 (15:53 +0200)]
Cygwin: drop macro and code for CYGWIN_VERSION_CHECK_FOR_USING_WINSOCK1_VALUES

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop macro and code for CYGWIN_VERSION_CHECK_FOR_USING_ANCIENT_MSGHDR
Corinna Vinschen [Wed, 3 Aug 2022 13:52:07 +0000 (15:52 +0200)]
Cygwin: drop macro and code for CYGWIN_VERSION_CHECK_FOR_USING_ANCIENT_MSGHDR

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop unused CYGWIN_VERSION_CHECK_FOR_USING_BIG_TYPES macro
Corinna Vinschen [Wed, 3 Aug 2022 13:50:52 +0000 (15:50 +0200)]
Cygwin: drop unused CYGWIN_VERSION_CHECK_FOR_USING_BIG_TYPES macro

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop macro and code for CYGWIN_VERSION_CHECK_FOR_OLD_O_NONBLOCK
Corinna Vinschen [Wed, 3 Aug 2022 13:48:56 +0000 (15:48 +0200)]
Cygwin: drop macro and code for CYGWIN_VERSION_CHECK_FOR_OLD_O_NONBLOCK

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop unused CYGWIN_VERSION_CHECK_FOR_S_IEXEC macro
Corinna Vinschen [Wed, 3 Aug 2022 13:39:14 +0000 (15:39 +0200)]
Cygwin: drop unused CYGWIN_VERSION_CHECK_FOR_S_IEXEC macro

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop macro and code for CYGWIN_VERSION_OLD_STDIO_CRLF_HANDLING
Corinna Vinschen [Wed, 3 Aug 2022 13:38:11 +0000 (15:38 +0200)]
Cygwin: drop macro and code for CYGWIN_VERSION_OLD_STDIO_CRLF_HANDLING

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop macro and code for CYGWIN_VERSION_DLL_MALLOC_ENV
Corinna Vinschen [Wed, 3 Aug 2022 13:35:07 +0000 (15:35 +0200)]
Cygwin: drop macro and code for CYGWIN_VERSION_DLL_MALLOC_ENV

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop macro and code for CYGWIN_VERSION_DLL_IS_OLD_TERMIOS
Corinna Vinschen [Wed, 3 Aug 2022 13:33:58 +0000 (15:33 +0200)]
Cygwin: drop macro and code for CYGWIN_VERSION_DLL_IS_OLD_TERMIOS

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: drop requirement to build newlib's stdio64
Corinna Vinschen [Wed, 3 Aug 2022 11:41:35 +0000 (13:41 +0200)]
Cygwin: drop requirement to build newlib's stdio64

Given that 64 bit Cygwin defines all file access types (off_t,
fpos_t, and derived types) as 64 bit anyway, there's no reason
left to rely on the stdio64 part of newlib.  Use base functions
and base types.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: path: Make some symlinks to /cygdrive/* work.
Takashi Yano [Mon, 1 Aug 2022 00:02:23 +0000 (09:02 +0900)]
Cygwin: path: Make some symlinks to /cygdrive/* work.

- Previously, some symbolic links to /cygdrive/* (e.g. /cygdrive/C,
  /cygdrive/./c, /cygdrive//c, etc.) did not work. This patch fixes
  the issue.
  Addresses: https://cygwin.com/pipermail/cygwin/2022-July/251994.html

23 months agoCygwin: console: Modify ConEmu cygwin connector hook.
Takashi Yano [Mon, 1 Aug 2022 22:42:53 +0000 (07:42 +0900)]
Cygwin: console: Modify ConEmu cygwin connector hook.

- Previously, LoadLibraryA() is hooked for ConEmu cygwin connector.
  With this patch, GetProcAddress() for "RequestTermConnector" is
  hooked instead which is more essential for ConEmu cygwin connector.

23 months agoCygwin: pty: Treat *.bat and *.cmd as a non-cygwin console app.
Takashi Yano [Sun, 31 Jul 2022 08:42:00 +0000 (17:42 +0900)]
Cygwin: pty: Treat *.bat and *.cmd as a non-cygwin console app.

- If *.bat or *.cmd is executed directly from cygwin shell, pty
  failed to switch I/O pipe to that for native apps. This patch
  fixes the issue.

23 months agoCygwin: console: Avoid accessing NULL pointer via cygheap->ctty.
Takashi Yano [Fri, 29 Jul 2022 12:40:18 +0000 (21:40 +0900)]
Cygwin: console: Avoid accessing NULL pointer via cygheap->ctty.

- Recent commit "Cygwin: console: Add missing input_mutex guard."
  has a problem that causes NULL pointer access if cygheap->ctty
  is NULL. This patch fixes the issue.

23 months agoCygwin: Set threadnames with SetThreadDescription()
Jon Turney [Thu, 19 May 2022 16:27:39 +0000 (17:27 +0100)]
Cygwin: Set threadnames with SetThreadDescription()

gdb master recently learnt how to use GetThreadDescription() [1], so set
threadnames using SetThreadDescription() [available since Windows 10
1607] as well.

This is superior to using a special exception to indicate the thread
name to the debugger, because the thread name isn't missed if you don't
have a debugger attached at the time it's set.

It's not clear what the encoding of a thread name string is, we assume
UTF8 for the moment.

For the moment, continue to use the old method as well, for the benefit
of older gdb versions etc.

[1] https://sourceware.org/pipermail/gdb-patches/2022-April/187833.html

23 months agoCygwin: uname: drop useless support for unsupported CPU arches
Corinna Vinschen [Fri, 29 Jul 2022 10:19:54 +0000 (12:19 +0200)]
Cygwin: uname: drop useless support for unsupported CPU arches

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: gmon.h: drop 32 bit considerations
Corinna Vinschen [Fri, 29 Jul 2022 10:19:18 +0000 (12:19 +0200)]
Cygwin: gmon.h: drop 32 bit considerations

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: profile.c: drop i686 register access
Corinna Vinschen [Fri, 29 Jul 2022 10:17:43 +0000 (12:17 +0200)]
Cygwin: profile.c: drop i686 register access

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: rename __cygwin_environ and drop env redirection via cur_environ()
Corinna Vinschen [Thu, 28 Jul 2022 20:00:40 +0000 (22:00 +0200)]
Cygwin: rename __cygwin_environ and drop env redirection via cur_environ()

Back in early Cygwin development a function based access to the
environment was exported, the internal environ in Cygwin was called
__cygwin_environ and cur_environ() was used to access the environment
indirectly .  The history of that necessity is not documented,
but kept in i686 for backward compatibility.

The x86_64 port eventually used __cygwin_environ directly and exported
it as DATA under the usual name environ.

We don't need the i686 workaround anymore, so just rename
__cygwin_environ to environ, drop the cur_environ() macro and
simply export environ under its own name.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: perl scripts: drop support for i686
Corinna Vinschen [Thu, 28 Jul 2022 18:05:55 +0000 (20:05 +0200)]
Cygwin: perl scripts: drop support for i686

- rename "is64bit" to "is_x86_64"
- Always set sym_prefix to empty string and add a FIXME
- speclib: rename uscore to sym_prefix and fix bug in string handling

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
23 months agoCygwin: console: Add workaround for ConEmu cygwin connector.
Takashi Yano [Thu, 28 Jul 2022 12:58:04 +0000 (21:58 +0900)]
Cygwin: console: Add workaround for ConEmu cygwin connector.

- ConEmu cygwin connector conflicts with cons_master_thread since
  it does not use read() to read console input. With this patch,
  cons_master_thread is disabled in ConEmu cygwin connector.

23 months agoCygwin: console: Add missing input_mutex guard.
Takashi Yano [Thu, 28 Jul 2022 12:52:39 +0000 (21:52 +0900)]
Cygwin: console: Add missing input_mutex guard.

- Setting con.disable_master_thread flag should be guarded by
  input_mutex, however, it was not. This patch fixes that.

23 months agoCygwin: Fix previous attempt to drop i386 targets from hookapi
Corinna Vinschen [Thu, 28 Jul 2022 14:38:01 +0000 (16:38 +0200)]
Cygwin: Fix previous attempt to drop i386 targets from hookapi

Somehow this patch looks like it was pushed before having been
finished.  Let's try again...

Fixes: e46f15c2d168 ("Cygwin: hookapi: drop handling i386 targets")
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: _dll_crt0: minimize target-specific conditional code
Corinna Vinschen [Thu, 14 Jul 2022 18:08:58 +0000 (20:08 +0200)]
Cygwin: _dll_crt0: minimize target-specific conditional code

Only the assembler snippet is really x86_64-specific, so minimize the
conditional code block to this snippet.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: hookapi: drop handling i386 targets
Corinna Vinschen [Thu, 14 Jul 2022 18:06:09 +0000 (20:06 +0200)]
Cygwin: hookapi: drop handling i386 targets

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: fix or delete a few comments to drop 32 bit references
Corinna Vinschen [Thu, 14 Jul 2022 16:32:53 +0000 (18:32 +0200)]
Cygwin: fix or delete a few comments to drop 32 bit references

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: drop cyglsa.h. LSA subauth is not supported anymore
Corinna Vinschen [Thu, 14 Jul 2022 10:48:39 +0000 (12:48 +0200)]
Cygwin: drop cyglsa.h.  LSA subauth is not supported anymore

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: drop 32 bit target from linker script
Corinna Vinschen [Thu, 14 Jul 2022 10:33:21 +0000 (12:33 +0200)]
Cygwin: drop 32 bit target from linker script

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: drop tmpfile export alias for 32 bit systems
Corinna Vinschen [Thu, 14 Jul 2022 09:41:01 +0000 (11:41 +0200)]
Cygwin: drop tmpfile export alias for 32 bit systems

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoAdd --enable-newlib-reent-thread-local option
Matt Joyce [Mon, 16 May 2022 09:51:54 +0000 (11:51 +0200)]
Add --enable-newlib-reent-thread-local option

By default, Newlib uses a huge object of type struct _reent to store
thread-specific data.  This object is returned by __getreent() if the
__DYNAMIC_REENT__ Newlib configuration option is defined.

The reentrancy structure contains for example errno and the standard input,
output, and error file streams.  This means that if an application only uses
errno it has a dependency on the file stream support even if it does not use
it.  This is an issue for lower end targets and applications which need to
qualify the software according to safety standards (for example ECSS-E-ST-40C,
ECSS-Q-ST-80C, IEC 61508, ISO 26262, DO-178, DO-330, DO-333).

If the new _REENT_THREAD_LOCAL configuration option is enabled, then struct
_reent is replaced by dedicated thread-local objects for each struct _reent
member.  The thread-local objects are defined in translation units which use
the corresponding object.

2 years agoAdd _REENT_IS_NULL()
Matt Joyce [Mon, 23 May 2022 09:29:57 +0000 (11:29 +0200)]
Add _REENT_IS_NULL()

In a follow up patch, struct _reent is optionally replaced by dedicated
thread-local objects.  In this case,_REENT is optionally defined to NULL.  Add
the _REENT_IS_NULL() macro to disable this check on demand.

2 years agoAdd _REENT_SIG_FUNC(ptr)
Matt Joyce [Fri, 4 Feb 2022 10:47:18 +0000 (11:47 +0100)]
Add _REENT_SIG_FUNC(ptr)

Add a _REENT_SIG_FUNC() macro to encapsulate access to the
_sig_func member of struct reent. This will help to replace the
struct member with a thread-local storage object in a follow up
patch.

2 years agoAdd _REENT_CVTBUF(ptr)
Matt Joyce [Thu, 3 Feb 2022 11:24:26 +0000 (12:24 +0100)]
Add _REENT_CVTBUF(ptr)

Add a _REENT_CVTBUF() macro to encapsulate access to the _cvtbuf
member of struct reent. This will help to replace the struct
member with a thread-local storage object in a follow up patch.

2 years agoAdd _REENT_CVTLEN(ptr)
Matt Joyce [Thu, 3 Feb 2022 10:19:14 +0000 (11:19 +0100)]
Add _REENT_CVTLEN(ptr)

Add a _REENT_CVTLEN() macro to encapsulate access to the _cvtlen
member of struct reent. This will help to replace the struct
member with a thread-local storage object in a follow-up patch.

2 years agoAdd _REENT_CLEANUP(ptr)
Matt Joyce [Thu, 3 Feb 2022 09:18:53 +0000 (10:18 +0100)]
Add _REENT_CLEANUP(ptr)

Add a _REENT_CLEANUP() macro to encapsulate access to the
__cleanup member of struct reent. This will help to replace the
struct member with a thread-local storage object in a follow up
patch.

2 years agoAdd _REENT_LOCALE(ptr)
Matt Joyce [Wed, 2 Feb 2022 11:47:30 +0000 (12:47 +0100)]
Add _REENT_LOCALE(ptr)

Add a _REENT_LOCALE() macro to encapsulate access to the _locale
member of struct reent. This will help to replace the struct
member with a thread-local storage object in a follow up patch.

2 years agoAdd _REENT_INC(ptr)
Matt Joyce [Wed, 2 Feb 2022 08:49:00 +0000 (09:49 +0100)]
Add _REENT_INC(ptr)

Add a _REENT_INC() macro to encapsulate access to the _inc member
of struct reent. This will help to replace the struct member with
a thread-local storage object in a follow up patch.

2 years agoAdd _REENT_STDERR(ptr)
Matt Joyce [Tue, 1 Feb 2022 12:05:53 +0000 (13:05 +0100)]
Add _REENT_STDERR(ptr)

Add a _REENT_STDERR() macro to encapsulate access to the _stderr
member of struct reent. This will help to replace the struct
member with a thread-local storage object in a follow up patch.

2 years agoAdd _REENT_STDOUT(ptr)
Matt Joyce [Tue, 1 Feb 2022 11:37:46 +0000 (12:37 +0100)]
Add _REENT_STDOUT(ptr)

Add a _REENT_STDOUT() macro to encapsulate access to the _stdout
member of struct reent. This will help to replace the struct
member with a thread-local storage object in a follow up patch.

2 years agoAdd _REENT_STDIN(ptr)
Matt Joyce [Fri, 28 Jan 2022 09:58:36 +0000 (10:58 +0100)]
Add _REENT_STDIN(ptr)

Add a _REENT_STDIN() macro to encapsulate access to the _stdin
member of struct reent. This will help to replace the struct
member with a thread-local storage object in a follow up patch.

2 years agoAdd _REENT_ERRNO(ptr)
Matt Joyce [Tue, 18 Jan 2022 09:13:04 +0000 (10:13 +0100)]
Add _REENT_ERRNO(ptr)

Add a _REENT_ERRNO() macro to encapsulate the access to the
_errno member of struct reent. This will help to replace the
structure member with a thread-local storage object in a follow
up patch.

Replace uses of __errno_r() with _REENT_ERRNO().  Keep __errno_r() macro for
potential users outside of Newlib.

2 years agoDefine _REENT_EMERGENCY(ptr) only once
Matt Joyce [Mon, 16 May 2022 08:54:31 +0000 (10:54 +0200)]
Define _REENT_EMERGENCY(ptr) only once

Use this macro to access the _emergency member of struct _reent.  This macro
will help to replace the _emergency member of struct _reent with a thread-local
storage object in a follow up patch.

2 years agoMove content in <sys/reent.h>
Sebastian Huber [Wed, 18 May 2022 17:21:44 +0000 (19:21 +0200)]
Move content in <sys/reent.h>

Move definitions not directly related to struct _reent to the bottom of the
file.  This allows a contiguous #ifndef _REENT_THREAD_LOCAL_STORAGE block.

2 years agoUpdate FAQs which are out of date on the details of setup UI
Jon Turney [Fri, 1 Jul 2022 14:21:38 +0000 (15:21 +0100)]
Update FAQs which are out of date on the details of setup UI

2 years agoUpdate FAQs for removal of 32-bit Cygwin
Jon Turney [Fri, 1 Jul 2022 14:20:42 +0000 (15:20 +0100)]
Update FAQs for removal of 32-bit Cygwin

Update FAQs for removal of 32-bit Cygwin
Also update FAQs for dropping support for Windows Vista/Server 20008

2 years agoCygwin: clipboard: Add workaround for setting clipboard failure.
Takashi Yano [Sat, 2 Jul 2022 03:08:51 +0000 (12:08 +0900)]
Cygwin: clipboard: Add workaround for setting clipboard failure.

- OpenClipboard() just after CloseClipboard() sometimes fails. Due
  to this, /dev/clipboard sometimes fails to set CF_UNICODETEXT
  data. This patch add a workaround for this issue.

2 years agoRTEMS: Add README
Sebastian Huber [Mon, 11 Jul 2022 06:26:42 +0000 (08:26 +0200)]
RTEMS: Add README

2 years agolibc/syslog: fully deprecate and don't try to open "/dev/log"
Gleb Smirnoff [Fri, 24 Jun 2022 16:09:11 +0000 (09:09 -0700)]
libc/syslog: fully deprecate and don't try to open "/dev/log"

The "/dev/log" socket existed in pre-FreeBSD times.  Later it was
substituted to a compatibility symlink.  The symlink creation was
deprecated in FreeBSD 10.2 and 9-STABLE.

Reviewed by: markj
Differential revision: https://reviews.freebsd.org/D35304

2 years agoarp: Implement sticky ARP mode for interfaces.
Konrad Sewiłło-Jopek [Fri, 27 May 2022 11:02:57 +0000 (11:02 +0000)]
arp: Implement sticky ARP mode for interfaces.

Provide sticky ARP flag for network interface which marks it as the
"sticky" one similarly to what we have for bridges. Once interface is
marked sticky, any address resolved using the ARP will be saved as a
static one in the ARP table. Such functionality may be used to prevent
ARP spoofing or to decrease latencies in Ethernet networks.

The drawbacks include potential limitations in usage of ARP-based
load-balancers and high-availability solutions such as carp(4).

The implemented option is disabled by default, therefore should not
impact the default behaviour of the networking stack.

Sponsored by: Conclusive Engineering sp. z o.o.
Reviewed By: melifaro, pauamma_gundo.com
Differential Revision: https://reviews.freebsd.org/D35314
MFC after: 2 weeks

2 years agoCorrectly measure system load averages > 1024
Alan Somers [Thu, 5 May 2022 21:35:23 +0000 (15:35 -0600)]
Correctly measure system load averages > 1024

The old fixed-point arithmetic used for calculating load averages had an
overflow at 1024.  So on systems with extremely high load, the observed
load average would actually fall back to 0 and shoot up again, creating
a kind of sawtooth graph.

Fix this by using 64-bit math internally, while still reporting the load
average to userspace as a 32-bit number.

Sponsored by: Axcient
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D35134

2 years agoAdd ifcap2 names for RXTLS4 and RXTLS6 interface capabilities
Konstantin Belousov [Wed, 15 Dec 2021 03:03:23 +0000 (05:03 +0200)]
Add ifcap2 names for RXTLS4 and RXTLS6 interface capabilities

and corresponding nvlist capabilities name strings.

Reviewed by: hselasky, jhb, kp (previous version)
Sponsored by: NVIDIA Networking
MFC after: 3 weeks
Differential revision: https://reviews.freebsd.org/D32551

2 years agoKernel-side infrastructure to implement nvlist-based set/get ifcaps
Konstantin Belousov [Sun, 17 Oct 2021 15:00:34 +0000 (18:00 +0300)]
Kernel-side infrastructure to implement nvlist-based set/get ifcaps

Reviewed by: hselasky, jhb, kp (previous version)
Sponsored by: NVIDIA Networking
MFC after: 3 weeks
Differential revision: https://reviews.freebsd.org/D32551

2 years agotcp: LRO code to deal with all 12 TCP header flags
Richard Scheffenegger [Tue, 1 Feb 2022 16:25:49 +0000 (17:25 +0100)]
tcp: LRO code to deal with all 12 TCP header flags

TCP per RFC793 has 4 reserved flag bits for future use. One
of those bits may be used for Accurate ECN.
This patch is to include these bits in the LRO code to ease
the extensibility if/when these bits are used.

Reviewed By: hselasky, rrs, #transport
Sponsored by:        NetApp, Inc.
Differential Revision: https://reviews.freebsd.org/D34127

2 years agokernel: deprecate Internet Class A/B/C
Mike Karels [Wed, 27 Oct 2021 03:01:09 +0000 (22:01 -0500)]
kernel: deprecate Internet Class A/B/C

Hide historical Class A/B/C macros unless IN_HISTORICAL_NETS is defined;
define it for user level.  Define IN_MULTICAST separately from IN_CLASSD,
and use it in pf instead of IN_CLASSD.  Stop using class for setting
default masks when not specified; instead, define new default mask
(24 bits).  Warn when an Internet address is set without a mask.

MFC after: 1 month
Reviewed by: cy
Differential Revision: https://reviews.freebsd.org/D32708

2 years agotcp: socket option to get stack alias name
Peter Lei [Tue, 26 Oct 2021 03:08:54 +0000 (20:08 -0700)]
tcp: socket option to get stack alias name

TCP stack sysctl nodes are currently inserted using the stack
name alias. Allow the user to get the current stack's alias to
allow for programatic sysctl access.

Obtained from: Netflix

2 years agotcp: Add hystart-plus to cc_newreno and rack.
Randall Stewart [Fri, 22 Oct 2021 11:10:28 +0000 (07:10 -0400)]
tcp: Add hystart-plus to cc_newreno and rack.

TCP Hystart draft version -03:
https://datatracker.ietf.org/doc/html/draft-ietf-tcpm-hystartplusplus

Is a new version of hystart that allows one to carefully exit slow start if the RTT
spikes too much. The newer version has a slower-slow-start so to speak that then
kicks in for five round trips. To see if you exited too early, if not into congestion avoidance.
This commit will add that feature to our newreno CC and add the needed bits in rack to
be able to enable it.

Reviewed by: tuexen
Sponsored by: Netflix Inc.
Differential Revision: https://reviews.freebsd.org/D32373

2 years agotcp: Add support for DSACK based reordering window to rack.
Randall Stewart [Tue, 17 Aug 2021 20:29:22 +0000 (16:29 -0400)]
tcp: Add support for DSACK based reordering window to rack.

The rack stack, with respect to the rack bits in it, was originally built based
on an early I-D of rack. In fact at that time the TLP bits were in a separate
I-D. The dynamic reordering window based on DSACK events was not present
in rack at that time. It is now part of the RFC and we need to update our stack
to include these features. However we want to have a way to control the feature
so that we can, if the admin decides, make it stay the same way system wide as
well as via socket option. The new sysctl and socket option has the following
meaning for setting:

00 (0) - Keep the old way, i.e. reordering window is 1 and do not use DSACK bytes to add to reorder window
01 (1) - Change the Reordering window to 1/4 of an RTT but do not use DSACK bytes to add to reorder window
10 (2) - Keep the reordering window as 1, but do use SACK bytes to add additional 1/4 RTT delay to the reorder window
11 (3) - reordering window is 1/4 of an RTT and add additional DSACK bytes to increase the reordering window (RFC behavior)

The default currently in the sysctl is 3 so we get standards based behavior.
Reviewed by: tuexen
Sponsored by: Netflix Inc.
Differential Revision: https://reviews.freebsd.org/D31506

2 years agotsleep: Add a PNOLOCK flag
Andrew Gallatin [Thu, 5 Aug 2021 21:16:30 +0000 (17:16 -0400)]
tsleep: Add a PNOLOCK flag

Add a PNOLOCK flag so that, in the race circumstance where
wakeup races are externally mitigated, tsleep() can be
called with a sleep time of 0 without triggering an
an assertion.

Reviewed by: jhb
Sponsored by: Netflix

2 years agosocket: Implement SO_RERROR
Roy Marples [Wed, 28 Jul 2021 15:46:59 +0000 (08:46 -0700)]
socket: Implement SO_RERROR

SO_RERROR indicates that receive buffer overflows should be handled as
errors. Historically receive buffer overflows have been ignored and
programs could not tell if they missed messages or messages had been
truncated because of overflows. Since programs historically do not
expect to get receive overflow errors, this behavior is not the
default.

This is really really important for programs that use route(4) to keep
in sync with the system. If we loose a message then we need to reload
the full system state, otherwise the behaviour from that point is
undefined and can lead to chasing bogus bug reports.

Reviewed by: philip (network), kbowling (transport), gbe (manpages)
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D26652

2 years agopf: syncookie support
Kristof Provost [Thu, 20 May 2021 09:54:41 +0000 (11:54 +0200)]
pf: syncookie support

Import OpenBSD's syncookie support for pf. This feature help pf resist
TCP SYN floods by only creating states once the remote host completes
the TCP handshake rather than when the initial SYN packet is received.

This is accomplished by using the initial sequence numbers to encode a
cookie (hence the name) in the SYN+ACK response and verifying this on
receipt of the client ACK.

Reviewed by: kbowling
Obtained from: OpenBSD
MFC after: 1 week
Sponsored by: Modirum MDPay
Differential Revision: https://reviews.freebsd.org/D31138

2 years agotcp: Add a socket option to rack
Randall Stewart [Wed, 26 May 2021 10:43:30 +0000 (06:43 -0400)]
tcp: Add a socket option to rack

so we can test various changes to the slop value in timers.

Timer_slop, in TCP, has been 200ms for a long time. This value dates back
a long time when delayed ack timers were longer and links were slower. A
200ms timer slop allows 1 MSS to be sent over a 60kbps link. Its possible that
lowering this value to something more in line with todays delayed ack values (40ms)
might improve TCP. This bit of code makes it so rack can, via a socket option,
adjust the timer slop.

Reviewed by: mtuexen
Sponsered by: Netflix Inc
Differential Revision: https://reviews.freebsd.org/D30249

2 years agotcp: SACK Lost Retransmission Detection (LRD)
Richard Scheffenegger [Mon, 10 May 2021 16:47:47 +0000 (18:47 +0200)]
tcp: SACK Lost Retransmission Detection (LRD)

Recover from excessive losses without reverting to a
retransmission timeout (RTO). Disabled by default, enable
with sysctl net.inet.tcp.do_lrd=1

Reviewed By: #transport, rrs, tuexen, #manpages
Sponsored by: Netapp, Inc.
Differential Revision: https://reviews.freebsd.org/D28931

2 years agoThis brings into sync FreeBSD with the netflix
Randall Stewart [Thu, 6 May 2021 15:22:26 +0000 (11:22 -0400)]
This brings into sync FreeBSD with the netflix

versions of rack and bbr. This fixes several breakages (panics) since the
tcp_lro code was committed that have been reported. Quite a few new features
are now in rack (prefecting of DGP -- Dynamic Goodput Pacing among the
largest). There is also support for ack-war prevention. Documents comming soon
on rack..

Sponsored by:           Netflix
Reviewed by: rscheff, mtuexen
Differential Revision: https://reviews.freebsd.org/D30036

2 years agoUse thunks for compat ioctls using struct ifgroupreq.
John Baldwin [Wed, 5 May 2021 20:59:00 +0000 (13:59 -0700)]
Use thunks for compat ioctls using struct ifgroupreq.

Reviewed by: brooks, kib
Obtained from: CheriBSD
Sponsored by: DARPA
Differential Revision: https://reviews.freebsd.org/D29893

2 years agoioccom: define ioctl cmd value that can never be valid
Konstantin Belousov [Thu, 22 Apr 2021 19:40:08 +0000 (22:40 +0300)]
ioccom: define ioctl cmd value that can never be valid

Its use is for cases where some filler is needed for cmd, or we need an
indication that there were no cmd supplied, and so on.

Reviewed by: jhb
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D29935

2 years agopoll(2): Add POLLRDHUP.
Thomas Munro [Wed, 28 Apr 2021 09:31:38 +0000 (21:31 +1200)]
poll(2): Add POLLRDHUP.

Teach poll(2) to support Linux-style POLLRDHUP events for sockets, if
requested.  Triggered when the remote peer shuts down writing or closes
its end.

Reviewed by: kib
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D29757

2 years agotcp: add support for TCP over UDP
Michael Tuexen [Sun, 18 Apr 2021 14:08:08 +0000 (16:08 +0200)]
tcp: add support for TCP over UDP

Adding support for TCP over UDP allows communication with
TCP stacks which can be implemented in userspace without
requiring special priviledges or specific support by the OS.
This is joint work with rrs.

Reviewed by: rrs
Sponsored by: Netflix, Inc.
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D29469

2 years agotermios: add more speeds
Bjoern A. Zeeb [Wed, 10 Mar 2021 22:17:07 +0000 (22:17 +0000)]
termios: add more speeds

A lot of small arm64 gadgets are using 1500000 as console speed.
While cu can perfectly deal with this some 3rd party software, e.g.,
comms/conserver-con add speeds based on B<n> being defined.
Having it defined here simplifies enhancing other software.

Obtained-from: NetBSD sys/sys/termios.h 1.36
MFC-after: 2 weeks
Reviewed-by: philip (,okayed by imp)
Differential Revision: https://reviews.freebsd.org/D29209

2 years agoRevert "SO_RERROR indicates that receive buffer overflows"
Alexander V. Chernikov [Mon, 8 Feb 2021 22:30:39 +0000 (22:30 +0000)]
Revert "SO_RERROR indicates that receive buffer overflows"

Wrong version of the change was pushed inadvertenly.

This reverts commit 4a01b854ca5c2e5124958363b3326708b913af71.

2 years agoSO_RERROR indicates that receive buffer overflows
Alexander V. Chernikov [Sun, 7 Feb 2021 17:21:18 +0000 (17:21 +0000)]
SO_RERROR indicates that receive buffer overflows

should be handled as errors. Historically receive buffer overflows have been
ignored and programs could not tell if they missed messages or messages had
been truncated because of overflows. Since programs historically do not expect
to get receive overflow errors, this behavior is not the default.

This is really really important for programs that use route(4) to keep in sync
with the system. If we loose a message then we need to reload the full system
state, otherwise the behaviour from that point is undefined and can lead
to chasing bogus bug reports.

2 years agoExpose clang's alignment builtins and use them for roundup2/rounddown2
Alex Richardson [Wed, 3 Feb 2021 15:27:17 +0000 (15:27 +0000)]
Expose clang's alignment builtins and use them for roundup2/rounddown2

This makes roundup2/rounddown2 type- and const-preserving and allows
using it on pointer types without casting to uintptr_t first. Not
performing pointer-to-integer conversions also helps the compiler's
optimization passes and can therefore result in better code generation.
When using it with integer values there should be no change other than
the compiler checking that the alignment value is a valid power-of-two.

I originally implemented these builtins for CHERI a few years ago and
they have been very useful for CheriBSD. However, they are also useful
for non-CHERI code so I was able to upstream them for Clang 10.0.

Rationale from the clang documentation:
Clang provides builtins to support checking and adjusting alignment
of pointers and integers. These builtins can be used to avoid relying
on implementation-defined behavior of arithmetic on integers derived
from pointers. Additionally, these builtins retain type information
and, unlike bitwise arithmetic, they can perform semantic checking on
the alignment value.

There is also a feature request for GCC, so GCC may also support it in
the future: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98641

Reviewed By: brooks, jhb, imp
Differential Revision: https://reviews.freebsd.org/D28332

2 years agoCatch up with 6edfd179c86: mechanically rename IFCAP_NOMAP to IFCAP_MEXTPG.
Gleb Smirnoff [Thu, 28 Jan 2021 21:08:48 +0000 (13:08 -0800)]
Catch up with 6edfd179c86: mechanically rename IFCAP_NOMAP to IFCAP_MEXTPG.

Originally IFCAP_NOMAP meant that the mbuf has external storage pointer
that points to unmapped address.  Then, this was extended to array of
such pointers.  Then, such mbufs were augmented with header/trailer.
Basically, extended mbufs are extended, and set of features is subject
to change.  The new name should be generic enough to avoid further
renaming.

2 years agoAdd tcgetwinsize(3) and tcsetwinsize(3) to termios
Konstantin Belousov [Thu, 24 Dec 2020 23:05:31 +0000 (01:05 +0200)]
Add tcgetwinsize(3) and tcsetwinsize(3) to termios

These functions get/set tty winsize respectively, and are trivial wrappers
around corresponding termio ioctls.

The functions are expected to be a part of POSIX.1 issue 8:
https://www.austingroupbugs.net/view.php?id=1151#c3856.
They are currently available in NetBSD and in musl libc.

PR: 251868
Submitted by: Soumendra Ganguly <soumendraganguly@gmail.com>
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D27650

2 years agoFilter TCP connections to SO_REUSEPORT_LB listen sockets by NUMA domain
Andrew Gallatin [Sat, 19 Dec 2020 22:04:46 +0000 (22:04 +0000)]
Filter TCP connections to SO_REUSEPORT_LB listen sockets by NUMA domain

In order to efficiently serve web traffic on a NUMA
machine, one must avoid as many NUMA domain crossings as
possible. With SO_REUSEPORT_LB, a number of workers can share a
listen socket. However, even if a worker sets affinity to a core
or set of cores on a NUMA domain, it will receive connections
associated with all NUMA domains in the system. This will lead to
cross-domain traffic when the server writes to the socket or
calls sendfile(), and memory is allocated on the server's local
NUMA node, but transmitted on the NUMA node associated with the
TCP connection. Similarly, when the server reads from the socket,
he will likely be reading memory allocated on the NUMA domain
associated with the TCP connection.

This change provides a new socket ioctl, TCP_REUSPORT_LB_NUMA. A
server can now tell the kernel to filter traffic so that only
incoming connections associated with the desired NUMA domain are
given to the server. (Of course, in the case where there are no
servers sharing the listen socket on some domain, then as a
fallback, traffic will be hashed as normal to all servers sharing
the listen socket regardless of domain). This allows a server to
deal only with traffic that is local to its NUMA domain, and
avoids cross-domain traffic in most cases.

This patch, and a corresponding small patch to nginx to use
TCP_REUSPORT_LB_NUMA allows us to serve 190Gb/s of kTLS encrypted
https media content from dual-socket Xeons with only 13% (as
measured by pcm.x) cross domain traffic on the memory controller.

Reviewed by: jhb, bz (earlier version), bcr (man page)
Tested by: gonzo
Sponsored by: Netfix
Differential Revision: https://reviews.freebsd.org/D21636

2 years agostyle(9): Correct whitespace in struct definitions
Brooks Davis [Fri, 11 Dec 2020 01:00:07 +0000 (01:00 +0000)]
style(9): Correct whitespace in struct definitions

struct ifconf and struct ifreq use the odd style "struct<tab>foo".
struct ifdrv seems to have tried to follow this but was committed with
spaces in place of most tabs resulting in "struct<space><space>ifdrv".

MFC after: 3 days

2 years agounix(4): Enhance LOCAL_CREDS_PERSISTENT ABI
Conrad Meyer [Tue, 17 Nov 2020 20:01:21 +0000 (20:01 +0000)]
unix(4): Enhance LOCAL_CREDS_PERSISTENT ABI

As this ABI is still fresh (r367287), let's correct some mistakes now:

- Version the structure to allow for future changes
- Include sender's pid in control message structure
- Use a distinct control message type from the cmsgcred / sockcred mess

Discussed with: kib, markj, trasz
Differential Revision: https://reviews.freebsd.org/D27084

2 years agounix(4): Add SOL_LOCAL:LOCAL_CREDS_PERSISTENT
Conrad Meyer [Tue, 3 Nov 2020 01:17:45 +0000 (01:17 +0000)]
unix(4): Add SOL_LOCAL:LOCAL_CREDS_PERSISTENT

This option is intended to be semantically identical to Linux's
SOL_SOCKET:SO_PASSCRED.  For now, it is mutually exclusive with the
pre-existing sockopt SOL_LOCAL:LOCAL_CREDS.

Reviewed by: markj (penultimate version)
Differential Revision: https://reviews.freebsd.org/D27011

2 years agoIntegrate 4.4BSD-Lite2 changes to IOC_* definitions
Warner Losh [Fri, 30 Oct 2020 22:00:35 +0000 (22:00 +0000)]
Integrate 4.4BSD-Lite2 changes to IOC_* definitions

Bring in the long-overdue 4.4BSD-Lite2 rev 8.3 by cgd of
sys/ioccom.h. This uses UL suffix for the IOC_* constants so they
don't sign extend. Also bring in the handy diagram from NetBSD's
version of this file. This alters the 4.4BSD-Lite2 code slightly
in a way that's semantically the same but more compact.

This should stop the warnings from Chrome for bogus sign extension.

Reviewed by: kib@, jhb@
Differential Revision: https://reviews.freebsd.org/D26423

This page took 0.071432 seconds and 5 git commands to generate.