Age | Commit message (Collapse) | Author |
|
* exec.c (do_exec): Fix conditional for cleaning up INTERP,
from nonnull E.interp.section to nonnull INTERP.file.
If we failed to open the interpreter file, INTERP.file will be
null and the rest of INTERP will be uninitialized.
|
|
* exec.c (do_exec): Set boot->phdr_addr and boot->user_entry after
loading, to addresses adjusted for actual run-time load address.
|
|
* exec.c (load_section): If ANYWHERE, then make sure ADDR starts
out at least past the first page, so that we don't take it. Then
the library can (if desired) make the page no-access.
Fri Nov 15 17:34:23 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* exec.c: Don't include <hurd/shared.h> any more.
* main.c (S_exec_init): New arg syntax of trivfs_open.
|
|
* exec.c (fake_seek): New function.
(prepare): Initialize E->stream.__io_funcs.seek to fake_seek; this
is called now that stdio doesn't assume it always knows the file
position.
|
|
exec_exec stub.
|
|
more loosely.
|
|
|
|
otherwise it modifies the stub process's state and not the real
process's.
|
|
|
|
|
|
|
|
|
|
|
|
Request round_page (LEN) bytes in io_read to avoid many small reads.
|
|
and deallocating its address space.
|
|
because that's what they are; also because some callers of read_error
don't set errno at all.
|
|
|
|
If io_map returns EOPNOTSUPP, suppress the error, and still setup E's stream.
(prepare_and_check):
If prepare returns an error, do no more.
|
|
Use strdupa().
Update use of hurd_file_name_lookup() [still probably not right though].
|
|
|
|
|
|
Be careful not to look at BOOT after we release our reference on it.
Correctly initialize BOOT->intarray in the case where NINTS < INIT_INT_MAX
but we don't alloc a new array.
|
|
(input_room): Simplify.
(check_elf): Extract all information from file header before calling `map'
for program headers.
|
|
(load_section): Call it.
|
|
|
|
|
|
|
|
|
|
(S_exec_startup): Just call it.
|
|
(std_*, finish): Make global.
(do_exec): Only reset CWDIR when null, even if secure.
Actually call check_hashbang and return success if it does.
Use new hurd_file_name_lookup protocol with private callbacks to open
interpreter file on behalf of client.
Remove `bootout' label; use `stdout' or `out' as appropriate instead.
At `out' label always deref BOOT, which cleans it up iff necessary.
(S_exec_exec): #if 0 out $EXECSERVERS processing for time being.
|
|
Main program split out into main.c.
(std_lock): New variable (rwlock).
(do_exec): Acquire reader lock to access std_ints and std_ports.
(S_exec_setexecdata): Acquire writer lock to change them.
|
|
|
|
completely with OLDTASK.
(do_mach_notify_no_senders): Remove bogus mod_refs call on receive_portset.
|
|
(do_exec): Set them. Code rearranged to construct bootinfo before looking
up interpreter file, keep proper track of port rights and VM copied into
bootinfo (there were leaks).
|
|
|
|
(map): Likewise.
(prepare): Likewise.
(load): Likewise.
(servercopy): Likewise.
(do_exec): Likewise.
(S_exec_setexecdata): Likewise.
(S_exec_exec): Put extra parens around assignment inside while
test.
|
|
(load_section): Use them; if `anywhere' set, load the section anywhere.
Record load address in `loadbase'.
(check_elf): Initialize `anywhere' and `loadbase'.
(postload): Merged into load.
(load): Perform postload functionality here, after calling finish_mapping.
(finish): Take new flag arg; deallocate file port only if set.
(do_exec): Pass flag to finish appropriately.
Don't call finish_mapping and postload after load.
KLUDGE: Load the interpreter before the program instead of after.
|
|
Secondarily uses the BFD library #ifdef BFD.
Supports gunzipping only #ifdef GZIP.
|
|
|
|
Open a new BFD on the uncompressed data stream before return.
|
|
(check_section): Notice section named ".interp" and set that pointer.
(load_section): Do nothing if the section is zero size.
When reading into our copy of the overlap page, don't read past the end of
the section.
(do_exec): Consolidate new subfunction `check_maybe_gzip'.
If there is an interpreter section, load the interpreter file too,
and use its entry point instead of the user program's.
Cleaned up and made more robust deallocation of BOOT info on error.
(deadboot): New function, split out of do_mach_port_notify_no_senders.
|
|
(input_room): Always map a page-aligned region.
|
|
|
|
pages.
|
|
|
|
|
|
|
|
[BFD] (host_bfd_arch_info): New variable.
[BFD] (host_bfd): Initialize `arch_info' member to its address.
(check) [BFD]: Use bfd_arch_get_compatible properly, rather than the
nonexistent bfd_arch_compatible.
(main) [BFD]: Fill in host_bfd.arch_info instead of old `obj_machine' and
`obj_archiecture' members, which BFD no longer has.
|
|
(load_section): Copy data from U->file_data if that is nonnull.
Use new subfunction `write_to_task' that handles non-page aligned sections.
(input_room): Fix EOF check.
Use io_read if no memory object.
(prepare): New function, broken out of check.
Initialize E->file_data and E->optimal_block.
Set E->stream.__seen bit.
(check): No longer take FILE arg.
Use E->file_data if nonnull; else read from stream if no memory object.
(finish_mapping): Reset members after deallocating resources.
(finish): Likewise. Call fclose. Don't deallocate E->header if it points
to &E->headbuf or E->file_data.
(check_gzip): New function, implements executing gzip'd binaries.
(do_exec): Call prepare before check.
Call check_gzip if file format unrecognized.
|
|
ufs bug.
|