Closed
Bug 1440013
Opened 7 years ago
Closed 7 years ago
'too many sections' error in MinGW x64
Categories
(Core :: MFBT, defect)
Core
MFBT
Tracking
()
RESOLVED
FIXED
mozilla61
People
(Reporter: tjr, Assigned: tjr)
References
Details
Attachments
(1 file)
59 bytes,
text/x-review-board-request
|
glandium
:
review+
jcristau
:
approval-mozilla-esr60+
|
Details |
Try: https://treeherder.mozilla.org/#/jobs?repo=try&revision=3b674bc9b065d9fba44ae7c84e192ed1211837df&selectedJob=163485267
This happened before I disabled the crash reporter and after, so that's not involved.
There's this break early on:
> /builds/worker/workspace/build/src/obj-firefox/_virtualenv/bin/python /builds/worker/workspace/build/src/config/expandlibs_exec.py --uselist -- /builds/worker/workspace/build/src/sccache2/sccache /builds/worker/workspace/build/src/mingw32/bin/x86_64-w64-mingw32-g++ -mwindows -shared -Wl,--gc-sections -Wl,--out-implib > -Wl,libcrashinjectdll.a -o crashinjectdll.dll crashinjectdll.o ./module.res -lpthread -Wl,--build-id -static /builds/worker/workspace/build/src/build/win32/crashinjectdll/crashinjectdll.def -luuid -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32
> Executing: ../../../../sccache2/sccache ../../../../mingw32/bin/x86_64-w64-mingw32-g++ -mwindows -shared -Wl,--gc-sections -Wl,--out-implib -Wl,libcrashinjectdll.a -o crashinjectdll.dll /builds/worker/workspace/build/src/obj-firefox/build/win32/crashinjectdll/tmpAKUgnN.list module.res -lpthread -Wl,--build-id -static ../../../../build> /win32/crashinjectdll/crashinjectdll.def -luuid -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32
> /builds/worker/workspace/build/src/obj-firefox/build/win32/crashinjectdll/tmpAKUgnN.list:
> INPUT("crashinjectdll.o")
> crashinjectdll.o: In function `__throw_bad_exception':
> /builds/worker/workspace/build/src/obj-firefox/dist/include/mozilla/throw_gcc.h:53: undefined reference to `__imp_mozalloc_abort'
> crashinjectdll.o: In function `__throw_bad_alloc':
> /builds/worker/workspace/build/src/obj-firefox/dist/include/mozilla/throw_gcc.h:59: undefined reference to `__imp_mozalloc_abort'
> crashinjectdll.o: In function `__throw_bad_cast':
> /builds/worker/workspace/build/src/obj-firefox/dist/include/mozilla/throw_gcc.h:65: undefined reference to `__imp_mozalloc_abort'
> crashinjectdll.o: In function `__throw_bad_typeid':
> /builds/worker/workspace/build/src/obj-firefox/dist/include/mozilla/throw_gcc.h:71: undefined reference to `__imp_mozalloc_abort'
> crashinjectdll.o: In function `__throw_bad_function_call':
> /builds/worker/workspace/build/src/obj-firefox/dist/include/mozilla/throw_gcc.h:78: undefined reference to `__imp_mozalloc_abort'
> crashinjectdll.o:/builds/worker/workspace/build/src/obj-firefox/dist/include/mozilla/throw_gcc.h:84: more undefined references to `__imp_mozalloc_abort' follow
> collect2: error: ld returned 1 exit status
> /builds/worker/workspace/build/src/config/rules.mk:699: recipe for target 'crashinjectdll.dll' failed
> make[4]: *** [crashinjectdll.dll] Error 1
But later on I see the following:
> /builds/worker/workspace/build/src/mingw32/bin/../lib/gcc/x86_64-w64-mingw32/6.4.0/../../../../x86_64-w64-mingw32/bin/as: Unified_cpp_js_src13.o: too many sections (39186)
> {standard input}: Assembler messages:
> {standard input}: Fatal error: can't write 72 bytes to section .text$_Z7fprintfP6_iobufPKcz of Unified_cpp_js_src13.o because: 'File too big'
> /builds/worker/workspace/build/src/mingw32/bin/../lib/gcc/x86_64-w64-mingw32/6.4.0/../../../../x86_64-w64-mingw32/bin/as: Unified_cpp_js_src13.o: too many sections (39186)
> {standard input}: Fatal error: can't close Unified_cpp_js_src13.o: File too big
> /builds/worker/workspace/build/src/config/rules.mk:1047: recipe for target 'Unified_cpp_js_src13.o' failed
> make[4]: *** [Unified_cpp_js_src13.o] Error 1
>
> /builds/worker/workspace/build/src/mingw32/bin/../lib/gcc/x86_64-w64-mingw32/6.4.0/../../../../x86_64-w64-mingw32/bin/as: Unified_cpp_js_src15.o: too many sections (34086)
> {standard input}: Assembler messages:
> {standard input}: Fatal error: can't write 72 bytes to section .text$_Z7fprintfP6_iobufPKcz of Unified_cpp_js_src15.o because: 'File too big'
> /builds/worker/workspace/build/src/mingw32/bin/../lib/gcc/x86_64-w64-mingw32/6.4.0/../../../../x86_64-w64-mingw32/bin/as: Unified_cpp_js_src15.o: too many sections (34086)
> {standard input}: Fatal error: can't close Unified_cpp_js_src15.o: File too big
> /builds/worker/workspace/build/src/config/rules.mk:1047: recipe for target 'Unified_cpp_js_src15.o' failed
> make[4]: *** [Unified_cpp_js_src15.o] Error 1
Offhand I don't know about the mozalloc_abort thing, glandium might know.
The later error looks like a combination of -ffunction-sections, large unified files, and I'm guessing a 32k section limit? Does gcc on linux builds not have this limit? Maybe we could unify less or drop -ffunction-sections. (And this looks like it's building JS code rather than crashinject so it might be cleaner to open a separate bug.)
Assignee | ||
Comment 2•7 years ago
|
||
Yea, I'm going to put the mozalloc thing in another bug.
Assignee: nobody → tom
Summary: crashinject.dll build errors for MinGW x64 → 'too many sections' error in MinGW x64
Assignee | ||
Comment 3•7 years ago
|
||
Comment hidden (mozreview-request) |
Comment 5•7 years ago
|
||
mozreview-review |
Comment on attachment 8956940 [details]
Bug 1440013 For MinGW build, pass -Wa,-mbig-obj to solve 'too many sections' errors
https://reviewboard.mozilla.org/r/225878/#review233024
::: build/autoconf/compiler-opts.m4:128
(Diff revision 1)
> if test -z "$DEVELOPER_OPTIONS"; then
> CFLAGS="$CFLAGS -ffunction-sections -fdata-sections"
> CXXFLAGS="$CXXFLAGS -ffunction-sections -fdata-sections"
> +
> + # For MinGW, we need big-obj otherwise we create too many sections in Unified builds
> + if test "$OS_ARCH" != "$HOST_OS_ARCH"; then
That really seems like the wrong test here. Specifically, this would probably break android builds on mac.
Attachment #8956940 -
Flags: review?(mh+mozilla) → review-
Assignee | ||
Comment 6•7 years ago
|
||
Comment hidden (mozreview-request) |
Comment 8•7 years ago
|
||
mozreview-review |
Comment on attachment 8956940 [details]
Bug 1440013 For MinGW build, pass -Wa,-mbig-obj to solve 'too many sections' errors
https://reviewboard.mozilla.org/r/225878/#review234952
::: build/autoconf/compiler-opts.m4:128
(Diff revision 2)
> if test -z "$DEVELOPER_OPTIONS"; then
> CFLAGS="$CFLAGS -ffunction-sections -fdata-sections"
> CXXFLAGS="$CXXFLAGS -ffunction-sections -fdata-sections"
> +
> + # For MinGW, we need big-obj otherwise we create too many sections in Unified builds
> + if test "${HOST_OS_ARCH}" = "Linux" -a "${OS_ARCH}" = "WINNT"; then
It seems to me the host os doesn't matter. As a matter of fact, if you were to "natively" build with mingw (on windows), you'd still need the flag, but this doesn't set it. IOW, you only need to check the target OS (since you're already in a "compiler is gcc" branch)
Attachment #8956940 -
Flags: review?(mh+mozilla) → review-
Comment hidden (mozreview-request) |
Comment 10•7 years ago
|
||
mozreview-review |
Comment on attachment 8956940 [details]
Bug 1440013 For MinGW build, pass -Wa,-mbig-obj to solve 'too many sections' errors
https://reviewboard.mozilla.org/r/225878/#review236024
Attachment #8956940 -
Flags: review?(mh+mozilla) → review+
Assignee | ||
Updated•7 years ago
|
Keywords: checkin-needed
Comment 11•7 years ago
|
||
Pushed by csabou@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/f5c601a73945
For MinGW build, pass -Wa,-mbig-obj to solve 'too many sections' errors r=glandium
Keywords: checkin-needed
Comment 12•7 years ago
|
||
bugherder |
Status: NEW → RESOLVED
Closed: 7 years ago
status-firefox61:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla61
Assignee | ||
Comment 13•7 years ago
|
||
Comment on attachment 8956940 [details]
Bug 1440013 For MinGW build, pass -Wa,-mbig-obj to solve 'too many sections' errors
[Approval Request Comment]
This is one of several MinGW Build patches I'd like to land in esr60 for Tor. It will prevent them from carrying their own patches for the lifetime of esr60 and will enable us to keep the MinGW build functioning and know if/when/how it was broken by new commits into esr60.
This commit only affects the MinGW build configuration, so it is low-risk.
Attachment #8956940 -
Flags: approval-mozilla-esr60?
Comment 14•7 years ago
|
||
Comment on attachment 8956940 [details]
Bug 1440013 For MinGW build, pass -Wa,-mbig-obj to solve 'too many sections' errors
mingw build fix, approved for 60.1esr
Attachment #8956940 -
Flags: approval-mozilla-esr60? → approval-mozilla-esr60+
Comment 15•7 years ago
|
||
bugherder uplift |
status-firefox-esr60:
--- → fixed
You need to log in
before you can comment on or make changes to this bug.
Description
•