* [PATCH] [ARC] Define _REENTRANT when -pthread is passed.
@ 2017-03-27 11:23 Claudiu Zissulescu
2017-03-27 20:27 ` Andrew Burgess
0 siblings, 1 reply; 3+ messages in thread
From: Claudiu Zissulescu @ 2017-03-27 11:23 UTC (permalink / raw)
To: gcc-patches
Cc: Claudiu.Zissulescu, Francois.Bedard, andrew.burgess, thomas.petazzoni
Hi Andrew,
This is a patch which originally has been made by Thomas. As I did
arange it, I cannot push it.
Original patch message:
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-02 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.
---
gcc/config/arc/arc.h | 24 +++++++++++++++++++++++-
gcc/config/arc/elf.h | 3 ++-
gcc/config/arc/linux.h | 5 +++++
3 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h
index d515eb0..24c2346 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 2b572a5..c5794f8 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 6e1a96e..83e5a1d 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} \
+"
--
1.9.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] [ARC] Define _REENTRANT when -pthread is passed.
2017-03-27 11:23 [PATCH] [ARC] Define _REENTRANT when -pthread is passed Claudiu Zissulescu
@ 2017-03-27 20:27 ` Andrew Burgess
2017-03-28 9:06 ` Claudiu Zissulescu
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Burgess @ 2017-03-27 20:27 UTC (permalink / raw)
To: Claudiu Zissulescu; +Cc: gcc-patches, Francois.Bedard, thomas.petazzoni
* Claudiu Zissulescu <Claudiu.Zissulescu@synopsys.com> [2017-03-27 13:13:13 +0200]:
> Hi Andrew,
>
> This is a patch which originally has been made by Thomas. As I did
> arange it, I cannot push it.
>
> Original patch message:
>
> 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-02 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.
Looks good.
Thanks,
Andrew
> ---
> gcc/config/arc/arc.h | 24 +++++++++++++++++++++++-
> gcc/config/arc/elf.h | 3 ++-
> gcc/config/arc/linux.h | 5 +++++
> 3 files changed, 30 insertions(+), 2 deletions(-)
>
> diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h
> index d515eb0..24c2346 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 2b572a5..c5794f8 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 6e1a96e..83e5a1d 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} \
> +"
> --
> 1.9.1
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: [PATCH] [ARC] Define _REENTRANT when -pthread is passed.
2017-03-27 20:27 ` Andrew Burgess
@ 2017-03-28 9:06 ` Claudiu Zissulescu
0 siblings, 0 replies; 3+ messages in thread
From: Claudiu Zissulescu @ 2017-03-28 9:06 UTC (permalink / raw)
To: Andrew Burgess; +Cc: gcc-patches, Francois.Bedard, thomas.petazzoni
Thank you Andrew. The patch is committed,
Claudiu
P.S. Thomas can you mark fixed the Bugzilla entry for this patch. Thanks!
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-03-28 8:58 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-27 11:23 [PATCH] [ARC] Define _REENTRANT when -pthread is passed Claudiu Zissulescu
2017-03-27 20:27 ` Andrew Burgess
2017-03-28 9:06 ` Claudiu Zissulescu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).