aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorSzabolcs Nagy <szabolcs.nagy@arm.com>2016-11-11 17:31:07 +0000
committerSzabolcs Nagy <nsz@gcc.gnu.org>2016-11-11 17:31:07 +0000
commit9d8f95deca5b9a5ba63c638cf96f4678c68d2bd0 (patch)
treec674d4b5cbcfa29cc16dea6f58d98d91bfa6a14b /libgcc
parentc901bc0d8e9c3b7cd199c141f3ebea16f0201af0 (diff)
downloadgcc-9d8f95deca5b9a5ba63c638cf96f4678c68d2bd0.zip
gcc-9d8f95deca5b9a5ba63c638cf96f4678c68d2bd0.tar.gz
gcc-9d8f95deca5b9a5ba63c638cf96f4678c68d2bd0.tar.bz2
[i386][musl] Add cpuinfo to static libgcc only on *-musl*
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
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/ChangeLog6
-rw-r--r--libgcc/config.host9
-rw-r--r--libgcc/config/i386/t-cpuinfo-static4
3 files changed, 18 insertions, 1 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index e3a81f6..f682e57 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -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.
diff --git a/libgcc/config.host b/libgcc/config.host
index 4291cfe..64beb21 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -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
index 0000000..5617bc1
--- /dev/null
+++ b/libgcc/config/i386/t-cpuinfo-static
@@ -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