A few months after the custom signal restorer for Android was commited,
bionic rolled its own signal restorer. The patch is at:
https://android-review.googlesource.com/c/platform/bionic/+/107692
In general, rolling our own signal restorer is not a good idea since it
interferes with unwinding. GDB seems especially unhappy when the
signal restorer's name isn't exactly "__restore_rt".
Fix this by using the custom signal restorer only if the vDSO has
disappeared and libc doesn't supply its …
[View More]own signal restorer.
Signed-off-by: Jinoh Kang <jinoh.kang.kr(a)gmail.com>
---
dlls/ntdll/unix/signal_i386.c | 24 ++++++++++++++++++------
1 file changed, 18 insertions(+), 6 deletions(-)
diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c
index 6bb5649e2b5..f98269535bb 100644
--- a/dlls/ntdll/unix/signal_i386.c
+++ b/dlls/ntdll/unix/signal_i386.c
@@ -50,6 +50,9 @@
#ifdef HAVE_SYS_UCONTEXT_H
# include <sys/ucontext.h>
#endif
+#ifdef HAVE_SYS_AUXV_H
+# include <sys/auxv.h>
+#endif
#include "ntstatus.h"
#define WIN32_NO_STATUS
@@ -150,9 +153,9 @@ typedef struct ucontext
#define FPUX_sig(context) (FPU_sig(context) && !((context)->uc_mcontext.fpregs->status >> 16) ? (XSAVE_FORMAT *)(FPU_sig(context) + 1) : NULL)
#define XState_sig(fpu) (((unsigned int *)fpu->Reserved4)[12] == FP_XSTATE_MAGIC1 ? (XSTATE *)(fpu + 1) : NULL)
-#ifdef __ANDROID__
-/* custom signal restorer since we may have unmapped the one in vdso, and bionic doesn't check for that */
-void rt_sigreturn(void);
+#if defined(__linux__) && defined(SA_RESTORER)
+/* backup signal restorer if we have unmapped the one in vDSO, and libc doesn't supply its own restorer */
+extern void rt_sigreturn(void) DECLSPEC_HIDDEN;
__ASM_GLOBAL_FUNC( rt_sigreturn,
"movl $173,%eax\n\t" /* NR_rt_sigreturn */
"int $0x80" );
@@ -2329,9 +2332,18 @@ void signal_init_process(void)
sig_act.sa_mask = server_block_set;
sig_act.sa_flags = SA_SIGINFO | SA_RESTART | SA_ONSTACK;
-#ifdef __ANDROID__
- sig_act.sa_flags |= SA_RESTORER;
- sig_act.sa_restorer = rt_sigreturn;
+#if defined(__linux__) && defined(SA_RESTORER)
+ if (!getauxval(AT_SYSINFO_EHDR)) {
+ struct sigaction real_sig_act;
+
+ sig_act.sa_sigaction = int_handler;
+ if (sigaction( SIGINT, &sig_act, NULL ) == -1) goto error;
+ if (sigaction( SIGINT, NULL, &real_sig_act ) == -1) goto error;
+ if (!(real_sig_act.sa_flags & SA_RESTORER)) {
+ sig_act.sa_flags |= SA_RESTORER;
+ sig_act.sa_restorer = rt_sigreturn;
+ }
+ }
#endif
sig_act.sa_sigaction = int_handler;
if (sigaction( SIGINT, &sig_act, NULL ) == -1) goto error;
--
2.31.1
[View Less]
Without this patch conhost would attempt to process non-existent input,
spewing stdout with various cursor moves and incorrectly returning
the ReadConsole call early. Fix that by only attempting input processing
if there are actually input records to be processed and properly
returning STATUS_PENDING if the input processing is not yet complete.
Signed-off-by: Keno Fischer <keno(a)juliacomputing.com>
---
programs/conhost/conhost.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 …
[View More]deletion(-)
diff --git a/programs/conhost/conhost.c b/programs/conhost/conhost.c
index 78f6e345170..64a77e52b43 100644
--- a/programs/conhost/conhost.c
+++ b/programs/conhost/conhost.c
@@ -1385,7 +1385,14 @@ static NTSTATUS read_console( struct console *console, unsigned int ioctl, size_
if (edit_line_grow( console, 1 )) console->edit_line.buf[0] = 0;
console->pending_read = out_size;
- return process_console_input( console );
+
+ /* If there are any pending input records, cook them now. */
+ if (console->record_count)
+ {
+ process_console_input( console );
+ }
+
+ return console->edit_line.status;
}
/* add input events to a console input queue */
--
2.25.1
[View Less]
Prior to c94f44f9b4559351c0ca86d344fe37aabc15200c (widl: Search for
imported typelibs in the library search path.), widl looked for
tlb files in the path specified by BIN_TO_INCLUDEDIR. After that
commit, widl looks for tlb files in a subdirectory (get_pe_dir)
of BIN_TO_DLLDIR (which mingw-w64 sets to the same as
BIN_TO_INCLUDEDIR).
For compatibility with the mingw-w64 usecase, check for tlb files
in the directory specified by BIN_TO_DLLDIR without a separate
subdirectory suffix too.
Signed-…
[View More]off-by: Martin Storsjö <martin(a)martin.st>
---
tools/widl/widl.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/tools/widl/widl.c b/tools/widl/widl.c
index 0b5f07236f0..f696a73bd2f 100644
--- a/tools/widl/widl.c
+++ b/tools/widl/widl.c
@@ -698,7 +698,11 @@ int open_typelib( const char *name )
if (stdinc)
{
- if (dlldir) TRYOPEN( strmake( "%s%s/%s", dlldir, pe_dir, name ));
+ if (dlldir)
+ {
+ TRYOPEN( strmake( "%s%s/%s", dlldir, pe_dir, name ));
+ TRYOPEN( strmake( "%s/%s", dlldir, name ));
+ }
for (i = 0; i < ARRAY_SIZE(default_dirs); i++)
{
if (i && !strcmp( default_dirs[i], default_dirs[0] )) continue;
--
2.25.1
[View Less]
Wine-Bug:https://bugs.winehq.org/show_bug.cgi?id=50516Wine-Bug:https://bugs.winehq.org/show_bug.cgi?id=49884
Signed-off-by: Floris Renaud <jkfloris(a)dds.nl>
---
templates/en/documentation.template | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/templates/en/documentation.template b/templates/en/documentation.template
index d0d1b6f9..ce28b225 100644
--- a/templates/en/documentation.template
+++ b/templates/en/documentation.template
@@ -26,33 +…
[View More]26,33 @@
</li>
</ul>
- <h2>Man Pages</h2>
+ <h2><a href="https://wiki.winehq.org/Man_Pages">Man Pages</a></h2>
<ul>
- <li><a href="{$root}/docs/wine">wine man page</a>
+ <li><a href="https://wiki.winehq.org/Man_Pages/wine">wine man page</a>
<br>Command line options for the wine binary.</li><br>
- <li><a href="{$root}/docs/wineserver">wineserver man page</a>
+ <li><a href="https://wiki.winehq.org/Man_Pages/wineserver">wineserver man page</a>
<br>Command line options for the wineserver binary.</li><br>
- <li><a href="{$root}/docs/winebuild">winebuild man page</a>
+ <li><a href="https://wiki.winehq.org/Man_Pages/winebuild">winebuild man page</a>
<br>Command line options for the winebuild binary.</li><br>
- <li><a href="{$root}/docs/winedump">winedump man page</a>
+ <li><a href="https://wiki.winehq.org/Man_Pages/winedump">winedump man page</a>
<br>Command line options for the winedump binary.</li><br>
- <li><a href="{$root}/docs/winemaker">winemaker man page</a>
+ <li><a href="https://wiki.winehq.org/Man_Pages/winemaker">winemaker man page</a>
<br>Command line options for the winemaker script.</li><br>
- <li><a href="{$root}/docs/widl">widl man page</a>
+ <li><a href="https://wiki.winehq.org/Man_Pages/widl">widl man page</a>
<br>Command line options for the IDL compiler.</li><br>
- <li><a href="{$root}/docs/wmc">wmc man page</a>
+ <li><a href="https://wiki.winehq.org/Man_Pages/wmc">wmc man page</a>
<br>Command line options for the message compiler.</li><br>
- <li><a href="{$root}/docs/wrc">wrc man page</a>
+ <li><a href="https://wiki.winehq.org/Man_Pages/wrc">wrc man page</a>
<br>Command line options for the resource compiler.</li><br>
- <li><a href="{$root}/docs/winegcc">winegcc man page</a>
+ <li><a href="https://wiki.winehq.org/Man_Pages/winegcc">winegcc man page</a>
<br>Command line options for the winegcc compiler.</li><br>
</ul>
--
2.34.1
[View Less]