Module Name: src Committed By: uebayasi Date: Thu Nov 13 15:25:48 UTC 2014
Modified Files: src/usr.bin/config: TODO Log Message: Revise a plan about link-set. (I was ignorant 2 weeks ago.) To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/usr.bin/config/TODO Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/config/TODO diff -u src/usr.bin/config/TODO:1.11 src/usr.bin/config/TODO:1.12 --- src/usr.bin/config/TODO:1.11 Sat Nov 8 05:57:41 2014 +++ src/usr.bin/config/TODO Thu Nov 13 15:25:48 2014 @@ -158,17 +158,21 @@ o Support kernel constructor/destructor sequence of various subsystem initializations in init_main.c:main() will be replaced by an array of .kctors invocations, and #ifdef's there will be gone. -o Replace linkset. +o Hide link-set in the final kernel. - Don't allow kernel subsystems create random ELF sections (with potentially - long names) in the final kernel. To collect some data in statically linked - modules, creating intermediate sections (e.g. .data.linkset.sysctl) and - exporting the start/end symbols (e.g. _data_linkset_sysctl_{start,end}) - using linker script should be fine. - - Dynamically loaded modules have to register those entries via constructors - (functions). This means that dynamically loaded modules are flexible but - come with overhead. + Link-set is used to collect references (pointers) at link time. It relys on + the ld(1) behavior that it automatically generates `__start_X' and `__stop_X' + symbols for the section `X' to reduce coding. + + Don't allow kernel subsystems create random ELF sections. + + Pre-define all the available link-set names and pre-generate a linker script + to merge them into .rodata. + + (For modular(9) modules, `link_set_modules' is looked up by kernel loader. + Provide only it.) + + Provide a way for 3rd party modules to declare extra link-set. o Shared kernel objects.