https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=a9da3e4e67bdee6da15771b8f859d381bec01d28
commit a9da3e4e67bdee6da15771b8f859d381bec01d28 Author: Jon Turney <jon.tur...@dronecode.org.uk> Date: Tue Apr 4 18:47:44 2017 +0100 Make ldd stop after any non-continuable exception Ensure that ldd always stops when the exception is flagged as non-continuable. Also arrange for ldd to exit with a non-zero exit code if something went wrong which prevented us from listing all dynamic dependencies. Signed-off-by: Jon Turney <jon.tur...@dronecode.org.uk> Diff: --- winsup/utils/ldd.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/winsup/utils/ldd.cc b/winsup/utils/ldd.cc index 8e891d8..bbc62f1 100644 --- a/winsup/utils/ldd.cc +++ b/winsup/utils/ldd.cc @@ -302,6 +302,9 @@ report (const char *in_fn, bool multiple) dlls dll_list = {}; dlls *dll_last = &dll_list; const wchar_t *process_fn = NULL; + + int res = 0; + while (1) { bool exitnow = false; @@ -356,6 +359,11 @@ report (const char *in_fn, bool multiple) TerminateProcess (hProcess, 0); break; } + if (ev.u.Exception.ExceptionRecord.ExceptionFlags & + EXCEPTION_NONCONTINUABLE) { + res = 1; + goto print_and_exit; + } break; case EXIT_PROCESS_DEBUG_EVENT: print_and_exit: @@ -374,7 +382,7 @@ print_and_exit: break; } - return 0; + return res; } int