| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This removes (ab)uses of SetConsoleScreenBufferSize
which sometimes cause cmd.exe to badly misbehave.
It probably doesn't like the closely spaced timing of
shrinking the window down to one line followed by a restore
of the size. Instead we just output newlines to clear
the window.
* winsup/cygwin/fhandler.h (dev_console::scroll_window):
Member function declaration removed.
(dev_console::clear_should_scroll): New member
function declared.
* winsup/cygwin/fhandler_console.cc
(dev_console::scroll_window): Member function removed.
(dev_console::clear_should_scroll): New member function.
Performs only the test that was performed by scroll_window,
not the actual scrolling. The scrolling is now done in
the caller in the fhandler_console class.
(fhandler_console::clear_screen): Call con.clear_should_scroll
instead of con.scroll_window. If this returns false, act
as before. Otherwise, clear the screen by scrolling the
window. This is done not by making SetConsoleScreenBufferSize
calls to shrink and restore the window, but by earnestly
emitting a number of carriage returns equal to the vertical
screen size and then restoring the cursor position.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 99a3f266c15af5bbb9a8cacda63ce11b094c10d1.
Unfortunately Corinna's August 3, 2016 is unsatisfactory,
and interferes with our patch for the issue cherry picked
from cygnal-2.5.2 into cygnal-2.9.0-branch.
When the screen-clearing escape sequence ESC[2J is issued
material below the cursor is not cleared properly.
For instance, in the TXR Lisp listener, the Ctrl-L command fails to
clear the screen at all, because it first homes the cursor to the top
line of the screen and then issues the clear screen.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In this patch, the path to the Windows command interpreter
is reported in the shell field of struct passwd by getpwent
by default rather than "/bin/bash". The value of USERPROFILE
is used for the home field rather than "/home/<user>".
Also, the HOME environment variable is stuffed with a copy
of USERPROFILE.
The HOME issue solves the following problem: some OSS programs
on Windows, such as Vim, respond to a HOME variable. If it
has garbage contents that make no sense like "/home/bob",
they don't behave well.
* winsup/cygwin/grp.cc (pwdgrp::init_grp): Initialize new
pwd_sep member.
* winsup/cygwin/passwd.cc (pwdgrp::parse_passwd): Use pwd_sep
rather than hard-coded colon.
(pwdgrp::init_pwd): Initialize pwd_sep.
* winsup/cygwin/pwdgrp.h (class pwdgrp): New member, pwd_sep.
* winsup/cygwin/uinfo.cc (cygheap_user::ontherange): Copy
value of USERPROFILE into HOME.
(pwdgrp::next_num, pwdgrp::fetch_account_from_line): Use
pwd_sep rather than ':'.
(pwdgrp::next_num, pwdgrp::fetch_account_from_windows): Get
real Windows shell as default shell field. Get USERPROFILE
as home directory. Use '|' as the field separator because
these fields contain colons. Set pwd_sep to '|'.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* winsup/cygwin/environ.cc (conv_envvars): Static array
removed.
(conv_start_chars): Likewise.
(getwinenv): Function gutted to just return NULL.
No environment vars require conversion.
(match_first_char): Static function removed.
(build_env): Removed logic for eliminating those variables
that require donversion, since there are no such variables
and the needed functions and arrays are gone.
* winsup/cygwin/environ.cc (find_exec): Recognize
semicolon as PATH separator.
|
|
|
|
|
|
| |
* newlib/libc/stdio/findfp.c (__sinit): Add the Cygwin-specific __SCLE
(stream convert line endings) flag when calling the std function to
initializing the reent structure's _stdin, _stdout and _stderr members.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The previous work for simulating the beyond-right-edge of
screen cursor position is incomplete without integrating this
into the cursor positioning routines. By making the cursor
routines aware of the eat_newline flag, we allow cursor
movements to work correctly with regard to this simulated
position.
* winsup/cygwin/fhandler_console.cc
(fhandler_console::cursor_set): If the X position is beyond
the right edge of the screen, then set the cursor to the
start of the following line, rather than clipping to the
right edge, set the eat_newline flag, indicating that the
the true position is actually one character beyond the
previous line. In all other cases, clear the eat_newline
flag.
(fhandler_console::cursor_rel): Do not apply the delta vector
to the raw Win32 cursor position; call cursor_get and apply
it to the virtual cursor position which takes into account
the eat_newline flag.
(fhandler_console::cursor_get): Take into account the
eat_newline flag. If it is set, then report an adjusted
position that is one column beyond the end of the previous
line.
|
|
|
|
|
| |
* winsup/cygwin/globals.cc (allow_winsymlinks): Change
initial value from WSYM_sysfile to WSYM_lnk.
|
|
|
|
|
|
|
|
|
| |
* winsup/cygwin/environ.cc (set_winsymlinks): Refer to
CYGNAL variable in diagnostic message.
(parse_options): Pass "CYGNAL" to setenv.
(_addenv, environ_init): Call parse_options if variable name
is "CYGNAL" rather than "CYGWIN". Comments updated.
(spenvs): Change CYGWIN_DEBUG to CYGNAL_DEBUG.
|
|
|
|
|
| |
* winsup/cygwin/spawn.cc (spawnve): Rewrite /bin/sh -c cmd
invocations to use cmd.exe /c cmd instead.
|
|
|
|
|
| |
* newlib/libc/stdio/flags.c (__sflags): If mode is not
O_BINARY, then add O_TEXT.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* winsup/cygwin/path.cc (normalize_win32_path): When
a drive-relative path is normalized, look up the remembered
working directory of that drive in the environment.
A drive-relative path is, for example, "C:file.txt".
Or just "C:", with no component. If there is no path
for the drive in the environment, then the root directory
is used, and the "C:" part thus becomes "C:\", causing
the path to refer to "C:\file.txt". Otherwise the path is
inserted, with a backslash, like "C:\users\bob\file.txt".
The Windows convention for storing these per-drive paths
in the environment is to use environment variables based
on drive letters. For instance the path for the C drive is
stored in the environment variable "!C:" (bang, letter, colon).
The path includes the C:\ prefix.
(cwdstuff::override_win32_cwd): Add the behavior of associating
the current working directory with its drive (if it is a
current working directory based on a drive). For instance
if the overriding cwd is "C:\Users", then the "C:\Users"
path is stored into the "!C:" environment variable.
|
|
|
|
|
|
|
|
|
|
|
|
| |
We don't want the behavior in Cygnal whereby a native
path like C:\path\to\app is converted to /app
in getcwd and other situations, or C:\random\path
is converted to /cygdrive/c/random/path.
* winsup/cygwin/mount.cc (mount_info::conv_to_posix_path):
Remove entire section of code which scans mount points,
mapping native paths to their mount points paths.
All we do is "slashify" and exit.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- /proc and /dev are are still available, accessed as
proc:/ and dev:/
- All other paths are native, and do not "see" virtual Cygwin
items; /cygdrive is just C:\cygdrive (if the current drive
is C).
- chdir() to a virtual directory like dev:/ or proc:/ results
in errno EOPNOTSUPP.
* winsup/cygwin/mount.cc (mount_info::conv_to_win32_path):
Takes new bool argument, hide_cygwin_virtuals. If true all
that the function does is "backslashify" the path.
(mount_info::add_item): Special hack inserted here so that
we can create the virtual root directory which holds dev
and proc and whatnot, and is passed here as "/". We cannot let
this go through normalize_posix_path any more because it
will turn to C:\.
* winsup/cygwin/mount.h (mount_info::conv_to_win32_path):
Declaration updated.
* winsup/cygwin/path.cc (is_posix_space): New static function:
tests for paths in special spaces, currently "dev:/" and
"proc:/". Used by normalize_posix_path.
(normalize_posix_path): Any path that doesn't satisfy the
is_posix_space test is treated as Win32.
Since the bulk of the code is now only used for these
spaces, the relative path handling is not required
and a the corresponding block of code is removed.
Paths satisfying is_posix_space are transformed.
I.e. the underlying path resolution machine in the path_conv
class still recognizes /proc and /dev. It's just that these
will not occur, because normalize_posix_path will convert
them to references with drive names.
(path_conv::check): Pass the is_msdos flag down to
mount_info::conv_to_win32_path as the new argument. Thus
if normalize_posix_path indicates a native path, this function
will hide the virtual spaces. Also, we add MOUNT_NOPOSIX and
MOUNT_NOACL to the object's mount_flags. This is used in
chdir.
(normalize_win32_path): A small piece of logic works against
our plan here: it checks for the leading forward slash on the
path, and prevents such paths from being converted to Win32
paths with a drive reference. We eliminate this test, and
treat paths unconditionally.
(chdir): Here, if the path is not native, we return
EOPNOTSUPP. Thus it is impossible to chdir into Cygwin
virtual directories like /dev (now referenced as dev:/).
They can be listed but not turned into the current directory.
Eventually we want chdir to actually set the Win32 current
directory of the process; that can't work for virtual
dirs.
* winsup/cygwin/path.h (path_conv::is_native): New inline
accessor which tests for the MOUNT_NOPOSIX flag.
|
|
|
|
|
|
|
|
|
|
| |
* winsup/cygwin/spawn.cc (init_cmd_exe_path): Restructure code
to initialize rather than assign nchars. Include backslash in
cmd.exe name; then it can be omitted from the size calculation
and sprintf. Do not allocate an excess byte for the string.
Thanks to user forsvarir of the code review stackechange.
Also reformatted to the GNU style used inside Cygwin.
(init_cmd_exe_path): Remove spurious whitespace.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of relying on the COMSPEC environment variable,
what we can do is assume that the program is called "cmd.exe",
and then look for it in the directory reported by the
GetSystemDirectoryA Win32 function in kernel32.dll.
* winsup/cygwin/path.h (get_cmd_exe_path): New function declared.
* winsup/cygwin/spawn.cc (av::setup): Use get_cmd_exe_path
instead of getenv("COMSPEC").
(cmd_exe_path): New static variable.
(init_cmd_exe_path): New static function.
(get_cmd_exe_path): New function.
* winsup/cygwin/syscalls.cc (system, getusershell, popen): Use
get_cmd_exe_path instead of getenv("COMSPEC").
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It is with some reluctance I make this change, due to the security
implications of relying on environment variables. But we can't have a
hard-coded path.
* winsup/cygwin/include/paths.h (_PATH_CMDEXE): Macro removed.
* winsup/cygwin/spawn.cc (av::setup): Use COMSPEC environment
variable instead of hard-coded path. If missing, bail with
errno set to EOPNOTSUPP.
* winsup/cygwin/syscalls.cc (system): Use COMSPEC environment
variable. If missing, return -1.
(getusershell): Eliminate static array of shell names. If
shell_index is zero, return value of COMSPEC env var,
if it exists, and increment shell_index to 1.
(popen): Use COMSPEC and if that is missing, set errno to
EOPNOTSUPP and return NULL.
|
|
|
|
|
|
|
|
|
| |
We must only set or clear the eat_newline flag if we output
something.
* winsup/cygwin/fhandler_console.cc
(fhandler_console::write_normal): Move the flag setting
code inside the if statement which performs output.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch addresses an issue whereby the window of
a process created with CreateProcess fails to come
to the foreground.
This occurs when the calling process itself hasn't run any
Windows event processing loop. A repro test case is to make a
program with a main, and and call CreateProcess to spawn
calc.exe or notepad.exe before doing anything else.
It turns out that a dummy call to TranslateMessage makes this
issue goes away. If such a call is made before CreateProcess,
then the spawned process' window comes up in the foreground
as expected.
* winsup/cygwin/Makefile.in (DLL_IMPORTS): We need to link
in user32.dll to call TranslateMessage. Condense the
multiple ${shell ...} call repetition with a foreach.
* winsup/cygwin/spawn.cc (child_info_spawn::worker): Do the
dummy TranslateMessage call before the section of code that
calls CreateProcess or CreateProcessAsUser.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On the majority of VT100-like terminals, when you print a
character in the last column, the cursor sits in a kind of
"limbo", as if the cursor position were one column past the
edge of the screen. Thus when a line feed is output next,
the cursor is then at the start of the next line.
The Win32 console write doesn't do this; the cursor position
wraps to the start of the next line. If a newline is put out,
it translates to an extra newline going to the next-next line.
This spoils the behavior of programs which depend on the VT100
behavior.
In this patch, the VT100 behavior is simulated as follows. A
new flag in the dev_console structure is set when a character
is output to the last column. This flag is then observed in
order to discard a newline (or rather any character which is
mapped mapped to the DWN action).
* winsup/cygwin/fhandler.h (class dev_console): New boolean
data member, eat_newline. This indicates that if a character
is output which moves down to the next line, it should be
discarded rather than sent to the console.
* winsup/cygwin/fhandler_console.cc
(fhandler_console::write_normal): Set the eat_newline flag
if the text output ends up at column zero. Honor the
eat_newline flag when processing a DWN character, and clear
it when processing certain other control characters.
|
|
|
|
|
|
|
|
| |
This allows applications to distinguish whether they
are running on the stock Cygwin or Cygnal.
* winsup/cygwin/uname.cc (uname, uname_x): sysname is now filled
in with CYGNAL_ prefix rather than CYGWIN_.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* winsup/cygwin/include/paths.h (_PATH_CMDEXE): New
preprocessor symbol.
* winsup/cygwin/spawn.cc (av_setup): Use _PATH_CMDEXE
rather than "/bin/sh".
* winsup/cygwin/syscalls.cc (system): Spawn _PATH_CMDEXE
with /c option rather than /bin/sh.
(ETC_SHELLS): Preprocessor symbol removed.
(shell_fp): Global variable removed.
(getusershell): Don't open ETC_SHELLS, just march through
static array of shell names. That array contains only one
entry: _PATH_CMDEXE.
(setusershell, endusershell): Remove references to shell_fp.
(popen): Exec _PATH_CMDEXE rather than "/bin/sh", and the
option is /c.
|
|
|
|
|
|
|
|
|
| |
* winsup/cygwin/spawn.cc (child_info_spawn::worker): Do not
call fhandler_console::need_invisible. It's not working
properly. In an application which has no console because it
was compiled -mwindows, calling this funcion causes a visible
console window to appear. We don't need this in Cygnal;
the Microsoft spawn functions don't pop up such windows.
|
|
|
|
|
|
| |
* winsup/cygwin/spawn.cc (child_info_spawn::worker): Add
STARTF_USESHOWWINDOW to dwFlags of the STARTUPINFOW structure,
and set wShowWindow to SW_SHOWNORMAL.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cherry-pick of c5bdf60ac46401a51a7e974333d9622966e22d67.
../../../../src/winsup/cygwin/pinfo.cc: In member function 'DWORD pinfo::status_exit(DWORD)':
../../../../src/winsup/cygwin/ntdll.h:21:68: error: narrowing conversion of '-536870295' from 'NTSTATUS' {aka 'int'} to 'unsigned int' [-Wnarrowing]
../../../../src/winsup/cygwin/pinfo.cc:136:10: note: in expansion of macro 'STATUS_ILLEGAL_DLL_PSEUDO_RELOCATION'
../../../../src/winsup/cygwin/sigproc.cc: In member function 'DWORD child_info::proc_retry(HANDLE)':
../../../../src/winsup/cygwin/ntdll.h:21:68: error: narrowing conversion of '-536870295' from 'NTSTATUS' {aka 'int'} to 'unsigned int' [-Wnarrowing]
../../../../src/winsup/cygwin/sigproc.cc:1120:10: note: in expansion of macro 'STATUS_ILLEGAL_DLL_PSEUDO_RELOCATION'
NT error statuses seem to be variously DWORD (unsigned) or NTSTATUS
(signed)? So use the one which doesn't cause problems here.
|
|
|
|
|
|
|
| |
Cherry-pick of 3bb579a43c09d18217a19035054817591eb8d870.
../../../../src/winsup/cygwin/fhandler_socket_inet.cc: In member function 'ssize_t fhandler_socket_wsock::send_internal(_WSAMSG*, int)':
../../../../src/winsup/cygwin/fhandler_socket_inet.cc:1381:69: error: suggest parentheses around assignment used as truth value [-Werror=parentheses]
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cherry-pick of 129c9844a6c40d5dee658151c2ff2c461a5a1365.
../../../../src/winsup/cygwin/fhandler_console.cc: In member function 'const unsigned char* fhandler_console::write_normal(const unsigned char*, const unsigned char*)':
../../../../src/winsup/cygwin/fhandler_console.cc:2782:8: error: narrowing conversion of '-2' from 'int' to 'long unsigned int' [-Wnarrowing]
../../../../src/winsup/cygwin/fhandler_console.cc:2786:8: error: narrowing conversion of '-1' from 'int' to 'long unsigned int' [-Wnarrowing]
../../../../src/winsup/cygwin/fhandler_console.cc:2836:8: error: narrowing conversion of '-2' from 'int' to 'long unsigned int' [-Wnarrowing]
../../../../src/winsup/cygwin/fhandler_console.cc:2840:8: error: narrowing conversion of '-1' from 'int' to 'long unsigned int' [-Wnarrowing]
A mbtowc_p function returns an int, so that seems the correct type to use here.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cherry pick of c1f7c4d1b6d7424d7081fd382ac83a631b7671ff.
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.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Include it in exceptions.cc instead of defining the exception codes
there.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is necessary in order to be consistent with the following comment
in the definition of _Unwind_RaiseException() in the GCC source file
libgcc/unwind-seh.c:
The exception handler installed in crt0 will continue any GCC
exception that reaches there (and isn't marked non-continuable).
Previously we failed to do this and, as a consequence, the C++ runtime
didn't call std::terminate after an unhandled exception.
This fixes the problem reported here:
https://cygwin.com/pipermail/cygwin/2019-October/242795.html
https://sourceware.org/pipermail/cygwin/2020-August/245897.html
|
|
|
|
|
|
| |
This reduces memory usage when reallocating objects much smaller.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
|
|
|
|
|
| |
Save the computed block size and use it to avoid reading past
the end of the source block.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
|
|
|
|
|
|
| |
- After commit 095972ce5b1d319915501a7e381802914bed790c, charset
conversion in mintty is broken if charset is set to other than
UTF-8. This seems to be caused because mintty does not set locale
yet at fork() call. This patch changes the timing of set_locale()
call again to avoid this issue.
|
|
|
|
|
|
| |
- If native app is exec()'ed in a new pty, setup_locale() loses the
chance to be called. For example, with "mintty -e cmd", charset
conversion does not work as expected. This patch fixes the issue.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
commit 588a5e1ddebdf6d74391c7409680ea20e050c0e1 added a non-reentrant
call to nano_malloc which causes a build failure if INTERNAL_NEWLIB is
defined.
Here is a snippet of the error:
In file included from .../newlib/newlib/libc/stdlib/nano-mallocr.c:38:
.../newlib/newlib/libc/include/malloc.h:42:25: note: expected 'struct _reent *' but argument is of type 'ptrdiff_t' {aka 'int'}
42 | extern void *_malloc_r (struct _reent *, size_t);
| ^~~~~~~~~~~~~~~
.../newlib/newlib/libc/stdlib/nano-mallocr.c:67:22: error: too few arguments to function '_malloc_r'
67 | #define nano_malloc _malloc_r
| ^~~~~~~~~
.../newlib/newlib/libc/stdlib/nano-mallocr.c:456:11: note: in expansion of macro 'nano_malloc'
456 | mem = nano_malloc(bytes);
| ^~~~~~~~~~~
In file included from .../newlib/newlib/libc/stdlib/nano-mallocr.c:38:
.../newlib/newlib/libc/include/malloc.h:42:14: note: declared here
42 | extern void *_malloc_r (struct _reent *, size_t);
| ^~~~~~~~~
.../newlib/newlib/libc/stdlib/nano-mallocr.c:43: warning: "assert" redefined
43 | #define assert(x) ((void)0)
|
This patch adds a missing RCALL to the args when calling nano_malloc
from nano_calloc, so that if the call is reentrant, reent_ptr is passed
as the first argument.
The variable `bytes` (also added in 588a5e1d) has been changed from a
`ptrdiff_t` to `malloc_size_t` as it does not need to be signed. It is
used to store the product of two unsigned malloc_size_t variables and
then iff there was no overflow is it passed to malloc and memset which
both expect size_t which is unsigned.
Signed-off-by: Craig Blackmore <craig.blackmore@embecosm.com>
|
|
|
|
|
|
|
| |
This built-in function (available in both gcc and clang) is more
efficient and generates shorter code than open-coding the test.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
|
|
|
|
|
| |
Check for HW FMA and SQRT support and use those instructions in place
of software implementations.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
|
|
|
|
|
|
|
| |
- If a lot of mintty are started in a short time from a mintty, some
of them hang with empty screen, crash immediately or hang on exiting
mintty. The following report seems to be related to this issue.
https://cygwin.com/pipermail/cygwin/2020-August/245751.html
The cause is not clear at all, but this patch seems to solve the
issue.
|
|
|
|
|
|
|
|
|
|
|
| |
When HAVE_FAST_FMAF is set, use the vfma.f32 instruction, when
HAVE_FAST_FMA is set, use the vfma.f64 instruction.
Usually the compiler built-ins will already have inlined these
instructions, but provide these symbols for cases where that doesn't
work instead of falling back to the (inaccurate) common code versions.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
|
|
|
|
|
| |
Anything with fast FMA is assumed to have fast FMAF, along with
32-bit arms that advertise 32-bit FP support and __ARM_FEATURE_FMA
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
|
|
|
|
|
|
| |
32-bit ARM processors with HW float (but not HW double) may define
__ARM_FEATURE_FMA, but that only means they have fast FMA for 32-bit
floats.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
|
|
|
|
|
|
| |
It was calling __math_uflow(0) instead of __math_uflowf(0), which
resulted in no exception being set on machines with exception support
for float but not double.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
|
|
| |
Define the pseudo keyword 'fallthrough' in woutsup.h to support this.
|
|
|
|
|
| |
In dumper, use the documented QueryWorkingSetEx(), rather than the
undocumented NtQueryVirtualMemory() with MemoryWorkingSetExInformation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The main memory region of the GDB simulator ends at address 0xFFBF,
but the simulator linker scripts do not make full use of this available
memory.
>From 61f3d212741acee583e21ff2c2808775584ecad6 Mon Sep 17 00:00:00 2001
From: Jozef Lawrynowicz <jozef.l@mittosystems.com>
Date: Mon, 3 Aug 2020 19:38:23 +0100
Subject: [PATCH 2/2] MSP430: Increase the amount of main memory available in
sim ld scripts
The main memory region of the GDB simulator ends at address 0xFFBF,
but the simulator linker scripts do not make full use of this available
memory.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
__{preinit,init,fini}_array_start symbols must be word aligned in
linker scripts. If the section preceding the __*_array_start symbol
has an odd size, then a NULL byte will be present between the start
symbol and the .*_array section itself, when the section gets
automatically word-aligned.
This results in a branch to an invalid address when the CRT startup
code tries to run through the functions listed in the array sections.
>From de115144d05ecbaa82c9c737cc261715ca4b7d67 Mon Sep 17 00:00:00 2001
From: Jozef Lawrynowicz <jozef.l@mittosystems.com>
Date: Mon, 3 Aug 2020 19:09:46 +0100
Subject: [PATCH 1/2] MSP430: Word align __*_array_start symbols in sim linker
scripts
__{preinit,init,fini}_array_start symbols must be word aligned in
linker scripts. If the section preceding the __*_array_start symbol
has an odd size, then a NULL byte will be present between the start
symbol and the .*_array section itself, when the section gets
automatically word-aligned.
This results in a branch to an invalid address when the CRT startup
code tries to run through the functions listed in the array sections.
|
|
|
|
| |
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
| |
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
| |
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
| |
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
|