Use libpthread instead of libthr on FreeBSD
authorBen Gamari <bgamari.foss@gmail.com>
Mon, 24 Jul 2017 23:02:56 +0000 (19:02 -0400)
committerBen Gamari <ben@smart-cactus.org>
Mon, 24 Jul 2017 23:12:55 +0000 (19:12 -0400)
Since #847 we have used libthr due to reported hangs with FreeBSD's
KSE-based M:N pthread implementation. However, this was nearly 12 years
ago and today libpthread seems to work fine. Moreover, adding -lthr to
the linker flags break when used in conjunction with -r when gold is
used (since -l and -r are incompatible although BFD ld doesn't
complain).

Test Plan: Validate on FreeBSD

Reviewers: kgardas, austin

Subscribers: rwbarton, thomie

GHC Trac Issues: #847

Differential Revision: https://phabricator.haskell.org/D3773

compiler/main/DynFlags.hs

index d25b361..cc9bbb8 100644 (file)
@@ -1446,11 +1446,7 @@ wayOptl :: Platform -> Way -> [String]
 wayOptl _ (WayCustom {}) = []
 wayOptl platform WayThreaded =
         case platformOS platform of
-        -- FreeBSD's default threading library is the KSE-based M:N libpthread,
-        -- which GHC has some problems with.  It's currently not clear whether
-        -- the problems are our fault or theirs, but it seems that using the
-        -- alternative 1:1 threading library libthr works around it:
-        OSFreeBSD  -> ["-lthr"]
+        OSFreeBSD  -> ["-pthread"]
         OSOpenBSD  -> ["-pthread"]
         OSNetBSD   -> ["-pthread"]
         _          -> []