[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gcc-bugs
Subject:    [Bug libgomp/91938] New: libgomp (and libitm) DSOs are incorrectly built with initial-exec tls-model
From:       "nsz at gcc dot gnu.org" <gcc-bugzilla () gcc ! gnu ! org>
Date:       2019-09-30 15:42:29
Message-ID: bug-91938-4 () http ! gcc ! gnu ! org/bugzilla/
[Download RAW message or body]

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D91938

            Bug ID: 91938
           Summary: libgomp (and libitm) DSOs are incorrectly built with
                    initial-exec tls-model
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libgomp
          Assignee: unassigned at gcc dot gnu.org
          Reporter: nsz at gcc dot gnu.org
                CC: jakub at gcc dot gnu.org
  Target Milestone: ---

initial-exec tls is only valid in a dso if there is a guarantee
that the dso is never dynamically loaded or the c runtime has
tls reserved specifically for that dso to use.

gcc target libs don't provide such guarantee nor glibc has special
tls for libgomp or libitm so they are broken on *-linux*.

optimizing tls access is only acceptable if it does not break
correctness. (side note: initial-exec tls is required on glibc for
as-safe tls access, if that's necessary then the fix will need
glibc discussions, but the default should be safe for other libcs.)

this hits targets like aarch64 and powerpc* harder where glibc
can optimize dynamic tls in dsos to use the preallocated static
tls area if available so it runs out faster than on targets where
no such optimization is done. (initial-exec tls usage is actually
less performance relevant on those targets for the same reason.)

in principle that glibc logic can be changed to be more consistent
across targets, but i would only support that if there is a way to
coordinate the use of preallocated tls otherwise it's unsupportable.

see the libc-apha discussion
https://sourceware.org/ml/libc-alpha/2019-09/msg00512.html=
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic