|
Message-Id: <20201024053156.32053-1-rcombs@rcombs.me> Date: Sat, 24 Oct 2020 00:31:56 -0500 From: rcombs <rcombs@...mbs.me> To: musl@...ts.openwall.com Subject: [PATCH] ldso: notify the debugger when we're doing a dlopen Otherwise lldb doesn't notice the new library and stack traces containing it get cut off unhelpfully. --- ldso/dynlink.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ldso/dynlink.c b/ldso/dynlink.c index fcc8f6a6..1ab9bf5b 100644 --- a/ldso/dynlink.c +++ b/ldso/dynlink.c @@ -1963,7 +1963,7 @@ void __dls3(size_t *sp, size_t *auxv) debug.bp = dl_debug_state; debug.head = head; debug.base = ldso.base; - debug.state = 0; + debug.state = RT_CONSISTENT; _dl_debug_state(); if (replace_argv0) argv[0] = replace_argv0; @@ -2012,6 +2012,10 @@ void *dlopen(const char *file, int mode) pthread_rwlock_wrlock(&lock); __inhibit_ptc(); + int oldstate = debug.state; + debug.state = RT_ADD; + _dl_debug_state(); + p = 0; if (shutting_down) { error("Cannot dlopen while program is exiting."); @@ -2104,9 +2108,10 @@ void *dlopen(const char *file, int mode) update_tls_size(); if (tls_cnt != orig_tls_cnt) install_new_tls(); - _dl_debug_state(); orig_tail = tail; end: + debug.state = oldstate; + _dl_debug_state(); __release_ptc(); if (p) gencnt++; pthread_rwlock_unlock(&lock); -- 2.17.1
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.