Commit Graph

2175 Commits

Author SHA1 Message Date
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
manu
c8d430d60d missing include 2002-01-07 23:12:30 +00:00
manu
0b98511d4a Added code to match and launch n32 binaries (there is no N32 support in the
kernel yet)
2002-01-07 22:05:03 +00:00
manu
3b176652b8 Fixed wrong file name. 2002-01-06 21:43:10 +00:00
manu
365eb49355 Added compat/irix/irix_syscallnames.c 2002-01-06 21:34:30 +00:00
mrg
9191aacdb4 regen 2002-01-03 15:30:08 +00:00
mrg
5d231c5624 ooops, socket() and socketpair() need args now. 2002-01-03 15:28:43 +00:00
mrg
fa38881ffa fix error in previous; pointed out by andrew brown. 2002-01-03 15:28:13 +00:00
mrg
3f49c27162 clean up 2002-01-03 06:43:23 +00:00
mrg
5d06ed3c94 move sparc specific ioctl handling (fb & openprom) into arch/sparc64. 2002-01-03 02:29:39 +00:00
mrg
af640de164 move the COMPAT_SUNOS SO_BROADCAST hack out of uipc_socket.c into the
compat/sunos code.  besides being cleaner this allows the sunos LKM
to properly work without any special kernel hacks.
2002-01-03 00:59:00 +00:00
manu
daf979dbeb Added symlink, rename and readlink 2001-12-27 11:07:23 +00:00
manu
a965f74abe getpgid implemented 2001-12-27 09:31:09 +00:00
manu
2faf78e180 Reworked irix_syssgi_mapelf. It now uses elf_load_psection, and this
remove the odd bug which caused INSANE_DEBUG_IRIX to be mandatory in
order to avoid a panic when mapping libraries.
2001-12-26 22:18:25 +00:00
manu
945d746288 integrated a copy of svr4_waitsys(), which should be merged later.
This has not been fully tested, but it makes IRIX's /bin/sh able to survive
running an external command such as ls.
2001-12-26 11:04:20 +00:00