mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-23 21:10:29 +02:00
assembler: Separate effectful part of 'link-symtab'.
* module/system/vm/assembler.scm (link-symtab): Define 'names' and 'write-symbols!'. Use it.
This commit is contained in:
parent
15c4c4ceb3
commit
fc5eae5d01
1 changed files with 22 additions and 15 deletions
|
@ -2369,10 +2369,14 @@ procedure with label @var{rw-init}. @var{rw-init} may be false. If
|
||||||
(bv (make-bytevector (* n size) 0)))
|
(bv (make-bytevector (* n size) 0)))
|
||||||
(define (intern-string! name)
|
(define (intern-string! name)
|
||||||
(string-table-intern! strtab (if name (symbol->string name) "")))
|
(string-table-intern! strtab (if name (symbol->string name) "")))
|
||||||
(for-each
|
(define names
|
||||||
(lambda (meta n)
|
(map (lambda (meta n)
|
||||||
(let ((name (intern-string! (meta-name meta))))
|
(intern-string! (meta-name meta)))
|
||||||
(write-elf-symbol bv (* n size) endianness word-size
|
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
|
(make-elf-symbol
|
||||||
#:name name
|
#:name name
|
||||||
;; Symbol value and size are measured in
|
;; Symbol value and size are measured in
|
||||||
|
@ -2382,8 +2386,11 @@ procedure with label @var{rw-init}. @var{rw-init} may be false. If
|
||||||
(meta-low-pc meta))
|
(meta-low-pc meta))
|
||||||
#:type STT_FUNC
|
#:type STT_FUNC
|
||||||
#:visibility STV_HIDDEN
|
#:visibility STV_HIDDEN
|
||||||
#:shndx (elf-section-index text-section)))))
|
#:shndx (elf-section-index
|
||||||
meta (iota n))
|
text-section))))
|
||||||
|
names meta (iota n)))
|
||||||
|
|
||||||
|
(write-symbols! bv 0)
|
||||||
(let ((strtab (make-object asm '.strtab
|
(let ((strtab (make-object asm '.strtab
|
||||||
(link-string-table! strtab)
|
(link-string-table! strtab)
|
||||||
'() '()
|
'() '()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue