This is the mail archive of the
cygwin-cvs@cygwin.com
mailing list for the Cygwin project.
[newlib-cygwin] FAST_CWD: adjust the initial search scope
- From: Corinna Vinschen <corinna at sourceware dot org>
- To: cygwin-cvs at sourceware dot org
- Date: 12 Jan 2017 08:24:06 -0000
- Subject: [newlib-cygwin] FAST_CWD: adjust the initial search scope
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=e5cadbfdcdd8b06932a9503b3c72511b68f03a60
commit e5cadbfdcdd8b06932a9503b3c72511b68f03a60
Author: Johannes Schindelin <johannes.schindelin@gmx.de>
Date: Wed Jan 11 14:21:31 2017 +0100
FAST_CWD: adjust the initial search scope
A *very* recent Windows build adds more code to the preamble of
RtlGetCurrentDirectory_U() so that the previous heuristic failed to find
the call to the locking routine.
This only affects the 64-bit version of ntdll, where the 0xe8 byte is
now found at offset 40, not the 32-bit version. However, let's just
double the area we search for said byte for good measure.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Diff:
---
winsup/cygwin/path.cc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index c3b304a..ee7636d 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -4034,7 +4034,7 @@ find_fast_cwd_pointer ()
if (!get_dir || !ent_crit)
return NULL;
/* Search first relative call instruction in RtlGetCurrentDirectory_U. */
- const uint8_t *rcall = (const uint8_t *) memchr (get_dir, 0xe8, 40);
+ const uint8_t *rcall = (const uint8_t *) memchr (get_dir, 0xe8, 80);
if (!rcall)
return NULL;
/* Fetch offset from instruction and compute address of called function.
@@ -4133,7 +4133,7 @@ find_fast_cwd_pointer ()
if (!get_dir || !ent_crit)
return NULL;
/* Search first relative call instruction in RtlGetCurrentDirectory_U. */
- const uint8_t *rcall = (const uint8_t *) memchr (get_dir, 0xe8, 32);
+ const uint8_t *rcall = (const uint8_t *) memchr (get_dir, 0xe8, 64);
if (!rcall)
return NULL;
/* Fetch offset from instruction and compute address of called function.