Merge tag 'android-15.0.0_r6' of https://android.googlesource.com/platform/bionic into HEAD

Android 15.0.0 Release 6 (AP4A.241205.013)

Change-Id: I66ab1df891f482fd01c6fd584dcb36db77851c1b
diff --git a/libc/Android.bp b/libc/Android.bp
index eeea728..8241d45 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -87,15 +87,36 @@
     recovery_available: true,
     native_bridge_supported: true,
 
-    product_variables: {
-        malloc_zero_contents: {
-            cflags: ["-DSCUDO_ZERO_CONTENTS"],
+    // lld complains about duplicate symbols in libcrt and libgcc. Suppress the
+    // warning since this is intended right now.
+    ldflags: ["-Wl,-z,muldefs"],
+
+    multilib: {
+        lib64: {
+            product_variables: {
+                malloc_zero_contents: {
+                    cflags: ["-DSCUDO_ZERO_CONTENTS"],
+                },
+                malloc_pattern_fill_contents: {
+                    cflags: ["-DSCUDO_PATTERN_FILL_CONTENTS"],
+                },
+                malloc_low_memory: {
+                    cflags: ["-UUSE_SCUDO"],
+                },
+            },
         },
-        malloc_pattern_fill_contents: {
-            cflags: ["-DSCUDO_PATTERN_FILL_CONTENTS"],
-        },
-        malloc_low_memory: {
-            cflags: ["-UUSE_SCUDO"],
+        lib32: {
+            product_variables: {
+                malloc_zero_contents: {
+                    cflags: ["-DSCUDO_ZERO_CONTENTS"],
+                },
+                malloc_pattern_fill_contents: {
+                    cflags: ["-DSCUDO_PATTERN_FILL_CONTENTS"],
+                },
+                malloc_low_memory_libc32: {
+                    cflags: ["-UUSE_SCUDO"],
+                },
+            },
         },
     },
 
@@ -180,17 +201,35 @@
         "-DUSE_SCUDO",
     ],
     header_libs: ["gwp_asan_headers"],
-    product_variables: {
-        malloc_low_memory: {
-            cflags: ["-UUSE_SCUDO"],
-            whole_static_libs: [
-                "libjemalloc5",
-                "libc_jemalloc_wrapper",
-            ],
-            exclude_static_libs: [
-                "libscudo",
-            ],
+    multilib: {
+        lib64: {
+            product_variables: {
+                malloc_low_memory: {
+                    cflags: ["-UUSE_SCUDO"],
+                    whole_static_libs: [
+                        "libjemalloc5",
+                        "libc_jemalloc_wrapper",
+                    ],
+                    exclude_static_libs: [
+                        "libscudo",
+                    ],
+                },
+            },
         },
+        lib32: {
+            product_variables: {
+                malloc_low_memory_libc32: {
+                    cflags: ["-UUSE_SCUDO"],
+                    whole_static_libs: [
+                        "libjemalloc5",
+                        "libc_jemalloc_wrapper",
+                    ],
+                    exclude_static_libs: [
+                        "libscudo",
+                    ],
+                },
+            },
+        }
     },
 }
 
@@ -1890,7 +1929,7 @@
 // libstdc++.so and libstdc++.a.
 // ========================================================
 
-cc_library {
+cc_defaults {
     defaults: [
         "libc_defaults",
         "bug_24465209_workaround",
@@ -1901,7 +1940,7 @@
         "bionic/__cxa_pure_virtual.cpp",
         "bionic/new.cpp",
     ],
-    name: "libstdc++",
+    name: "libstdc++_defaults",
     static_ndk_lib: true,
     static_libs: ["libasync_safe"],
     apex_available: [
@@ -1938,6 +1977,17 @@
     },
 }
 
+cc_library {
+    name: "libstdc++",
+    defaults: ["libstdc++_defaults"],
+}
+
+cc_library_shared {
+    name: "libstdc++_vendor",
+    defaults: ["libstdc++_defaults"],
+    vendor: true,
+}
+
 genrule {
     name: "libstdc++.arm.map",
     out: ["libstdc++.arm.map.txt"],