123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- Oberon Microsystems BlackBox Component Builder (http://www.oberon.ch/)
- Port for OpenBSD/i386, GNU/Linux/i386
- Tested on OpenBSD 5.2, Fedora Core 17, Ubuntu 12.04 LTS
- Some significant parts taken from OpenBUGS (http://www.openbugs.info/)
- How to build:
- compile loader executable (BlackBox itself and simple interpreter):
- `uname -s`/libBB0.so must be present (can be built from Windows)
- cd BlackBox/`uname -s`/Lin/Rsrc/loader; make
- compile self:
- cd BlackBox; ./switch-os `uname -s`; ./clean; ./build-dev0; ./build
- Files:
- original:
- BlackBox:
- Dev/Mod/*
- all except ElfLinker16
- Dev/Rsrc/*
- Docu/BB-License.odc
- Docu/BB-Licensing-Policy.odc
- Docu/BB-Open-Source-License.odc
- Obx/*
- Std/*
- System/Mod/
- all except Console
- System/Rsrc/*
- Text/*
- Xhtml
- Windows/Host/Mod/Files.odc (HostFiles)
- Windows/Host/Mod/Registry.odc (HostRegistry)
- OpenBUGS:
- Dev/Mod/ElfLinker16.odc
- Dev/Docu/ElfLinker.odc
- System/Mod/Console.odc
- Docu/OpenBUGS-License.odc
- http://forum.oberoncore.ru/viewtopic.php?f=34&t=1159&sid=3e82517160caa46c64331178c1b61e95:
- {Linux,OpenBSD}/Lin/Mod/Kernel_so_init.odc
- modified:
- OpenBSD/System/Mod/Kernel.odc:
- 1.6-rc6 System/Mod/Kernel.odc, OpenBUGS Lin/Mod/linKernel.odc:
- OpenBSD specific:
- Memory management rewritten (based on mmap)
- Kernel.TrapHandler
- OpenBSD sigcontext-specific
- Kernel.Time
- CLOCKS_PER_SEC related
- Kernel.InitModule
- mprotect call added
- Kernel.InstallSignals:
- do not install signal handler for SIGTHR (when executable linked with -pthread)
- IsReadable
- Kernel.cmdLine support:
- Kernel.INIT (SetCmdLine2)
- Linux/System/Mod/Kernel.odc:
- OpenBSD/System/Mod/Kernel.odc modified for Linux:
- Time*
- TrapHandler
- mmap: use "/dev/zero" device instead of -1
- mprotect addresses must be page-aligned
- do not show warning message if signal install failed
- OpenBSD/Host/Mod/Files.odc:
- OpenBUGS Lin/Mod/linHostFiles.odc:
- OpenBSD-specific:
- size_t
- __xstat -> stat
- Kernel.cmdLine support:
- str := "" -> str := Kernel.cmdLine$
- Linux/Host/Mod/Files.odc:
- OpenBUGS Lin/Mod/linHostFiles.odc:
- Kernel.cmdLine support:
- str := "" -> str := Kernel.cmdLine$
- OpenBSD/Host/Mod/Console.odc:
- OpenBUGS Lin/Mod/Console.odc:
- stdin -> SYSTEM.ADR(__sF[0])
- Linux/Host/Mod/Console.odc:
- OpenBUGS Lin/Mod/Console.odc
- Windows/Host/Mod/Console.odc:
- OpenBUGS Lin/Mod/Console.odc ported to Windows
- OpenBSD/Lin/Mod/Libc.txt:
- OpenBUGS Lin/Mod/Libc.odc:
- OpenBSD-specific
- Linux/Lin/Mod/Libc.odc:
- OpenBUGS Lin/Mod/Libc.odc:
- PROT_*, MAP_*, O_*, _SC_PAGESIZE, SIGSTKSZ CONSTs added
- open, close, read, write, mmap, munmap, mprotect, getenv, sysconf, sigaltstack functions added
- Linux/Lin/Mod/Dl.odc:
- OpenBUGS Lin/Mod/Dl.odc
- Linux/Host/Mod/Dates.odc: from http://oberoncore.ru/
- OpenBSD/Host/Mod/Dates.odc:
- Linux/Host/Mod/Dates.odc: OpenBSD-specific
- Windows/Host/Mod/Dates.odc:
- BlackBox 1.6-rc6 DatesHook from HostDialog
- Dev0/Mod
- CP*
- BlackBox 1.6-rc6 Dev CP* modified to not depend on Dates, Texts etc.
- Compiler.odc:
- modified original BlackBox Dev/Mod/Compiler.odc
- Linker.odc:
- modified original BlackBox Dev/Mod/Linker.odc
- ElfLinker16.odc:
- modified OpenBUGS Dev/Mod/ElfLinker16.odc
- HostTextConv.odc:
- BlackBox 1.6-rc6 Host/Mod/TextConv.odc:
- Windows-specific converters removed
- new:
- Cons/Mod
- Interp.odc: console interpreter
- Compiler.odc: console interface to Dev compiler
- Log.odc: Log.Hook console implementation
- {OpenBSD,Linux}/libBB.so: compiled and linked shared library to run BlackBox
- {OpenBSD,Linux}/libBB0.so: compiled and linked shared library to run simple development interpreter
- Windows/dev0.exe: compiled and linked simple development interpreter
- Views.odc: minimal Views implementation required to compile StdInterpreter
- HostFonts.odc, HostDialog.odc, HostWindows.odc: simple Hosts implementation
- Notes:
- Dev0:
- I will not remove Dev0 because I can not link .so library based on ConsInterp and Dev
- Kernel.baseStack issue (preliminary description):
- baseStack is upper border:
- * of garbage collector stack scan range (see Kernel.MarkLocals)
- * of TrapViewer stack show range (see Kernel.TrapHandler)
- it is initialized in Kernel.INIT and initially points close to upper
- border of library stack (because Kernel.INIT called from library
- constructor, which executes close to upper border of library stack)
- it can be changed in Kernel.Start to skip unnecessary stack addresses
- if libBB.so exports procedure for calling from main program,
- then it will be executed on main program stack, not on library
- stack, at stack addresses higher than baseStack.
- Thus, MarkLocals and TrapViewer will work incorrectly.
- in this case, to solve problem, baseStack should be adjusted and
- should point to stack on which this exported procedure executes
- if necessary, this can be done using auxiliary module Kernel_so_init
- A. V. Shiryaev, 2012
|