Commit Graph

2489 Commits

Author SHA1 Message Date
manu c2f72d8d1c Updated PR_GETNSHARE and added PR_TERMCHILD 2002-04-28 17:56:53 +00:00
manu 3568060679 Implements IRIX sproc(2) and friends.
There may be a problem with stack size overflow in this implementation
2002-04-28 17:21:58 +00:00
manu ee5b3b3977 Added a void IRIX /dev/usema and /dev/usemaclone pseudodevice driver.
IRIX uses this for implementing atomics operation on semaphores

This will be filled later.
2002-04-23 05:51:14 +00:00
manu f599dce291 Added fchdir, fchown and fchmod system calls 2002-04-23 05:47:38 +00:00
manu 0e9a3e0d43 - We now use irix_sys_mmap instead of svr4_sys_mmap
- initial support for MAP_AUTOGROW flag. When mapping beyond the end of file is
requested with MAP_AUTOGROW, if pages beyond the end of file are touched, the
file should be resized. We are not able to emulate this yet, so we immediatly
resize the file to fit the whole mapping.
- implements mmap64
2002-04-22 05:58:46 +00:00
manu 4678e0b326 Fixed functions to get the number of CPU in sysmp() and systeminfo(). The
problam was that when hw_sysctl() is used, the result is supposed to be
in userland
2002-04-20 21:25:01 +00:00
manu ded3c31a9c On IRIX, fcntl F_FREESP, F_ALLOCSP, F_FREESP64 and F_ALLOCSP64 commands
ignore the len argument. We now correctly emulate the behavior of these
commands.
2002-04-20 20:38:21 +00:00
manu e67d46d7af Added one more system call: msync 2002-04-20 16:56:28 +00:00
manu 21d2265eea Fixed mistakes in irix_sys_fcntl() (missing breaks in case statement) 2002-04-20 16:20:12 +00:00
manu d5ed80d9c6 The IRIX usinit(3) function expects a page of memory to be available at
address 0x200000 (disasembling usinit shows that this address is hardcoded in
libc). It uses it for locks and semaphres.

We therefore allocate this page of memory, to prevent IRIX process from
faulting when thay call usinit(3).
2002-04-20 16:19:22 +00:00
manu 1f32c2b1c4 One more unsupported feature: SGI_SATCTL 2002-04-20 07:43:35 +00:00
manu 829bfed008 Added missing irix_misc.c 2002-04-20 07:42:32 +00:00
manu 5261d673c9 Added getpgrp/setpgrp.
setpgrp is stolen from compat/sunos. It should probbaly be moved to
/compat/common
2002-04-16 20:15:47 +00:00
manu 08948f97d1 Added sysconf(SC_IP_SECOPTS) 2002-04-16 20:15:03 +00:00
manu 28a3cfe032 Do not restore SR on sigreturn: this could enable the user process to gain
unpropre privileges.
2002-04-15 20:48:12 +00:00
manu f8c12b3107 IRIX provide a signal trampoline in libc, we now use it.
- the signal trampoline address is given to the kernel by a sigaction()
  fourth argument
- we introduce an irix_emuldata structure to keep track of the signal
  trampoline address
- we don't support per-sigaction signal trampolines, we only do per-process
- now that we use the IRIX libc signal trampoline, we do not have to handle
  the errno update from the signal trampoline
- it is possible that IRIX 5 signal delivery works too, since theses binaries
  will come with their own signal trampoline
2002-04-14 21:50:49 +00:00
manu c56e133974 More comments on the new signal frame/trampoline 2002-04-13 10:52:59 +00:00
manu 5ee554064d Reworked IRIX signal delivery so that ucontext is used instead of sigcontext
when SA_SIGINFO is used. The IRIX process will hence find the expected
information using the third argument of the signal handler.

We do not provide code and siginfo yet.
2002-04-12 18:44:57 +00:00
manu 78583a4567 Always define SA_SIGINFO, and keep track of it in SVR4 emulation. This is
needed for IRIX signal delivery.
Approved by Christos.
2002-04-12 17:37:30 +00:00
christos 10ecebd46a implement getdents64; my full java tree builds now. 2002-04-10 18:19:34 +00:00
christos 7e9e73a53c regen 2002-04-10 18:19:04 +00:00
christos db952e86f3 add getdents64 2002-04-10 18:18:26 +00:00
itojun 9998fd3a57 revert previous 2002-04-10 09:53:01 +00:00
itojun 7aef2b4e07 make it compile (missing includes) 2002-04-10 09:37:51 +00:00
christos ca4d90ffa1 Fix compile problem. 2002-04-08 14:51:29 +00:00
christos b10c779726 #ifdef __alpha__ pal functions. 2002-04-08 14:51:18 +00:00
christos bd432c1642 PR/16236: Joachim Koenig-Baltes: Linux emulation connect requires IPV6.
Apparently the sockaddr len fix was only compiled when IPV6 was enabled.
2002-04-08 14:00:31 +00:00
christos 866ad0f73f PR/16231: Ben Harris: m68k does not compile. 2002-04-08 13:27:37 +00:00
manu fb46073720 backed out the irix_siginfo field name change: we need different field names
to avoid collision with svr4_siginfo #define si_signo  _info._signo and
friends.
2002-04-06 22:58:43 +00:00
manu 8e8b498d9c Changed irix_siginfo field names to make them closer to svr4 names (and to
original IRIX names too)
2002-04-06 18:08:31 +00:00
christos e9c4f70b2f use lsi_ like all other linux emulations. 2002-04-04 22:17:29 +00:00
tron d09c25ca9a Set default kernel version of Linux emulation to 2.4.18 on the i386 port.
It has been successfully tested using SuSE 7.3 libraries and binaries with
many applications.
2002-04-04 09:32:11 +00:00
christos cb483bd247 make this compile on archs that don't define linux signals. 2002-04-03 17:18:21 +00:00
christos f28b55d327 provide missing types for arch's that don't have specific linux_types.h 2002-04-03 17:13:32 +00:00
christos aa3369abe2 don't bail out if we don't have an arch/siginfo.h because we are being used
from userland.
2002-04-03 17:02:12 +00:00
tron 9121bc2ec4 Fix a cut and paste error in the emulation of getresgid(2): it returned
the effective user id as effective group id.
2002-04-03 14:28:36 +00:00
fvdl 221107a13b Use shmat1(), and tell it to find removed segments. 2002-04-03 11:54:37 +00:00
fvdl 7fc44e13a8 Allocate the right size for the native gid_t array in setgroups16. 2002-04-03 10:17:01 +00:00
christos fa33d13de9 Don't blow up if we don't have a machine dependend linux_signal.h.
kdump includes linux_signo.c
2002-04-02 23:25:07 +00:00
christos eda21311fd save/restore fs and gs; this should be pulled up. 2002-04-02 22:32:16 +00:00
manu 4bca6e2fd0 Added fsync 2002-04-02 20:29:52 +00:00
jdolecek ee37f0c738 rename sysctl_linux() to linux_sysctl() and hook it into emul_linux 2002-04-02 20:23:43 +00:00
manu 062e23b4e2 Added IRIX fcntl(F_GETBSDLK) and fcntl(F_GETBSDLKW) 2002-04-02 19:58:38 +00:00
manu 456cced40e Removed one debug line that was committed by mistake 2002-04-01 15:45:16 +00:00
manu a98e52cc55 Added code to handle FPU and signal stack for IRIX signal delivery
(copied from the native version, not tested yet)
2002-04-01 13:42:36 +00:00
christos 840887afee bring the reverse signal mapping array into linux_signo.c 2002-03-31 22:40:16 +00:00
christos ac29fb3782 make signal array handling uniform, and put signal arrays in a separate
file. This is simular to errno array handling.
2002-03-31 22:22:43 +00:00
christos 018a4082cc - #undef DPRINTF for files that are included from other files.
- more debugging for socketcalls
- fix sa_len if AF_INET; somehow we get passed 28 instead of 16?
2002-03-29 20:49:40 +00:00
kent dad83731c1 pecoff_misc.c: Remove compat functions.
pecoff_sys*.[ch]: regen
2002-03-29 17:04:46 +00:00
christos c9e808f0ee 1. fill in the ldt.sd_xx field, for total compat with linux.
2. in setregs, use gdt's instead of ldt's because linux wants to play with
   all the ldts. Apparently linuxthreads uses ldt's to allocate space for
   pthread_t's.
2002-03-29 17:01:49 +00:00
kent e6ef08a13e Exclude all compat syscalls. 2002-03-29 17:00:43 +00:00
manu 4a466c8fec Added proper locks when calling uvm_swap_stats() 2002-03-29 09:06:54 +00:00
manu 2dd126f08e Fixed the swap block size problem: the swap block size as used in struct
swapent, or as seen in userland, is dbtob(1), which turns to be 512 for all
arch for now.

In struct swapdev, there is another field for block size. This value is private
to uvm_swap.c and is only used for swap I/O on regular files. It is equal to
the underlying device block size and it is not necessarily 512.
2002-03-28 18:45:28 +00:00
manu 9278164721 - now reports accurate swap object size with swapctl(SWAP_STATS)
- Added two more swapctl commands: GETFREESWAP and GETSWAPVIRT.

There is a problem in the way swap block size are found here. See comment
in get_block_size().
2002-03-28 13:14:42 +00:00
manu 2ad173ef3f Added syssgi(SETSID) 2002-03-28 12:59:35 +00:00
manu 50ac30b510 - now return real values in the rminfo system accounting structure. Theses
are not 100% accurate, but it should be okay for most programs
- fix a bug: we were doing the copyout of the struct on failure, not success
2002-03-28 10:37:46 +00:00
manu 5c37c50788 Use irix_sys_sigprocmask instead of svr4_sys_sigprocmask to make use
of the SETMASK32 command.
2002-03-28 10:36:14 +00:00
manu fff388471d Added the SETMASK32 command for sigprocmask(2). This is equivalent to
SETMASK except that the upper 32 bits are left untouched
2002-03-26 22:59:32 +00:00
manu 58537aa4d9 Fixed a typo in DEBUG_IRIX code 2002-03-26 16:58:56 +00:00
manu a4085df772 - Uses p->p_stats->p_ru instead of p->P_ru to get ressource usage, since
p->p_ru sometime happens to be equal to 0xdeadbeef.

- added more debug output.
2002-03-26 16:38:12 +00:00
manu a0fa2e7fa5 Added support for sysmp system accounting structures. Only real memory info
is defined yet, but it returns zeroes (will be fixed later).
2002-03-26 10:54:40 +00:00
manu 2ccdf1d7ec Added truncate(2), ftruncate(2), truncate64() and ftruncate64(), the two latter
being untested yet.
2002-03-26 10:52:52 +00:00
manu 76084f5561 Added syssgi(PATHCONF), which implements pathconf(2), and syssgi(SETPGID)
which implements setpgid(2).
2002-03-25 20:42:50 +00:00
manu 0e9d73c741 Added support for IRIX kernel var emulation in kmem (not functionnal yet) 2002-03-25 18:43:59 +00:00
kent d92d45e16c Move a variable `emul_pecoff' to new file. 2002-03-25 06:44:46 +00:00
bjh21 99ba40c188 arm26->acorn26 transition. 2002-03-24 15:49:38 +00:00
jdolecek bbee4277ca fd_revoke(): don't assume that f_type other DTYPE_VNODE and DTYPE_SOCKET
is automatically bogus, make the code return EINVAL for all non-vnode
descriptors
2002-03-24 15:32:51 +00:00
jdolecek 4cfe9dc1f6 use FILE_USE()/FILE_UNUSE() as appropriate, use malloc()/free()
instead of MALLOC()/FREE() for variable-size allocations (sync
with kern/sys_generic.c)
XXX not tested
2002-03-24 15:19:24 +00:00
jdolecek 3089d90eeb add explicit comment a FILE_USE() is not needed here 2002-03-24 15:12:45 +00:00
jdolecek fc18dc8984 minor indentation fix 2002-03-24 15:03:00 +00:00
oki b10ef43c8e Read /usr/libexec/ld.so.dll if failed to read
/emul/pecoff/usr/libexec/ld.so.dll.
reported via IRC from kent, thanks.
2002-03-24 05:55:49 +00:00
jdolecek 0b5e2aba9a Fix problem with assumption non-socket == vnode in F_{G,S}ETOWN different way
(revisions 1.47 & 1.48 effectively backed off):
* for all but vnodes, just fallback to sys_fcntl(); assumming
  state of support for F_SETOWN/F_GETOWN and even hardcoding it here is
  not right (e.g. rev. 1.47 had this incorrect for DTYPE_PIPE)
* fallback to sys_fcntl() also for vnodes which don't represent tty
* don't need to use FILE_{,UN}USE() here, the code won't block while
  using the pointer
* add/fix some comments
2002-03-24 00:32:34 +00:00
christos 3c2d0dbff9 correct placement for FILE_UNUSE [from Izumi Tsutsui] 2002-03-23 15:36:15 +00:00
chs 60b5cc6ac2 make this compile again (PS_STRINGS is gone). 2002-03-23 05:00:04 +00:00
jdolecek dd94bff875 invoke setregs hooks correctly, as in sys_execve()
Problem noted and fix tested by Eduardo Horvath
2002-03-22 21:36:46 +00:00
christos 0a4f1c3d8f sync with current reality and fix debugging. 2002-03-22 18:39:23 +00:00
christos 65fc8539e4 gc debugging printfs. 2002-03-22 17:14:18 +00:00
christos 8b2467a1e9 nuke mmap2, cleanup mmap, add mprotect 2002-03-22 15:21:28 +00:00
christos 5681411206 regen 2002-03-22 15:19:53 +00:00
christos b3c32e7e6d nuke mmap2, add mprotect 2002-03-22 15:19:43 +00:00
christos 99ff14c9f3 regen 2002-03-22 15:18:48 +00:00
christos 45af46eb53 add mprotect, nuke mmap2 2002-03-22 15:18:13 +00:00
christos b9a0007d1d regen 2002-03-22 15:17:17 +00:00
christos 190ffecb97 add mprotect, nuke mmap2 2002-03-22 15:17:04 +00:00
christos 7359db6620 regen 2002-03-22 15:16:14 +00:00
christos 24e38ed8f3 nuke mmap2 add mprotect 2002-03-22 15:16:02 +00:00
christos f7f4206314 regen. 2002-03-22 15:15:08 +00:00
christos 2b9a2aabe8 nuke mmap2, add mprotect 2002-03-22 15:14:55 +00:00
christos 92945f57fe regen 2002-03-22 15:11:23 +00:00
christos 22111899d0 1. make sure lines don't wrap
2. fix mmap and call it mmap like other ports do, not mmap2
3. implement fcntl64
4. implement mprotect because linux treats args slightly differently.
2002-03-22 15:10:38 +00:00
christos b02cb6b16f implement the locking calls for linux_file64. 2002-03-22 14:54:49 +00:00
christos 3b57c6607c - obey FILE_USE and FILE_UNUSE
- don't assume that non sockets point to vnodes.
2002-03-22 14:53:26 +00:00
christos d9ada7eabf Don't bitch if we don't have support for a particular arch. This makes it
easier to include this header from userland binaries [sysctl] on archs that
don't support compat-linux without incurring ifdef hell.
2002-03-21 13:23:48 +00:00
christos e88e90e3bf use 64 signals. 2002-03-20 17:50:07 +00:00
christos 50981e06bc emulation specific sysctls. Also change the kernel date to nov 11 as requested
by bad.
2002-03-20 00:27:58 +00:00
christos bda4b15e05 - Now that RT-signals fit, fix the array to deliver them. [i386 only].
- jdk-1.4 works perfectly now. :-)
2002-03-19 20:51:59 +00:00
manu af187fe983 Added swapctl SC_ADD, SC_REMOVE and SC_SGIADD commands. 2002-03-18 20:34:54 +00:00
manu a8db9077cd Uses the recently introduced uvm_swap_stats() instead of
sys_swapctl(SWAP_STATS). This enable the use of a kernel based
buffer instead of using some temporary memory in the stackgap,
whereas we cannot make sure that the size os the struct swapent array
will fit in it. (it is not known at build time, but the stackgap len
is set at build time).
2002-03-18 17:21:24 +00:00
manu 1c1ef56eed Cosmetic change (lines longer than 80 car) 2002-03-18 17:18:28 +00:00
oki 075769476a Use /emul/pecoff as prefix to run PE/COFF binaries. 2002-03-18 07:11:06 +00:00
atatat 31144d9976 Convert ioctl code to use EPASSTHROUGH instead of -1 or ENOTTY for
indicating an unhandled "command".  ERESTART is -1, which can lead to
confusion.  ERESTART has been moved to -3 and EPASSTHROUGH has been
placed at -4.  No ioctl code should now return -1 anywhere.  The
ioctl() system call is now properly restartable.
2002-03-17 19:40:26 +00:00
christos 4b803b1108 panic if more space than stackgaplen is requested. Maybe I should remove the
size option completely.
2002-03-17 00:16:07 +00:00
christos 7c50f65a84 get rid of STACKGAP* shit. 2002-03-16 23:55:57 +00:00
christos 381e6a7764 make the stackgap_{init,alloc} functions MP friendly (i.e. pass struct proc *
in, instead of using curproc). While there add an optional size argument to
stackgap_init.
2002-03-16 20:43:48 +00:00
pooka 28a03499e8 Replace unused padding in struct linux_stat64 by lst_ino64 as found in
linux's m68k struct stat64.

makes linux compat compile again
2002-03-16 14:49:29 +00:00
manu 431e4d2b95 Added enough of swaptcl() command emulation to get swap -l working. This
is needed by acad (it exec's swap -l to check if swap is enabled)
2002-03-16 13:29:42 +00:00
manu cdab2861e2 Added the IRIX /dev/kmem emulation pseudodevice driver 2002-03-15 17:21:26 +00:00
manu eb3041b4dc I finnally identified syssgi(SGI_FDHI) as the implementation of the
getdtablehi(3) library call. Updated comments and removed the paranoid
diagnostics about this mysterious syssgixi() request.
2002-03-13 20:33:41 +00:00
manu 25f8840ca4 Implements syssgi(FDHI), which seems (it's not documented) to return the
higher open file descriptor plus one. This makes IRIX's find able to work.
2002-03-13 07:54:18 +00:00
manu b2ce645507 Added syssgi(GETGROUPS) and syssgi(SETGROUPS) 2002-03-10 22:36:28 +00:00
manu 911cceb1b7 Added statvfs/fstatvfs 2002-03-10 21:56:24 +00:00
manu 6a48d31676 Fix a bug in the way syssgi(MAPELF) handles relocation: we are supposed to
look for a block of free virtual memory big enough to hold all sections. The
blocks starts at the beginning of the first section and ends at the end of
the last section. In the previous version the block ended at the beginning
of the last section, hence creating situations where there was not enough
free space to map the section.
2002-03-10 19:03:08 +00:00
bjh21 a42e17ae9a __RCSID -> __KERNEL_RCSID 2002-03-10 15:47:43 +00:00
bjh21 64a051900d Id -> NetBSD in RCSID (oops). 2002-03-10 11:35:32 +00:00
manu 339682e5f4 Fixed a problem in getmountid emulation: we use the address of a kernel
structure for the mountid, but it is 32/64 bits long only, whereas
mountid is 128 bits long. Because we did not initialize the unused bits to
zero, the mountid was not always unique within a filesystem.

This makes autocad 1.3 able to start up.
2002-03-09 16:05:21 +00:00
manu de4ff85b32 Fixed a bug in getdents64 emulation: we used a struct irix_dirent to hold
the result instead of a strruct irix_dirent64.
2002-03-09 13:32:12 +00:00
manu d77463efde Fixed typo 2002-03-09 13:13:09 +00:00
manu 3523a539eb Attempt to provide support to programs digging the load average out of
/dev/kmem (probably broken at the moment)
2002-03-09 10:52:21 +00:00
manu 28cae7e6d6 Added setreuid/setregid 2002-03-04 22:19:02 +00:00
manu cb99a5f48e Implements SIOCNREAD ioctl (some kind of FIONREAD for sockets only). This
makes X11 binaries able to actually work: most of them were previously hang
in infinite loop wiaiting for data from the X server because SIOCNREAD
reported that some data where to be read whereas the X server had nothing
to say.

Tested (and works): xlogo, xterm, ghostview (IRIX build). Things are getting
interesting...
2002-03-03 20:12:17 +00:00
mrg d3b3f3e560 move the COMPAT_SUNOS TIOCGPGRP handling in the compat sunos code proper.
this is the final fix needed for it to run properly as an LKM.  no more
COMPAT_SUNOS hacks around the tree!
2002-03-02 12:30:43 +00:00
manu 63b308a593 FIxed typo 2002-02-23 22:43:56 +00:00
manu d2e60e82f8 Fixed various sysconf() commands 2002-02-23 22:35:15 +00:00
manu a9c374ed26 Added munmap() and mprotect() 2002-02-21 22:15:28 +00:00
manu 89e46d8a99 Reworked the o32/n32 matching scheme. IRIX uses some e_flags in the ELF
header to distinguish between o32, n32 and n64 ABIs. We now use this.
This suppress the need of the mips_option test, which had some fake positive.
This also removes the mandatory ordering of n32 vs o32 in the exec switch
(exec_conf.c)
2002-02-21 21:53:00 +00:00
manu 9d16e4d12b Added gethostid/sethostid and the HOSTID command to systeminfo() 2002-02-21 11:09:43 +00:00
manu 25e8963ed3 Fixed typo 2002-02-20 21:18:18 +00:00
christos 07a8b6bf28 proper statfs emulation... 2002-02-20 17:03:03 +00:00
christos 227c487828 allow writing of kernel.version, kernel.osrelease, kernel.ostype... I might
revert that l8r if I come up with something better.
2002-02-20 17:02:48 +00:00
is 728d5e960d fix some swapped parameters 2002-02-19 22:42:25 +00:00
nathanw 20d013dbed Regen. 2002-02-19 16:46:12 +00:00
nathanw 502ca4a24b Add linux_sys_{get,set}rlimit. 2002-02-19 16:44:09 +00:00
nathanw cbc3e62bf0 Add LINUX_SA_NOCLDWAIT. 2002-02-19 16:35:59 +00:00
rafal 5af2ddd207 Add LINUX_SA_NOCLDWAIT, LINUX_SA_RESTORER, update LINUX_SA_ALLBITS. Linux
compat on mips builds again now.
2002-02-19 14:11:49 +00:00
christos e52b5e4bfb Resolve alpha compile issues:
- bug with order in args in mask conversion md code.
- flags can be both int and long on the alpha. kludge around that, by not
  passing pointers to the conversion function.
- something is wrong with the toolchain look at the void * cast in copyout().
- sa_restorer is in a different place on the aplha. Deal with that, by not
  initializing it as before. XXX: this should be changed in the MD signal
  definition.
2002-02-18 22:24:17 +00:00
christos 1133f20b4f regen 2002-02-18 20:20:25 +00:00
christos 08739d68be provide linux_sys_getrlimit and linux_sys_setrlimit 2002-02-18 20:12:49 +00:00
jdolecek 2558157b0b Back off previous partially - make linux_release[] back 2.0.38
and linux_version[] "#0 Sun Apr 1 11:11:11 MET 2000";". Add a BIG
WARNING MESSAGE so that people won't break things changing this.
2002-02-18 18:51:51 +00:00
christos 6e293e79bd regen 2002-02-18 16:36:20 +00:00
christos 7f739a6187 fix comment. 2002-02-18 16:35:57 +00:00
rafal 0208af27ee Regen: Use linux_sys_{g,s}setrlimit, remove linux_sys_ugetrlimit since
linux/mips doesn't seem to have one.
2002-02-18 00:10:26 +00:00
rafal 9751855fab the MIPS stat64 struct doesn't have a separate ino64 field, but the ino field
is a u_longlong.
2002-02-17 23:57:57 +00:00
rafal efdd3f2dd7 There is no linux_sys_ugetrlimit on mips, so don't try building it (XXX: adds
icky ifdefs)
2002-02-17 23:56:35 +00:00
rafal dfcb814799 Use linux_sys_{g,s}etrlimit() since there's a common implementation now; but
MIPS has no sys_ugetrlimit, so don't declare it (209 is UNIMPL in the OSS
Linux-mips tree)
2002-02-17 23:55:23 +00:00
rafal 9f99fdabde Adapt for changes to linux_to_native_sigset() and native_to_linux_sigset(). 2002-02-17 23:18:38 +00:00
bjh21 db030aa93f Add an lst_ino64 member to struct linux_stat64. 2002-02-17 23:18:11 +00:00
bjh21 0fd75dd4e5 Adapt for changes to limux_old_extra_to_native_sigset() and
native_to_linux_old_extra_sigset().
2002-02-17 23:05:08 +00:00
manu 457750dabf Implemented irix_sys_systeminfo() 2002-02-17 22:49:53 +00:00
bjh21 9e7faceaf4 Add LINUX_SA_NOCLDWAIT. 2002-02-17 22:45:29 +00:00
bjh21 d0dfca3108 Regen. 2002-02-17 22:30:22 +00:00
bjh21 e5087cd2b4 getrlimit and setrlimit now have Linux-specific implementations. Use them. 2002-02-17 22:29:46 +00:00
bjh21 6c9d7cafe8 linux_sys_break() is marked OBSOL, so don't include it. 2002-02-17 22:03:23 +00:00
bjh21 3113edfb9a linux_sys_rt_sigreturn is currently marked UNIMPL, so leave the stub out. 2002-02-17 22:00:09 +00:00
manu d383f72720 reworked signal handling:
- do not save/and restore registers that should not be saved and restore
- do give an accurate sigcontext pointer to the signal handler
- do use the struct sigreturna from IRIX.
This eliminates panics and hangs in certain circonstances

Also some cosmetic changes with tabs usage
2002-02-17 20:50:06 +00:00
manu 853adfc30b - implement SGI_GETSID command for syssgi()
- reworked SGI_GETPGID implementation to use the getpgid() system call instead
  of duplicating it.
2002-02-17 20:44:17 +00:00
christos 6e89926d24 regen 2002-02-17 19:35:45 +00:00
christos 5a51f8945d fix rlimit confusion. 2002-02-17 19:35:30 +00:00
christos 09a9c8ea3d 1. load cr2 now that we have it.
2. ldt_info.base_addr == 0 && ldt_info.limit == 0 means zero the ldt
From Robert V. Barron's wabi patch.
2002-02-16 16:23:09 +00:00
christos 57c8cc95f1 s/printf/uprintf/ 2002-02-15 20:02:56 +00:00
christos b03c54f812 regen 2002-02-15 16:50:58 +00:00
christos 3a4f78636f Regen 2002-02-15 16:50:35 +00:00
christos 51ea9c87e7 proper comment. 2002-02-15 16:50:13 +00:00
christos 28debea38a - add a real linux_sys___sysctl because the mib numbers are different.
implement only the kernel version getting entries.
- make the signal conversion functions consistent; dest is arg 1.
- make linux_fakedev deal with block and char devices differently.
- add linux_sys_ugetrlimit, and flesh out the regular get/setrlimit so
  that they work properly.
- add linux_mmap2 [untested].
- bump kernel to 2.4.18, and make the date be valentine's day :-)
- linux_sys_*stat64 family was totally busted. Fix it.

tested only on i386.

Status:
	gdb, telnet, work
	jdk-1.4.0 extractor works, jdk still coredumps.

christos
2002-02-15 16:47:58 +00:00
chs b744097a5f allow writing to write-only mappings. fixes PR 3493. 2002-02-14 07:08:02 +00:00
manu 5ad92b8294 Fixed irix_blkcnt_t size (was 64 bit, changed to 32). This caused alignment
troubles in struct stat, hence giving wrong st_blocks, st_blksize and st_size
values.
2002-02-12 23:11:58 +00:00
manu bd184209e6 Correctly translate the st_rdev field in struct stat 2002-02-12 07:17:18 +00:00
tv aa7e03f796 Handle MAP_ANON (0x100 in Solaris8, not 0x1000) properly, by factoring out
the flags common to SVR4 and NetBSD, and mapping the rest manually.
2002-02-07 23:22:24 +00:00
manu b778bba3d3 Added system calls: getdents64/ngetdents64 2002-02-04 20:26:34 +00:00
manu 26aff33a7d Typo fix 2002-02-03 17:41:03 +00:00
manu 5c72031257 Added system calls: gettimeofday, getitimer, setitimer 2002-02-03 17:39:54 +00:00
manu 5b436803dd Removed the hack in mapelf to get libX11 loading. The new version assumes
that the load addresses in the section array are increasing, and that no
section in the array overlap with each other. IRIX proably makes the same
assumptions, but this has not been tested.

The key point with relocation is to always use the same offset for each
section. Because userland gets only the load address off the first section, it
has to assume that all the remaining sections kept the same offset with
respect to the first section. By using fixed offset instead of finding
some free space for each section, we can eliminate the libX11 load hack.
2002-02-03 17:28:19 +00:00
manu 98f3287e7d Added some system calls: gethostname, sethostname, getdomainname,
setdomainname, alarm
2002-02-03 01:21:47 +00:00
manu 4aa2e3fde7 Fixed the X11 load bug. dynamic linking now seems to be fully functionnal,
even for program with a DSO using overlapping load virtual addresses.

The fix is a mean hack, see the comments in irix_syssgi.c. It would be nice to
get uvm_map_findspace() to return the page we suggest instead of the page which
is 16384 bytes away.
2002-02-02 19:27:18 +00:00
bjh21 043db35f0a cpu_cache_syncI_rng -> cpu_icache_sync_range 2002-02-02 16:53:39 +00:00
bjh21 c738201135 We shouldn't need an icache sync when catching a signal, so don't bother. 2002-02-02 16:52:45 +00:00
bjh21 2667358f8e Get rid of "unused variable" warnings on arm26. 2002-02-02 16:30:28 +00:00
bjh21 70017578a1 Regen (breakpoint() implemented). 2002-01-27 15:28:22 +00:00
bjh21 8c36606f84 Add support for breakpoints to ARMLinux emulation. 2002-01-27 15:27:33 +00:00
bjh21 4929dc576f Add support for PTRACE_GETREGS and PTRACE_SETREGS in ARMLinux emulation. 2002-01-27 15:11:38 +00:00
bjh21 bf73a232ce Regen (prototype for linux_sys_nosys()). 2002-01-27 14:09:38 +00:00
bjh21 71953fb155 Make syscall 0 an explicit call of linux_sys_nosys, as it is on i386. This
is necessary to get a prototype for linux_sys_nosys generated in syscallargs.h.
2002-01-27 14:08:56 +00:00
bjh21 3985634329 Regen (sys_nosys -> linux_sys_nosys). 2002-01-23 16:14:45 +00:00
bjh21 6add1ec812 sys_nosys="linux_sys_nosys", since that's how it should be. 2002-01-23 16:14:20 +00:00
bjh21 6b940e1484 Regen (cacheflush() and remove syscall 0). 2002-01-23 15:55:51 +00:00
bjh21 8b78e49ada Syscall 0 isn't syscall() on ARMLinux. Mark it UNIMPL instead. 2002-01-23 15:54:34 +00:00
bjh21 8a3c27fbf7 Add support for the ARM-specific syscalls in ARMLinux. These are invoked
by SWI numbers above 0x9f0000, but we re-map them down to somewhere just
after the end of the usual syscall range, since NetBSD doesn't handle
sparse syscall arrays well.

The only syscall I've actually implemented in this range is cacheflush(),
which was previously being mapped to fork(), causing ... interesting results.
2002-01-23 15:52:58 +00:00
manu 5e54c68a88 Fixed a bug introduced in the previous fix to mapelf:
we used load_psection, then ran each vmcmd and tried to relocate the failing
ones. This fails if there is two vmcmd for one section, and the second is
not a mapping (for instance a map_pagedvn and a map_zero), because the first
one gets relocated, but not the second one.

Additionnaly, it was not necessary to update the userlevel psection array:
libc stubs seems to do the job themselves.
2002-01-21 21:51:31 +00:00
manu ddd039179b Fixes the problem with libX11.so mapping by syssgi(MAPELF): the load address
for the text section of libx11.so was overlapping with other ELF sections
aloready loaded, and this resulted into an ENOMEM error.

syssgi(MAPELF) uses elf32_load_psection() from syssrc/sys/kern/exec_subr.c
The problem was never experienced with load_psection() because it only has
to load one section, hence the requested address are not already allocated.

The fix is done when the initial mapping at the default address fails by
finding a free location in the VM space using uvm_map_findspace(), and then
retrying to load the section.

Other details:
- once the ELF section has been relocated, the ELF program header must be
updated with the new address and copied back to userland. For now we always
do it, maybe we could copy it only when it was modified.
- We are able to emulate the exact address where IRIX loads libX11.so instead
of the default location
2002-01-19 14:56:02 +00:00
bjh21 6ad60873c2 More-or-less working signal handling for Linux processes on ARM. 2002-01-17 22:50:38 +00:00
bjh21 72e7652233 Fix typo in last commit. 2002-01-17 21:19:22 +00:00
bjh21 934715db90 Fix unterminated #ifdef. 2002-01-17 21:17:57 +00:00
bjh21 16ee93eb67 On platforms that don't __HAVE_SYSCALL_INTERN, define LINUX_SYSCALL_FUNCTION
to be the value of emul_linux.e_syscall that we want.  This allows it to differ
between machines, so I can have a separate linux_syscall() on arm.
2002-01-17 17:19:03 +00:00
rjs 01529df446 Include arch/arm/linux_errno.h for arm build. 2002-01-17 15:11:38 +00:00
rjs 0046c56309 Add arm to #endif comment. 2002-01-17 15:10:26 +00:00
rjs 77f9569791 Add extra error codes from Linux. 2002-01-17 15:08:44 +00:00
bjh21 4a4d63e6c0 Regen. 2002-01-15 10:23:35 +00:00
bjh21 9f08648c7d Shuffle uname calls around. It turns out we don't use the same names as
Linux does, so:
sys_olduname -> linux_sys_oldolduname
sys_uname    -> linux_sys_olduname
sys_newuname -> linux_sys_uname
2002-01-15 10:21:46 +00:00
bjh21 2fdddc2550 Generated files for ARMLinux binary compatibility. 2002-01-14 23:17:16 +00:00
bjh21 23a5fe8d9b Remove old ARMLinux binary compatibility fragment. As far as I know, this
was never used.
2002-01-14 23:15:58 +00:00
bjh21 6462506466 Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.
2002-01-14 23:14:32 +00:00