Contact proper debuggerd when crashing.

Make the request structure match the new structure found in debuggerd
code.

On 64 bit systems, make sure that the 32 bit compiled linker is contacted.

Bug: https://code.google.com/p/android/issues/detail?id=97024
Change-Id: I675b8ff222fcf836b05de4e9b5976ff91ca929bf
This commit is contained in:
Christopher Ferris 2015-01-19 11:16:52 -08:00
parent ffad8df672
commit 151da68100
2 changed files with 11 additions and 10 deletions

View File

@ -36,6 +36,10 @@ LOCAL_CONLYFLAGS += \
LOCAL_CPPFLAGS += \
-std=gnu++11 \
ifeq ($(TARGET_IS_64_BIT),true)
LOCAL_CPPFLAGS += -DTARGET_IS_64_BIT
endif
# We need to access Bionic private headers in the linker.
LOCAL_CFLAGS += -I$(LOCAL_PATH)/../libc/

View File

@ -41,8 +41,10 @@
extern "C" int tgkill(int tgid, int tid, int sig);
#if __LP64__
#define DEBUGGER_SOCKET_NAME "android:debuggerd64"
// Crash actions have to be sent to the proper debuggerd.
// On 64 bit systems, the 32 bit debuggerd is named differently.
#if defined(TARGET_IS_64_BIT) && !defined(__LP64__)
#define DEBUGGER_SOCKET_NAME "android:debuggerd32"
#else
#define DEBUGGER_SOCKET_NAME "android:debuggerd"
#endif
@ -57,15 +59,10 @@ enum debugger_action_t {
};
/* message sent over the socket */
struct debugger_msg_t {
// version 1 included:
debugger_action_t action;
struct __attribute__((packed)) debugger_msg_t {
int32_t action;
pid_t tid;
// version 2 added:
uintptr_t abort_msg_address;
// version 3 added:
uint64_t abort_msg_address;
int32_t original_si_code;
};