https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=e5cadbfdcdd8b06932a9503b3c72511b68f03a60
commit e5cadbfdcdd8b06932a9503b3c72511b68f03a60 Author: Johannes Schindelin <johannes.schinde...@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.schinde...@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.