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 2b10396c40e..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 @@ -17,7 +17,7 @@ "Size": 5757272 }, "lib/arm64-v8a/libmonodroid.so": { - "Size": 1325936 + "Size": 1257880 }, "lib/arm64-v8a/libSystem.Globalization.Native.so": { "Size": 72344 @@ -59,5 +59,5 @@ "Size": 1904 } }, - "PackageSize": 7906747 -} \ 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 e52624832a1..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 @@ -41,7 +41,7 @@ "Size": 5757272 }, "lib/arm64-v8a/libmonodroid.so": { - "Size": 1325808 + "Size": 1257880 }, "lib/arm64-v8a/libSystem.Globalization.Native.so": { "Size": 72344 @@ -56,7 +56,7 @@ "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": 21179981 + "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 043500537a1..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 @@ -35,91 +35,91 @@ "Size": 25360 }, "lib/arm64-v8a/lib_Java.Interop.dll.so": { - "Size": 96344 + "Size": 96576 }, "lib/arm64-v8a/lib_Mono.Android.dll.so": { - "Size": 542848 + "Size": 542312 }, "lib/arm64-v8a/lib_Mono.Android.Runtime.dll.so": { - "Size": 26848 + "Size": 26816 }, "lib/arm64-v8a/lib_mscorlib.dll.so": { "Size": 21408 }, "lib/arm64-v8a/lib_netstandard.dll.so": { - "Size": 23048 + "Size": 23056 }, "lib/arm64-v8a/lib_System.Collections.dll.so": { - "Size": 33944 + "Size": 33952 }, "lib/arm64-v8a/lib_System.Collections.NonGeneric.dll.so": { - "Size": 25608 + "Size": 25624 }, "lib/arm64-v8a/lib_System.Collections.Specialized.dll.so": { - "Size": 23800 + "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 }, "lib/arm64-v8a/lib_System.ComponentModel.TypeConverter.dll.so": { - "Size": 43600 + "Size": 43608 }, "lib/arm64-v8a/lib_System.Console.dll.so": { - "Size": 24392 + "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": 30016 + "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": 29536 + "Size": 29552 }, "lib/arm64-v8a/lib_System.IO.Compression.dll.so": { - "Size": 34600 + "Size": 34616 }, "lib/arm64-v8a/lib_System.IO.IsolatedStorage.dll.so": { - "Size": 28232 + "Size": 28240 }, "lib/arm64-v8a/lib_System.Linq.dll.so": { - "Size": 47912 + "Size": 47920 }, "lib/arm64-v8a/lib_System.Linq.Expressions.dll.so": { - "Size": 185968 + "Size": 185976 }, "lib/arm64-v8a/lib_System.Net.Http.dll.so": { - "Size": 86680 + "Size": 86688 }, "lib/arm64-v8a/lib_System.Net.Primitives.dll.so": { - "Size": 42280 + "Size": 42288 }, "lib/arm64-v8a/lib_System.Net.Requests.dll.so": { - "Size": 21520 + "Size": 21528 }, "lib/arm64-v8a/lib_System.ObjectModel.dll.so": { - "Size": 26968 + "Size": 26984 }, "lib/arm64-v8a/lib_System.Private.CoreLib.dll.so": { - "Size": 999864 + "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": 62216 @@ -128,25 +128,25 @@ "Size": 236968 }, "lib/arm64-v8a/lib_System.Private.Xml.Linq.dll.so": { - "Size": 35464 + "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": 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": 20296 + "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": 82024 @@ -155,10 +155,10 @@ "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": 22040 @@ -239,10 +239,10 @@ "Size": 36416 }, "lib/arm64-v8a/libmonodroid.so": { - "Size": 1385800 + "Size": 1274176 }, "lib/arm64-v8a/libmonosgen-2.0.so": { - "Size": 3111840 + "Size": 3111632 }, "lib/arm64-v8a/libSystem.Globalization.Native.so": { "Size": 72344 @@ -257,7 +257,7 @@ "Size": 162000 }, "lib/arm64-v8a/libxamarin-app.so": { - "Size": 350616 + "Size": 350432 }, "META-INF/androidx.activity_activity.version": { "Size": 6 @@ -2435,5 +2435,5 @@ "Size": 794696 } }, - "PackageSize": 11024231 + "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"))