Patchwork [google/integration] Don't force tls-model to initial-exec when building libgomp (issue6107046)

login
register
mail settings
Submitter Paul Pluzhnikov
Date April 22, 2012, 5:50 p.m.
Message ID <20120422175040.224BE190A4E@elbrus2.mtv.corp.google.com>
Download mbox | patch
Permalink /patch/154298/
State New
Headers show

Comments

Paul Pluzhnikov - April 22, 2012, 5:50 p.m.
Greetings,

The patch below is needed for google/integration branch:
we want to be able build libgomp.a with -fPIC, be able to link it into a
shared library, and be able to dlopen that library without running out of
static TLS space (-ftls-model=initial-exec precludes that last part).

Google ref b/6368405
Google ref b/6156799

Tested: make && make check


2012-04-22   Paul Pluzhnikov  <ppluzhnikov@google.com>

	* libgomp/configure.tgt: Don't force initial-exec.


--
This patch is available for review at http://codereview.appspot.com/6107046
Andrew Pinski - April 23, 2012, 5:09 a.m.
On Sun, Apr 22, 2012 at 10:50 AM, Paul Pluzhnikov
<ppluzhnikov@google.com> wrote:
> Greetings,
>
> The patch below is needed for google/integration branch:
> we want to be able build libgomp.a with -fPIC, be able to link it into a
> shared library, and be able to dlopen that library without running out of
> static TLS space (-ftls-model=initial-exec precludes that last part).

Do you understand the reason why it was made -ftls-model=initial-exec
in the first place?
IIRC the main reason is because the slow down from not using
initial-exec model for GOMP is a lot.

Thanks,
Andrew Pinski


> Google ref b/6368405
> Google ref b/6156799
>
> Tested: make && make check
>
>
> 2012-04-22   Paul Pluzhnikov  <ppluzhnikov@google.com>
>
>        * libgomp/configure.tgt: Don't force initial-exec.
>
> Index: libgomp/configure.tgt
> ===================================================================
> --- libgomp/configure.tgt       (revision 186636)
> +++ libgomp/configure.tgt       (working copy)
> @@ -10,16 +10,6 @@
>  #  XCFLAGS             Add extra compile flags to use.
>  #  XLDFLAGS            Add extra link flags to use.
>
> -# Optimize TLS usage by avoiding the overhead of dynamic allocation.
> -if test $gcc_cv_have_tls = yes ; then
> -  case "${target}" in
> -
> -    *-*-linux*)
> -       XCFLAGS="${XCFLAGS} -ftls-model=initial-exec"
> -       ;;
> -  esac
> -fi
> -
>  # Since we require POSIX threads, assume a POSIX system by default.
>  config_path="posix"
>
>
> --
> This patch is available for review at http://codereview.appspot.com/6107046
Jakub Jelinek - April 23, 2012, 5:23 a.m.
On Sun, Apr 22, 2012 at 10:09:46PM -0700, Andrew Pinski wrote:
> On Sun, Apr 22, 2012 at 10:50 AM, Paul Pluzhnikov
> <ppluzhnikov@google.com> wrote:
> > Greetings,
> >
> > The patch below is needed for google/integration branch:
> > we want to be able build libgomp.a with -fPIC, be able to link it into a
> > shared library, and be able to dlopen that library without running out of
> > static TLS space (-ftls-model=initial-exec precludes that last part).
> 
> Do you understand the reason why it was made -ftls-model=initial-exec
> in the first place?
> IIRC the main reason is because the slow down from not using
> initial-exec model for GOMP is a lot.

Yes, the reason is that initial-exec is much faster than global-exec.

	Jakub
Paul Pluzhnikov - April 23, 2012, 5:31 a.m.
On Sun, Apr 22, 2012 at 10:09 PM, Andrew Pinski <pinskia@gmail.com> wrote:

> IIRC the main reason is because the slow down from not using
> initial-exec model for GOMP is a lot.

Given a choice between "slows down a lot" and "doesn't work at all",
we prefer the former ;-)

I see that we are not alone:
http://old.nabble.com/-patch--libgomp%3A-removing-nodlopen-flag-for-portability-td10286039.html

Generally we don't use OpenMP, but some of our third-party libraries
do depend on it.

Thanks for the heads-up.

Patch

Index: libgomp/configure.tgt
===================================================================
--- libgomp/configure.tgt	(revision 186636)
+++ libgomp/configure.tgt	(working copy)
@@ -10,16 +10,6 @@ 
 #  XCFLAGS		Add extra compile flags to use.
 #  XLDFLAGS		Add extra link flags to use.
 
-# Optimize TLS usage by avoiding the overhead of dynamic allocation.
-if test $gcc_cv_have_tls = yes ; then
-  case "${target}" in
-
-    *-*-linux*)
-	XCFLAGS="${XCFLAGS} -ftls-model=initial-exec"
-	;;
-  esac
-fi
-
 # Since we require POSIX threads, assume a POSIX system by default.
 config_path="posix"