summaryrefslogtreecommitdiffstats
path: root/sys/kern/link_elf.c
Commit message (Collapse)AuthorAgeFilesLines
* Move the truncation code out of vn_open and into the open system callmckusick2000-07-041-2/+3
| | | | | | | | | | after the acquisition of any advisory locks. This fix corrects a case in which a process tries to open a file with a non-blocking exclusive lock. Even if it fails to get the lock it would still truncate the file even though its open failed. With this change, the truncation is done only after the lock is successfully acquired. Obtained from: BSD/OS
* Remove unneeded #include <vm/vm_zone.h>phk2000-04-301-1/+0
| | | | Generated by: src/tools/tools/kerninclude
* First round implementation of a fine grain enhanced module to modulepeter2000-04-291-77/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | version dependency system. This isn't quite finished, but it is at a useful stage to do a functional checkpoint. Highlights: - version and dependency metadata is gathered via linker sets, so things are handled the same for static kernels and code built to live in a kld. - The dependencies are at module level (versus at file level). - Dependencies determine kld symbol search order - this means that you cannot link against symbols in another file unless you depend on it. This is so that you cannot accidently unload the target out from underneath the ones referencing it. - It is flexible enough that we can put tags in #include files and macros so that we can get decent hooks for enforcing recompiles on incompatable ABI changes. eg: if we change struct proc, we could force a recompile for all kld's that reference the proc struct. - Tangled dependency references at boot time are sorted. Files are relocated once all their dependencies are already relocated. Caveats: - Loader support is incomplete, but has been worked on seperately. - Actual enforcement of the version number tags is not active yet - just the module dependencies are live. The actual structure of versioning hasn't been agreed on yet. (eg: major.minor, or whatever) - There is some backwards compatability for old modules without metadata but I'm not sure how good it is. This is based on work originally done by Boris Popov (bp@freebsd.org), but I'm not sure he'd recognize much of it now. Don't blame him. :-) Also, ideas have been borrowed from Mike Smith.
* Do not use uprintf() for link time error messages. This has unpleasantpeter2000-04-291-4/+4
| | | | | consequences when it happens in the preload support, before curproc or the tty system exist.
* * Rewrite to use kobj(9) instead of hard-coded function tables.dfr2000-04-241-137/+224
| | | | | | | * Report link errors to stdout with uprintf() so that the user can see what went wrong (PR kern/9214). * Add support code to allow module symbols to be loaded into GDB using the debugger's "sharedlibrary" command.
* Fixed a cast of a pointer to an integer of a possibly different size.bde1999-12-241-3/+3
| | | | | Fixed casts of non-`void *' pointers to uintptr_t. Fixed related style bugs. This file uses perfectly non-KNF formatting for casts.
* Introduce NDFREE (and remove VOP_ABORTOP)eivind1999-12-151-2/+2
|
* Fix an embarresing mistake in the kld symbol lookup for DDB. It shouldpeter1999-11-281-4/+6
| | | | | | | now correctly do a traceback when crashing inside a KLD module. PR: 15014 Submitted by: Vladimir N. Silyaev <vns@delta.odessa.ua>
* useracc() the prequel:phk1999-10-291-1/+0
| | | | | | | | | | | Merge the contents (less some trivial bordering the silly comments) of <vm/vm_prot.h> and <vm/vm_inherit.h> into <vm/vm.h>. This puts the #defines for the vm_inherit_t and vm_prot_t types next to their typedefs. This paves the road for the commit to follow shortly: change useracc() to use VM_PROT_{READ|WRITE} rather than B_{READ|WRITE} as argument.
* Trim unused options (or #ifdef for undoc options).peter1999-10-111-0/+4
| | | | Submitted by: phk
* $Id$ -> $FreeBSD$peter1999-08-281-1/+1
|
* Cast pointers to uintptr_t instead of casting them to u_long, and/or vicebde1999-08-241-3/+3
| | | | versa. Cosmetic.
* Use KERNBASE for the load address of the kernel rather than magic constantspeter1999-05-081-7/+2
| | | | as it seems to work.. (at least on i386/elf).
* Cast to `const char *' instead of to c_caddr_t. This is part ofbde1999-01-291-5/+5
| | | | | | terminating c_caddr_t with extreme prejudice. Here we depended on the "opaque" type c_caddr_t being precisely `const char *' to do unportable pointer arithmetic.
* Fix warnings in preparation for adding -Wall -Wcast-qual to thedillon1999-01-281-2/+2
| | | | kernel compile
* Fix warnings in preparation for adding -Wall -Wcast-qual to thedillon1999-01-271-3/+3
| | | | | | | kernel compile. This commit includes significant work to proper handle const arguments for the DDB symbol routines.
* Fix warnings in preparation for adding -Wall -Wcast-qual to thedillon1999-01-271-12/+12
| | | | kernel compile
* Don't try to call SYSUNINIT functions if there was a link error.dfr1999-01-251-1/+5
| | | | Reviewed by: Peter Wemm <peter@netplex.com.au>
* When loading something that has undefined symbols, it would be helpful topeter1998-12-311-5/+13
| | | | know what they were..
* Don't put aggregate structs 4K large on the kernel stack, especially whenpeter1998-11-061-23/+30
| | | | | | | | | | we can recurse when loading dependencies and that the kstack is limited to something like 6 or 7KB. Having a single dependency caused an instant double panic, and I stronly suspect some of the other strange "events" that I have seen are possibly as a result of taking a couple of interrupts with a large chunk of the stack already in use. While here, fix a minor logic hiccup in a sanity check.
* The handle for the kernel is common. With this fix, ELF kernels can loadpeter1998-11-041-11/+5
| | | | a.out kld modules, and a.out kernels can load ELF kld modules.
* Nitpicking and dusting performed on a train. Removes trivial warningsphk1998-10-251-12/+1
| | | | about unused variables, labels and other lint.
* *gulp*. Jordan specifically OK'ed this..peter1998-10-161-30/+41
| | | | | | | | This is the bulk of the support for doing kld modules. Two linker_sets were replaced by SYSINIT()'s. VFS's and exec handlers are self registered. kld is now a superset of lkm. I have converted most of them, they will follow as a seperate commit as samples. This all still works as a static a.out kernel using LKM's.
* - bzero() after malloc() bug fixpeter1998-10-151-6/+7
| | | | | - look up relocation symbol names in correct table bugfix. - remove unused (initialized to 0) variable and conditional free() of it.
* Load the full symbol tables if they are present. This means that ddbpeter1998-10-131-10/+78
| | | | | and tracebacks have access to local symbols. This is particularly important for the Alpha.
* Only print kernel entry point during load.peter1998-10-121-21/+108
| | | | | | | | | | | | | | | | | | | Drastically quieten down the verbose load progress messages. They were more useful for debugging than anything, but are beyond a joke when loading a few dozen modules. Simplify the ELF extended symbol table load format. Just take the main symbol table and the string table that corresponds. This is what we will be getting local symbols from. (needed for the alpha stack tracebacks). Use the (optional) full symbol tables in lookups. This means we have to furhter distinguish between symbols that can come from the dynamic linking table and the complete table. The alpha boot code now needs to be adapted as ddb/db_elf.c cannot use the simpler format. I have not implemented loading the extended symbol tables from the syscall interface yet, just for preloaded modules. I am not sure about the symbol resolution. I *think* it's possible that a local symbol can be found in preference to a global, depending on the search sequence and dependency tree.
* Fully implement KLD and preloading.peter1998-10-091-53/+142
| | | | | | | | | | | | | | - seperate unload for preloaded linker objects. - Don't build a kernel object if running as an a.out kernel. - extract the real kernel name rather than hardwiring "kernel" for kldstat. (sysctl kern.bootfile getst the full name via bootinfo) - use real addresses on the kernel "module" rather than fictitious ones. - preloaded module support - search module path for file modules. - symbols are checked to see if they are in the right containing file before using their indexes into string tables. This is to help ddb since it only supplies a pointer to an opaque symbol and there is no telling which file/object/module/whatever it came from.
* Implement dynamic loading for ELF.dfr1998-09-111-186/+410
|
* Add partial KLD support for ELF. The module loading is not written yet.dfr1998-08-241-0/+503
OpenPOWER on IntegriCloud