Merge "Contact proper debuggerd when crashing."
diff --git a/linker/Android.mk b/linker/Android.mk
index 720389f..e1302db 100644
--- a/linker/Android.mk
+++ b/linker/Android.mk
@@ -36,6 +36,10 @@
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/
diff --git a/linker/debugger.cpp b/linker/debugger.cpp
index ac466a5..decc22c 100644
--- a/linker/debugger.cpp
+++ b/linker/debugger.cpp
@@ -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 @@
};
/* 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;
};