Commit 0dee55fe by Claudiu Zissulescu Committed by Claudiu Zissulescu

[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  <claziss@synopsys.com>
	    Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

	* 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 <thomas.petazzoni@free-electrons.com>

From-SVN: r246524
parent d1ab0a32
2017-03-28 Claudiu Zissulescu <claziss@synopsys.com> 2017-03-28 Claudiu Zissulescu <claziss@synopsys.com>
Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* 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 <claziss@synopsys.com>
* config/arc/simdext.md (vst64_insn): Update pattern. * config/arc/simdext.md (vst64_insn): Update pattern.
(vld32wh_insn): Likewise. (vld32wh_insn): Likewise.
......
...@@ -61,7 +61,8 @@ along with GCC; see the file COPYING3. If not see ...@@ -61,7 +61,8 @@ along with GCC; see the file COPYING3. If not see
%{mmac-d16:-D__Xxmac_d16} %{mmac-24:-D__Xxmac_24} \ %{mmac-d16:-D__Xxmac_d16} %{mmac-24:-D__Xxmac_24} \
%{mdsp-packa:-D__Xdsp_packa} %{mcrc:-D__Xcrc} %{mdvbf:-D__Xdvbf} \ %{mdsp-packa:-D__Xdsp_packa} %{mcrc:-D__Xcrc} %{mdvbf:-D__Xdvbf} \
%{mtelephony:-D__Xtelephony} %{mxy:-D__Xxy} %{mmul64: -D__Xmult32} \ %{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 #undef CC1_SPEC
#define CC1_SPEC "\ #define CC1_SPEC "\
...@@ -73,6 +74,27 @@ extern const char *arc_cpu_to_as (int argc, const char **argv); ...@@ -73,6 +74,27 @@ extern const char *arc_cpu_to_as (int argc, const char **argv);
#define EXTRA_SPEC_FUNCTIONS \ #define EXTRA_SPEC_FUNCTIONS \
{ "cpu_to_as", arc_cpu_to_as }, { "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 #undef ASM_SPEC
#define ASM_SPEC "%{mbig-endian|EB:-EB} %{EL} " \ #define ASM_SPEC "%{mbig-endian|EB:-EB} %{EL} " \
"%:cpu_to_as(%{mcpu=*:%*}) %{mspfp*} %{mdpfp*} %{mfpu=fpuda*:-mfpuda}" "%:cpu_to_as(%{mcpu=*:%*}) %{mspfp*} %{mdpfp*} %{mfpu=fpuda*:-mfpuda}"
......
...@@ -26,7 +26,8 @@ along with GCC; see the file COPYING3. If not see ...@@ -26,7 +26,8 @@ along with GCC; see the file COPYING3. If not see
#define ARC_TLS_EXTRA_START_SPEC "crttls.o%s" #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 }, \ { "arc_tls_extra_start_spec", ARC_TLS_EXTRA_START_SPEC }, \
#undef STARTFILE_SPEC #undef STARTFILE_SPEC
......
...@@ -78,3 +78,8 @@ along with GCC; see the file COPYING3. If not see ...@@ -78,3 +78,8 @@ along with GCC; see the file COPYING3. If not see
/* Linux toolchains use r25 as the thread pointer register. */ /* Linux toolchains use r25 as the thread pointer register. */
#undef TARGET_ARC_TP_REGNO_DEFAULT #undef TARGET_ARC_TP_REGNO_DEFAULT
#define TARGET_ARC_TP_REGNO_DEFAULT 25 #define TARGET_ARC_TP_REGNO_DEFAULT 25
#undef SUBTARGET_CPP_SPEC
#define SUBTARGET_CPP_SPEC "\
%{pthread:-D_REENTRANT} \
"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment