summaryrefslogtreecommitdiff
path: root/libguile/procprop.c
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2023-01-08 23:32:34 +0100
committerLudovic Courtès <ludo@gnu.org>2023-01-17 17:49:05 +0100
commit3cd64feb2e069042f453305a0736f8ae277b2015 (patch)
tree55fec030cf925f507448cdda6fc3ca50ed8be921 /libguile/procprop.c
parent4ab71e1f0d623edc3d11eeba5db8b22229954dff (diff)
downloadguile-3cd64feb2e069042f453305a0736f8ae277b2015.tar.gz
linker: Do not store entire ELF in memory when writing to a file.
This reduces the amount of memory that needs to be allocated while writing the ELF file to disk. Note: We're abusing #:page-aligned? in 'link-elf' to choose whether to return a bytevector or a procedure. * module/system/vm/linker.scm (process-reloc): Subtract SECTION-OFFSET when writing to BV. (write-linker-object): Pass BV directly to the linker object writer. (link-elf): When PAGE-ALIGNED? is false, call 'bytevector-slice' from here. When it is true, return a procedure that takes a port and writes to it, without having to allocate a bytevector for the whole ELF container. * module/language/bytecode/spec.scm (bytecode->value): Handle X being a procedure instead of a bytevector. (bytecode) <#:printer>: Likewise. * test-suite/tests/linker.test (link-elf-with-one-main-section): Pass #:page-aligned? #f.
Diffstat (limited to 'libguile/procprop.c')
0 files changed, 0 insertions, 0 deletions