Merge "Modernize SHT_RELR support."
diff --git a/libc/Android.bp b/libc/Android.bp
index f1cca49..0950ebd 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -71,6 +71,7 @@
         fuzzer: false,
     },
     native_coverage: false,
+    ramdisk_available: true,
     recovery_available: true,
     native_bridge_supported: true,
 
@@ -1402,6 +1403,7 @@
         "libc_defaults",
         "libc_native_allocator_defaults",
     ],
+    ramdisk_available: false,
     srcs: libc_common_src_files + [
         "bionic/heap_tagging.cpp",
         "bionic/malloc_common.cpp",
@@ -1823,6 +1825,7 @@
     ],
     host_supported: true,
     vendor_available: true,
+    ramdisk_available: true,
     recovery_available: true,
     native_bridge_supported: true,
     export_include_dirs: [
@@ -1839,6 +1842,7 @@
 
     host_supported: true,
     vendor_available: true,
+    ramdisk_available: true,
     recovery_available: true,
     native_bridge_supported: true,
 
@@ -1979,6 +1983,7 @@
     name: "crt_defaults",
     defaults: ["linux_bionic_supported"],
     vendor_available: true,
+    ramdisk_available: true,
     recovery_available: true,
     native_bridge_supported: true,
 
diff --git a/libc/async_safe/Android.bp b/libc/async_safe/Android.bp
index c28d53a..7df6ab9 100644
--- a/libc/async_safe/Android.bp
+++ b/libc/async_safe/Android.bp
@@ -22,6 +22,7 @@
 
 cc_library_headers {
     name: "libasync_safe_headers",
+    ramdisk_available: true,
     recovery_available: true,
     native_bridge_supported: true,
     defaults: ["linux_bionic_supported"],
diff --git a/libc/bionic/ifaddrs.cpp b/libc/bionic/ifaddrs.cpp
index 954d43b..e21ec40 100644
--- a/libc/bionic/ifaddrs.cpp
+++ b/libc/bionic/ifaddrs.cpp
@@ -29,6 +29,7 @@
 #include <ifaddrs.h>
 
 #include <async_safe/log.h>
+#include <cutils/misc.h>           // FIRST_APPLICATION_UID
 #include <errno.h>
 #include <linux/if_packet.h>
 #include <net/if.h>
@@ -272,8 +273,16 @@
 
   // Open the netlink socket and ask for all the links and addresses.
   NetlinkConnection nc;
-  bool getlink_success =
-    nc.SendRequest(RTM_GETLINK) && nc.ReadResponses(__getifaddrs_callback, out);
+  // Simulate kernel behavior on R and above: RTM_GETLINK messages can only be
+  // sent by:
+  // - System apps
+  // - Apps with a target SDK version lower than R
+  // TODO(b/141455849): Remove this check when kernel changes are merged.
+  bool getlink_success = false;
+  if (getuid() < FIRST_APPLICATION_UID ||
+      android_get_application_target_sdk_version() < __ANDROID_API_R__) {
+    getlink_success = nc.SendRequest(RTM_GETLINK) && nc.ReadResponses(__getifaddrs_callback, out);
+  }
   bool getaddr_success =
     nc.SendRequest(RTM_GETADDR) && nc.ReadResponses(__getifaddrs_callback, out);
 
diff --git a/libdl/Android.bp b/libdl/Android.bp
index 9daa9c4..59f1937 100644
--- a/libdl/Android.bp
+++ b/libdl/Android.bp
@@ -4,6 +4,7 @@
 cc_library_static {
     name: "libdl_static",
     defaults: ["linux_bionic_supported"],
+    ramdisk_available: true,
     recovery_available: true,
     native_bridge_supported: true,
 
@@ -32,6 +33,7 @@
 
 cc_library {
     name: "libdl",
+    ramdisk_available: true,
     recovery_available: true,
     native_bridge_supported: true,
     static_ndk_lib: true,
@@ -122,6 +124,7 @@
     name: "libdl_android",
 
     defaults: ["linux_bionic_supported"],
+    ramdisk_available: true,
     recovery_available: true,
     native_bridge_supported: true,
 
diff --git a/libm/Android.bp b/libm/Android.bp
index 801129a..d4cdd7b 100644
--- a/libm/Android.bp
+++ b/libm/Android.bp
@@ -6,6 +6,7 @@
 cc_library {
     name: "libm",
     defaults: ["linux_bionic_supported"],
+    ramdisk_available: true,
     recovery_available: true,
     static_ndk_lib: true,
 
diff --git a/linker/Android.bp b/linker/Android.bp
index acdf094..e21ee60 100644
--- a/linker/Android.bp
+++ b/linker/Android.bp
@@ -425,6 +425,7 @@
 
     name: "ld-android",
     defaults: ["linux_bionic_supported", "linker_version_script_overlay"],
+    ramdisk_available: true,
     recovery_available: true,
     native_bridge_supported: true,
 
diff --git a/tests/fenv_test.cpp b/tests/fenv_test.cpp
index d27808f..e983a1c 100644
--- a/tests/fenv_test.cpp
+++ b/tests/fenv_test.cpp
@@ -27,7 +27,7 @@
   volatile float m = 0x1.0p23f;
   volatile float x = f + m;
   ASSERT_FLOAT_EQ(expectation1, x);
-  x -= m;
+  x = x - m;
   ASSERT_EQ(expectation2, x);
 }