diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.CoreCLR.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.CoreCLR.apkdesc index a00fd898add..4fbd346d258 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.CoreCLR.apkdesc +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.CoreCLR.apkdesc @@ -8,31 +8,31 @@ "Size": 402352 }, "lib/arm64-v8a/libassembly-store.so": { - "Size": 3229120 + "Size": 3440928 }, "lib/arm64-v8a/libclrjit.so": { - "Size": 2835128 + "Size": 3222704 }, "lib/arm64-v8a/libcoreclr.so": { - "Size": 4891056 + "Size": 5757272 }, "lib/arm64-v8a/libmonodroid.so": { - "Size": 1324320 + "Size": 1257880 }, "lib/arm64-v8a/libSystem.Globalization.Native.so": { - "Size": 72112 + "Size": 72344 }, "lib/arm64-v8a/libSystem.IO.Compression.Native.so": { - "Size": 1262888 + "Size": 1280336 }, "lib/arm64-v8a/libSystem.Native.so": { - "Size": 101888 + "Size": 101872 }, "lib/arm64-v8a/libSystem.Security.Cryptography.Native.Android.so": { - "Size": 168080 + "Size": 162000 }, "lib/arm64-v8a/libxamarin-app.so": { - "Size": 20984 + "Size": 20776 }, "res/drawable-hdpi-v4/icon.png": { "Size": 2178 @@ -59,5 +59,5 @@ "Size": 1904 } }, - "PackageSize": 7312827 -} \ No newline at end of file + "PackageSize": 7838691 +} diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.MonoVM.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.MonoVM.apkdesc index 588ab6f17a5..4390364cd09 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.MonoVM.apkdesc +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.MonoVM.apkdesc @@ -44,7 +44,7 @@ "Size": 36416 }, "lib/arm64-v8a/libmonodroid.so": { - "Size": 1387064 + "Size": 1274176 }, "lib/arm64-v8a/libmonosgen-2.0.so": { "Size": 3111632 @@ -62,7 +62,7 @@ "Size": 162000 }, "lib/arm64-v8a/libxamarin-app.so": { - "Size": 19680 + "Size": 19648 }, "res/drawable-hdpi-v4/icon.png": { "Size": 2178 @@ -89,5 +89,5 @@ "Size": 1904 } }, - "PackageSize": 3320142 + "PackageSize": 3207222 } \ No newline at end of file diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.CoreCLR.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.CoreCLR.apkdesc index f156471b0da..c33cd0faa7a 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.CoreCLR.apkdesc +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.CoreCLR.apkdesc @@ -32,31 +32,31 @@ "Size": 2396 }, "lib/arm64-v8a/libassembly-store.so": { - "Size": 14137920 + "Size": 14107192 }, "lib/arm64-v8a/libclrjit.so": { - "Size": 2804464 + "Size": 3222704 }, "lib/arm64-v8a/libcoreclr.so": { - "Size": 4872088 + "Size": 5757272 }, "lib/arm64-v8a/libmonodroid.so": { - "Size": 1325808 + "Size": 1257880 }, "lib/arm64-v8a/libSystem.Globalization.Native.so": { - "Size": 72112 + "Size": 72344 }, "lib/arm64-v8a/libSystem.IO.Compression.Native.so": { - "Size": 1262888 + "Size": 1280336 }, "lib/arm64-v8a/libSystem.Native.so": { - "Size": 101888 + "Size": 101872 }, "lib/arm64-v8a/libSystem.Security.Cryptography.Native.Android.so": { - "Size": 168080 + "Size": 162000 }, "lib/arm64-v8a/libxamarin-app.so": { - "Size": 147616 + "Size": 147584 }, "META-INF/androidx.activity_activity.version": { "Size": 6 @@ -2234,5 +2234,5 @@ "Size": 794696 } }, - "PackageSize": 20778573 + "PackageSize": 21112005 } \ No newline at end of file diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.MonoVM.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.MonoVM.apkdesc index f0d9684ace8..dcfb32b8f5c 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.MonoVM.apkdesc +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.MonoVM.apkdesc @@ -5,7 +5,7 @@ "Size": 6652 }, "classes.dex": { - "Size": 9119852 + "Size": 9122408 }, "kotlin/annotation/annotation.kotlin_builtins": { "Size": 928 @@ -35,31 +35,31 @@ "Size": 25360 }, "lib/arm64-v8a/lib_Java.Interop.dll.so": { - "Size": 101872 + "Size": 96576 }, "lib/arm64-v8a/lib_Mono.Android.dll.so": { - "Size": 545344 + "Size": 542312 }, "lib/arm64-v8a/lib_Mono.Android.Runtime.dll.so": { - "Size": 26864 + "Size": 26816 }, "lib/arm64-v8a/lib_mscorlib.dll.so": { - "Size": 21400 + "Size": 21408 }, "lib/arm64-v8a/lib_netstandard.dll.so": { - "Size": 23048 + "Size": 23056 }, "lib/arm64-v8a/lib_System.Collections.dll.so": { "Size": 33952 }, "lib/arm64-v8a/lib_System.Collections.NonGeneric.dll.so": { - "Size": 25616 + "Size": 25624 }, "lib/arm64-v8a/lib_System.Collections.Specialized.dll.so": { - "Size": 23808 + "Size": 23816 }, "lib/arm64-v8a/lib_System.ComponentModel.dll.so": { - "Size": 19560 + "Size": 19568 }, "lib/arm64-v8a/lib_System.ComponentModel.Primitives.dll.so": { "Size": 21296 @@ -71,28 +71,28 @@ "Size": 24400 }, "lib/arm64-v8a/lib_System.Core.dll.so": { - "Size": 19424 + "Size": 19432 }, "lib/arm64-v8a/lib_System.Diagnostics.TraceSource.dll.so": { - "Size": 24584 + "Size": 24592 }, "lib/arm64-v8a/lib_System.dll.so": { - "Size": 19784 + "Size": 19792 }, "lib/arm64-v8a/lib_System.Drawing.dll.so": { "Size": 19400 }, "lib/arm64-v8a/lib_System.Drawing.Primitives.dll.so": { - "Size": 30024 + "Size": 30032 }, "lib/arm64-v8a/lib_System.Formats.Asn1.dll.so": { - "Size": 50968 + "Size": 50976 }, "lib/arm64-v8a/lib_System.IO.Compression.Brotli.dll.so": { "Size": 29552 }, "lib/arm64-v8a/lib_System.IO.Compression.dll.so": { - "Size": 34680 + "Size": 34616 }, "lib/arm64-v8a/lib_System.IO.IsolatedStorage.dll.so": { "Size": 28240 @@ -101,10 +101,10 @@ "Size": 47920 }, "lib/arm64-v8a/lib_System.Linq.Expressions.dll.so": { - "Size": 186080 + "Size": 185976 }, "lib/arm64-v8a/lib_System.Net.Http.dll.so": { - "Size": 86736 + "Size": 86688 }, "lib/arm64-v8a/lib_System.Net.Primitives.dll.so": { "Size": 42288 @@ -113,55 +113,55 @@ "Size": 21528 }, "lib/arm64-v8a/lib_System.ObjectModel.dll.so": { - "Size": 26976 + "Size": 26984 }, "lib/arm64-v8a/lib_System.Private.CoreLib.dll.so": { - "Size": 1003920 + "Size": 1000432 }, "lib/arm64-v8a/lib_System.Private.DataContractSerialization.dll.so": { - "Size": 217808 + "Size": 217816 }, "lib/arm64-v8a/lib_System.Private.Uri.dll.so": { - "Size": 62240 + "Size": 62216 }, "lib/arm64-v8a/lib_System.Private.Xml.dll.so": { "Size": 236968 }, "lib/arm64-v8a/lib_System.Private.Xml.Linq.dll.so": { - "Size": 35472 + "Size": 35480 }, "lib/arm64-v8a/lib_System.Runtime.dll.so": { - "Size": 20352 + "Size": 20360 }, "lib/arm64-v8a/lib_System.Runtime.InteropServices.dll.so": { - "Size": 19752 + "Size": 19760 }, "lib/arm64-v8a/lib_System.Runtime.Numerics.dll.so": { - "Size": 63456 + "Size": 63312 }, "lib/arm64-v8a/lib_System.Runtime.Serialization.dll.so": { - "Size": 19328 + "Size": 19336 }, "lib/arm64-v8a/lib_System.Runtime.Serialization.Formatters.dll.so": { "Size": 20304 }, "lib/arm64-v8a/lib_System.Runtime.Serialization.Primitives.dll.so": { - "Size": 21424 + "Size": 21432 }, "lib/arm64-v8a/lib_System.Security.Cryptography.dll.so": { - "Size": 82048 + "Size": 82024 }, "lib/arm64-v8a/lib_System.Text.RegularExpressions.dll.so": { - "Size": 194288 + "Size": 194176 }, "lib/arm64-v8a/lib_System.Xml.dll.so": { - "Size": 19216 + "Size": 19224 }, "lib/arm64-v8a/lib_System.Xml.Linq.dll.so": { - "Size": 19240 + "Size": 19248 }, "lib/arm64-v8a/lib_UnnamedProject.dll.so": { - "Size": 22048 + "Size": 22040 }, "lib/arm64-v8a/lib_Xamarin.AndroidX.Activity.dll.so": { "Size": 34896 @@ -239,25 +239,25 @@ "Size": 36416 }, "lib/arm64-v8a/libmonodroid.so": { - "Size": 1387008 + "Size": 1274176 }, "lib/arm64-v8a/libmonosgen-2.0.so": { - "Size": 3111712 + "Size": 3111632 }, "lib/arm64-v8a/libSystem.Globalization.Native.so": { - "Size": 72112 + "Size": 72344 }, "lib/arm64-v8a/libSystem.IO.Compression.Native.so": { - "Size": 1262888 + "Size": 1280336 }, "lib/arm64-v8a/libSystem.Native.so": { - "Size": 101888 + "Size": 101872 }, "lib/arm64-v8a/libSystem.Security.Cryptography.Native.Android.so": { - "Size": 168080 + "Size": 162000 }, "lib/arm64-v8a/libxamarin-app.so": { - "Size": 350464 + "Size": 350432 }, "META-INF/androidx.activity_activity.version": { "Size": 6 @@ -2435,5 +2435,5 @@ "Size": 794696 } }, - "PackageSize": 11032423 + "PackageSize": 10983271 } \ No newline at end of file diff --git a/src/native/CMakeLists.txt b/src/native/CMakeLists.txt index ba9267c5623..e3cab3ddd0d 100644 --- a/src/native/CMakeLists.txt +++ b/src/native/CMakeLists.txt @@ -463,8 +463,8 @@ set(POTENTIAL_COMMON_COMPILER_ARGS -fstack-protector-strong -fstrict-return -fno-strict-aliasing - -fno-function-sections - -fno-data-sections + -ffunction-sections + -fdata-sections -fno-dwarf-exceptions -fno-asynchronous-unwind-tables -funswitch-loops @@ -495,6 +495,12 @@ set(POTENTIAL_COMMON_LINKER_ARGS LINKER:--no-eh-frame-hdr ) +if(NOT DEBUG_BUILD AND NOT ENABLE_CLANG_ASAN AND NOT ENABLE_CLANG_UBSAN) + list(APPEND POTENTIAL_COMMON_LINKER_ARGS + LINKER:--gc-sections + ) +endif() + # Add some options to increase security. They may mildly affect performance but they won't be big, because the features are # assisted by the hardware. if((CMAKE_ANDROID_ARCH_ABI STREQUAL "x86") OR (CMAKE_ANDROID_ARCH_ABI STREQUAL "x86_64"))