Update to kernel headers v4.12.3.

Test: Built angler.
Change-Id: Icbcf4fac2334de8409b049ed7a3b4c24b4e98ce9
diff --git a/libc/kernel/uapi/linux/android/binder.h b/libc/kernel/uapi/linux/android/binder.h
index 5a7929f..717826d 100644
--- a/libc/kernel/uapi/linux/android/binder.h
+++ b/libc/kernel/uapi/linux/android/binder.h
@@ -28,6 +28,8 @@
   BINDER_TYPE_HANDLE = B_PACK_CHARS('s', 'h', '*', B_TYPE_LARGE),
   BINDER_TYPE_WEAK_HANDLE = B_PACK_CHARS('w', 'h', '*', B_TYPE_LARGE),
   BINDER_TYPE_FD = B_PACK_CHARS('f', 'd', '*', B_TYPE_LARGE),
+  BINDER_TYPE_FDA = B_PACK_CHARS('f', 'd', 'a', B_TYPE_LARGE),
+  BINDER_TYPE_PTR = B_PACK_CHARS('p', 't', '*', B_TYPE_LARGE),
 };
 enum {
   FLAT_BINDER_FLAG_PRIORITY_MASK = 0xff,
@@ -40,8 +42,11 @@
 typedef __u64 binder_size_t;
 typedef __u64 binder_uintptr_t;
 #endif
-struct flat_binder_object {
+struct binder_object_header {
   __u32 type;
+};
+struct flat_binder_object {
+  struct binder_object_header hdr;
   __u32 flags;
   union {
     binder_uintptr_t binder;
@@ -49,6 +54,32 @@
   };
   binder_uintptr_t cookie;
 };
+struct binder_fd_object {
+  struct binder_object_header hdr;
+  __u32 pad_flags;
+  union {
+    binder_uintptr_t pad_binder;
+    __u32 fd;
+  };
+  binder_uintptr_t cookie;
+};
+struct binder_buffer_object {
+  struct binder_object_header hdr;
+  __u32 flags;
+  binder_uintptr_t buffer;
+  binder_size_t length;
+  binder_size_t parent;
+  binder_size_t parent_offset;
+};
+enum {
+  BINDER_BUFFER_FLAG_HAS_PARENT = 0x01,
+};
+struct __kernel_binder_fd_array_object {
+  struct binder_object_header hdr;
+  binder_size_t num_fds;
+  binder_size_t parent;
+  binder_size_t parent_offset;
+};
 struct binder_write_read {
   binder_size_t write_size;
   binder_size_t write_consumed;
@@ -98,6 +129,10 @@
     __u8 buf[8];
   } data;
 };
+struct binder_transaction_data_sg {
+  struct binder_transaction_data transaction_data;
+  binder_size_t buffers_size;
+};
 struct binder_ptr_cookie {
   binder_uintptr_t ptr;
   binder_uintptr_t cookie;
@@ -153,5 +188,7 @@
   BC_REQUEST_DEATH_NOTIFICATION = _IOW('c', 14, struct binder_handle_cookie),
   BC_CLEAR_DEATH_NOTIFICATION = _IOW('c', 15, struct binder_handle_cookie),
   BC_DEAD_BINDER_DONE = _IOW('c', 16, binder_uintptr_t),
+  BC_TRANSACTION_SG = _IOW('c', 17, struct binder_transaction_data_sg),
+  BC_REPLY_SG = _IOW('c', 18, struct binder_transaction_data_sg),
 };
 #endif