[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 02/09: assembler: Separate effectful part of 'link-symta
From: |
Ludovic Courtès |
Subject: |
[Guile-commits] 02/09: assembler: Separate effectful part of 'link-symtab'. |
Date: |
Sat, 7 Jan 2023 16:54:52 -0500 (EST) |
civodul pushed a commit to branch wip-linker-assembler-memory-consumption
in repository guile.
commit 43dd2f1846f8380ae22804c8bc6731495434ea55
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Fri Jan 6 11:19:48 2023 +0100
assembler: Separate effectful part of 'link-symtab'.
* module/system/vm/assembler.scm (link-symtab): Define 'names' and
'write-symbols!'. Use it.
---
module/system/vm/assembler.scm | 37 ++++++++++++++++++++++---------------
1 file changed, 22 insertions(+), 15 deletions(-)
diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm
index 188f6f236..af16d268d 100644
--- a/module/system/vm/assembler.scm
+++ b/module/system/vm/assembler.scm
@@ -2369,21 +2369,28 @@ procedure with label @var{rw-init}. @var{rw-init} may
be false. If
(bv (make-bytevector (* n size) 0)))
(define (intern-string! name)
(string-table-intern! strtab (if name (symbol->string name) "")))
- (for-each
- (lambda (meta n)
- (let ((name (intern-string! (meta-name meta))))
- (write-elf-symbol bv (* n size) endianness word-size
- (make-elf-symbol
- #:name name
- ;; Symbol value and size are measured in
- ;; bytes, not u32s.
- #:value (meta-low-pc meta)
- #:size (- (meta-high-pc meta)
- (meta-low-pc meta))
- #:type STT_FUNC
- #:visibility STV_HIDDEN
- #:shndx (elf-section-index text-section)))))
- meta (iota n))
+ (define names
+ (map (lambda (meta n)
+ (intern-string! (meta-name meta)))
+ meta (iota n)))
+ (define (write-symbols! bv offset)
+ (for-each (lambda (name meta n)
+ (write-elf-symbol bv (+ offset (* n size))
+ endianness word-size
+ (make-elf-symbol
+ #:name name
+ ;; Symbol value and size are measured in
+ ;; bytes, not u32s.
+ #:value (meta-low-pc meta)
+ #:size (- (meta-high-pc meta)
+ (meta-low-pc meta))
+ #:type STT_FUNC
+ #:visibility STV_HIDDEN
+ #:shndx (elf-section-index
+ text-section))))
+ names meta (iota n)))
+
+ (write-symbols! bv 0)
(let ((strtab (make-object asm '.strtab
(link-string-table! strtab)
'() '()
- [Guile-commits] branch wip-linker-assembler-memory-consumption created (now 2ac4e5a3d), Ludovic Courtès, 2023/01/07
- [Guile-commits] 02/09: assembler: Separate effectful part of 'link-symtab'.,
Ludovic Courtès <=
- [Guile-commits] 01/09: assembler: Separate 'process-relocs' from 'patch-relocs!'., Ludovic Courtès, 2023/01/07
- [Guile-commits] 03/09: assembler: Separate effectful part of 'link-dynamic-section'., Ludovic Courtès, 2023/01/07
- [Guile-commits] 04/09: assembler: Separate effectful part of 'link-procprops'., Ludovic Courtès, 2023/01/07
- [Guile-commits] 05/09: assembler: Separate effectful part of 'link-frame-maps'., Ludovic Courtès, 2023/01/07
- [Guile-commits] 07/09: linker: Separate effectful part of 'add-elf-objects'., Ludovic Courtès, 2023/01/07
- [Guile-commits] 06/09: assembler: Separate effectful part of 'link-docstrs'., Ludovic Courtès, 2023/01/07
- [Guile-commits] 08/09: DRAFT Add 'bytevector-slice'., Ludovic Courtès, 2023/01/07
- [Guile-commits] 09/09: linker, assembler: Avoid intermediate bytevectors., Ludovic Courtès, 2023/01/07