Add -faddrsig to ClangExtraCflags
Emit address-significance table which allows linker to perform safe ICF.
Clang does not emit the table by default on Android since NDK still uses
GNU binutils.
With the flag, binary size is decreased. For Marlin:
-fno-addrsig -faddrsig diff
/system/bin 28012K 27108K -3.33%
/system/lib 88220K 86964K -1.44%
/system/lib64 151936K 148108K -2.58%
Test: m checkbuild
Bug: 128940110
Change-Id: I99511f038a6d4b88b5c849a0f8943c24731ab6ea
(cherry picked from commit a32b5e6a6bcf3d4c8120401f39cbeffd5efb7656)
diff --git a/cc/config/clang.go b/cc/config/clang.go
index 0a295e1..70a0774 100644
--- a/cc/config/clang.go
+++ b/cc/config/clang.go
@@ -97,6 +97,10 @@
pctx.StaticVariable("ClangExtraCflags", strings.Join([]string{
"-D__compiler_offsetof=__builtin_offsetof",
+ // Emit address-significance table which allows linker to perform safe ICF. Clang does
+ // not emit the table by default on Android since NDK still uses GNU binutils.
+ "-faddrsig",
+
// -Wimplicit-fallthrough is not enabled by -Wall.
"-Wimplicit-fallthrough",