[i386][musl] Add cpuinfo to static libgcc only on *-musl*
authorSzabolcs Nagy <szabolcs.nagy@arm.com>
Fri, 11 Nov 2016 17:31:07 +0000 (17:31 +0000)
committerSzabolcs Nagy <nsz@gcc.gnu.org>
Fri, 11 Nov 2016 17:31:07 +0000 (17:31 +0000)
The __cpu_indicator_init and __cpu_model symbols are not safe to use
from shared libgcc_s.so from ifunc resolvers, so since gcc-6, only
the definitions from static libgcc.a are used, however the symbols
are kept in libgcc_s as well for backward compatibility (with
appropriate symbol version).  On targets without such backward
compatibility concern add cpuinfo to the static library only (this
avoids running the ctor, reduces libgcc_s size and elf abi concerns
about the versioned symbols).

libgcc/
2016-11-11  Szabolcs Nagy  <szabolcs.nagy@arm.com>

* config.host (i[3456]86-*-musl*, x86_64-*-musl*): Use
i386/t-cpuinfo-static instead of i386/t-cpuinfo.
* config/i386/t-cpuinfo-static: New.

From-SVN: r242268

libgcc/ChangeLog
libgcc/config.host
libgcc/config/i386/t-cpuinfo-static [new file with mode: 0644]

index e3a81f6b0261249149ba6cf75acb421a6dfdc891..f682e570f2fefc7ad0fb922edfcfdae3cd7dc85d 100644 (file)
@@ -1,3 +1,9 @@
+2016-11-11  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+       * config.host (i[3456]86-*-musl*, x86_64-*-musl*): Use
+       i386/t-cpuinfo-static instead of i386/t-cpuinfo.
+       * config/i386/t-cpuinfo-static: New.
+
 2016-11-03  Martin Liska  <mliska@suse.cz>
 
        * libgcov-profiler.c (__gcov_time_profiler): Remove.
index 4291cfef5b475a15b8a92ce487c5163107f5e2f6..64beb219f316b474ca719ef1d58605eae874c4a9 100644 (file)
@@ -1320,7 +1320,14 @@ esac
 
 case ${host} in
 i[34567]86-*-* | x86_64-*-*)
-       tmake_file="${tmake_file} i386/t-cpuinfo"
+       case ${host} in
+       *-musl*)
+               tmake_file="${tmake_file} i386/t-cpuinfo-static"
+               ;;
+       *)
+               tmake_file="${tmake_file} i386/t-cpuinfo"
+               ;;
+       esac
        ;;
 esac
 
diff --git a/libgcc/config/i386/t-cpuinfo-static b/libgcc/config/i386/t-cpuinfo-static
new file mode 100644 (file)
index 0000000..5617bc1
--- /dev/null
@@ -0,0 +1,4 @@
+# If the compatibility cpuinfo symbols in shared libgcc_s are not needed
+# then they can be added to the static library only.
+
+LIB2ADD_ST += $(srcdir)/config/i386/cpuinfo.c