[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 03/12: assembler: Separate effectful part of 'link-symta
From: |
Ludovic Courtès |
Subject: |
[Guile-commits] 03/12: assembler: Separate effectful part of 'link-symtab'. |
Date: |
Tue, 17 Jan 2023 11:49:49 -0500 (EST) |
civodul pushed a commit to branch main
in repository guile.
commit fc5eae5d01b19cbfb4903e032f4172c888e0e52a
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 main updated (e903b7679 -> 9a004606e), Ludovic Courtès, 2023/01/17
- [Guile-commits] 07/12: assembler: Separate effectful part of 'link-docstrs'., Ludovic Courtès, 2023/01/17
- [Guile-commits] 10/12: linker: Linker object writer takes a single argument., Ludovic Courtès, 2023/01/17
- [Guile-commits] 04/12: assembler: Separate effectful part of 'link-dynamic-section'., Ludovic Courtès, 2023/01/17
- [Guile-commits] 05/12: assembler: Separate effectful part of 'link-procprops'., Ludovic Courtès, 2023/01/17
- [Guile-commits] 08/12: linker: Separate effectful part of 'add-elf-objects'., Ludovic Courtès, 2023/01/17
- [Guile-commits] 09/12: linker, assembler: Avoid intermediate bytevectors., Ludovic Courtès, 2023/01/17
- [Guile-commits] 06/12: assembler: Separate effectful part of 'link-frame-maps'., Ludovic Courtès, 2023/01/17
- [Guile-commits] 03/12: assembler: Separate effectful part of 'link-symtab'.,
Ludovic Courtès <=
- [Guile-commits] 01/12: Add test for 'string-ref' with a negative index at -O2., Ludovic Courtès, 2023/01/17
- [Guile-commits] 02/12: assembler: Separate 'process-relocs' from 'patch-relocs!'., Ludovic Courtès, 2023/01/17
- [Guile-commits] 12/12: Update NEWS., Ludovic Courtès, 2023/01/17
- [Guile-commits] 11/12: linker: Do not store entire ELF in memory when writing to a file., Ludovic Courtès, 2023/01/17