Re: gcc/g++ compiler memory exhaustion on build vms

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/26/19 00:25 UTC, Philip Kovacs via devel wrote:
I am finding that one of my c++ packages has compilation units that generate very large assembly (.s)
files -- so large that any attempt to build them in memory (e.g. with -pipe) causes memory exhaustion.
The only way I have found to reliably get the build to run to completion is by using -save-temps to force
g++ to save the .s assembly files to disk.

Please quantify: What is the byte size of the .s file?

First hint: give the virtual machine enough resources!
Either RAM, or "swap" (paging) space.

Also, -pipe itself uses at most (16 * 4KiB) more memory.
Memory (RAM) exhaustion is caused by having all the (.data+.bss)
of both the compiler and the assembler resident at the same time.
(Most of this will be the symbol table for the assembler.)
Even then, if you have enough swap space (shown by the utility program
/usr/sbin/swapon, also by /usr/bin/top | grep Swap) then compilation
will succeed, although much more slowly due to demand paging.
You can increase swap space by using one or more "instantiated"
files in the filesystem; see "man swapon".

It may be possible to use the gcc option -ffunction-sections
(possibly combined with a filter using /usr/bin/sed, etc.)
as a hint to the assembler to discard the symbols for
local labels upon reaching the end of each function.

For particular cases, you can use "gcc --verbose ...", or even
"strace -f -o strace.out -e trace=execve -s 500 gcc ...", to recover
command sequences that may be edited according to desire.
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux