1From 194513bababa9707ec54bc7119613a0d5eca9f79 Mon Sep 17 00:00:00 2001 2From: Etienne Cordonnier <ecordonnier@snap.com> 3Date: Fri, 17 Mar 2023 10:33:11 +0100 4Subject: [PATCH] android-tools: modifications to make it build in yocto 5 6- Fix relocation errors on aarch64, e.g.: 7"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" 8 9- use ln -f to avoid error "File exists" on incremental builds 10 11- fix missing headers 12 13Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com> 14 15- fix warning: library search path "/usr/lib/p7zip" is unsafe for cross-compilation 16 17- fix error: include location "/usr/include/android" is unsafe for cross-compilation 18 19Upstream-Status: Pending 20Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> 21--- 22 debian/development/etc1tool.mk | 1 - 23 debian/external/boringssl/libcrypto.mk | 1 + 24 debian/libnativehelper/libnativehelper.mk | 1 - 25 debian/system/core/adb.mk | 1 - 26 debian/system/core/append2simg.mk | 2 +- 27 debian/system/core/fastboot.mk | 3 +-- 28 debian/system/core/img2simg.mk | 2 +- 29 debian/system/core/libbacktrace.mk | 10 ++++------ 30 debian/system/core/libbase.mk | 5 +++-- 31 debian/system/core/libcutils.mk | 5 +++-- 32 debian/system/core/liblog.mk | 3 ++- 33 debian/system/core/libsparse.mk | 5 +++-- 34 debian/system/core/libutils.mk | 4 ++-- 35 debian/system/core/libziparchive.mk | 5 +++-- 36 debian/system/core/simg2img.mk | 2 +- 37 debian/system/core/simg2simg.mk | 2 +- 38 debian/system/extras/libext4_utils.mk | 1 - 39 frameworks/native/libs/adbd_auth/adbd_auth.cpp | 2 ++ 40 system/core/adb/adb_listeners.cpp | 12 ++++++------ 41 system/core/adb/transport_local.cpp | 2 +- 42 20 files changed, 35 insertions(+), 34 deletions(-) 43 44diff --git a/debian/development/etc1tool.mk b/debian/development/etc1tool.mk 45index 2d787e98bb86..e03ac5f0048c 100644 46--- a/debian/development/etc1tool.mk 47+++ b/debian/development/etc1tool.mk 48@@ -4,7 +4,6 @@ SOURCES = development/tools/etc1tool/etc1tool.cpp 49 50 CXXFLAGS += -std=gnu++2a 51 CPPFLAGS += \ 52- -I/usr/include/android \ 53 -Idevelopment/include \ 54 -Iframeworks/native/opengl/include \ 55 56diff --git a/debian/external/boringssl/libcrypto.mk b/debian/external/boringssl/libcrypto.mk 57index c0ea54f4..b3a77bfd 100644 58--- a/debian/external/boringssl/libcrypto.mk 59+++ b/debian/external/boringssl/libcrypto.mk 60@@ -27,6 +27,7 @@ CPPFLAGS += \ 61 -DBORINGSSL_IMPLEMENTATION \ 62 -DBORINGSSL_SHARED_LIBRARY \ 63 -DOPENSSL_SMALL \ 64+ -DOPENSSL_NO_ASM \ 65 -Iexternal/boringssl/src/crypto \ 66 -Iexternal/boringssl/src/include \ 67 68diff --git a/debian/libnativehelper/libnativehelper.mk b/debian/libnativehelper/libnativehelper.mk 69index 7a0c94a6b7b5..880b2fdf9154 100644 70--- a/debian/libnativehelper/libnativehelper.mk 71+++ b/debian/libnativehelper/libnativehelper.mk 72@@ -11,7 +11,6 @@ OBJECTS = $(SOURCES:.cpp=.o) 73 74 CXXFLAGS += -std=gnu++2a 75 CPPFLAGS += \ 76- -I/usr/include/android \ 77 -Ilibnativehelper/header_only_include \ 78 -Ilibnativehelper/include \ 79 -Ilibnativehelper/include_jni \ 80diff --git a/debian/system/core/adb.mk b/debian/system/core/adb.mk 81index 9769b68ab793..58c9a63bd225 100644 82--- a/debian/system/core/adb.mk 83+++ b/debian/system/core/adb.mk 84@@ -19,7 +19,6 @@ CPPFLAGS += \ 85 -D_GNU_SOURCE \ 86 -DADB_HOST=1 \ 87 -DADB_VERSION='"$(DEB_VERSION)"' \ 88- -I/usr/include/android \ 89 -Iexternal/boringssl/include \ 90 -Isystem/core/adb \ 91 -Isystem/core/base/include \ 92@@ -28,7 +27,6 @@ CPPFLAGS += \ 93 LDFLAGS += \ 94 -Ldebian/out/system/core \ 95 -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \ 96- -fuse-ld=gold \ 97 -lbase \ 98 -lcutils \ 99 -lpthread \ 100diff --git a/debian/system/core/append2simg.mk b/debian/system/core/append2simg.mk 101index 1599bdb8..598c751d 100644 102--- a/debian/system/core/append2simg.mk 103+++ b/debian/system/core/append2simg.mk 104@@ -11,7 +11,7 @@ CPPFLAGS += \ 105 106 LDFLAGS += \ 107 -Ldebian/out/system/core \ 108- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \ 109+ -Wl,-rpath='$$ORIGIN/../lib/android' \ 110 -lbase \ 111 -llog \ 112 -lpthread \ 113diff --git a/debian/system/core/fastboot.mk b/debian/system/core/fastboot.mk 114index d5c9a285..a59ba1a4 100644 115--- a/debian/system/core/fastboot.mk 116+++ b/debian/system/core/fastboot.mk 117@@ -30,7 +30,6 @@ CXXFLAGS += -std=gnu++2a -fpermissive 118 CPPFLAGS += \ 119 -D_FILE_OFFSET_BITS=64 \ 120 -DPLATFORM_TOOLS_VERSION='"$(PLATFORM_TOOLS_VERSION)"' \ 121- -I/usr/include/android \ 122 -Iexternal/boringssl/include \ 123 -Iexternal/avb \ 124 -Isystem/core/adb \ 125@@ -49,8 +48,7 @@ CPPFLAGS += \ 126 127 LDFLAGS += \ 128 -Ldebian/out/system/core \ 129- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \ 130- -fuse-ld=gold \ 131+ -Wl,-rpath='$$ORIGIN/../lib/android' \ 132 -lbase \ 133 -lcutils \ 134 -lpthread \ 135diff --git a/debian/system/core/img2simg.mk b/debian/system/core/img2simg.mk 136index 11adf014..8baf5ba5 100644 137--- a/debian/system/core/img2simg.mk 138+++ b/debian/system/core/img2simg.mk 139@@ -11,7 +11,7 @@ CPPFLAGS += \ 140 141 LDFLAGS += \ 142 -Ldebian/out/system/core \ 143- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \ 144+ -Wl,-rpath='$$ORIGIN/../lib/android' \ 145 -lbase \ 146 -llog \ 147 -lpthread \ 148diff --git a/debian/system/core/libbacktrace.mk b/debian/system/core/libbacktrace.mk 149index e3411d76..e7dd984c 100644 150--- a/debian/system/core/libbacktrace.mk 151+++ b/debian/system/core/libbacktrace.mk 152@@ -1,4 +1,4 @@ 153-include /usr/share/dpkg/architecture.mk 154+include rules_yocto.mk 155 156 NAME = libbacktrace 157 158@@ -81,12 +81,10 @@ CPPFLAGS += \ 159 -Isystem/core/libunwindstack/include \ 160 161 LDFLAGS += \ 162- -L/usr/lib/p7zip \ 163 -Ldebian/out/system/core \ 164- -Wl,-rpath=/usr/lib/p7zip \ 165- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \ 166+ -Wl,-rpath='$$ORIGIN' \ 167 -Wl,-soname,$(NAME).so.0 \ 168- -l:7z.so \ 169+ -l7z \ 170 -lbase \ 171 -llog \ 172 -lpthread \ 173@@ -101,7 +99,7 @@ endif 174 build: $(OBJECTS_CXX) $(OBJECTS_ASSEMBLY) debian/out/external/libunwind/libunwind.a 175 mkdir -p debian/out/system/core 176 $(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS) 177- cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so 178+ cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so 179 180 $(OBJECTS_CXX): %.o: %.cpp 181 $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) 182diff --git a/debian/system/core/libbase.mk b/debian/system/core/libbase.mk 183index d2b074ba..8a90d6de 100644 184--- a/debian/system/core/libbase.mk 185+++ b/debian/system/core/libbase.mk 186@@ -1,3 +1,4 @@ 187+include rules_yocto.mk 188 NAME = libbase 189 190 SOURCES = \ 191@@ -30,7 +31,7 @@ CPPFLAGS += \ 192 193 LDFLAGS += \ 194 -Ldebian/out/system/core \ 195- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \ 196+ -Wl,-rpath='$$ORIGIN' \ 197 -Wl,-soname,$(NAME).so.0 \ 198 -llog \ 199 -lpthread \ 200@@ -44,7 +45,7 @@ endif 201 202 build: $(OBJECTS) 203 $(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS) 204- cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so 205+ cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so 206 207 $(OBJECTS): %.o: %.cpp 208 $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) 209diff --git a/debian/system/core/libcutils.mk b/debian/system/core/libcutils.mk 210index 9d928b56..c22b0965 100644 211--- a/debian/system/core/libcutils.mk 212+++ b/debian/system/core/libcutils.mk 213@@ -1,3 +1,4 @@ 214+include rules_yocto.mk 215 NAME = libcutils 216 217 libcutils_nonwindows_sources = \ 218@@ -47,7 +48,7 @@ CPPFLAGS += \ 219 220 LDFLAGS += \ 221 -Ldebian/out/system/core \ 222- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \ 223+ -Wl,-rpath='$$ORIGIN' \ 224 -Wl,-soname,$(NAME).so.0 \ 225 -lbase \ 226 -llog \ 227@@ -56,7 +57,7 @@ LDFLAGS += \ 228 229 build: $(OBJECTS_C) $(OBJECTS_CXX) 230 $(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS) 231- cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so 232+ cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so 233 234 $(OBJECTS_C): %.o: %.c 235 $(CC) -c -o $@ $< $(CFLAGS) $(CPPFLAGS) 236diff --git a/debian/system/core/liblog.mk b/debian/system/core/liblog.mk 237index f8c3d7fe..34a07341 100644 238--- a/debian/system/core/liblog.mk 239+++ b/debian/system/core/liblog.mk 240@@ -1,3 +1,4 @@ 241+include rules_yocto.mk 242 NAME = liblog 243 244 liblog_sources = \ 245@@ -35,7 +36,7 @@ LDFLAGS += \ 246 build: $(OBJECTS) 247 mkdir -p debian/out/system/core 248 $(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS) 249- cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so 250+ cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so 251 252 $(OBJECTS): %.o: %.cpp 253 $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) 254diff --git a/debian/system/core/libsparse.mk b/debian/system/core/libsparse.mk 255index c2b2694c..2da12b8e 100644 256--- a/debian/system/core/libsparse.mk 257+++ b/debian/system/core/libsparse.mk 258@@ -1,3 +1,4 @@ 259+include rules_yocto.mk 260 NAME = libsparse 261 262 SOURCES = \ 263@@ -19,7 +20,7 @@ CPPFLAGS += \ 264 265 LDFLAGS += \ 266 -Ldebian/out/system/core \ 267- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \ 268+ -Wl,-rpath='$$ORIGIN' \ 269 -Wl,-soname,$(NAME).so.0 \ 270 -lbase \ 271 -lz \ 272@@ -27,7 +28,7 @@ LDFLAGS += \ 273 274 build: $(OBJECTS) 275 $(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS) 276- cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so 277+ cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so 278 279 $(OBJECTS): %.o: %.cpp 280 $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) 281diff --git a/debian/system/core/libutils.mk b/debian/system/core/libutils.mk 282index c37b1d2d..0c748c8b 100644 283--- a/debian/system/core/libutils.mk 284+++ b/debian/system/core/libutils.mk 285@@ -1,4 +1,4 @@ 286-include /usr/share/dpkg/architecture.mk 287+include rules_yocto.mk 288 289 NAME = libutils 290 291@@ -41,7 +41,7 @@ CPPFLAGS += \ 292 293 LDFLAGS += \ 294 -Ldebian/out/system/core \ 295- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \ 296+ -Wl,-rpath='$$ORIGIN' \ 297 -Wl,-soname,$(NAME).so.0 \ 298 -lbacktrace \ 299 -lcutils \ 300diff --git a/debian/system/core/libziparchive.mk b/debian/system/core/libziparchive.mk 301index 1b286b4e..1b7499be 100644 302--- a/debian/system/core/libziparchive.mk 303+++ b/debian/system/core/libziparchive.mk 304@@ -1,3 +1,4 @@ 305+include rules_yocto.mk 306 NAME = libziparchive 307 308 SOURCES = \ 309@@ -19,7 +20,7 @@ CPPFLAGS += \ 310 311 LDFLAGS += \ 312 -Ldebian/out/system/core \ 313- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \ 314+ -Wl,-rpath='$$ORIGIN' \ 315 -Wl,-soname,$(NAME).so.0 \ 316 -lbase \ 317 -llog \ 318@@ -29,7 +30,7 @@ LDFLAGS += \ 319 320 build: $(OBJECTS) 321 $(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS) 322- cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so 323+ cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so 324 325 $(OBJECTS): %.o: %.cc 326 $(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS) 327diff --git a/debian/system/core/simg2img.mk b/debian/system/core/simg2img.mk 328index f6e3f59d..df4f44f3 100644 329--- a/debian/system/core/simg2img.mk 330+++ b/debian/system/core/simg2img.mk 331@@ -13,7 +13,7 @@ CPPFLAGS += \ 332 333 LDFLAGS += \ 334 -Ldebian/out/system/core \ 335- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \ 336+ -Wl,-rpath='$$ORIGIN/../lib/android' \ 337 -lbase \ 338 -llog \ 339 -lpthread \ 340diff --git a/debian/system/core/simg2simg.mk b/debian/system/core/simg2simg.mk 341index ed53b04c..646ab030 100644 342--- a/debian/system/core/simg2simg.mk 343+++ b/debian/system/core/simg2simg.mk 344@@ -13,7 +13,7 @@ CPPFLAGS += \ 345 346 LDFLAGS += \ 347 -Ldebian/out/system/core \ 348- -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \ 349+ -Wl,-rpath='$$ORIGIN/../lib/android' \ 350 -lbase \ 351 -llog \ 352 -lpthread \ 353diff --git a/debian/system/extras/libext4_utils.mk b/debian/system/extras/libext4_utils.mk 354index 264bb95ad36a..99125097c8e3 100644 355--- a/debian/system/extras/libext4_utils.mk 356+++ b/debian/system/extras/libext4_utils.mk 357@@ -25,7 +25,6 @@ CPPFLAGS += \ 358 -D_LARGEFILE64_SOURCE \ 359 -DFEC_NO_KLOG \ 360 -DSQUASHFS_NO_KLOG \ 361- -I/usr/include/android \ 362 -Isystem/core/base/include \ 363 -Isystem/core/libcutils/include \ 364 -Isystem/core/libsparse/include \ 365diff --git a/frameworks/native/libs/adbd_auth/adbd_auth.cpp b/frameworks/native/libs/adbd_auth/adbd_auth.cpp 366index a9c23110..6ca334ba 100644 367--- a/frameworks/native/libs/adbd_auth/adbd_auth.cpp 368+++ b/frameworks/native/libs/adbd_auth/adbd_auth.cpp 369@@ -23,8 +23,10 @@ 370 #include <sys/eventfd.h> 371 #include <sys/uio.h> 372 373+#include <atomic> 374 #include <chrono> 375 #include <deque> 376+#include <optional> 377 #include <string> 378 #include <string_view> 379 #include <tuple> 380diff --git a/system/core/adb/adb_listeners.cpp b/system/core/adb/adb_listeners.cpp 381index 29909a55..440cdbd4 100644 382--- a/system/core/adb/adb_listeners.cpp 383+++ b/system/core/adb/adb_listeners.cpp 384@@ -109,7 +109,7 @@ static void listener_event_func(int _fd, unsigned ev, void* _l) 385 } 386 387 // Called as a transport disconnect function. |arg| is the raw alistener*. 388-static void listener_disconnect(void* arg, atransport*) EXCLUDES(listener_list_mutex) { 389+static void listener_disconnect(void* arg, atransport*) { 390 std::lock_guard<std::mutex> lock(listener_list_mutex); 391 for (auto iter = listener_list.begin(); iter != listener_list.end(); ++iter) { 392 if (iter->get() == arg) { 393@@ -121,7 +121,7 @@ static void listener_disconnect(void* arg, atransport*) EXCLUDES(listener_list_m 394 } 395 396 // Write the list of current listeners (network redirections) into a string. 397-std::string format_listeners() EXCLUDES(listener_list_mutex) { 398+std::string format_listeners() { 399 std::lock_guard<std::mutex> lock(listener_list_mutex); 400 std::string result; 401 for (auto& l : listener_list) { 402@@ -140,7 +140,7 @@ std::string format_listeners() EXCLUDES(listener_list_mutex) { 403 } 404 405 InstallStatus remove_listener(const char* local_name, atransport* transport) 406- EXCLUDES(listener_list_mutex) { 407+{ 408 std::lock_guard<std::mutex> lock(listener_list_mutex); 409 for (auto iter = listener_list.begin(); iter != listener_list.end(); ++iter) { 410 if (local_name == (*iter)->local_name) { 411@@ -151,7 +151,7 @@ InstallStatus remove_listener(const char* local_name, atransport* transport) 412 return INSTALL_STATUS_LISTENER_NOT_FOUND; 413 } 414 415-void remove_all_listeners() EXCLUDES(listener_list_mutex) { 416+void remove_all_listeners() { 417 std::lock_guard<std::mutex> lock(listener_list_mutex); 418 auto iter = listener_list.begin(); 419 while (iter != listener_list.end()) { 420@@ -164,7 +164,7 @@ void remove_all_listeners() EXCLUDES(listener_list_mutex) { 421 } 422 } 423 424-void close_smartsockets() EXCLUDES(listener_list_mutex) { 425+void close_smartsockets() { 426 std::lock_guard<std::mutex> lock(listener_list_mutex); 427 auto pred = [](const std::unique_ptr<alistener>& listener) { 428 return listener->local_name == "*smartsocket*"; 429@@ -174,7 +174,7 @@ void close_smartsockets() EXCLUDES(listener_list_mutex) { 430 431 InstallStatus install_listener(const std::string& local_name, const char* connect_to, 432 atransport* transport, int no_rebind, int* resolved_tcp_port, 433- std::string* error) EXCLUDES(listener_list_mutex) { 434+ std::string* error) { 435 std::lock_guard<std::mutex> lock(listener_list_mutex); 436 for (auto& l : listener_list) { 437 if (local_name == l->local_name) { 438diff --git a/system/core/adb/transport_local.cpp b/system/core/adb/transport_local.cpp 439index c7261860..5988ec4d 100644 440--- a/system/core/adb/transport_local.cpp 441+++ b/system/core/adb/transport_local.cpp 442@@ -333,7 +333,7 @@ struct EmulatorConnection : public FdConnection { 443 444 /* Only call this function if you already hold local_transports_lock. */ 445 static atransport* find_emulator_transport_by_adb_port_locked(int adb_port) 446- REQUIRES(local_transports_lock) { 447+{ 448 auto it = local_transports.find(adb_port); 449 if (it == local_transports.end()) { 450 return nullptr; 451-- 4522.34.1 453 454