ASR_BASE

Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/package/utils/adb/patches/001-create_Makefile.patch b/package/utils/adb/patches/001-create_Makefile.patch
new file mode 100644
index 0000000..d7fa00c
--- /dev/null
+++ b/package/utils/adb/patches/001-create_Makefile.patch
@@ -0,0 +1,45 @@
+--- /dev/null
++++ b/adb/Makefile
+@@ -0,0 +1,42 @@
++SRCS+= adb.c
++SRCS+= adb_auth_host.c
++SRCS+= adb_client.c
++SRCS+= commandline.c
++SRCS+= console.c
++SRCS+= fdevent.c
++SRCS+= file_sync_client.c
++SRCS+= get_my_path_linux.c
++SRCS+= services.c
++SRCS+= sockets.c
++SRCS+= transport.c
++SRCS+= transport_local.c
++SRCS+= transport_usb.c
++SRCS+= usb_linux.c
++
++VPATH+= ../libcutils
++SRCS+= load_file.c
++SRCS+= socket_inaddr_any_server.c
++SRCS+= socket_local_client.c
++SRCS+= socket_local_server.c
++SRCS+= socket_loopback_client.c
++SRCS+= socket_loopback_server.c
++SRCS+= socket_network_client.c
++
++VPATH+= ../libzipfile
++SRCS+= centraldir.c
++SRCS+= zipfile.c
++
++CPPFLAGS+= -DADB_HOST=1
++CPPFLAGS+= -DHAVE_FORKEXEC=1
++CPPFLAGS+= -I.
++CPPFLAGS+= -I../include
++CPPFLAGS+= -D_FILE_OFFSET_BITS=64
++
++LIBS+= -lcrypto -lpthread -lz
++
++OBJS= $(SRCS:.c=.o)
++
++all: adb
++
++adb: $(OBJS)
++	$(CC) -o $@ $(LDFLAGS) $(OBJS) $(LIBS)
diff --git a/package/utils/adb/patches/003-fix-musl-build.patch b/package/utils/adb/patches/003-fix-musl-build.patch
new file mode 100644
index 0000000..8a974b1
--- /dev/null
+++ b/package/utils/adb/patches/003-fix-musl-build.patch
@@ -0,0 +1,10 @@
+--- a/adb/usb_linux.c
++++ b/adb/usb_linux.c
+@@ -21,6 +21,7 @@
+ 
+ #include <sys/ioctl.h>
+ #include <sys/types.h>
++#include <sys/sysmacros.h>
+ #include <sys/time.h>
+ #include <dirent.h>
+ #include <fcntl.h>
diff --git a/package/utils/adb/patches/010-openssl-1.1.patch b/package/utils/adb/patches/010-openssl-1.1.patch
new file mode 100644
index 0000000..e4df372
--- /dev/null
+++ b/package/utils/adb/patches/010-openssl-1.1.patch
@@ -0,0 +1,28 @@
+--- a/adb/adb_auth_host.c
++++ b/adb/adb_auth_host.c
+@@ -83,7 +83,13 @@ static int RSA_to_RSAPublicKey(RSA *rsa,
+     }
+ 
+     BN_set_bit(r32, 32);
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++    const BIGNUM *rsa_n, *rsa_e;
++    RSA_get0_key(rsa, &rsa_n, &rsa_e, NULL);
++    BN_copy(n, rsa_n);
++#else
+     BN_copy(n, rsa->n);
++#endif
+     BN_set_bit(r, RSANUMWORDS * 32);
+     BN_mod_sqr(rr, r, n, ctx);
+     BN_div(NULL, rem, n, r32, ctx);
+@@ -97,7 +103,11 @@ static int RSA_to_RSAPublicKey(RSA *rsa,
+         BN_div(n, rem, n, r32, ctx);
+         pkey->n[i] = BN_get_word(rem);
+     }
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++    pkey->exponent = BN_get_word(rsa_e);
++#else
+     pkey->exponent = BN_get_word(rsa->e);
++#endif
+ 
+ out:
+     BN_free(n0inv);
diff --git a/package/utils/adb/patches/020-cherry-picked-superspeed-fix.patch b/package/utils/adb/patches/020-cherry-picked-superspeed-fix.patch
new file mode 100644
index 0000000..4dbcc58
--- /dev/null
+++ b/package/utils/adb/patches/020-cherry-picked-superspeed-fix.patch
@@ -0,0 +1,39 @@
+From 58b01e01875e2f6ae593ded197430bc23713dd0a Mon Sep 17 00:00:00 2001
+From: Ingo Rohloff <lundril@gmx.de>
+Date: Fri, 16 May 2014 21:51:41 +0200
+Subject: [PATCH] ADB on linux: Handle USB SuperSpeed extra Descriptors
+
+Under Linux, ADB manually parses USB Descriptors to check for
+possible ADB USB Interfaces. USB Devices connected with SuperSpeed
+will exhibit extra USB SuperSpeed Endpoint Companion Descriptors.
+This patch handles these USB SuperSpeed specific USB Descriptors.
+
+Change-Id: Icd1e5fdde0b324c7df4f933583499f2c52a922f3
+Signed-off-by: Ingo Rohloff <lundril@gmx.de>
+---
+ adb/usb_linux.c | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+--- a/adb/usb_linux.c
++++ b/adb/usb_linux.c
+@@ -238,8 +238,20 @@ static void find_usb_device(const char *
+                             // looks like ADB...
+                         ep1 = (struct usb_endpoint_descriptor *)bufptr;
+                         bufptr += USB_DT_ENDPOINT_SIZE;
++                            // For USB 3.0 SuperSpeed devices, skip potential
++                            // USB 3.0 SuperSpeed Endpoint Companion descriptor
++                        if (bufptr+2 <= devdesc + desclength &&
++                            bufptr[0] == USB_DT_SS_EP_COMP_SIZE &&
++                            bufptr[1] == USB_DT_SS_ENDPOINT_COMP) {
++                            bufptr += USB_DT_SS_EP_COMP_SIZE;
++                        }
+                         ep2 = (struct usb_endpoint_descriptor *)bufptr;
+                         bufptr += USB_DT_ENDPOINT_SIZE;
++                        if (bufptr+2 <= devdesc + desclength &&
++                            bufptr[0] == USB_DT_SS_EP_COMP_SIZE &&
++                            bufptr[1] == USB_DT_SS_ENDPOINT_COMP) {
++                            bufptr += USB_DT_SS_EP_COMP_SIZE;
++                        }
+ 
+                         if (bufptr > devdesc + desclength ||
+                             ep1->bLength != USB_DT_ENDPOINT_SIZE ||