From ccba23459ebacc8bc6e5eeef7454c91ceb61b5b0 Mon Sep 17 00:00:00 2001 From: rcombs Date: Sat, 24 Oct 2020 14:31:14 -0500 Subject: 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 | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'ldso') diff --git a/ldso/dynlink.c b/ldso/dynlink.c index af983692..f9ac0100 100644 --- a/ldso/dynlink.c +++ b/ldso/dynlink.c @@ -1947,7 +1947,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; @@ -1996,6 +1996,9 @@ void *dlopen(const char *file, int mode) pthread_rwlock_wrlock(&lock); __inhibit_ptc(); + debug.state = RT_ADD; + _dl_debug_state(); + p = 0; if (shutting_down) { error("Cannot dlopen while program is exiting."); @@ -2089,9 +2092,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 = RT_CONSISTENT; + _dl_debug_state(); __release_ptc(); if (p) gencnt++; pthread_rwlock_unlock(&lock); -- cgit v1.2.1