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;
 };