Commit de56a67a authored by Zejun Wu's avatar Zejun Wu Committed by Ben Gamari

Merge sections in profiling .a to .p_o and use it whenever it exists

Summary:
We do this for vanilla way already.
Let's also merge sections for profiling way and use it instead of the .a
library when it exists.

Test Plan:
```
 $ inplace/bin/ghc-stage2 --interactive -prof -fexternal-interpreter
 GHCi, version 8.7.20180921: http://www.haskell.org/ghc/  :? for help
 Prelude> pid <- System.Posix.Process.getProcessID
 Prelude> maps <- readFile $ "/proc/" ++ show pid ++ "/maps"
 Prelude> pid
 3807346
 Prelude> putStrLn $ unlines $ take 20 $ lines maps
 00400000-02103000 r-xp 00000000 00:1a 199277344
 /data/users/watashi/ghc/inplace/lib/bin/ghc-iserv-prof
 02104000-02106000 r--p 01d03000 00:1a 199277344
 /data/users/watashi/ghc/inplace/lib/bin/ghc-iserv-prof
 02106000-02417000 rw-p 01d05000 00:1a 199277344
 /data/users/watashi/ghc/inplace/lib/bin/ghc-iserv-prof
 02417000-0280a000 rw-p 00000000 00:00 0
 [heap]
 40098000-400b0000 rwxp 000d2000 00:1a 199276023
 /data/users/watashi/ghc/libraries/bytestring/dist-install/build/HSbytestring-0.10.8.2.p_o
 400b7000-400d8000 rwxp 00000000 00:00 0
 401d1000-401d2000 rwxp 000e9000 00:1a 199276023
 /data/users/watashi/ghc/libraries/bytestring/dist-install/build/HSbytestring-0.10.8.2.p_o
 40415000-40419000 rwxp 0000b000 00:1a 199275165
 /data/users/watashi/ghc/libraries/deepseq/dist-install/build/HSdeepseq-1.4.4.0.p_o
 404f8000-40526000 rwxp 000af000 00:1a 199274234
 /data/users/watashi/ghc/libraries/ghc-prim/dist-install/build/HSghc-prim-0.5.3.p_o
```

Reviewers: simonmar, bgamari, austin, hvr

Reviewed By: simonmar

Subscribers: rwbarton, carter

Differential Revision: https://phabricator.haskell.org/D5169
parent ebb7613a
......@@ -1469,13 +1469,8 @@ locateLib hsc_env is_hs lib_dirs gcc_dirs lib
findDynObject `orElse`
assumeDll
| loading_profiled_hs_libs -- only a libHSfoo_p.a archive will do.
= findArchive `orElse`
assumeDll
| otherwise
-- HSfoo.o is the best, but only works for the normal way
-- libHSfoo.a is the backup option.
-- use HSfoo.{o,p_o} if it exists, otherwise fallback to libHSfoo{,_p}.a
= findObject `orElse`
findArchive `orElse`
assumeDll
......@@ -1486,7 +1481,9 @@ locateLib hsc_env is_hs lib_dirs gcc_dirs lib
gcc = False
user = True
obj_file = lib <.> "o"
obj_file
| is_hs && loading_profiled_hs_libs = lib <.> "p_o"
| otherwise = lib <.> "o"
dyn_obj_file = lib <.> "dyn_o"
arch_files = [ "lib" ++ lib ++ lib_tag <.> "a"
, lib <.> "a" -- native code has no lib_tag
......
......@@ -112,7 +112,7 @@ endif
endif
# Build the GHCi library
ifeq "$3" "v"
ifneq "$(filter $3, v p)" ""
$1_$2_GHCI_LIB = $1/$2/build/HS$$($1_$2_COMPONENT_ID).$$($3_osuf)
ifeq "$$($1_$2_BUILD_GHCI_LIB)" "YES"
# Don't put bootstrapping packages in the bindist
......@@ -132,7 +132,7 @@ ifneq "$4" "0"
$(call all-target,$1_$2,$$($1_$2_GHCI_LIB))
endif
endif # "$$($1_$2_BUILD_GHCI_LIB)" "YES"
endif # "$3" "v"
endif # "$(filter $3, v p)" ""
$(call profEnd, build-package-way($1,$2,$3))
endef # build-package-way
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment