Create list of open dex files for libbacktrace.

This fixes unwinds after recent changes (oob apks; cdex data sharing).

Bug: 72520014
Test: m test-art-host-gtest
Change-Id: Ie2a02657b2afbe899acd2e61f0a57d207e688b99
diff --git a/runtime/jit/debugger_interface.h b/runtime/jit/debugger_interface.h
index 9aec988..8c4bb3f 100644
--- a/runtime/jit/debugger_interface.h
+++ b/runtime/jit/debugger_interface.h
@@ -30,36 +30,42 @@
   struct JITCodeEntry;
 }
 
-extern Mutex g_jit_debug_mutex;
+// Notify native tools (e.g. libunwind) that DEX file has been opened.
+// The pointer needs to point the start of the dex data (not the DexFile* object).
+void RegisterDexFileForNative(Thread* current_thread, const void* dexfile_header);
+
+// Notify native tools (e.g. libunwind) that DEX file has been closed.
+// The pointer needs to point the start of the dex data (not the DexFile* object).
+void DeregisterDexFileForNative(Thread* current_thread, const void* dexfile_header);
 
 // Notify native debugger about new JITed code by passing in-memory ELF.
 // It takes ownership of the in-memory ELF file.
 JITCodeEntry* CreateJITCodeEntry(const std::vector<uint8_t>& symfile)
-    REQUIRES(g_jit_debug_mutex);
+    REQUIRES(Locks::native_debug_interface_lock_);
 
 // Notify native debugger that JITed code has been removed.
 // It also releases the associated in-memory ELF file.
 void DeleteJITCodeEntry(JITCodeEntry* entry)
-    REQUIRES(g_jit_debug_mutex);
+    REQUIRES(Locks::native_debug_interface_lock_);
 
 // Helper method to track life-time of JITCodeEntry.
 // It registers given code address as being described by the given entry.
 void IncrementJITCodeEntryRefcount(JITCodeEntry* entry, uintptr_t code_address)
-    REQUIRES(g_jit_debug_mutex);
+    REQUIRES(Locks::native_debug_interface_lock_);
 
 // Helper method to track life-time of JITCodeEntry.
 // It de-registers given code address as being described by the given entry.
 void DecrementJITCodeEntryRefcount(JITCodeEntry* entry, uintptr_t code_address)
-    REQUIRES(g_jit_debug_mutex);
+    REQUIRES(Locks::native_debug_interface_lock_);
 
 // Find the registered JITCodeEntry for given code address.
 // There can be only one entry per address at any given time.
 JITCodeEntry* GetJITCodeEntry(uintptr_t code_address)
-    REQUIRES(g_jit_debug_mutex);
+    REQUIRES(Locks::native_debug_interface_lock_);
 
 // Returns approximate memory used by all JITCodeEntries.
 size_t GetJITCodeEntryMemUsage()
-    REQUIRES(g_jit_debug_mutex);
+    REQUIRES(Locks::native_debug_interface_lock_);
 
 }  // namespace art