Opened 9 months ago

Closed 9 months ago

Last modified 4 months ago

#15934 closed bug (fixed)

Building ghc with profiling libraries fails on windows.

Reported by: AndreasK Owned by:
Priority: highest Milestone: 8.6.3
Component: Compiler Version: 8.6.2
Keywords: Cc:
Operating System: Windows Architecture: Unknown/Multiple
Type of failure: None/Unknown Test Case:
Blocked By: Blocking:
Related Tickets: Differential Rev(s): Phab:D5383
Wiki Page:

Description (last modified by AndreasK)

I've initially only hit this when enabling -g, but now I've run into the same issue without a customized build.mk file.


Seems like we create too many sections in a single file on windows.

C://ghc//msys64//home//Andi//ghc_head//inplace//mingw//bin/as.exe: C:\\ghc\\msys64\\tmp\\ghc6664_0\\ghc_6.p_o: too many sections (32801)
C:\\ghc\\msys64\\tmp\\ghc6664_0\\ghc_1.s: Assembler messages:
C:\\ghc\\msys64\\tmp\\ghc6664_0\\ghc_1.s: Fatal error: can't write 4 bytes to section .rdata$c1w2b_str of C:\\ghc\\msys64\\tmp\\ghc6664_0\\ghc_6.p_o because: 'File too big'
C://ghc//msys64//home//Andi//ghc_head//inplace//mingw//bin/as.exe: C:\\ghc\\msys64\\tmp\\ghc6664_0\\ghc_6.p_o: too many sections (32801)
C:\\ghc\\msys64\\tmp\\ghc6664_0\\ghc_1.s: Fatal error: can't close C:\\ghc\\msys64\\tmp\\ghc6664_0\\ghc_6.p_o: File too big
`gcc.exe' failed in phase `Assembler'. (Exit code: 1)
make[1]: *** [libraries/template-haskell/ghc.mk:4: libraries/template-haskell/dist-install/build/Language/Haskell/TH/Syntax.p_o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:128: all] Error 2

build.mk

ifneq "$(BuildFlavour)" ""
include mk/flavours/$(BuildFlavour).mk
endif

GhcLibHcOpts += -g1
GhcRtsHcOpts += -g1
# GhcStage2HcOpts += -g3

BUILD_PROF_LIBS=YES

# Don't strip debug and other unneeded symbols from libraries and executables.
STRIP_CMD = :


HADDOCK_DOCS       = NO
BUILD_SPHINX_HTML  = NO
BUILD_SPHINX_PDF   = NO
BUILD_MAN          = NO

Change History (9)

comment:1 Changed 9 months ago by AndreasK

Not actively looking into this but there might be flags to make this work without big issues.

See:

comment:2 Changed 9 months ago by AndreasK

Description: modified (diff)
Priority: normalhigh
Summary: Building ghc with dwarf information and profiling libraries fails on windows.Building ghc with profiling libraries fails on windows.

Update: I've had this just happen even with debugging information disabled.

comment:3 Changed 9 months ago by bgamari

Priority: highhighest

Apparently full builds of master currently break on Windows due to this.

comment:4 Changed 9 months ago by bgamari

Andreas reports that, as suggested on StackOverflow, passing -mbig-obj to the assembler helps. However, things then fail at linking. I believe this will be fixed by passing --oformat pe-bigobj-x86-64 to the linker, although this hasn't been confirmed yet.

comment:5 Changed 9 months ago by bgamari

It sounds like the linker change worked as well.

comment:6 Changed 9 months ago by bgamari

Differential Rev(s): Phab:D5383
Status: newpatch

So it seems that the bigobj format isn't support on 32-bit Windows, so there isn't much we can do there. However, Phab:D5383 should fix the issue on amd64.

comment:7 Changed 9 months ago by Ben Gamari <ben@…>

In 1ef90f99/ghc:

Windows: Use the "big" PE object format on amd64

Test Plan: Do full build on Windows.

Reviewers: AndreasK, Phyx

Reviewed By: AndreasK

Subscribers: rwbarton, erikd, carter

GHC Trac Issues: #15934

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

comment:8 Changed 9 months ago by bgamari

Resolution: fixed
Status: patchclosed

comment:9 Changed 4 months ago by Ben Gamari <ben@…>

In 983c53c3/ghc:

gitlab-ci: Do not build profiled libraries on 32-bit Windows

Due to #15934.
Note: See TracTickets for help on using tickets.