guile-commits
[Top][All Lists]
Advanced

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

[Guile-commits] GNU Guile branch, wip-rtl-dwarf, created. v2.1.0-45-g334


From: Andy Wingo
Subject: [Guile-commits] GNU Guile branch, wip-rtl-dwarf, created. v2.1.0-45-g3341d03
Date: Sun, 18 Aug 2013 19:14:13 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Guile".

http://git.savannah.gnu.org/cgit/guile.git/commit/?id=3341d037806b6ed71776243ea685dc10e495bc74

The branch, wip-rtl-dwarf has been created
        at  3341d037806b6ed71776243ea685dc10e495bc74 (commit)

- Log -----------------------------------------------------------------
commit 3341d037806b6ed71776243ea685dc10e495bc74
Author: Andy Wingo <address@hidden>
Date:   Sat Jun 9 18:26:27 2012 +0200

    add DWARF parser
    
    * module/Makefile.am:
    * module/system/vm/dwarf.scm: New module, a DWARF parser.

commit c3f4d5c830e04fa180f35a8651de9eaea32fdef3
Author: Andy Wingo <address@hidden>
Date:   Fri May 17 22:10:16 2013 +0200

    procedure-properties for RTL functions
    
    * module/system/vm/assembler.scm (link-procprops, link-objects): Arrange
      to write procedure property links out to a separate section.
    
    * libguile/procprop.c (scm_procedure_properties):
    * libguile/programs.h:
    * libguile/programs.c (scm_i_rtl_program_properties):
    * module/system/vm/debug.scm (find-program-properties): Wire up
      procedure-properties for RTL procedures.  Yeah!  Fistpumps!  :)
    
    * module/system/vm/debug.scm (find-program-debug-info): Return #f if the
      string is "", as it is if we don't have a name.  Perhaps
      elf-symbol-name should return #f in that case...
      (find-program-docstring): Bugfix: increment by docstr-len.
    
    * test-suite/tests/rtl.test: Add some tests.

commit a181ba42dae642b4573b5a50033c01befabf535f
Author: Andy Wingo <address@hidden>
Date:   Thu May 16 23:38:29 2013 +0200

    procedure-documentation works on RTL procedures
    
    * libguile/procprop.h:
    * libguile/procprop.c (scm_procedure_documentation): Move here from
      procs.c, and to make the logic more similar to that of procedure-name,
      which allows RTL programs to dispatch to rtl-program-documentation.
    
    * libguile/programs.c (scm_i_rtl_program_documentation):
    * libguile/programs.h:
    * module/system/vm/program.scm (rtl-program-documentation): New
      plumbing.
    
    * module/system/vm/debug.scm (find-program-docstring): New interface to
      grovel ELF for a docstring.

commit c95daf5abf4bdcd501ce1dfb73e5cd6c9982d6f7
Author: Andy Wingo <address@hidden>
Date:   Thu May 16 23:35:35 2013 +0200

    add rtl arity tests
    
    * test-suite/tests/rtl.test ("simply procedure arity"): Add tests that
      arities make it all the way to cold ELF and back to warm Guile.

commit 7ff8f3dc423c5290532c63c8c09f53d5ae5da894
Author: Andy Wingo <address@hidden>
Date:   Thu May 16 23:32:09 2013 +0200

    add procedure name test
    
    * module/system/vm/debug.scm (find-program-debug-info): Load procedure
      names as symbols.
    
    * test-suite/tests/rtl.test ("procedure name"): Add test.

commit 0af475ddca992c3da3419b85e4afb754539dd254
Author: Andy Wingo <address@hidden>
Date:   Thu May 16 22:30:51 2013 +0200

    Write docstrings into RTL ELF images
    
    * module/system/vm/assembler.scm (link-docstrs): Write docstrings.
      (link-objects): Link docstrings into the ELF.

commit 7aa3e8ab4650b36c9cfaee07ea5737d1588212f3
Author: Andy Wingo <address@hidden>
Date:   Thu May 16 21:15:51 2013 +0200

    find-program-arities handles case-lambda appropriately
    
    * module/system/vm/debug.scm (read-sub-arities, find-program-arities):
      Handle case-lambda.
      (program-minimum-arity): Fix a bunch of bugs!

commit c97c6623ce03b94cf43918dc4d18c63c24d32612
Author: Andy Wingo <address@hidden>
Date:   Thu May 16 20:58:54 2013 +0200

    Wire up ability to print RTL program arities
    
    * libguile/procprop.c (scm_i_procedure_arity): Allow RTL programs to
      dispatch to scm_i_program_arity.
    
    * libguile/programs.c (scm_i_program_print): Refactor reference to
      write-program.
      (scm_i_rtl_program_minimum_arity): New procedure, dispatches to
      Scheme.
      (scm_i_program_arity): Dispatch to scm_i_rtl_program_minimum_arity if
      appropriate.
    
    * module/system/vm/debug.scm (program-minimum-arity): New export.
    
    * module/system/vm/program.scm (rtl-program-minimum-arity): New internal
      function.
      (program-arguments-alists): New helper, implemented also for RTL
      procedures.
      (write-program): Refactor a bit, and call program-arguments-alists.

commit 8e84582a08d6a7914eab02fb0eaa3708b31db6ca
Author: Andy Wingo <address@hidden>
Date:   Thu May 16 20:28:19 2013 +0200

    Fix circular module dependencies
    
    I don't think this actually caused me problems (how does that work?) but
    it seems a good thing to fix.
    
    * module/system/vm/debug.scm: Don't import (system vm program).  Adapt
      procedures to always expect an addr, not a program.
    
    * module/system/vm/program.scm (rtl-program-name): Pass rtl program addr
      directly.

commit e9cfd745fc12a0d21d78dd7bc018361988081e15
Author: Andy Wingo <address@hidden>
Date:   Thu May 16 18:56:22 2013 +0200

    (system vm debug) can read arity information
    
    * module/system/vm/assembler.scm (write-arity-headers): Fill in the
      prefix.
    
    * module/system/vm/debug.scm (<arity>): New object, for reading
      arities.  Unlike <arity> in the assembler, this one only holds on to a
      couple of pointers, and doesn't even load in argument names.  Unlike
      the arity lists in (system vm program), it can load in names.  Very
      early days but it does seem to work.
      (find-program-arities, arity-arguments-alist): New higher-level
      interfaces.

commit f73fda52be79b04ef1400e0d7cd83a548e9e5baa
Author: Andy Wingo <address@hidden>
Date:   Thu May 16 17:49:39 2013 +0200

    remove arity nlocals and alternate fields
    
    * module/system/vm/assembler.scm (<arity>): Remove nlocals and alternate
      fields, as they aren't used.  Adapt constructor call.

commit e3d7b5f4406cee0a123cf481b6fe44c8dcb5a02a
Author: Andy Wingo <address@hidden>
Date:   Thu May 16 14:06:10 2013 +0200

    RTL assembler writes arities information into separate section.
    
    * module/system/vm/assembler.scm: Write arities into a .guile.arities
      section and associated .guile.arities.strtab.

commit 81e47c634e635c16bc5df7e424e6afd7d3428287
Author: Andy Wingo <address@hidden>
Date:   Tue May 14 11:18:05 2013 +0200

    Beginnings of tracking of procedure arities in assembler
    
    * module/system/vm/assembler.scm (<meta>, <arity>): Assembler now tracks
      arities of a function.
      (begin-standard-arity, begin-opt-arity, begin-kw-arity, end-arity):
      New macro-assemblers.
    
    * test-suite/tests/rtl.test: Adapt all tests to use begin-standard-arity
      and end-arity.

commit 22864da973cedf5cd2d87a820c09f70c1a54024b
Author: Andy Wingo <address@hidden>
Date:   Tue May 14 10:33:43 2013 +0200

    add procedure prelude macro-instructions
    
    * module/system/vm/assembler.scm (pack-flags): New helper.
      (standard-prelude, opt-prelude, kw-prelude): New macro-instructions.
    
    * test-suite/tests/rtl.test: Update tests to use standard-prelude.

commit dff2c1cf5a0b97c605bbf094009d0a529cdae006
Author: Andy Wingo <address@hidden>
Date:   Tue May 14 10:25:38 2013 +0200

    begin-program takes properties alist
    
    * module/system/vm/assembler.scm (check): New helper macro to check
      argument types.
      (<meta>): Add properties field.  Rename name field to "label" to
      indicate that it should be unique.
      (make-meta, meta-name): New helpers.
      (begin-program): Take additional properties argument.
      (emit-init-constants): Adapt to begin-program change.
      (link-symtab): Allow for anonymous procedures.
    
    * test-suite/tests/rtl.test: Adapt tests.

commit 324c49470c55b8b7b0096923849cb311cdeca651
Author: Andy Wingo <address@hidden>
Date:   Tue May 14 10:17:07 2013 +0200

    "Flag" operands represented with booleans
    
    * libguile/instructions.c (FOR_EACH_INSTRUCTION_WORD_TYPE): Change the
      U1_ word types to be B1_ instead, indicating that the Scheme
      representation of that operand component should be a boolean.
      (br-if-true, br-if-null, br-if-nil, br-if-pair, br-if-struct)
      (br-if-char, br-if-tc7, br-if-eq, br-if-eqv, br-if-equal): Update.
    * module/system/vm/assembler.scm (assembler):
    * module/system/vm/disassembler.scm (disassembler): Update.

commit b773bfb6aed2051d3d26c107520d86d32f0d867b
Author: Andy Wingo <address@hidden>
Date:   Tue May 14 09:48:34 2013 +0200

    assembler refactor
    
    * module/system/vm/assembler.scm (assembler, cache-current-module!)
      (emit-text): Reset the asm-start after writing opcodes instead of
      beforehand.
      (reset-asm-start!): Use asm-pos helper.

commit a517bac651ee8ac578e1d0187a58ccc8712d1399
Author: Andy Wingo <address@hidden>
Date:   Sun May 5 19:19:20 2013 +0200

    `disassemble' REPL command works with RTL programs
    
    * module/system/repl/command.scm (disassemble): Work with RTL programs.

commit 51643c395fdbf4c4618ddc1066687f43285159bc
Author: Andy Wingo <address@hidden>
Date:   Sun May 5 18:35:56 2013 +0200

    Fix program-debug-info-addr; remove FIXMEs in disassembler.scm
    
    * module/system/vm/debug.scm (program-debug-info-offset): Rename from
      program-debug-info-addr to reflect reality.
      (program-debug-info-addr): New function.
    
    * module/system/vm/disassembler.scm (disassembler): Remove FIXMEs.
      (disassemble-program): Rely on the RTL program to print its name.

commit d59a63a2022cba01d09cc9a3d2a9eb4898692cc4
Author: Andy Wingo <address@hidden>
Date:   Sun May 5 18:26:53 2013 +0200

    RTL programs print with their name
    
    * libguile/print.c (iprin1): Use scm_i_program_print for RTL programs
      too.
    
    * libguile/procprop.c (scm_procedure_name): For RTL programs, call
      scm_i_rtl_program_name if there is no override.
    
    * libguile/programs.h:
    * libguile/programs.c (scm_i_rtl_program_name): New helper, dispatches
      to (system vm program).
      (scm_i_program_print): For RTL programs, the fallback prints the code
      pointer too.
    
    * module/system/vm/program.scm (rtl-program-name): Use the debug info to
      get an RTL program name.
      (write-program): Work with RTL programs too.

commit ea782a4a6de2092a34d33d753fa79cd757a18636
Author: Andy Wingo <address@hidden>
Date:   Sun May 5 17:52:59 2013 +0200

    move procedure-name and procedure-source to procprop.c
    
    * libguile/procprop.h:
    * libguile/procprop.c (scm_procedure_name, scm_procedure_source): Move
      these functions here, from debug.[ch].

commit ee4fb86fa6a67ec5176532235506b8b6dce87b1d
Author: Andy Wingo <address@hidden>
Date:   Sun May 5 16:54:55 2013 +0200

    disassembler has more useful annotations
    
    * module/system/vm/disassembler.scm (code-annotation): Provide useful
      annotations for more instructions.
      (disassemble-buffer): Take the debug context as an argument.
      (unpack-scm): Rename from unpack-immediate.
    
    * module/system/vm/debug.scm (debug-context-image, u32-offset->addr)
      (program-debug-info-context, program-debug-info-addr): New exports.
      (<program-debug-info>): Rename size field to addr.

commit 2487f9f8f649fdc7626710c7158536f0883134e5
Author: Andy Wingo <address@hidden>
Date:   Sun May 5 14:34:53 2013 +0200

    disassembler prints labels and has better code annotations
    
    * module/system/vm/disassembler.scm (disassembler): Decoding the
      instruction syntax is not the right place to decode semantics.
      Instead, compute-labels and code-annotation will build labels and
      annotations.
      (disassemble-one): Decode instructions with rest args.
      (code-annotation, compute-labels): New helpers.
      (print-info): Print labels if appropriate.
      (disassemble-buffer): New helper.
      (disassemble-program): Use disassemble-buffer.

commit 3c530fdc13b81e3b96ece7035776d474ad638d1e
Author: Andy Wingo <address@hidden>
Date:   Wed May 1 23:24:21 2013 +0200

    Better disassembly of signed values
    
    * module/system/vm/disassembler.scm (unpack-s24, unpack-s32): New
      helpers.
      (disassembler): Use the new helpers.

commit 5e8c13f4729b7de31c1f15f1e29fb80158e47b7a
Author: Andy Wingo <address@hidden>
Date:   Wed May 1 22:45:19 2013 +0200

    disassemble-program for rtl
    
    * module/system/vm/assembler.scm:
    * module/system/vm/disassembler.scm:
    * module/system/vm/rtl.scm: Split rtl.scm into two modules: an assembler
      and a disassembler.  The disassembler works now.  Fixed a couple bugs
      related to symbol table creation.
    
    * module/Makefile.am:
    * test-suite/tests/rtl.test: Adapt.

commit 900b54d7d733c29e592802e0191c02da7bf408a4
Author: Andy Wingo <address@hidden>
Date:   Sun May 5 15:40:17 2013 +0200

    add (system vm debug) [fixme: reword]
    
    * module/Makefile.am:
    * module/system/vm/debug.scm: New module, split out of the
      disassembler.

commit f343eb8c6f8be30b52742625e0fb0ddd6670f3ca
Author: Andy Wingo <address@hidden>
Date:   Wed May 1 22:19:04 2013 +0200

    add rtl program predicate and accessor to programs.c
    
    * libguile/programs.c (scm_rtl_program_code): New procedure.
      (scm_rtl_program_p): New procedure.
    
    * module/system/vm/program.scm: Export the new functions.

commit 59158f3ab4527e9894eec527f7455218f107a004
Author: Andy Wingo <address@hidden>
Date:   Wed May 1 22:17:51 2013 +0200

    new helpers in elf.scm
    
    * module/system/vm/elf.scm (elf-section-by-name): New helper.
      (elf-symbol-table-len): New helper.

commit 2c8a523e8c10ada3b35ef9fbdcaf2dd361bcd391
Author: Andy Wingo <address@hidden>
Date:   Sun Apr 21 23:13:13 2013 +0200

    assembling RTL writes a symbol table
    
    * module/system/vm/elf.scm (make-elf-symbol*): Add constructor; export
      as make-elf-symbol.
      (elf-symbol-len): New export.
      (write-elf32-symbol, write-elf64-symbol): New helpers.
      (write-elf-symbol): New export.
    
    * module/system/vm/rtl.scm (link-symtab): New function.
      (link-objects): Write a symbol table into the resulting ELF.

commit b4fbb18eaea6a1815033148cf75b102db436a4c0
Author: Andy Wingo <address@hidden>
Date:   Mon May 28 12:37:56 2012 +0200

    Add RTL assembler
    
    * module/Makefile.am:
    * module/system/vm/assembler.scm: New module, implementing an assembler
      for RTL.
    
    * test-suite/Makefile.am:
    * test-suite/tests/rtl.test: New test suite.

commit 5c008673c6b3c653b7a77cf347c096863cd07685
Author: Andy Wingo <address@hidden>
Date:   Mon May 28 12:22:31 2012 +0200

    add new rtl vm
    
    * libguile/vm-engine.c (rtl_vm_engine): Add new VM.
      (vm_engine): Add support for calling RTL programs.
    
    * libguile/tags.h (scm_tc7_rtl_program): New type for procedures that
      run on the new VM.
    * libguile/evalext.c (scm_self_evaluating_p):
    * libguile/goops.c (scm_class_of):
    * libguile/print.c (iprin1):
    * libguile/procprop.c (scm_i_procedure_arity):
    * libguile/procs.c (scm_procedure_p): Add hooks for the new tc7.
    
    * libguile/programs.h:
    * libguile/programs.c (scm_make_rtl_program, scm_i_rtl_program_print):
    * module/system/vm/program.scm: Add constructors for the new "RTL
      programs".
    
    * libguile/vm.c (rtl_boot_continuation): Define a boot program.
      (rtl_apply, rtl_values): New static RTL programs.
    
    * libguile/frames.c (scm_frame_num_locals): Adapt for frames of RTL
      programs.
    
    * libguile/frames.h: Add description of RTL frames.
    
    * libguile/Makefile.am: Add rules to generate vm-operations.h.
    * .gitignore: Ignore vm-operations.h.
    * module/system/vm/instruction.scm:
    * libguile/instructions.c:
    * libguile/instructions.h: Use vm-operations.h to define enumerated
      values for the new RTL opcodes.  Define some helper macros to pack and
      unpack 32-bit instruction words.
      (rtl-instruction-list): New function, exported by (system vm
      instruction).
    
    * libguile/objcodes.c: Wire up the bits needed to detect the new RTL
      bytecode and load it, as appropriate.
    
    * libguile/vm.c (vm_dispatch_hook):
    * libguile/vm-engine.c (RUN_HOOK): Change hook dispatch mechanism to not
      have the rest_p arg.
    
    * libguile/vm-engine.c (PUSH_CONTINUATION_HOOK,
      ABORT_CONTINUATION_HOOK): Don't take a rest_p.
      (vm_engine, rtl_vm_engine):
    * libguile/vm-i-system.c: Adapt {ABORT,POP}_CONTINUATION_HOOK
      invocations to not have a rest_p.
    
    * libguile/vm-engine.c (rtl_vm_engine): Adapt to new RTL stack frame
      format.

commit 59bce5abd14dde04c5271b2927f0beb7bc9df876
Author: Andy Wingo <address@hidden>
Date:   Mon May 28 12:25:43 2012 +0200

    refactor to resolve_variable
    
    * libguile/vm.c (resolve_variable): Slight refactor.

commit 98c106fcd4776feb325126367b2dcd60ac7e5a94
Author: Andy Wingo <address@hidden>
Date:   Thu May 17 18:35:05 2012 +0200

    cpp hygiene in the vm
    
    * libguile/vm-engine.c:
    * libguile/vm-i-scheme.c:
    * libguile/vm-i-system.c: CPP hygiene: the code that #defines, #undefs.
      Makes things cleaner given the multiple inclusion dance we do.

commit 4dc1be2932b5e739643b157714affdff7f9f0112
Author: Andy Wingo <address@hidden>
Date:   Fri May 18 12:23:58 2012 +0200

    pop-continuation abort-continuation hooks pass return vals directly
    
    * doc/ref/api-debug.texi (VM Hooks): Update documentation.
    
    * libguile/vm-engine.c:  Rework the hook machinery so that they can
      receive an arbitrary number of arguments.  The return and abort hooks
      will pass the values that they return to their continuations.
      (vm_engine): Adapt to ABORT_CONTINUATION_HOOK change.
    
    * libguile/vm-i-system.c (return, return/values): Adapt to
      POP_CONTINUATION_HOOK change.
    
    * module/system/vm/frame.scm (frame-return-values): Remove.  The
      pop-continuation-hook will pass the values directly.
    
    * module/system/vm/trace.scm (print-return):
      (trace-calls-to-procedure):
      (trace-calls-in-procedure): Update to receive return values directly.
    
    * module/system/vm/traps.scm (trap-in-procedure)
      (trap-in-dynamic-extent): Ignore return values.
      (trap-frame-finish, trap-calls-in-dynamic-extent)
      (trap-calls-to-procedure): Pass return values to the handlers.

commit e56d6b6ec3a90d690ade7d9d5a31c953a22add49
Author: Andy Wingo <address@hidden>
Date:   Fri May 18 12:21:33 2012 +0200

    vm-engine: remove register assignments
    
    * libguile/vm-engine.c: Remove the register assignments inherited from
      the 1990s.  GCC does seem to allocate reasonably on systems with
      enough registers (e.g. x86-64), and on system with too few (x86-32) we
      disabled manual allocation.  Anyway this code was never tested, so
      it's better to leave the compiler to do its own thing, until proven
      otherwise.  Also in the RTL VM we don't need to allocate a register to
      the SP, because it isn't accessed as much.

commit b2b410e1504e9c7c75bfd3ac18bb1c22df43f84f
Author: Andy Wingo <address@hidden>
Date:   Fri May 18 12:21:08 2012 +0200

    remove some configurability in vm-engine
    
    * libguile/vm-engine.c: Remove the ability for the VM to check object
      access, free variable access, and the ip.  They were off by default.
      Since they will be different in the RTL VM, their presence is just
      making things confusing.

commit ae8ae3959a70dbf904edeed84decbf23e7225a4d
Author: Andy Wingo <address@hidden>
Date:   Fri May 18 11:57:51 2012 +0200

    minor vm-engine cleanups
    
    * libguile/vm-engine.c: Some very minor cleanups: indenting, use of
      VM_ASSERT, commenting.

commit f138dc9f282a64be4c1196ed41f761f308f8dc7b
Author: Andy Wingo <address@hidden>
Date:   Thu May 17 11:39:35 2012 +0200

    remove CONS macro in VM; use scm_cons instead
    
    * libguile/vm-engine.c (CONS): Remove.  Callers should use scm_cons
      instead, syncing registers beforehand.
      (POP_LIST): Adapt, only synchronizing once.
      (POP_LIST_MARK, POP_CONS_MARK): Remove unused macros.
    
    * libguile/vm-i-scheme.c (cons):
    * libguile/vm-i-system.c (push-rest, bind-rest): Adapt.

commit b5545044b1d5653964fc31347bf966a643543352
Author: Andy Wingo <address@hidden>
Date:   Fri May 18 11:52:12 2012 +0200

    inline vm-engine.h into vm-engine.c
    
    * libguile/vm-engine.h:
    * libguile/vm-engine.c: Fold vm-engine.h into vm-engine.c.
    
    * libguile/Makefile.am: Adapt.

commit 0fd66aac925f0555b7105bef49399d3640d2303a
Author: Andy Wingo <address@hidden>
Date:   Sun Apr 28 14:42:01 2013 +0200

    add (find-mapped-elf-image) procedure to (system vm objcode) module
    
    * libguile/objcodes.c (register_elf, scm_find_mapped_elf_image): New
      interfaces that keep a list of all ELF mappings.  Exported from the
      (system vm objcode) module.
    
    * module/system/vm/objcode.scm: Export find-mapped-elf-image.

commit 2984900f8c9eb8c643e182fdfc61f4b0e3057081
Author: Andy Wingo <address@hidden>
Date:   Sun Apr 28 14:23:20 2013 +0200

    refactor and simplify ELF loader in objcodes.c
    
    * libguile/objcodes.c (sniff_elf_alignment, alloc_aligned)
      (copy_and_align_elf_data): New helpers for portably re-aligning ELF
      data from read(2) or from a bytevector.
      (load_thunk_from_memory): Simplify!  Now there is only one procedure
      that loads ELF, and it does less: it simply receives the whole image
      in one array, hopefully from mmap.
    
      (scm_load_thunk_from_file): Use new map_file_contents helper, and go
      through load_thunk_from_memory.
      (scm_load_thunk_from_memory): Pass load_thunk_from_memory a piece of
      memory that it owns, and that is appropriately aligned.

commit e70b1e0a4617a6f2c3bd96db4632bce666b3f418
Author: Andy Wingo <address@hidden>
Date:   Sun Apr 28 09:31:28 2013 +0200

    refactor linker to lay out ELF files and memory in the same way
    
    * module/system/vm/linker.scm (make-linker-object):
      (linker-object-section-symbol):
      (linker-object-symbols*): Create a symbol to the start of a linker
      object.  Hide it from the external linker-object-symbols* accessor.
    
      (segment-kind, count-segments): Sections without SHF_ALLOC don't get
      segments.
      (collate-objects-into-segments): Allow for #f segment types.  If two
      sections have the same type and flags, leave them in the same order.
    
      (align): Allow for 0 alignment.
    
      (add-elf-objects): New helper: puts the ELF data structures (header,
      segment table, and section table) in sections of their own.  This
      lends a nice clarity and conceptual unity to the linker.
    
      (relocate-section-header, alloc-objects): Lay out segments with
      congruent, contiguous addresses, so that we can just mmap the file and
      if debugging sections that are not in segments are present, they can
      be lazily paged in if needed by the kernel's VM system.
    
      (link-elf): Refactor to use the new interfaces.
    
    * test-suite/tests/linker.test: Update to expect the additional sections
      for the header and section table.

commit 8aa1a3173446d53c6a8e0f13f2a015bb963efbd1
Author: Andy Wingo <address@hidden>
Date:   Sun Apr 28 07:51:42 2013 +0200

    elf: add accessors for header members that might need relocation
    
    * module/system/vm/elf.scm (elf-header-shoff-offset)
      (elf-section-header-addr-offset, elf-section-header-offset-offset):
      New accessors.

commit 67123b63fe47a0b18475506e19d4ffaf3e4139df
Author: Andy Wingo <address@hidden>
Date:   Sun Apr 21 16:06:36 2013 +0200

    ELF refactor and consequent linker simplifications
    
    * module/system/vm/elf.scm: Add commentary.
      (make-elf): Add a constructor similar to make-elf-segment and
      make-elf-section.
      (write-elf32-header, write-elf64-header, write-elf-header): Take an
      <elf> instead of all the fields separately.
      (<elf-segment>, <elf-section>): Add "index" property.  Adapt
      constructors accordingly.
    
    * module/language/objcode/elf.scm (bytecode->elf): Arrange to set the
      section indexes when creating ELF sections.
    
    * module/system/vm/linker.scm (alloc-segment, relocate-section-header):
      Arrange to set segment and section indexes.
      (find-shstrndx): New helper, replaces compute-sections-by-name.  Now
      that sections know their indexes, this is easier.
      (allocate-elf, write-elf): New helpers, factored out of link-elf.
      Easier now that sections have indexes.
      (link-elf): Simplify.  Check that the incoming objects have sensible
      numbers.
    
    * test-suite/tests/linker.test: Update to set #:index on the linker
      objects.

commit 62a968d8198e37ef2c834b6fbef42c01cdef25a1
Author: Andy Wingo <address@hidden>
Date:   Wed Apr 17 23:07:04 2013 +0200

    split linker out of elf module
    
    * module/Makefile.am:
    * module/system/vm/linker.scm: New file, split out of (system vm elf).
    
    * module/system/vm/elf.scm: Remove linking capabilities.
    
    * module/language/objcode/elf.scm: Adapt caller to use (system vm
      linker).
    
    * test-suite/tests/linker.test: New test.

-----------------------------------------------------------------------


hooks/post-receive
-- 
GNU Guile



reply via email to

[Prev in Thread] Current Thread [Next in Thread]