blob: 2b95ad2b0ab5676d850e53fa0f3e39b90270f2f3 [file] [log] [blame]
From fe211cbc305a9316c1d4da2f086d6a50f1c92188 Mon Sep 17 00:00:00 2001
From: Etienne Cordonnier <ecordonnier@snap.com>
Date: Fri, 17 Mar 2023 10:33:11 +0100
Subject: [PATCH] android-tools: modifications to make it build in yocto
- Fix relocation errors on aarch64, e.g.:
"relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTV19SparseFileBufSource' which may bind externally can not be used when making a shared object; recompile with -fPIC"
- use ln -f to avoid error "File exists" on incremental builds
- fix missing headers
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
---
debian/external/boringssl/libcrypto.mk | 1 +
debian/system/core/append2simg.mk | 2 +-
debian/system/core/fastboot.mk | 2 +-
debian/system/core/img2simg.mk | 2 +-
debian/system/core/libbacktrace.mk | 8 ++++----
debian/system/core/libbase.mk | 5 +++--
debian/system/core/libcutils.mk | 5 +++--
debian/system/core/liblog.mk | 3 ++-
debian/system/core/libsparse.mk | 5 +++--
debian/system/core/libutils.mk | 2 +-
debian/system/core/libziparchive.mk | 5 +++--
debian/system/core/simg2img.mk | 2 +-
debian/system/core/simg2simg.mk | 2 +-
frameworks/native/libs/adbd_auth/adbd_auth.cpp | 2 ++
system/core/adb/adb_listeners.cpp | 12 ++++++------
system/core/adb/transport_local.cpp | 2 +-
16 files changed, 34 insertions(+), 26 deletions(-)
diff --git a/debian/external/boringssl/libcrypto.mk b/debian/external/boringssl/libcrypto.mk
index c0ea54f4..b3a77bfd 100644
--- a/debian/external/boringssl/libcrypto.mk
+++ b/debian/external/boringssl/libcrypto.mk
@@ -27,6 +27,7 @@ CPPFLAGS += \
-DBORINGSSL_IMPLEMENTATION \
-DBORINGSSL_SHARED_LIBRARY \
-DOPENSSL_SMALL \
+ -DOPENSSL_NO_ASM \
-Iexternal/boringssl/src/crypto \
-Iexternal/boringssl/src/include \
diff --git a/debian/system/core/append2simg.mk b/debian/system/core/append2simg.mk
index 1599bdb8..598c751d 100644
--- a/debian/system/core/append2simg.mk
+++ b/debian/system/core/append2simg.mk
@@ -11,7 +11,7 @@ CPPFLAGS += \
LDFLAGS += \
-Ldebian/out/system/core \
- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
+ -Wl,-rpath='$$ORIGIN/../lib/android' \
-lbase \
-llog \
-lpthread \
diff --git a/debian/system/core/fastboot.mk b/debian/system/core/fastboot.mk
index d5c9a285..a59ba1a4 100644
--- a/debian/system/core/fastboot.mk
+++ b/debian/system/core/fastboot.mk
@@ -49,7 +49,7 @@ CPPFLAGS += \
LDFLAGS += \
-Ldebian/out/system/core \
- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
+ -Wl,-rpath='$$ORIGIN/../lib/android' \
-fuse-ld=gold \
-lbase \
-lcutils \
diff --git a/debian/system/core/img2simg.mk b/debian/system/core/img2simg.mk
index 11adf014..8baf5ba5 100644
--- a/debian/system/core/img2simg.mk
+++ b/debian/system/core/img2simg.mk
@@ -11,7 +11,7 @@ CPPFLAGS += \
LDFLAGS += \
-Ldebian/out/system/core \
- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
+ -Wl,-rpath='$$ORIGIN/../lib/android' \
-lbase \
-llog \
-lpthread \
diff --git a/debian/system/core/libbacktrace.mk b/debian/system/core/libbacktrace.mk
index e3411d76..86e69874 100644
--- a/debian/system/core/libbacktrace.mk
+++ b/debian/system/core/libbacktrace.mk
@@ -1,3 +1,4 @@
+include rules_yocto.mk
include /usr/share/dpkg/architecture.mk
NAME = libbacktrace
@@ -83,10 +84,9 @@ CPPFLAGS += \
LDFLAGS += \
-L/usr/lib/p7zip \
-Ldebian/out/system/core \
- -Wl,-rpath=/usr/lib/p7zip \
- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
+ -Wl,-rpath='$$ORIGIN' \
-Wl,-soname,$(NAME).so.0 \
- -l:7z.so \
+ -l7z \
-lbase \
-llog \
-lpthread \
@@ -101,7 +101,7 @@ endif
build: $(OBJECTS_CXX) $(OBJECTS_ASSEMBLY) debian/out/external/libunwind/libunwind.a
mkdir -p debian/out/system/core
$(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS)
- cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so
+ cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so
$(OBJECTS_CXX): %.o: %.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS)
diff --git a/debian/system/core/libbase.mk b/debian/system/core/libbase.mk
index d2b074ba..8a90d6de 100644
--- a/debian/system/core/libbase.mk
+++ b/debian/system/core/libbase.mk
@@ -1,3 +1,4 @@
+include rules_yocto.mk
NAME = libbase
SOURCES = \
@@ -30,7 +31,7 @@ CPPFLAGS += \
LDFLAGS += \
-Ldebian/out/system/core \
- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
+ -Wl,-rpath='$$ORIGIN' \
-Wl,-soname,$(NAME).so.0 \
-llog \
-lpthread \
@@ -44,7 +45,7 @@ endif
build: $(OBJECTS)
$(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS)
- cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so
+ cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so
$(OBJECTS): %.o: %.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS)
diff --git a/debian/system/core/libcutils.mk b/debian/system/core/libcutils.mk
index 9d928b56..c22b0965 100644
--- a/debian/system/core/libcutils.mk
+++ b/debian/system/core/libcutils.mk
@@ -1,3 +1,4 @@
+include rules_yocto.mk
NAME = libcutils
libcutils_nonwindows_sources = \
@@ -47,7 +48,7 @@ CPPFLAGS += \
LDFLAGS += \
-Ldebian/out/system/core \
- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
+ -Wl,-rpath='$$ORIGIN' \
-Wl,-soname,$(NAME).so.0 \
-lbase \
-llog \
@@ -56,7 +57,7 @@ LDFLAGS += \
build: $(OBJECTS_C) $(OBJECTS_CXX)
$(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS)
- cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so
+ cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so
$(OBJECTS_C): %.o: %.c
$(CC) -c -o $@ $< $(CFLAGS) $(CPPFLAGS)
diff --git a/debian/system/core/liblog.mk b/debian/system/core/liblog.mk
index f8c3d7fe..34a07341 100644
--- a/debian/system/core/liblog.mk
+++ b/debian/system/core/liblog.mk
@@ -1,3 +1,4 @@
+include rules_yocto.mk
NAME = liblog
liblog_sources = \
@@ -35,7 +36,7 @@ LDFLAGS += \
build: $(OBJECTS)
mkdir -p debian/out/system/core
$(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS)
- cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so
+ cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so
$(OBJECTS): %.o: %.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS)
diff --git a/debian/system/core/libsparse.mk b/debian/system/core/libsparse.mk
index c2b2694c..2da12b8e 100644
--- a/debian/system/core/libsparse.mk
+++ b/debian/system/core/libsparse.mk
@@ -1,3 +1,4 @@
+include rules_yocto.mk
NAME = libsparse
SOURCES = \
@@ -19,7 +20,7 @@ CPPFLAGS += \
LDFLAGS += \
-Ldebian/out/system/core \
- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
+ -Wl,-rpath='$$ORIGIN' \
-Wl,-soname,$(NAME).so.0 \
-lbase \
-lz \
@@ -27,7 +28,7 @@ LDFLAGS += \
build: $(OBJECTS)
$(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS)
- cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so
+ cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so
$(OBJECTS): %.o: %.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS)
diff --git a/debian/system/core/libutils.mk b/debian/system/core/libutils.mk
index c37b1d2d..332492c1 100644
--- a/debian/system/core/libutils.mk
+++ b/debian/system/core/libutils.mk
@@ -41,7 +41,7 @@ CPPFLAGS += \
LDFLAGS += \
-Ldebian/out/system/core \
- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
+ -Wl,-rpath='$$ORIGIN' \
-Wl,-soname,$(NAME).so.0 \
-lbacktrace \
-lcutils \
diff --git a/debian/system/core/libziparchive.mk b/debian/system/core/libziparchive.mk
index 1b286b4e..1b7499be 100644
--- a/debian/system/core/libziparchive.mk
+++ b/debian/system/core/libziparchive.mk
@@ -1,3 +1,4 @@
+include rules_yocto.mk
NAME = libziparchive
SOURCES = \
@@ -19,7 +20,7 @@ CPPFLAGS += \
LDFLAGS += \
-Ldebian/out/system/core \
- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
+ -Wl,-rpath='$$ORIGIN' \
-Wl,-soname,$(NAME).so.0 \
-lbase \
-llog \
@@ -29,7 +30,7 @@ LDFLAGS += \
build: $(OBJECTS)
$(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS)
- cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so
+ cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so
$(OBJECTS): %.o: %.cc
$(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS)
diff --git a/debian/system/core/simg2img.mk b/debian/system/core/simg2img.mk
index f6e3f59d..df4f44f3 100644
--- a/debian/system/core/simg2img.mk
+++ b/debian/system/core/simg2img.mk
@@ -13,7 +13,7 @@ CPPFLAGS += \
LDFLAGS += \
-Ldebian/out/system/core \
- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
+ -Wl,-rpath='$$ORIGIN/../lib/android' \
-lbase \
-llog \
-lpthread \
diff --git a/debian/system/core/simg2simg.mk b/debian/system/core/simg2simg.mk
index ed53b04c..646ab030 100644
--- a/debian/system/core/simg2simg.mk
+++ b/debian/system/core/simg2simg.mk
@@ -13,7 +13,7 @@ CPPFLAGS += \
LDFLAGS += \
-Ldebian/out/system/core \
- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
+ -Wl,-rpath='$$ORIGIN/../lib/android' \
-lbase \
-llog \
-lpthread \
diff --git a/frameworks/native/libs/adbd_auth/adbd_auth.cpp b/frameworks/native/libs/adbd_auth/adbd_auth.cpp
index a9c23110..6ca334ba 100644
--- a/frameworks/native/libs/adbd_auth/adbd_auth.cpp
+++ b/frameworks/native/libs/adbd_auth/adbd_auth.cpp
@@ -23,8 +23,10 @@
#include <sys/eventfd.h>
#include <sys/uio.h>
+#include <atomic>
#include <chrono>
#include <deque>
+#include <optional>
#include <string>
#include <string_view>
#include <tuple>
diff --git a/system/core/adb/adb_listeners.cpp b/system/core/adb/adb_listeners.cpp
index 29909a55..440cdbd4 100644
--- a/system/core/adb/adb_listeners.cpp
+++ b/system/core/adb/adb_listeners.cpp
@@ -109,7 +109,7 @@ static void listener_event_func(int _fd, unsigned ev, void* _l)
}
// Called as a transport disconnect function. |arg| is the raw alistener*.
-static void listener_disconnect(void* arg, atransport*) EXCLUDES(listener_list_mutex) {
+static void listener_disconnect(void* arg, atransport*) {
std::lock_guard<std::mutex> lock(listener_list_mutex);
for (auto iter = listener_list.begin(); iter != listener_list.end(); ++iter) {
if (iter->get() == arg) {
@@ -121,7 +121,7 @@ static void listener_disconnect(void* arg, atransport*) EXCLUDES(listener_list_m
}
// Write the list of current listeners (network redirections) into a string.
-std::string format_listeners() EXCLUDES(listener_list_mutex) {
+std::string format_listeners() {
std::lock_guard<std::mutex> lock(listener_list_mutex);
std::string result;
for (auto& l : listener_list) {
@@ -140,7 +140,7 @@ std::string format_listeners() EXCLUDES(listener_list_mutex) {
}
InstallStatus remove_listener(const char* local_name, atransport* transport)
- EXCLUDES(listener_list_mutex) {
+{
std::lock_guard<std::mutex> lock(listener_list_mutex);
for (auto iter = listener_list.begin(); iter != listener_list.end(); ++iter) {
if (local_name == (*iter)->local_name) {
@@ -151,7 +151,7 @@ InstallStatus remove_listener(const char* local_name, atransport* transport)
return INSTALL_STATUS_LISTENER_NOT_FOUND;
}
-void remove_all_listeners() EXCLUDES(listener_list_mutex) {
+void remove_all_listeners() {
std::lock_guard<std::mutex> lock(listener_list_mutex);
auto iter = listener_list.begin();
while (iter != listener_list.end()) {
@@ -164,7 +164,7 @@ void remove_all_listeners() EXCLUDES(listener_list_mutex) {
}
}
-void close_smartsockets() EXCLUDES(listener_list_mutex) {
+void close_smartsockets() {
std::lock_guard<std::mutex> lock(listener_list_mutex);
auto pred = [](const std::unique_ptr<alistener>& listener) {
return listener->local_name == "*smartsocket*";
@@ -174,7 +174,7 @@ void close_smartsockets() EXCLUDES(listener_list_mutex) {
InstallStatus install_listener(const std::string& local_name, const char* connect_to,
atransport* transport, int no_rebind, int* resolved_tcp_port,
- std::string* error) EXCLUDES(listener_list_mutex) {
+ std::string* error) {
std::lock_guard<std::mutex> lock(listener_list_mutex);
for (auto& l : listener_list) {
if (local_name == l->local_name) {
diff --git a/system/core/adb/transport_local.cpp b/system/core/adb/transport_local.cpp
index c7261860..5988ec4d 100644
--- a/system/core/adb/transport_local.cpp
+++ b/system/core/adb/transport_local.cpp
@@ -333,7 +333,7 @@ struct EmulatorConnection : public FdConnection {
/* Only call this function if you already hold local_transports_lock. */
static atransport* find_emulator_transport_by_adb_port_locked(int adb_port)
- REQUIRES(local_transports_lock) {
+{
auto it = local_transports.find(adb_port);
if (it == local_transports.end()) {
return nullptr;