diff options
Diffstat (limited to 'meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core')
12 files changed, 959 insertions, 0 deletions
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0001-adb-remove-selinux-extensions.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0001-adb-remove-selinux-extensions.patch new file mode 100644 index 000000000..7d20c5068 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0001-adb-remove-selinux-extensions.patch @@ -0,0 +1,44 @@ +From 7b7200727413ca4a9bb132221c543ec033dffafa Mon Sep 17 00:00:00 2001 +From: Sergio Schvezov <sergio.schvezov@canonical.com> +Date: Wed, 7 Sep 2016 12:58:47 +0300 +Subject: [PATCH] adb: remove selinux extensions + +* drop useless includes of Android SELINUX extensions +* avoids having to clone another module +* this should be sent upstream + +Upstream-Status: Inappropriate + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + adb/file_sync_service.c | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/adb/file_sync_service.c b/adb/file_sync_service.c +index 7933858516..3cbd0cd863 100644 +--- a/adb/file_sync_service.c ++++ b/adb/file_sync_service.c +@@ -26,7 +26,6 @@ + + #include <errno.h> + #include <private/android_filesystem_config.h> +-#include <selinux/android.h> + #include "sysdeps.h" + + #define TRACE_TAG TRACE_SYNC +@@ -73,7 +72,6 @@ static int mkdirs(char *name) + *x = '/'; + return ret; + } +- selinux_android_restorecon(name, 0); + } + *x++ = '/'; + } +@@ -251,7 +249,6 @@ static int handle_send_file(int s, char *path, uid_t uid, + if(fd >= 0) { + struct utimbuf u; + adb_close(fd); +- selinux_android_restorecon(path, 0); + u.actime = timestamp; + u.modtime = timestamp; + utime(path, &u); diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0002-adb-Use-local-sockets-where-appropriate.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0002-adb-Use-local-sockets-where-appropriate.patch new file mode 100644 index 000000000..3627110ad --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0002-adb-Use-local-sockets-where-appropriate.patch @@ -0,0 +1,70 @@ +From d855f042ca09a358cebe2d3c1d29d512afd7ebb8 Mon Sep 17 00:00:00 2001 +From: Hilko Bengen <bengen@debian.org> +Date: Wed, 7 Sep 2016 12:58:47 +0300 +Subject: [PATCH] adb: Use local sockets where appropriate + +Upstream-Status: Inappropriate +--- + adb/adb.c | 6 +++++- + adb/adb_client.c | 5 +++-- + adb/transport_local.c | 3 ++- + 3 files changed, 10 insertions(+), 4 deletions(-) + +diff --git a/adb/adb.c b/adb/adb.c +index 10a1e0da26..027edd9359 100644 +--- a/adb/adb.c ++++ b/adb/adb.c +@@ -1230,7 +1230,11 @@ int launch_server(int server_port) + */ + void build_local_name(char* target_str, size_t target_size, int server_port) + { +- snprintf(target_str, target_size, "tcp:%d", server_port); ++ if (gListenAll > 0) { ++ snprintf(target_str, target_size, "tcp:%d", server_port); ++ } else { ++ snprintf(target_str, target_size, "local:%d", server_port); ++ } + } + + #if !ADB_HOST +diff --git a/adb/adb_client.c b/adb/adb_client.c +index eb1720d22c..a383faefe3 100644 +--- a/adb/adb_client.c ++++ b/adb/adb_client.c +@@ -185,12 +185,12 @@ int _adb_connect(const char *service) + strcpy(__adb_error, "service name too long"); + return -1; + } +- snprintf(tmp, sizeof tmp, "%04x", len); ++ snprintf(tmp, sizeof tmp, "%d", __adb_server_port); + + if (__adb_server_name) + fd = socket_network_client(__adb_server_name, __adb_server_port, SOCK_STREAM); + else +- fd = socket_loopback_client(__adb_server_port, SOCK_STREAM); ++ fd = socket_local_client(tmp, ANDROID_SOCKET_NAMESPACE_ABSTRACT, SOCK_STREAM); + + if(fd < 0) { + strcpy(__adb_error, "cannot connect to daemon"); +@@ -201,6 +201,7 @@ int _adb_connect(const char *service) + return -1; + } + ++ snprintf(tmp, sizeof tmp, "%04x", len); + if(writex(fd, tmp, 4) || writex(fd, service, len)) { + strcpy(__adb_error, "write failure during connection"); + adb_close(fd); +diff --git a/adb/transport_local.c b/adb/transport_local.c +index 948cc15812..71582a8c88 100644 +--- a/adb/transport_local.c ++++ b/adb/transport_local.c +@@ -121,7 +121,8 @@ int local_connect_arbitrary_ports(int console_port, int adb_port) + } + #endif + if (fd < 0) { +- fd = socket_loopback_client(adb_port, SOCK_STREAM); ++ snprintf(buf, sizeof buf, "%d", adb_port); ++ fd = socket_local_client(buf, ANDROID_SOCKET_NAMESPACE_ABSTRACT, SOCK_STREAM); + } + + if (fd >= 0) { diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0003-adb-define-shell-command.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0003-adb-define-shell-command.patch new file mode 100644 index 000000000..cf1d9cbc3 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0003-adb-define-shell-command.patch @@ -0,0 +1,29 @@ +From 4421c2e19946dcd651fd8ac022b96627fc526149 Mon Sep 17 00:00:00 2001 +From: Fathi Boudra <fabo@debian.org> +Date: Wed, 7 Sep 2016 12:58:47 +0300 +Subject: [PATCH] adb: define shell command + +we intend to run on Linux system so the shell is always /bin/sh, +for the host or the target. + +Upstream-Status: Inappropriate +--- + adb/services.c | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/adb/services.c b/adb/services.c +index 21b08dc201..d44b0c5068 100644 +--- a/adb/services.c ++++ b/adb/services.c +@@ -299,11 +299,7 @@ static int create_subproc_raw(const char *cmd, const char *arg0, const char *arg + } + #endif /* !ABD_HOST */ + +-#if ADB_HOST + #define SHELL_COMMAND "/bin/sh" +-#else +-#define SHELL_COMMAND "/system/bin/sh" +-#endif + + #if !ADB_HOST + static void subproc_waiter_service(int fd, void *cookie) diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0004-adb-Fix-build-on-big-endian-systems.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0004-adb-Fix-build-on-big-endian-systems.patch new file mode 100644 index 000000000..79e9d4d3b --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0004-adb-Fix-build-on-big-endian-systems.patch @@ -0,0 +1,45 @@ +From 548b8ca62c64a16305929e2eaf3d546d48de9c25 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> +Date: Tue, 21 Feb 2017 19:46:24 +0100 +Subject: [PATCH] adb: Fix build on big endian systems + +The usb_linux_client.c file defines cpu_to_le16/32 by using the C +library htole16/32 function calls. However, cpu_to_le16/32 are used +when initializing structures, i.e in a context where a function call +is not allowed. + +It works fine on little endian systems because htole16/32 are defined +by the C library as no-ops. But on big-endian systems, they are +actually doing something, which might involve calling a function, +causing build failures. + +To solve this, we simply open-code cpu_to_le16/32 in a way that allows +them to be used when initializing structures. + +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> +--- + adb/usb_linux_client.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/adb/usb_linux_client.c b/adb/usb_linux_client.c +index 8426e0ea14..6e8b5bbbd2 100644 +--- a/adb/usb_linux_client.c ++++ b/adb/usb_linux_client.c +@@ -34,8 +34,15 @@ + #define MAX_PACKET_SIZE_FS 64 + #define MAX_PACKET_SIZE_HS 512 + +-#define cpu_to_le16(x) htole16(x) +-#define cpu_to_le32(x) htole32(x) ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++# define cpu_to_le16(x) (x) ++# define cpu_to_le32(x) (x) ++#else ++# define cpu_to_le16(x) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8)) ++# define cpu_to_le32(x) \ ++ ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | \ ++ (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24)) ++#endif + + struct usb_handle + { diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0005-adb-add-base64-implementation.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0005-adb-add-base64-implementation.patch new file mode 100644 index 000000000..fcd4ae238 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0005-adb-add-base64-implementation.patch @@ -0,0 +1,348 @@ +From 753bcb5971401b82fb2e6197d31c9e386f6d0392 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 15 Sep 2017 15:46:38 -0700 +Subject: [PATCH] adb: add base64 implementation + +musl needs it + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + adb/adb_auth_client.c | 2 +- + adb/base64.c | 315 ++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 316 insertions(+), 1 deletion(-) + create mode 100644 adb/base64.c + +diff --git a/adb/adb_auth_client.c b/adb/adb_auth_client.c +index 55e9dcad19..104b413b8b 100644 +--- a/adb/adb_auth_client.c ++++ b/adb/adb_auth_client.c +@@ -75,7 +75,7 @@ static void read_keys(const char *file, struct listnode *list) + if (sep) + *sep = '\0'; + +- ret = __b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4); ++ ret = b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4); + if (ret != sizeof(key->key)) { + D("%s: Invalid base64 data ret=%d\n", file, ret); + free(key); +diff --git a/adb/base64.c b/adb/base64.c +new file mode 100644 +index 0000000000..95da284d0d +--- /dev/null ++++ b/adb/base64.c +@@ -0,0 +1,315 @@ ++/* ++ * Copyright (c) 1996-1999 by Internet Software Consortium. ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS ++ * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE ++ * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL ++ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR ++ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ++ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS ++ * SOFTWARE. ++ */ ++ ++/* ++ * Portions Copyright (c) 1995 by International Business Machines, Inc. ++ * ++ * International Business Machines, Inc. (hereinafter called IBM) grants ++ * permission under its copyrights to use, copy, modify, and distribute this ++ * Software with or without fee, provided that the above copyright notice and ++ * all paragraphs of this notice appear in all copies, and that the name of IBM ++ * not be used in connection with the marketing of any product incorporating ++ * the Software or modifications thereof, without specific, written prior ++ * permission. ++ * ++ * To the extent it has a right to do so, IBM grants an immunity from suit ++ * under its patents, if any, for the use, sale or manufacture of products to ++ * the extent that such products are used for performing Domain Name System ++ * dynamic updates in TCP/IP networks by means of the Software. No immunity is ++ * granted for any product per se or for any other function of any product. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", AND IBM DISCLAIMS ALL WARRANTIES, ++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A ++ * PARTICULAR PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, ++ * DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ARISING ++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE, EVEN ++ * IF IBM IS APPRISED OF THE POSSIBILITY OF SUCH DAMAGES. ++ */ ++ ++#if !defined(LINT) && !defined(CODECENTER) ++static const char rcsid[] = "$BINDId: base64.c,v 8.7 1999/10/13 16:39:33 vixie Exp $"; ++#endif /* not lint */ ++ ++#include <sys/types.h> ++#include <sys/param.h> ++#include <sys/socket.h> ++ ++#include <netinet/in.h> ++#include <arpa/inet.h> ++#include <arpa/nameser.h> ++ ++#include <ctype.h> ++#include <resolv.h> ++#include <stdio.h> ++#include <stdlib.h> ++#include <stdint.h> ++#include <string.h> ++ ++#define Assert(Cond) if (!(Cond)) abort() ++ ++static const char Base64[] = ++ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; ++static const char Pad64 = '='; ++ ++/* (From RFC1521 and draft-ietf-dnssec-secext-03.txt) ++ The following encoding technique is taken from RFC 1521 by Borenstein ++ and Freed. It is reproduced here in a slightly edited form for ++ convenience. ++ ++ A 65-character subset of US-ASCII is used, enabling 6 bits to be ++ represented per printable character. (The extra 65th character, "=", ++ is used to signify a special processing function.) ++ ++ The encoding process represents 24-bit groups of input bits as output ++ strings of 4 encoded characters. Proceeding from left to right, a ++ 24-bit input group is formed by concatenating 3 8-bit input groups. ++ These 24 bits are then treated as 4 concatenated 6-bit groups, each ++ of which is translated into a single digit in the base64 alphabet. ++ ++ Each 6-bit group is used as an index into an array of 64 printable ++ characters. The character referenced by the index is placed in the ++ output string. ++ ++ Table 1: The Base64 Alphabet ++ ++ Value Encoding Value Encoding Value Encoding Value Encoding ++ 0 A 17 R 34 i 51 z ++ 1 B 18 S 35 j 52 0 ++ 2 C 19 T 36 k 53 1 ++ 3 D 20 U 37 l 54 2 ++ 4 E 21 V 38 m 55 3 ++ 5 F 22 W 39 n 56 4 ++ 6 G 23 X 40 o 57 5 ++ 7 H 24 Y 41 p 58 6 ++ 8 I 25 Z 42 q 59 7 ++ 9 J 26 a 43 r 60 8 ++ 10 K 27 b 44 s 61 9 ++ 11 L 28 c 45 t 62 + ++ 12 M 29 d 46 u 63 / ++ 13 N 30 e 47 v ++ 14 O 31 f 48 w (pad) = ++ 15 P 32 g 49 x ++ 16 Q 33 h 50 y ++ ++ Special processing is performed if fewer than 24 bits are available ++ at the end of the data being encoded. A full encoding quantum is ++ always completed at the end of a quantity. When fewer than 24 input ++ bits are available in an input group, zero bits are added (on the ++ right) to form an integral number of 6-bit groups. Padding at the ++ end of the data is performed using the '=' character. ++ ++ Since all base64 input is an integral number of octets, only the ++ ------------------------------------------------- ++ following cases can arise: ++ ++ (1) the final quantum of encoding input is an integral ++ multiple of 24 bits; here, the final unit of encoded ++ output will be an integral multiple of 4 characters ++ with no "=" padding, ++ (2) the final quantum of encoding input is exactly 8 bits; ++ here, the final unit of encoded output will be two ++ characters followed by two "=" padding characters, or ++ (3) the final quantum of encoding input is exactly 16 bits; ++ here, the final unit of encoded output will be three ++ characters followed by one "=" padding character. ++ */ ++ ++int ++b64_ntop(const uint8_t* src, size_t srclength, char* target, size_t targsize) ++{ ++ size_t datalength = 0; ++ uint8_t input[3]; ++ uint8_t output[4]; ++ size_t i; ++ ++ while (2 < srclength) { ++ input[0] = *src++; ++ input[1] = *src++; ++ input[2] = *src++; ++ srclength -= 3; ++ ++ output[0] = input[0] >> 2; ++ output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4); ++ output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6); ++ output[3] = input[2] & 0x3f; ++ Assert(output[0] < 64); ++ Assert(output[1] < 64); ++ Assert(output[2] < 64); ++ Assert(output[3] < 64); ++ ++ if (datalength + 4 > targsize) ++ return (-1); ++ target[datalength++] = Base64[output[0]]; ++ target[datalength++] = Base64[output[1]]; ++ target[datalength++] = Base64[output[2]]; ++ target[datalength++] = Base64[output[3]]; ++ } ++ ++ /* Now we worry about padding. */ ++ if (0 != srclength) { ++ /* Get what's left. */ ++ input[0] = input[1] = input[2] = '\0'; ++ for (i = 0; i < srclength; i++) ++ input[i] = *src++; ++ ++ output[0] = input[0] >> 2; ++ output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4); ++ output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6); ++ Assert(output[0] < 64); ++ Assert(output[1] < 64); ++ Assert(output[2] < 64); ++ ++ if (datalength + 4 > targsize) ++ return (-1); ++ target[datalength++] = Base64[output[0]]; ++ target[datalength++] = Base64[output[1]]; ++ if (srclength == 1) ++ target[datalength++] = Pad64; ++ else ++ target[datalength++] = Base64[output[2]]; ++ target[datalength++] = Pad64; ++ } ++ if (datalength >= targsize) ++ return (-1); ++ target[datalength] = '\0'; /* Returned value doesn't count \0. */ ++ return (datalength); ++} ++ ++/* skips all whitespace anywhere. ++ converts characters, four at a time, starting at (or after) ++ src from base - 64 numbers into three 8 bit bytes in the target area. ++ it returns the number of data bytes stored at the target, or -1 on error. ++ */ ++ ++int b64_pton(const char* src, uint8_t* target, size_t targsize) ++{ ++ int tarindex, state, ch; ++ char *pos; ++ ++ state = 0; ++ tarindex = 0; ++ ++ while ((ch = *src++) != '\0') { ++ if (isspace(ch)) /* Skip whitespace anywhere. */ ++ continue; ++ ++ if (ch == Pad64) ++ break; ++ ++ pos = strchr(Base64, ch); ++ if (pos == 0) /* A non-base64 character. */ ++ return (-1); ++ ++ switch (state) { ++ case 0: ++ if (target) { ++ if ((size_t)tarindex >= targsize) ++ return (-1); ++ target[tarindex] = (pos - Base64) << 2; ++ } ++ state = 1; ++ break; ++ case 1: ++ if (target) { ++ if ((size_t)tarindex + 1 >= targsize) ++ return (-1); ++ target[tarindex] |= (pos - Base64) >> 4; ++ target[tarindex+1] = ((pos - Base64) & 0x0f) ++ << 4 ; ++ } ++ tarindex++; ++ state = 2; ++ break; ++ case 2: ++ if (target) { ++ if ((size_t)tarindex + 1 >= targsize) ++ return (-1); ++ target[tarindex] |= (pos - Base64) >> 2; ++ target[tarindex+1] = ((pos - Base64) & 0x03) ++ << 6; ++ } ++ tarindex++; ++ state = 3; ++ break; ++ case 3: ++ if (target) { ++ if ((size_t)tarindex >= targsize) ++ return (-1); ++ target[tarindex] |= (pos - Base64); ++ } ++ tarindex++; ++ state = 0; ++ break; ++ default: ++ abort(); ++ } ++ } ++ ++ /* ++ * We are done decoding Base-64 chars. Let's see if we ended ++ * on a byte boundary, and/or with erroneous trailing characters. ++ */ ++ ++ if (ch == Pad64) { /* We got a pad char. */ ++ ch = *src++; /* Skip it, get next. */ ++ switch (state) { ++ case 0: /* Invalid = in first position */ ++ case 1: /* Invalid = in second position */ ++ return (-1); ++ ++ case 2: /* Valid, means one byte of info */ ++ /* Skip any number of spaces. */ ++ for ((void)NULL; ch != '\0'; ch = *src++) ++ if (!isspace(ch)) ++ break; ++ /* Make sure there is another trailing = sign. */ ++ if (ch != Pad64) ++ return (-1); ++ ch = *src++; /* Skip the = */ ++ /* Fall through to "single trailing =" case. */ ++ /* FALLTHROUGH */ ++ ++ case 3: /* Valid, means two bytes of info */ ++ /* ++ * We know this char is an =. Is there anything but ++ * whitespace after it? ++ */ ++ for ((void)NULL; ch != '\0'; ch = *src++) ++ if (!isspace(ch)) ++ return (-1); ++ ++ /* ++ * Now make sure for cases 2 and 3 that the "extra" ++ * bits that slopped past the last full byte were ++ * zeros. If we don't check them, they become a ++ * subliminal channel. ++ */ ++ if (target && target[tarindex] != 0) ++ return (-1); ++ } ++ } else { ++ /* ++ * We ended by seeing the end of the string. Make sure we ++ * have no partial bytes lying around. ++ */ ++ if (state != 0) ++ return (-1); ++ } ++ ++ return (tarindex); ++} ++ diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0006-adb-Musl-fixes.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0006-adb-Musl-fixes.patch new file mode 100644 index 000000000..b5d383f38 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0006-adb-Musl-fixes.patch @@ -0,0 +1,131 @@ +From 62d957a1271c88ec08d67984fbe31601f0bd41a9 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 15 Sep 2017 15:50:57 -0700 +Subject: [PATCH] adb: Musl fixes + +__nonnull is gcc specific +include sys/types.h for size_t +Do not redefine close() and lseek() + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + adb/adb.h | 2 ++ + adb/disable_verity_service.c | 13 ++++++++----- + adb/framebuffer_service.c | 7 ++++--- + adb/sysdeps.h | 12 ++++++------ + 4 files changed, 20 insertions(+), 14 deletions(-) + +diff --git a/adb/adb.h b/adb/adb.h +index 44e5981bdc..bcdc49f63c 100644 +--- a/adb/adb.h ++++ b/adb/adb.h +@@ -18,7 +18,9 @@ + #define __ADB_H + + #include <limits.h> ++#include <sys/types.h> + ++#include "fdevent.h" + #include "adb_trace.h" + #include "transport.h" /* readx(), writex() */ + +diff --git a/adb/disable_verity_service.c b/adb/disable_verity_service.c +index ed3da52108..29fa3d65a9 100644 +--- a/adb/disable_verity_service.c ++++ b/adb/disable_verity_service.c +@@ -14,25 +14,28 @@ + * limitations under the License. + */ + +-#include "sysdeps.h" + + #define TRACE_TAG TRACE_ADB + #include "adb.h" ++#include "sysdeps.h" ++#include "cutils/properties.h" ++#include "ext4_sb.h" ++#include <fs_mgr.h> + + #include <stdio.h> + #include <stdarg.h> + #include <sys/stat.h> + #include <fcntl.h> + #include <inttypes.h> ++#include <unistd.h> ++#include <errno.h> ++#include <stdbool.h> + +-#include "cutils/properties.h" +-#include "ext4_sb.h" +-#include <fs_mgr.h> + + #define FSTAB_PREFIX "/fstab." + struct fstab *fstab; + +-__attribute__((__format__(printf, 2, 3))) __nonnull((2)) ++__attribute__((__format__(printf, 2, 3))) __attribute__((nonnull((2)))) + static void write_console(int fd, const char* format, ...) + { + char buffer[256]; +diff --git a/adb/framebuffer_service.c b/adb/framebuffer_service.c +index 8cbe8403cc..8f0ccfb7aa 100644 +--- a/adb/framebuffer_service.c ++++ b/adb/framebuffer_service.c +@@ -14,6 +14,10 @@ + * limitations under the License. + */ + ++#include "fdevent.h" ++#include "adb.h" ++#include "sysdeps.h" ++ + #include <stdlib.h> + #include <stdio.h> + #include <unistd.h> +@@ -23,9 +27,6 @@ + #include <sys/types.h> + #include <sys/wait.h> + +-#include "fdevent.h" +-#include "adb.h" +- + #include <linux/fb.h> + #include <sys/ioctl.h> + #include <sys/mman.h> +diff --git a/adb/sysdeps.h b/adb/sysdeps.h +index cc1f839e9f..ea39ac39cc 100644 +--- a/adb/sysdeps.h ++++ b/adb/sysdeps.h +@@ -123,8 +123,8 @@ static __inline__ int unix_close(int fd) + { + return close(fd); + } +-#undef close +-#define close ____xxx_close ++//#undef close ++//#define close ____xxx_close + + static __inline__ int unix_read(int fd, void* buf, size_t len) + { +@@ -369,8 +369,8 @@ static __inline__ int adb_close(int fd) + { + return close(fd); + } +-#undef close +-#define close ____xxx_close ++//#undef close ++//#define close ____xxx_close + + + static __inline__ int adb_read(int fd, void* buf, size_t len) +@@ -392,8 +392,8 @@ static __inline__ int adb_lseek(int fd, int pos, int where) + { + return lseek(fd, pos, where); + } +-#undef lseek +-#define lseek ___xxx_lseek ++//#undef lseek ++//#define lseek ___xxx_lseek + + static __inline__ int adb_unlink(const char* path) + { diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0007-adb-usb_linux.c-fix-build-with-glibc-2.28.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0007-adb-usb_linux.c-fix-build-with-glibc-2.28.patch new file mode 100644 index 000000000..e02a95687 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0007-adb-usb_linux.c-fix-build-with-glibc-2.28.patch @@ -0,0 +1,24 @@ +From de393bba41c8feff932c77d6c30233945f380d42 Mon Sep 17 00:00:00 2001 +From: Martin Jansa <Martin.Jansa@gmail.com> +Date: Sat, 11 Aug 2018 13:23:37 +0000 +Subject: [PATCH] adb: usb_linux.c: fix build with glibc-2.28 + +* include sysmacros for major, minor + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + adb/usb_linux.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/adb/usb_linux.c b/adb/usb_linux.c +index f16bdd0361..c8a7732441 100644 +--- a/adb/usb_linux.c ++++ b/adb/usb_linux.c +@@ -22,6 +22,7 @@ + #include <sys/ioctl.h> + #include <sys/types.h> + #include <sys/time.h> ++#include <sys/sysmacros.h> + #include <dirent.h> + #include <fcntl.h> + #include <errno.h> diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0008-adb-Allow-adbd-to-be-ran-as-root.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0008-adb-Allow-adbd-to-be-ran-as-root.patch new file mode 100644 index 000000000..7d223e05f --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0008-adb-Allow-adbd-to-be-ran-as-root.patch @@ -0,0 +1,21 @@ +From 3a788e9168c9b9eac66c4fa479413f4a95c61be4 Mon Sep 17 00:00:00 2001 +From: Florent Revest <revestflo@gmail.com> +Date: Mon, 30 Oct 2017 21:05:46 +0100 +Subject: [PATCH] adb: Allow adbd to be ran as root + +--- + adb/adb.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/adb/adb.c b/adb/adb.c +index 027edd9359..e0f7ecde45 100644 +--- a/adb/adb.c ++++ b/adb/adb.c +@@ -1271,6 +1271,7 @@ static int should_drop_privileges() { + int secure = 0; + char value[PROPERTY_VALUE_MAX]; + ++ return 0; + /* run adbd in secure mode if ro.secure is set and + ** we are not in the emulator + */ diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0009-mkbootimg-Add-dt-parameter-to-specify-DT-image.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0009-mkbootimg-Add-dt-parameter-to-specify-DT-image.patch new file mode 100644 index 000000000..a4dc6e1e3 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0009-mkbootimg-Add-dt-parameter-to-specify-DT-image.patch @@ -0,0 +1,110 @@ +From dd195778a9930b7967b21a3b8eb390b70253dbad Mon Sep 17 00:00:00 2001 +From: David Ng <dave@codeaurora.org> +Date: Fri, 27 Jul 2012 17:15:03 -0700 +Subject: [PATCH] mkbootimg: Add --dt parameter to specify DT image + +New optional --dt parameter to specify a kernel device +tree image. + +Upstream-Status: Inappropriate +--- + mkbootimg/bootimg.h | 7 +++++-- + mkbootimg/mkbootimg.c | 21 +++++++++++++++++++++ + 2 files changed, 26 insertions(+), 2 deletions(-) + +diff --git a/mkbootimg/bootimg.h b/mkbootimg/bootimg.h +index 9171d85a7b..308c537d6b 100644 +--- a/mkbootimg/bootimg.h ++++ b/mkbootimg/bootimg.h +@@ -41,8 +41,8 @@ struct boot_img_hdr + + unsigned tags_addr; /* physical addr for kernel tags */ + unsigned page_size; /* flash page size we assume */ +- unsigned unused[2]; /* future expansion: should be 0 */ +- ++ unsigned dt_size; /* device tree in bytes */ ++ unsigned unused; /* future expansion: should be 0 */ + unsigned char name[BOOT_NAME_SIZE]; /* asciiz product name */ + + unsigned char cmdline[BOOT_ARGS_SIZE]; +@@ -64,10 +64,13 @@ struct boot_img_hdr + ** +-----------------+ + ** | second stage | o pages + ** +-----------------+ ++** | device tree | p pages ++** +-----------------+ + ** + ** n = (kernel_size + page_size - 1) / page_size + ** m = (ramdisk_size + page_size - 1) / page_size + ** o = (second_size + page_size - 1) / page_size ++** p = (dt_size + page_size - 1) / page_size + ** + ** 0. all entities are page_size aligned in flash + ** 1. kernel and ramdisk are required (size != 0) +diff --git a/mkbootimg/mkbootimg.c b/mkbootimg/mkbootimg.c +index fc92b4dc30..658052cdf2 100644 +--- a/mkbootimg/mkbootimg.c ++++ b/mkbootimg/mkbootimg.c +@@ -65,6 +65,7 @@ int usage(void) + " [ --board <boardname> ]\n" + " [ --base <address> ]\n" + " [ --pagesize <pagesize> ]\n" ++ " [ --dt <filename> ]\n" + " -o|--output <filename>\n" + ); + return 1; +@@ -105,6 +106,8 @@ int main(int argc, char **argv) + char *cmdline = ""; + char *bootimg = 0; + char *board = ""; ++ char *dt_fn = 0; ++ void *dt_data = 0; + unsigned pagesize = 2048; + int fd; + SHA_CTX ctx; +@@ -158,6 +161,8 @@ int main(int argc, char **argv) + fprintf(stderr,"error: unsupported page size %d\n", pagesize); + return -1; + } ++ } else if(!strcmp(arg, "--dt")) { ++ dt_fn = val; + } else { + return usage(); + } +@@ -232,6 +237,14 @@ int main(int argc, char **argv) + } + } + ++ if(dt_fn) { ++ dt_data = load_file(dt_fn, &hdr.dt_size); ++ if (dt_data == 0) { ++ fprintf(stderr,"error: could not load device tree image '%s'\n", dt_fn); ++ return 1; ++ } ++ } ++ + /* put a hash of the contents in the header so boot images can be + * differentiated based on their first 2k. + */ +@@ -242,6 +255,10 @@ int main(int argc, char **argv) + SHA_update(&ctx, &hdr.ramdisk_size, sizeof(hdr.ramdisk_size)); + SHA_update(&ctx, second_data, hdr.second_size); + SHA_update(&ctx, &hdr.second_size, sizeof(hdr.second_size)); ++ if(dt_data) { ++ SHA_update(&ctx, dt_data, hdr.dt_size); ++ SHA_update(&ctx, &hdr.dt_size, sizeof(hdr.dt_size)); ++ } + sha = SHA_final(&ctx); + memcpy(hdr.id, sha, + SHA_DIGEST_SIZE > sizeof(hdr.id) ? sizeof(hdr.id) : SHA_DIGEST_SIZE); +@@ -266,6 +283,10 @@ int main(int argc, char **argv) + if(write_padding(fd, pagesize, hdr.second_size)) goto fail; + } + ++ if(dt_data) { ++ if(write(fd, dt_data, hdr.dt_size) != (ssize_t) hdr.dt_size) goto fail; ++ if(write_padding(fd, pagesize, hdr.dt_size)) goto fail; ++ } + return 0; + + fail: diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0010-Use-linux-capability.h-on-linux-systems-too.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0010-Use-linux-capability.h-on-linux-systems-too.patch new file mode 100644 index 000000000..2c607ff67 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0010-Use-linux-capability.h-on-linux-systems-too.patch @@ -0,0 +1,23 @@ +From ef743c9c3c7452ae904a5c343ee2b759ab3a87cb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Lo=C3=AFc=20Minier?= <loic.minier@ubuntu.com> +Date: Wed, 7 Sep 2016 12:58:47 +0300 +Subject: [PATCH] Use linux/capability.h on linux systems too + +Upstream-Status: Inappropriate +--- + include/private/android_filesystem_config.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/private/android_filesystem_config.h b/include/private/android_filesystem_config.h +index 2f528b95c8..3e0b00928e 100644 +--- a/include/private/android_filesystem_config.h ++++ b/include/private/android_filesystem_config.h +@@ -27,7 +27,7 @@ + #include <sys/types.h> + #include <stdint.h> + +-#ifdef HAVE_ANDROID_OS ++#if defined(HAVE_ANDROID_OS) || defined(__linux__) + #include <linux/capability.h> + #else + #include "android_filesystem_capability.h" diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0011-Remove-bionic-specific-calls.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0011-Remove-bionic-specific-calls.patch new file mode 100644 index 000000000..5b18f461a --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0011-Remove-bionic-specific-calls.patch @@ -0,0 +1,64 @@ +From 9eff8799831961c0edf6e37e5d4cbf43baa7c748 Mon Sep 17 00:00:00 2001 +From: Fathi Boudra <fabo@debian.org> +Date: Wed, 7 Sep 2016 12:58:47 +0300 +Subject: [PATCH] Remove bionic specific calls + +Upstream-Status: Inappropriate +--- + include/cutils/properties.h | 1 - + libcutils/properties.c | 2 +- + liblog/logd_write.c | 5 +++++ + 3 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/include/cutils/properties.h b/include/cutils/properties.h +index 798db8b36f..7d01f28d6e 100644 +--- a/include/cutils/properties.h ++++ b/include/cutils/properties.h +@@ -19,7 +19,6 @@ + + #include <sys/cdefs.h> + #include <stddef.h> +-#include <sys/system_properties.h> + #include <stdint.h> + + #ifdef __cplusplus +diff --git a/libcutils/properties.c b/libcutils/properties.c +index b283658aa4..4151e7882c 100644 +--- a/libcutils/properties.c ++++ b/libcutils/properties.c +@@ -104,10 +104,10 @@ int32_t property_get_int32(const char *key, int32_t default_value) { + return (int32_t)property_get_imax(key, INT32_MIN, INT32_MAX, default_value); + } + ++#undef HAVE_LIBC_SYSTEM_PROPERTIES + #ifdef HAVE_LIBC_SYSTEM_PROPERTIES + + #define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_ +-#include <sys/_system_properties.h> + + int property_set(const char *key, const char *value) + { +diff --git a/liblog/logd_write.c b/liblog/logd_write.c +index b2668cedb7..f5a44fe901 100644 +--- a/liblog/logd_write.c ++++ b/liblog/logd_write.c +@@ -23,6 +23,7 @@ + #include <stdlib.h> + #include <string.h> + #include <sys/stat.h> ++#include <sys/syscall.h> + #include <sys/types.h> + #if (FAKE_LOG_DEVICE == 0) + #include <sys/socket.h> +@@ -205,7 +206,11 @@ static int __write_to_log_kernel(log_id_t log_id, struct iovec *vec, size_t nr) + realtime_ts.tv_nsec = ts.tv_nsec; + + log_id_buf = log_id; ++#ifdef __BIONIC__ + tid = gettid(); ++#else ++ tid = (pid_t) syscall(__NR_gettid); ++#endif + + newVec[0].iov_base = (unsigned char *) &log_id_buf; + newVec[0].iov_len = sizeof_log_id_t; diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0012-Fix-implicit-declaration-of-stlcat-strlcopy-function.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0012-Fix-implicit-declaration-of-stlcat-strlcopy-function.patch new file mode 100644 index 000000000..b0feb6592 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0012-Fix-implicit-declaration-of-stlcat-strlcopy-function.patch @@ -0,0 +1,50 @@ +From cd4525d760c6f88c9bf85f7bf488da79cd0d3264 Mon Sep 17 00:00:00 2001 +From: Fathi Boudra <fabo@debian.org> +Date: Wed, 7 Sep 2016 12:58:47 +0300 +Subject: [PATCH] Fix implicit declaration of stlcat/strlcopy functions + +Upstream-Status: Inappropriate +--- + adb/adb.c | 1 + + fs_mgr/fs_mgr_fstab.c | 2 +- + include/cutils/sockets.h | 2 +- + 3 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/adb/adb.c b/adb/adb.c +index e0f7ecde45..aaefd9b401 100644 +--- a/adb/adb.c ++++ b/adb/adb.c +@@ -41,6 +41,7 @@ + #include <sys/prctl.h> + #include <getopt.h> + #include <selinux/selinux.h> ++#include <grp.h> + #else + #include "usb_vendors.h" + #endif +diff --git a/fs_mgr/fs_mgr_fstab.c b/fs_mgr/fs_mgr_fstab.c +index edd9591164..9ddb4643b5 100644 +--- a/fs_mgr/fs_mgr_fstab.c ++++ b/fs_mgr/fs_mgr_fstab.c +@@ -17,7 +17,7 @@ + #include <ctype.h> + #include <stdio.h> + #include <stdlib.h> +-#include <string.h> ++#include <bsd/string.h> + #include <sys/mount.h> + + #include "fs_mgr_priv.h" +diff --git a/include/cutils/sockets.h b/include/cutils/sockets.h +index daf43ec944..d3270c69e7 100644 +--- a/include/cutils/sockets.h ++++ b/include/cutils/sockets.h +@@ -19,7 +19,7 @@ + + #include <errno.h> + #include <stdlib.h> +-#include <string.h> ++#include <bsd/string.h> + #include <stdbool.h> + + #ifdef HAVE_WINSOCK |