Merge "Implement __fsetlocking."
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;
 };
 
diff --git a/tools/bionicbb/gmail_listener.py b/tools/bionicbb/gmail_listener.py
index 6a8b9e6..f4936d6 100644
--- a/tools/bionicbb/gmail_listener.py
+++ b/tools/bionicbb/gmail_listener.py
@@ -297,6 +297,13 @@
     except NotImplementedError as ex:
         print ex
         return False
+    except gerrit.GerritError as ex:
+        if ex.code == 404:
+            print '{}(404): {}!'.format(
+                termcolor.colored('ERROR', 'red'), ex)
+            return True
+        else:
+            return False
 
 
 def main(argc, argv):