Merge "SYSCALLS.TXT: improve the docs." into main
diff --git a/libc/Android.bp b/libc/Android.bp
index 7b902dc..b5ff680 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -2703,6 +2703,7 @@
},
}
+// TODO: add this directly to musl like libexecinfo and libb64?
cc_library_host_static {
name: "libfts",
srcs: [
@@ -2715,6 +2716,7 @@
"upstream-openbsd/android/include",
],
cflags: [
+ "-std=gnu99",
"-include openbsd-compat.h",
"-Wno-unused-parameter",
],
@@ -2754,6 +2756,7 @@
"upstream-openbsd/android/include",
],
cflags: [
+ "-std=gnu99",
"-include openbsd-compat.h",
],
enabled: false,
diff --git a/linker/Android.bp b/linker/Android.bp
index 8300f01..ea4e699 100644
--- a/linker/Android.bp
+++ b/linker/Android.bp
@@ -76,14 +76,6 @@
// Configuration for the linker binary and any of its static libraries.
cc_defaults {
name: "linker_defaults",
- arch: {
- arm: {
- cflags: ["-D__work_around_b_24465209__"],
- },
- x86: {
- cflags: ["-D__work_around_b_24465209__"],
- },
- },
cflags: linker_common_flags,
asflags: linker_common_flags,
diff --git a/linker/dlfcn.cpp b/linker/dlfcn.cpp
index f811d6d..fc95903 100644
--- a/linker/dlfcn.cpp
+++ b/linker/dlfcn.cpp
@@ -345,7 +345,7 @@
__libdl_info->soname_ = linker_si.soname_;
__libdl_info->target_sdk_version_ = __ANDROID_API__;
__libdl_info->generate_handle();
-#if defined(__work_around_b_24465209__)
+#if !defined(__LP64__)
strlcpy(__libdl_info->old_name_, __libdl_info->soname_.c_str(),
sizeof(__libdl_info->old_name_));
#endif
diff --git a/linker/linker_soinfo.cpp b/linker/linker_soinfo.cpp
index b626313..27a5237 100644
--- a/linker/linker_soinfo.cpp
+++ b/linker/linker_soinfo.cpp
@@ -629,47 +629,47 @@
}
void soinfo::set_realpath(const char* path) {
-#if defined(__work_around_b_24465209__)
+#if defined(__LP64__)
+ realpath_ = path;
+#else
if (has_min_version(2)) {
realpath_ = path;
}
-#else
- realpath_ = path;
#endif
}
const char* soinfo::get_realpath() const {
-#if defined(__work_around_b_24465209__)
+#if defined(__LP64__)
+ return realpath_.c_str();
+#else
if (has_min_version(2)) {
return realpath_.c_str();
} else {
return old_name_;
}
-#else
- return realpath_.c_str();
#endif
}
void soinfo::set_soname(const char* soname) {
-#if defined(__work_around_b_24465209__)
+#if defined(__LP64__)
+ soname_ = soname;
+#else
if (has_min_version(2)) {
soname_ = soname;
}
strlcpy(old_name_, soname_.c_str(), sizeof(old_name_));
-#else
- soname_ = soname;
#endif
}
const char* soinfo::get_soname() const {
-#if defined(__work_around_b_24465209__)
+#if defined(__LP64__)
+ return soname_.c_str();
+#else
if (has_min_version(2)) {
return soname_.c_str();
} else {
return old_name_;
}
-#else
- return soname_.c_str();
#endif
}
diff --git a/linker/linker_soinfo.h b/linker/linker_soinfo.h
index 37cee50..3416221 100644
--- a/linker/linker_soinfo.h
+++ b/linker/linker_soinfo.h
@@ -154,31 +154,31 @@
size_t module_id = kTlsUninitializedModuleId;
};
-#if defined(__work_around_b_24465209__)
+#if !defined(__LP64__)
#define SOINFO_NAME_LEN 128
#endif
struct soinfo {
-#if defined(__work_around_b_24465209__)
+#if !defined(__LP64__)
private:
char old_name_[SOINFO_NAME_LEN];
#endif
public:
const ElfW(Phdr)* phdr;
size_t phnum;
-#if defined(__work_around_b_24465209__)
+#if !defined(__LP64__)
ElfW(Addr) unused0; // DO NOT USE, maintained for compatibility.
#endif
ElfW(Addr) base;
size_t size;
-#if defined(__work_around_b_24465209__)
+#if !defined(__LP64__)
uint32_t unused1; // DO NOT USE, maintained for compatibility.
#endif
ElfW(Dyn)* dynamic;
-#if defined(__work_around_b_24465209__)
+#if !defined(__LP64__)
uint32_t unused2; // DO NOT USE, maintained for compatibility
uint32_t unused3; // DO NOT USE, maintained for compatibility
#endif
@@ -294,14 +294,12 @@
bool can_unload() const;
bool is_gnu_hash() const;
+ // TODO: rename this to make it clearer it's always true for LP64.
bool inline has_min_version(uint32_t min_version __unused) const {
-#if defined(__work_around_b_24465209__)
- return (flags_ & FLAG_NEW_SOINFO) != 0 && version_ >= min_version;
-#else
- // If you make this return non-true in the case where
- // __work_around_b_24465209__ is not defined, you will have to change
- // memtag_dynamic_entries() and vma_names().
+#if defined(__LP64__)
return true;
+#else
+ return (flags_ & FLAG_NEW_SOINFO) != 0 && version_ >= min_version;
#endif
}
@@ -362,13 +360,11 @@
size_t get_gap_size() const;
const memtag_dynamic_entries_t* memtag_dynamic_entries() const {
-#ifdef __aarch64__
-#ifdef __work_around_b_24465209__
-#error "Assuming aarch64 does not use versioned soinfo."
-#endif
+#if defined(__aarch64__)
return &memtag_dynamic_entries_;
-#endif
+#else
return nullptr;
+#endif
}
void* memtag_globals() const {
const memtag_dynamic_entries_t* entries = memtag_dynamic_entries();
@@ -403,13 +399,11 @@
return !is_linker() && memtag_globals() && memtag_globalssz() > 0 && __libc_mte_enabled();
}
std::list<std::string>* vma_names() {
-#ifdef __aarch64__
-#ifdef __work_around_b_24465209__
-#error "Assuming aarch64 does not use versioned soinfo."
-#endif
+#if defined(__aarch64__)
return &vma_names_;
-#endif
+#else
return nullptr;
+#endif
};
void set_should_use_16kib_app_compat(bool should_use_16kib_app_compat) {