Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
Add support for NetBSD for the new executable image implementation. lisp/Config_x86_netbsd: o Define EXEC_FINAL_OBJ, like other x86 ports. lisp/elf.c: o Use the new linker.sh command script to link the executable. lisp/lisp.c: o Use new method of getting the initial_function.
Update conditionals so this does the right thing on Solaris/x86 so that the correct object files are dumped and so that we can link them all together. However, the resulting exectable does not work on Solaris/x86.
Merge changes from HEAD that allow the executable feature to work again on FreeBSD.
EXECUTABLE seems to work on FreeBSD now. TODO: mv tools/linker-x86.sh tools/linker.sh
More comment cleanups.
Let the linker remove the object files we created for the Lisp spaces. lisp/elf.c: lisp/mach-o.c: o Remove obj_cleanup function. lisp/save.c: o Don't call obj_cleanup anymore (because it doesn't exist.) toosl/linker-x86.sh: o Remove CORRO.o CORSTA.o CORDYN.o on exit.
Add a comment.
Various, small (EXECUTABLE, FreeBSD, no warinings, typo)
For Linux and Darwin, we don't actually need to set the starting address of the core sections. In map_core_sections, we can map them to the correct addresses, just like we do on Solaris. lisp/elf.c: o Mmap the Lisp core sections with the correct address, not using the one in the executable itself, just like on Solaris. lisp/mach-o.c: o Add the array of addresses of the dynamic, static, and read-only spaces. o Mmap the Lisp core sections with the correct address, not using the one in the executable itself, just like on Solaris. o Small update to print out the names of the spaces, just like for elf files. tools/linker-x86.sh: o Don't need to tell the linker the starting addresses of the sections anymore for Linux and Darwin. map_core_sections handles that.
Update how executable images are done on Solaris to match Linux and Darwin. lisp/elf.h: o Solaris can use linux-x86.sh too. (Need to rename this someday!) lisp/elf.c: o Use same command line for sparc as for linux. lisp/lisp.c: o Setup up initial_function the same way as on linux. tools/linker-x86.sh: o Add -rdynamic or -Bdynamic as needed. o Add support for Solaris using Sun C.
Some cleanup of the names of main functions for creating executable images. lisp/elf.c: o Change write_elf_object, elf_cleanup, and elf_run_linker to write_space_object, obj_cleanup, and obj_run_linker. lisp/elf.h: o Update so that this can used for both elf and mach-o. Not great, but I don't want to rename this file. lisp/mach-o.c: o Include elf.h o Remove items that are defined in elf.h. o Change function names from elf to mach_o. lisp/save.c: o Update names to new ones.
Some cleanup for Linux executables. The value of the initial_function_addr is saved to a file and compiled in when linking the executable. This makes building the executable more portable. All that's need is a way for gcc to link all of lisp.a and to set the starting address of some segments. lisp/lisp.c: o For Linux, use the value of initial_function_addr instead of the address. tools/linker-x86.sh: o Disable -x option, unless CMU_DEBUG_LINKER is not empty. o Instead of using --defsym feature of GNU ld, save the initial function address in a file to be compiled when making the executable. lisp/elf.c: o Remove printing of the sizeof elf headers o Print some info about the object being written and print somewhat neatly. lisp/save.c: o Rework printing info of the core objects. Let write_elf_object do it.
Change how we build executables for Linux. We no longer need the hairy and fragile linker script. Instead, we can use regular old gcc to do what we need. (Should also work for FreeBSD, but not yet implemented.) lisp/elf.c: o Include validate.h so we can get the starting addresses of the read-only, static, and dynamic spaces. o Add special case for linux to run the linker script correctly. lisp/elf.h: o There's a separate linker script for Linux. lisp/save.c: o Temporarily don't run elf_cleanup so we can have easier testing/debugging. tools/linker.sh: o Don't need BIFLAG anymore. tools/make-main-dist.sh: o Install linker-x86.sh.
lisp/elf.c: o Print out the size of Elf_Ehdr and Elf32_Phdr, for debugging. o Pass the address of main to the linker script. We will use the first word of main as the address of builtin_image_flag. It seems highly unlikely that this would have have the value 0. tools/Linux-cmucl-linker-script: o Hardwire the value of SIZEOF_HEADERS. This is needed on Debian to get the right number of segments. o Comment out some items and/or fix them so that Debian's linker doesn't complain. Doesn't appear to do any harm on openSuSE 11.2. tools/linker.sh: o Update for the additional argument for the address of main to use as the address of builtin_image_flag.
lisp/lisp.c: o Make debug_lisp_search global instead of static. lisp/elf.c: o Use debug_lisp_search to control printing of some debug information when searching for the linker script. o Update to support executables with Unicode support. (CMUCL_LIB is a wide string, so we need to hack that into a C string. This needs work.)
Sync to utf16 branch, tag unicode-utf16-sync-label-2009-03-16.
Sync to CVS HEAD, tag label-2009-03-16. But don't sync Config.FreeBSD_gencgc, Config.x86_freebsd, FreeBSD-os.c, and FreeBSD-os.h. Let Alex sync those later. The result seems to work as expected on Solaris and x86/linux. Darwin (ppc or x86) untested.
Use 'const char *' instead of 'char *' where appropriate
The FreeBSD-os.h header imported headers that its definitions did not make direct use of. Remove the includes of these headers and fix-up several files that indirectly depended on them. * FreeBSD-os.c - add stdio.h and unistd.h includes that were implicitly depended on. Remove unused or commented system includes. * FreeBSD-os.h - remove unused includes. Include signal.h to directly provide the SIGBUS, SIGSEGV, and sub-code definitions. Redefine os_vm_address_t and os_vm_size_t in terms of standard types. Now that the sys/param.h include is gone we no longer need to undefine PAGE_SIZE. * elf.c - add includes that were implicitly depended on. * lisp.c - remove unused system includes including sys/param.h which redefines PAGE_SIZE.
Replace uses of MAXPATHLEN with FILENAME_MAX. FILENAME_MAX is defined by ANSI C and usually expands to the same value as MAXPATHLEN.
Eliminate a compiler warning.
Add support for executable stuff using Sun C on sparc. The executable appears to be created successfully, and you can do things, but it is not usable. lisp/elf.h: o Set C_COMPILER to either "cc" or "gcc". We use gcc everywhere, except if the C compiler is Sun C on sparc. lisp/elf.c: o Print out C_COMPILER as the first arg to the linker script. tools/linker.sh: o Rearrange code so test for number of args is done first. o Look at the first arg to determine the C compiler used. If gcc, use the original code. Add new code to support Sun C.
Use __func__ and do some clean ups.
Add initial support executables on Solaris with gcc. Executables are created and will run, but you can't load new files. Still needs work. src/exec-init.c: o New file that defines builtin_image_flag and initial_function_addr, instead of being defined in lisp.c code/sunos-os.lisp: o Register the :executable feature if needed. lisp/GNUmakefile: o Add exec-init.c to list of src files. o Remove exec-init.o from lisp.a when building on Solaris. lisp/elf.c: o Port the elf code to Solaris. - Basically set up the correct values for the elf header and sections. - The ELF core sections on Solaris don't have valid addresses so we explicitly set them when mapping the core sections. lisp/elf.h o Use SOLARIS instead of sparc. lisp/lisp.c: o builtin_image_flag and initial_function_addr moved to exec-init.c. tools/linker.sh: o Support Solaris tools/make-main-dist.sh: o Support Solaris tools/SunOS-cmucl-linker-script: o New file for SunOS executable.
Back out change setting dynamic space variables. It's already done in lisp.c.
Fix error --- dynamic space address and free pointer not set.
Fix typos, portability stuff (e.g. get rid of __FUNCTION__ which SunOS doesn't have.)
Fix indenting and add CVS id.
Lisp executable code.
Merge code from main branch of 2005-12-17 to ppc gencgc branch. Still doesn't work of course.
Indent all source files using GNU indent using the config in .indent.pro.
Changes from Robert Swindells to support NetBSD.
Replace the __FUNCTION__ gccism with the actual function name. Sun C doesn't like this.
* src/lisp/elf.c (map_core_sections): Add missing stream argument to fprintf.
Fred Gilham's Lisp executable support for CMUCL.
Merge with HEAD.
Enable this to compile on Solaris. Solaris wants the same typedefs as Linux. (Unknown if this change allows this to work or not.)
Lisp executable support. From Fred Gilham.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
|Powered by ViewVC 1.1.5|