Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b5778c1f authored by Josh Gao's avatar Josh Gao
Browse files

adbd: remove static dependency on libcutils.

We were previously statically linking libcutils into adbd for several
different reasons, which were addressed as follows:

  socket functions: extracted to a statically linked libcutils_network
  fs_config: wrapped with a shared library on /system
  ATRACE: deleted the single use in adbd

Bug: http://b/150032044
Test: treehugger
Change-Id: I821fa174cfcbfa8e29a4be10de4016b817adbaf8
Merged-In: I821fa174cfcbfa8e29a4be10de4016b817adbaf8
(cherry picked from commit a9b62d54)
parent 15c7a3f8
Loading
Loading
Loading
Loading
+17 −68
Original line number Diff line number Diff line
@@ -114,66 +114,6 @@ cc_defaults {
    },
}

// libadbconnection
// =========================================================
// libadbconnection_client/server implement the socket handling for jdwp
// forwarding and the track-jdwp service.
cc_library {
    name: "libadbconnection_server",
    srcs: ["adbconnection/adbconnection_server.cpp"],

    export_include_dirs: ["adbconnection/include"],

    stl: "libc++_static",
    shared_libs: ["liblog"],
    static_libs: ["libbase"],

    defaults: ["adbd_defaults", "host_adbd_supported"],

    // Avoid getting duplicate symbol of android::build::getbuildnumber().
    use_version_lib: false,

    recovery_available: true,
    compile_multilib: "both",
}

cc_library {
    name: "libadbconnection_client",
    srcs: ["adbconnection/adbconnection_client.cpp"],

    export_include_dirs: ["adbconnection/include"],

    stl: "libc++_static",
    shared_libs: ["liblog"],
    static_libs: ["libbase"],

    defaults: ["adbd_defaults"],
    visibility: [
        "//art:__subpackages__",
        "//system/core/adb/apex:__subpackages__",
    ],
    apex_available: [
        "com.android.adbd",
        "test_com.android.adbd",
    ],

    // libadbconnection_client doesn't need an embedded build number.
    use_version_lib: false,

    target: {
        linux: {
            version_script: "adbconnection/libadbconnection_client.map.txt",
        },
    },
    stubs: {
        symbol_file: "adbconnection/libadbconnection_client.map.txt",
        versions: ["1"],
    },

    host_supported: true,
    compile_multilib: "both",
}

// libadb
// =========================================================
// These files are compiled for both the host and the device.
@@ -459,7 +399,6 @@ cc_library_static {
        "libbase",
        "libcrypto",
        "libcrypto_utils",
        "libcutils",
        "liblog",
    ],

@@ -483,7 +422,7 @@ cc_library_static {
    },
}

cc_library {
cc_library_static {
    name: "libadbd_services",
    defaults: ["adbd_defaults", "host_adbd_supported"],
    recovery_available: true,
@@ -513,11 +452,11 @@ cc_library {
        "libadb_protos",
        "libadb_tls_connection",
        "libadbd_auth",
        "libadbd_fs",
        "libasyncio",
        "libbase",
        "libcrypto",
        "libcrypto_utils",
        "libcutils",
        "liblog",
    ],

@@ -564,13 +503,19 @@ cc_library {
        "libadb_pairing_connection",
        "libadb_tls_connection",
        "libadbd_auth",
        "libadbd_services",
        "libadbd_fs",
        "libasyncio",
        "libbase",
        "libcrypto",
        "libcrypto_utils",
        "libcutils",
        "liblog",
        "libselinux",
    ],

    static_libs: [
        "libadbd_services",
        "libcutils_sockets",
        "libdiagnose_usb",
    ],

    export_include_dirs: [
@@ -605,7 +550,7 @@ cc_binary {
        "libbase",
        "libcap",
        "libcrypto_utils",
        "libcutils",
        "libcutils_sockets",
        "libdiagnose_usb",
        "liblog",
        "libmdnssd",
@@ -620,10 +565,14 @@ cc_binary {
        "libadb_protos",
        "libadb_tls_connection",
        "libadbd_auth",
        "libadbd_fs",
        "libcrypto",
    ],

    required: ["libadbd_auth"],
    required: [
        "libadbd_auth",
        "libadbd_fs",
    ],
}

phony {
@@ -699,9 +648,9 @@ cc_test {
        "libadb_pairing_connection_static",
        "libadb_tls_connection_static",
        "libbase",
        "libcutils",
        "libcrypto_utils",
        "libcrypto_static",
        "libcutils_sockets",
        "libdiagnose_usb",
        "liblog",
        "libusb",
+0 −7
Original line number Diff line number Diff line
@@ -59,11 +59,4 @@ extern int adb_trace_mask;
void adb_trace_init(char**);
void adb_trace_enable(AdbTrace trace_tag);

// Include <atomic> before stdatomic.h (introduced in cutils/trace.h) to avoid compile error.
#include <atomic>

#define ATRACE_TAG ATRACE_TAG_ADB
#include <cutils/trace.h>
#include <utils/Trace.h>

#endif /* __ADB_TRACE_H */
+1 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
#include "adb_install.h"

#include <fcntl.h>
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
+1 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@

#include <android-base/endian.h>
#include <android-base/strings.h>
#include <inttypes.h>
#include <lz4.h>
#include <stdio.h>
#include <stdlib.h>
+7 −9
Original line number Diff line number Diff line
@@ -40,10 +40,13 @@
#include <android-base/stringprintf.h>
#include <android-base/strings.h>

#include <private/android_filesystem_config.h>
#include <adbd_fs.h>

// Needed for __android_log_security_bswrite.
#include <private/android_logger.h>

#if defined(__ANDROID__)
#include <linux/capability.h>
#include <selinux/android.h>
#include <sys/xattr.h>
#endif
@@ -98,7 +101,7 @@ static bool secure_mkdirs(const std::string& path) {
    for (const auto& path_component : path_components) {
        uid_t uid = -1;
        gid_t gid = -1;
        unsigned int mode = 0775;
        mode_t mode = 0775;
        uint64_t capabilities = 0;

        if (path_component.empty()) {
@@ -111,7 +114,7 @@ static bool secure_mkdirs(const std::string& path) {
        partial_path += path_component;

        if (should_use_fs_config(partial_path)) {
            fs_config(partial_path.c_str(), 1, nullptr, &uid, &gid, &mode, &capabilities);
            adbd_fs_config(partial_path.c_str(), 1, nullptr, &uid, &gid, &mode, &capabilities);
        }
        if (adb_mkdir(partial_path.c_str(), mode) == -1) {
            if (errno != EEXIST) {
@@ -468,9 +471,7 @@ static bool do_send(int s, const std::string& spec, std::vector<char>& buffer) {
        gid_t gid = -1;
        uint64_t capabilities = 0;
        if (should_use_fs_config(path)) {
            unsigned int broken_api_hack = mode;
            fs_config(path.c_str(), 0, nullptr, &uid, &gid, &broken_api_hack, &capabilities);
            mode = broken_api_hack;
            adbd_fs_config(path.c_str(), 0, nullptr, &uid, &gid, &mode, &capabilities);
        }

        result = handle_send_file(s, path.c_str(), &timestamp, uid, gid, capabilities, mode, buffer,
@@ -550,7 +551,6 @@ static const char* sync_id_to_name(uint32_t id) {
static bool handle_sync_command(int fd, std::vector<char>& buffer) {
    D("sync: waiting for request");

    ATRACE_CALL();
    SyncRequest request;
    if (!ReadFdExactly(fd, &request, sizeof(request))) {
        SendSyncFail(fd, "command read failure");
@@ -569,8 +569,6 @@ static bool handle_sync_command(int fd, std::vector<char>& buffer) {
    name[path_length] = 0;

    std::string id_name = sync_id_to_name(request.id);
    std::string trace_name = StringPrintf("%s(%s)", id_name.c_str(), name);
    ATRACE_NAME(trace_name.c_str());

    D("sync: %s('%s')", id_name.c_str(), name);
    switch (request.id) {
Loading