diff options
author | alexbiehl <alex.biehl@gmail.com> | 2016-07-30 17:22:54 +1000 |
---|---|---|
committer | Erik de Castro Lopo <erikd@mega-nerd.com> | 2016-07-30 17:22:54 +1000 |
commit | c06e3f46d24ef69f3a3d794f5f604cb8c2a40cbc (patch) | |
tree | d62c658c6a34e84bfb71e65b649db94bca49cf62 /rts/package.conf.in | |
parent | d3feb16a91bb285ce677fb79381f36e9fcdc0979 (diff) | |
download | haskell-c06e3f46d24ef69f3a3d794f5f604cb8c2a40cbc.tar.gz |
Add atomic operations to package.conf.in
This patch resulted from the discussion in D2431 and should be merged
first.
@erikd and @trommler reported errors like
```
/home/erikd/Git/ghc-upstream/rts/dist/build/libHSrts_thr.a(PrimOps.thr_o
): In function `c14_info':
(.text+0x2b8): undefined reference to `hs_cmpxchg32'
/home/erikd/Git/ghc-upstream/rts/dist/build/libHSrts_thr.a(PrimOps.thr_o
): In function `c5e_info':
(.text+0xac4): undefined reference to `hs_cmpxchg32'
/home/erikd/Git/ghc-upstream/rts/dist/build/libHSrts_thr.a(PrimOps.thr_o
): In function `c8b_info':
(.text+0x1198): undefined reference to `hs_cmpxchg32'
/home/erikd/Git/ghc-upstream/rts/dist/build/libHSrts_thr.a(PrimOps.thr_o
): In function `c8b_info':
(.text+0x122c): undefined reference to `hs_cmpxchg32'
/home/erikd/Git/ghc-upstream/rts/dist/build/libHSrts_thr.a(PrimOps.thr_o
): In function `c8b_info':
(.text+0x12ec): undefined reference to `hs_cmpxchg32'
```
on PowerPC. @simonmar suggests to add the specific exports to
`rts/package.conf.in`. This patch does exactly that, including all
other atomic ops as they probably (maybe someone can verify?) suffer
from the same problem on PPC.
Test Plan: Please make sure to build on PPC.
Reviewers: erikd, austin, bgamari, simonmar, trommler
Reviewed By: erikd, trommler
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D2435
Diffstat (limited to 'rts/package.conf.in')
-rw-r--r-- | rts/package.conf.in | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/rts/package.conf.in b/rts/package.conf.in index d2b728ea88..65aa5c333b 100644 --- a/rts/package.conf.in +++ b/rts/package.conf.in @@ -122,6 +122,60 @@ ld-options: , "-Wl,-u,_base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure" , "-Wl,-u,_base_GHCziConcziSync_runSparks_closure" , "-Wl,-u,_base_GHCziConcziSignal_runHandlersPtr_closure" + , "-Wl,-u,_hs_atomic_add8" + , "-Wl,-u,_hs_atomic_add16" + , "-Wl,-u,_hs_atomic_add32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,_hs_atomic_add64" +#endif + , "-Wl,-u,_hs_atomic_sub8" + , "-Wl,-u,_hs_atomic_sub16" + , "-Wl,-u,_hs_atomic_sub32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,_hs_atomic_sub64" +#endif + , "-Wl,-u,_hs_atomic_and8" + , "-Wl,-u,_hs_atomic_and16" + , "-Wl,-u,_hs_atomic_and32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,_hs_atomic_and64" +#endif + , "-Wl,-u,_hs_atomic_nand8" + , "-Wl,-u,_hs_atomic_nand16" + , "-Wl,-u,_hs_atomic_nand32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,_hs_atomic_nand64" +#endif + , "-Wl,-u,_hs_atomic_or8" + , "-Wl,-u,_hs_atomic_or16" + , "-Wl,-u,_hs_atomic_or32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,_hs_atomic_or64" +#endif + , "-Wl,-u,_hs_atomic_xor8" + , "-Wl,-u,_hs_atomic_xor16" + , "-Wl,-u,_hs_atomic_xor32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,_hs_atomic_xor64" +#endif + , "-Wl,-u,_hs_cmpxchg8" + , "-Wl,-u,_hs_cmpxchg16" + , "-Wl,-u,_hs_cmpxchg32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,_hs_cmpxchg64" +#endif + , "-Wl,-u,_hs_atomicread8" + , "-Wl,-u,_hs_atomicread16" + , "-Wl,-u,_hs_atomicread32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,_hs_atomicread64" +#endif + , "-Wl,-u,_hs_atomicwrite8" + , "-Wl,-u,_hs_atomicwrite16" + , "-Wl,-u,_hs_atomicwrite32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,_hs_atomicwrite64" +#endif #else "-Wl,-u,ghczmprim_GHCziTypes_Izh_static_info" , "-Wl,-u,ghczmprim_GHCziTypes_Czh_static_info" @@ -164,6 +218,60 @@ ld-options: , "-Wl,-u,base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure" , "-Wl,-u,base_GHCziConcziSync_runSparks_closure" , "-Wl,-u,base_GHCziConcziSignal_runHandlersPtr_closure" + , "-Wl,-u,hs_atomic_add8" + , "-Wl,-u,hs_atomic_add16" + , "-Wl,-u,hs_atomic_add32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,hs_atomic_add64" +#endif + , "-Wl,-u,hs_atomic_sub8" + , "-Wl,-u,hs_atomic_sub16" + , "-Wl,-u,hs_atomic_sub32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,hs_atomic_sub64" +#endif + , "-Wl,-u,hs_atomic_and8" + , "-Wl,-u,hs_atomic_and16" + , "-Wl,-u,hs_atomic_and32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,hs_atomic_and64" +#endif + , "-Wl,-u,hs_atomic_nand8" + , "-Wl,-u,hs_atomic_nand16" + , "-Wl,-u,hs_atomic_nand32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,hs_atomic_nand64" +#endif + , "-Wl,-u,hs_atomic_or8" + , "-Wl,-u,hs_atomic_or16" + , "-Wl,-u,hs_atomic_or32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,hs_atomic_or64" +#endif + , "-Wl,-u,hs_atomic_xor8" + , "-Wl,-u,hs_atomic_xor16" + , "-Wl,-u,hs_atomic_xor32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,hs_atomic_xor64" +#endif + , "-Wl,-u,hs_cmpxchg8" + , "-Wl,-u,hs_cmpxchg16" + , "-Wl,-u,hs_cmpxchg32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,hs_cmpxchg64" +#endif + , "-Wl,-u,hs_atomicread8" + , "-Wl,-u,hs_atomicread16" + , "-Wl,-u,hs_atomicread32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,hs_atomicread64" +#endif + , "-Wl,-u,hs_atomicwrite8" + , "-Wl,-u,hs_atomicwrite16" + , "-Wl,-u,hs_atomicwrite32" +#if WORD_SIZE_IN_BITS == 64 + , "-Wl,-u,hs_atomicwrite64" +#endif #endif /* Pick up static libraries in preference over dynamic if in earlier search |