4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-02-02 12:30:24 +08:00

848 Commits

Author SHA1 Message Date
Jon Turney
90e3a93741 Cygwin: Use aclocal option --system-acdir rather than --acdir
In autogen.sh, use 'aclocal --system-acdir' rather than 'aclocal --acdir'.

'--acdir' was deprecated in automake 1.11 and removed in automake 1.13.
2020-10-19 17:54:56 -04:00
Jon Turney
0f6a76a835 Cygwin: Remove --with-windows-{libs,headers} 2020-10-19 17:54:56 -04:00
Jon Turney
d37c87d889 Cygwin: Remove ccwrap
ccwrap massages the compiler's standard include directories to remove
'/usr/include/w32api', with the intent of allowing it to be overriden by
'--with-windows-headers' (See 4c36016b).

I'm not 100% convinced that this is always working as desired, since in
some places w32api includes are done using <w32api/something.h>, which
will find them via the path /usr/include.

If this does turn out to be needed, this could also be implemented by
constructing the appropriate compiler flags once, rather than on every
compiler invocation.
2020-10-19 17:54:55 -04:00
Jon Turney
5accf1be05 Cygwin: Stop using c++wrap for MinGW-compiled utilities
Stop using c++wrap for MinGW-compiled utilities.

(Partially reverts 96079146)
2020-10-19 17:54:55 -04:00
Jon Turney
c9c6abfa16 Cygwin: Remove AC_ARG_PROGRAM/program_transform_name
Not done consistently, and probably never used.
2020-10-14 16:02:58 -04:00
Jon Turney
05d657d7a5 Cygwin: Drop looking for w32api in winsup/w32api
Stop looking for w32api headers in the (no longer existent)
winsup/w32api directory (removed in commit 61746d6ae850).
2020-10-14 16:02:58 -04:00
Ken Brown
09a471ecb1 Cygwin: winlean.h: remove most of the extended memory API
This was added as a temporary measure in commit e18f7f99 because it
wasn't yet in the mingw-w64 headers.  With one exception, it is now in
the current release of the headers (version 8.0.0), so we don't need
it in winlean.h.

The exception is that VirtualAlloc2 is declared conditionally in
<w32api/memoryapi.h>, but the compilation of Cygwin requires it to
always be declared, even though it will only be executed on systems
that support it.  So retain the declaration in winlean.h.  And add
"WINAPI" to the declaration, as in memoryapi.h.

Add a check that version >= 8 of the mingw-w64 headers is intalled.

Also revert commit 3d136011, which was a related temporary workaround.
2020-10-14 10:54:31 -04:00
Jon Turney
bc2c403907 Cygwin: ldd: Also look for not found DLLs when exit status is non-zero
If the process exited with e.g. STATUS_DLL_NOT_FOUND, also process the
file to look for not found DLLs.

(We currently only do this when a STATUS_DLL_NOT_FOUND exception occurs,
which I haven't managed to observe)

This still isn't 100% correct, as it only examines the specified file
for missing DLLs, not recursively on the DLLs it depends upon.
2020-10-14 10:54:31 -04:00
Ken Brown
4db5921ac3 Cygwin: strace: ignore GCC exceptions
Any C++ app that calls 'throw' on 64-bit Cygwin results in an
exception of type STATUS_GCC_THROW (0x20474343) generated by the C++
runtime.  Don't pollute the strace output by printing information
about this and other GCC exceptions.
2020-10-14 10:54:28 -04:00
Jon Turney
e85f34f069 Cygwin: Use documented QueryWorkingSetEx() in dumper
In dumper, use the documented QueryWorkingSetEx(), rather than the
undocumented NtQueryVirtualMemory() with MemoryWorkingSetExInformation.
2020-10-14 10:54:27 -04:00
Corinna Vinschen
c28acd565c Cygwin: utils: build with -Wimplicit-fallthrough=4 -Werror
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:27 -04:00
Corinna Vinschen
4257d39dce Cygwin: utils: convert usage() to proper noreturn function throughout
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:26 -04:00
Corinna Vinschen
03beadd4eb Cygwin: utils: cygcheck: avoid GCC warning concatenating strings
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:26 -04:00
Corinna Vinschen
835865603d Cygwin: utils: refresh tzmap
- update path to Unicode windowsZones.xml file
- drop Windows XP considerations
- regenerate tzmap.h

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:26 -04:00
Jon Turney
d050664c6e Cygwin: Speed up dumper
Stop after we've written the dump in response to the initial breakpoint
EXCEPTION_DEBUG_EVENT we recieve for attaching to the process.

(rather than bogusly sitting there for 20 seconds waiting for more debug
events from a stopped process after we've already written the dump).
2020-10-14 10:54:25 -04:00
Jon Turney
d116c3a6f3 Cygwin: Remove synchronization event from dumper
The use of the 'cygwin_error_start_event' for synchronization with
dumper was removed from the DLL in commit 8abeff1e (April 2001).
2020-10-14 10:54:25 -04:00
Jon Turney
86783c9b62 Cygwin: Add --nokill dumper option
Add --nokill option to dumper, for compatibility with minidumper, and to
assist with testing.
2020-10-14 10:54:25 -04:00
Jon Turney
96520070b1 Cygwin: Decorate NtQueryVirtualMemory() to fix 32-bit build
Decorate NtQueryVirtualMemory() with NTAPI (for stdcall) to fix 32-bit
build.

Reported-by: Takashi Yano <takashi.yano@nifty.ne.jp>
2020-10-14 10:54:25 -04:00
Jon Turney
270282e9a4 Cygwin: Use MEMORY_WORKING_SET_EX_INFORMATION in dumper
Use the (undocumented) MEMORY_WORKING_SET_EX_INFORMATION in dumper to
determine if a MEM_IMAGE region is unsharable, and hence has been
modified.

After this, we will end up dumping memory regions where:

- state is MEM_COMMIT (i.e. is not MEM_RESERVE or MEM_FREE), and
-- type is MEM_PRIVATE and protection allows reads (i.e. not a guardpage), or
-- type is MEM_IMAGE and attribute is non-sharable (i.e. it was WC, got
   written to, and is now a RW copy)
2020-10-14 10:54:24 -04:00
Jon Turney
574bc4a349 Cygwin: Don't dump non-writable image regions
After this, we will end up dumping memory regions where:

- state is MEM_COMMIT (i.e. is not MEM_RESERVE or MEM_FREE), and
-- type is MEM_PRIVATE and protection allows reads (i.e. not a guardpage), or
-- type is MEM_IMAGE and protection allows writes

Making this decision based on the current protection isn't 100% correct,
because it may have been changed using VirtualProtect().  But we don't
know how to determine if a region is shareable.

(As a practical matter, anything which gets us the stack (MEM_PRIVATE)
and .data/.bss (RW MEM_IMAGE) is going to be enough for 99% of cases)
2020-10-14 10:54:24 -04:00
Jon Turney
bdf0b099cf Cygwin: Drop excluded regions list from dumper
Drop excluded regions, now it's always empty
2020-10-14 10:54:24 -04:00
Jon Turney
2d81e14f14 Cygwin: Remove reading of PE for section flags from dumper 2020-10-14 10:54:24 -04:00
Jon Turney
f2fc7ae237 Cygwin: Show details of all memory regions in dumper debug output 2020-10-14 10:54:24 -04:00
Jon Turney
5347ab3498 Cygwin: Make dumper scan more than first 4GB of VM on x86_64
It's unclear that we need an end address here at all, or can just rely
on VirtualQueryEx() failing when we reach the end of memory regions.
2020-10-14 10:54:23 -04:00
Jon Turney
c7d3540d2c Cygwin: Add a new win32_pstatus data type for modules on x86_64
Also take a bit more care with sizes in other data types to ensure they
are the same on x86 and x86_64.

Add some explanatory comments.
2020-10-14 10:54:23 -04:00
Jon Turney
56b1442e75 Cygwin: Update ELF target used by dumper on x86_64
Like [1], but actually making the effort to be 'usable' and 'tested'.

[1] https://cygwin.com/pipermail/cygwin/2019-October/242815.html
2020-10-14 10:54:23 -04:00
Corinna Vinschen
06ab3932ab Cygwin: utils: override definition of PMEM_EXTENDED_PARAMETER
PMEM_EXTENDED_PARAMETER is defined in the local winlean.h as long
as mingw-w64 doesn't define it (in winnt.h).  ntdll.h needs the
definition for declaring NtMapViewOfSectionEx.  cygpath.cc and ps.cc
both include ntdll.h but not winlean.h, so they complain about the
missing definition.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:16 -04:00
Jon Turney
512aa89cd2 Cygwin: Update dumper for bfd API changes
Update dumper for bfd API changes in binutils 2.34

libbfd doesn't guarantee API stability, so we've just been lucky this
hasn't broken more often.

See binutils commit fd361982.
2020-10-14 10:54:13 -04:00
Corinna Vinschen
b0fc9f23b5 Cygwin: ps: fix compiler warning in ttynam
The helper function ttynam creates a tty name by using sprintf wrongly
on a pretty short buffer.  The foramt string only specifies a minimum
field length, not a maximum field length, so gcc-9.2.0 complains:

  ps.cc:101:23: warning: 'sprintf' may write a terminating nul past the
  end of the destination [-Wformat-overflow=]

Fix this thoroughly by specifying a maximum field width as well as by
using snprintf with a fixed buffer length.  Also, drop using a static
buffer in favor of using a buffer in the caller.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:13 -04:00
Brian Inglis
0ccad87807 regtool: allow /proc/registry{,32,64}/ registry path prefix
The user can supply the registry path prefix /proc/registry{,32,64}/ to
use path completion.
2020-10-14 10:54:04 -04:00
Takashi Yano
7eedc9b1a0 Cygwin: pty: Prevent the helper process from exiting by Ctrl-C. 2020-10-14 10:54:00 -04:00
Takashi Yano
5543b44273 Cygwin: pty: add pseudo console support.
- Support pseudo console in PTY. Pseudo console is a new feature
  in Windows 10 1809, which provides console APIs on virtual
  terminal. With this patch, native console applications can work
  in PTYs such as mintty, ssh, gnu screen or tmux.
2020-10-14 10:53:59 -04:00
Mark Geisert
acc342c27b Cygwin: ldd: Try harder to get dll names
Borrow a trick from strace to lessen occurrences of "??? => ???" in ldd
output.  Specifically, if the module name isn't found in the usual place
in the mapped image, use the file handle we have to look up the name.
2020-10-14 10:53:58 -04:00
Corinna Vinschen
9f3eace21f Cygwin: ps: fix a compiler warning
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:53:58 -04:00
Ken Brown
d6c2cf3b9d Cygwin: suppress GCC 8.3 errors with -Warray-bounds 2020-10-14 10:53:55 -04:00
Mark Geisert
24590ed7bd Cygwin: Build cygwin-console-helper with correct compiler 2020-10-14 10:53:55 -04:00
Mark Geisert
9afb622c38 Cygwin: Use correct string conversion
Correct the string conversion calls so both argv elements get converted
at full precision.
2020-10-14 10:53:55 -04:00
Yaakov Selkowitz
79c908e36f cygcheck: expand common_apps list
An increasing number of tools are being included in Windows which have the
same names as those included in Cygwin packages.  Indicating which one is
first in PATH can be helpful in diagnosing behavioural discrepencies
between them.

Also, fix the alphabetization of ssh.
2020-10-14 10:53:54 -04:00
Brian Inglis
23bb2f6608 get and convert boot time once and use as needed 2019-03-25 11:26:17 +01:00
Brian Inglis
ee1ad64234 default ps -W process start time to system boot time when inaccessible, 0, -1 2019-03-25 11:26:17 +01:00
Corinna Vinschen
ae3370bb9d Cygwin: strace: print windows and cygwin pid in event output
strace only printed the Windows PID in event output so far.

Especially now that Windows and Cygwin PID are decoupled, the
strace user might like to see the Cygwin pid in event output as
well.  However, at process startup, the process might not have
a Cygwin PID yet.

To mitigate this, always print the Windows PID and only add the
Cygwin pid if it exists.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-23 17:50:00 +01:00
Corinna Vinschen
1def2148d2 Cygwin: ps: simplify code
Always use NtQuerySystemInformation(SystemProcessIdInformation).
This drops two code paths calling NtQueryInformationProcess or
GetModuleFileNameExW and only requires to open the process
to fetch system time info.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-12 21:21:13 +01:00
Corinna Vinschen
37a046181e Cygwin: ps: show *all* processes in ps -W output
There's a long-standing bug in ps -W.  It only shows processes which ps
can open with PROCESS_QUERY_LIMITED_INFORMATION permissions.  However,
that fails for a lot of system processes. Due to that, output is
basically restricted to processes in the same session, as well as Cygwin
processes... which isn't *quite* what ps -W was supposed to do.

Basically we only need to open the process to fetch the image name.  If
that fails, utilize the undocumented SystemProcessIdInformation info
class introduced with Windows Vista, which allows to fetch the image
name by specifying the PID.  Restructure the code a bit.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-12 20:55:29 +01:00
Corinna Vinschen
26e0b37ed0 Cygwin: utils: MOUNT_BINARY -> MOUNT_TEXT
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-02-18 11:02:03 +01:00
Corinna Vinschen
5e6ce1cfb2 Cygwin: utils: kill: revert erroneously removed optind correction
When recognizing a negative pid, optind is off by one.  The
code correcting this has been erroneously removed by commit
8de660271fe75a6993f1c9888d24b824bb7f999d.  Revert that.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-02-18 10:22:37 +01:00
Corinna Vinschen
49ea15ef17 Cygwin: fix typo
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-02-02 21:15:50 +01:00
Corinna Vinschen
658f939003 Cygwin: kill(1): introduce a -W option
Allow to kill processes using Windows PIDs on the command line.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-02-02 21:02:00 +01:00
Corinna Vinschen
f5c2d4db5b Cygwin: kill(1): revert casts required for 32 bit to avoid spurious warnings
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-02-02 15:32:28 +01:00
Corinna Vinschen
8de660271f Cygwin: kill(1): disallow killing process using raw Windows PID
This may end up killing the wrong process.  Only allow Cygwin PID.

Slightly clean up code: Remove outdated W95 considerations.  Fix
a bug in commandline argument processing.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-02-02 15:00:39 +01:00
Corinna Vinschen
c1023ee353 Cygwin: path_conv: decouple path_types from mount types
- Remove another unfortunate amalgamation: Mount flags (MOUNT_xxx)
  are converted to path_types (PATH_xxx) and mixed with non-mount
  path_types flags in the same storage, leading to a tangled,
  pell-mell usage of mount flags and path flags in path_conv and
  symlink_info.

- There's also the case of PC_NONULLEMPTY.  It's used in exactly
  one place with a path_conv constructor only used in this single
  place, just to override the automatic PC_NULLEMPTY addition
  when calling the other path_conv constructors.  Crazily,
  PC_NONULLEMPTY is a define, no path_types flag, despite its
  name.

- It doesn't help that the binary flag exists as mount and path
  flag, while the text flag only exists as path flag.  This leads
  to mount code using path flags to set text/binary.  Very confusing
  is the fact that a text mount/path flag is not actually required;
  the mount code sets the text flag on non binary mounts anyway, so
  there are only two states.  However, to puzzle people a bit more,
  path_conv::binary wrongly implies there's a third, non-binary/non-text
  state.

Clean up this mess:

- Store path flags separately from mount flags in path_conv and
  symlink_info classes and change all checks and testing inline
  methods accordingly.

- Make PC_NONULLEMPTY a simple path_types flag and drop the
  redundant path_check constructor.

- Clean up the definition of pathconv_arg, path_types, and mount flags.
  Use _BIT expression, newly define in cygwin/bits.h.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-01-06 20:30:14 +01:00