From 0dee55fec92e299eb584f2d8e4bfb797e0c2328c Mon Sep 17 00:00:00 2001 From: Claudiu Zissulescu Date: Tue, 28 Mar 2017 10:56:44 +0200 Subject: [PATCH] [ARC] Define _REENTRANT when -pthread is passed. The compiler is supposed to have the builtin defined _REENTRANT defined when -pthread is passed, which wasn't done on the ARC architecture. When _REENTRANT is not passed, the C library will not use reentrant functions, and the latest version of ax_pthread.m4 from the autoconf-archive will no longer detect that thread support is available (see https://savannah.gnu.org/patch/?8186). gcc/ 2017-03-28 Claudiu Zissulescu Thomas Petazzoni * config/arc/arc.h (CPP_SPEC): Add subtarget_cpp_spec. (EXTRA_SPECS): Define. (SUBTARGET_EXTRA_SPECS): Likewise. (SUBTARGET_CPP_SPEC): Likewise. * config/arc/elf.h (EXTRA_SPECS): Renamed to SUBTARGET_EXTRA_SPECS. * config/arc/linux.h (SUBTARGET_CPP_SPEC): Define. Co-Authored-By: Thomas Petazzoni From-SVN: r246524 --- gcc/ChangeLog | 11 +++++++++++ gcc/config/arc/arc.h | 24 +++++++++++++++++++++++- gcc/config/arc/elf.h | 3 ++- gcc/config/arc/linux.h | 5 +++++ 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 732ad50f8ab..4864d75bb66 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2017-03-28 Claudiu Zissulescu + Thomas Petazzoni + + * config/arc/arc.h (CPP_SPEC): Add subtarget_cpp_spec. + (EXTRA_SPECS): Define. + (SUBTARGET_EXTRA_SPECS): Likewise. + (SUBTARGET_CPP_SPEC): Likewise. + * config/arc/elf.h (EXTRA_SPECS): Renamed to + SUBTARGET_EXTRA_SPECS. + * config/arc/linux.h (SUBTARGET_CPP_SPEC): Define. + 2017-03-28 Claudiu Zissulescu * config/arc/simdext.md (vst64_insn): Update pattern. diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h index da191287510..08644eb7cdd 100644 --- a/gcc/config/arc/arc.h +++ b/gcc/config/arc/arc.h @@ -61,7 +61,8 @@ along with GCC; see the file COPYING3. If not see %{mmac-d16:-D__Xxmac_d16} %{mmac-24:-D__Xxmac_24} \ %{mdsp-packa:-D__Xdsp_packa} %{mcrc:-D__Xcrc} %{mdvbf:-D__Xdvbf} \ %{mtelephony:-D__Xtelephony} %{mxy:-D__Xxy} %{mmul64: -D__Xmult32} \ -%{mlock:-D__Xlock} %{mswape:-D__Xswape} %{mrtsc:-D__Xrtsc}" +%{mlock:-D__Xlock} %{mswape:-D__Xswape} %{mrtsc:-D__Xrtsc} \ +%(subtarget_cpp_spec)" #undef CC1_SPEC #define CC1_SPEC "\ @@ -73,6 +74,27 @@ extern const char *arc_cpu_to_as (int argc, const char **argv); #define EXTRA_SPEC_FUNCTIONS \ { "cpu_to_as", arc_cpu_to_as }, +/* This macro defines names of additional specifications to put in the specs + that can be used in various specifications like CC1_SPEC. Its definition + is an initializer with a subgrouping for each command option. + + Each subgrouping contains a string constant, that defines the + specification name, and a string constant that used by the GCC driver + program. + + Do not define this macro if it does not need to do anything. */ +#define EXTRA_SPECS \ + { "subtarget_cpp_spec", SUBTARGET_CPP_SPEC }, \ + SUBTARGET_EXTRA_SPECS + +#ifndef SUBTARGET_EXTRA_SPECS +#define SUBTARGET_EXTRA_SPECS +#endif + +#ifndef SUBTARGET_CPP_SPEC +#define SUBTARGET_CPP_SPEC "" +#endif + #undef ASM_SPEC #define ASM_SPEC "%{mbig-endian|EB:-EB} %{EL} " \ "%:cpu_to_as(%{mcpu=*:%*}) %{mspfp*} %{mdpfp*} %{mfpu=fpuda*:-mfpuda}" diff --git a/gcc/config/arc/elf.h b/gcc/config/arc/elf.h index 2b572a52322..c5794f8f785 100644 --- a/gcc/config/arc/elf.h +++ b/gcc/config/arc/elf.h @@ -26,7 +26,8 @@ along with GCC; see the file COPYING3. If not see #define ARC_TLS_EXTRA_START_SPEC "crttls.o%s" -#define EXTRA_SPECS \ +#undef SUBTARGET_EXTRA_SPECS +#define SUBTARGET_EXTRA_SPECS \ { "arc_tls_extra_start_spec", ARC_TLS_EXTRA_START_SPEC }, \ #undef STARTFILE_SPEC diff --git a/gcc/config/arc/linux.h b/gcc/config/arc/linux.h index 6e1a96efc23..83e5a1d61f2 100644 --- a/gcc/config/arc/linux.h +++ b/gcc/config/arc/linux.h @@ -78,3 +78,8 @@ along with GCC; see the file COPYING3. If not see /* Linux toolchains use r25 as the thread pointer register. */ #undef TARGET_ARC_TP_REGNO_DEFAULT #define TARGET_ARC_TP_REGNO_DEFAULT 25 + +#undef SUBTARGET_CPP_SPEC +#define SUBTARGET_CPP_SPEC "\ + %{pthread:-D_REENTRANT} \ +" -- 2.30.2