Dmitry V. Levin [Thu, 11 Jan 2007 23:19:55 +0000 (23:19 +0000)]
2007-01-11 Dmitry V. Levin <ldv@altlinux.org>
Fix open(2) flags parser.
* defs.h (tprint_open_modes): New function.
* desc.c (sprint_open_modes): New function.
(sys_fcntl): Use tprint_open_modes() and sprint_open_modes().
* file.c (openmodes): Split xlat into open_access_modes and
open_mode_flags.
(tprint_open_modes): New function.
(decode_open): Use it.
* ipc.c (sys_mq_open, printmqattr): Likewise.
Fixes RH#222385.
Dmitry V. Levin [Thu, 21 Dec 2006 11:44:28 +0000 (11:44 +0000)]
2006-12-20 Dmitry V. Levin <ldv@altlinux.org>
* syscall.c (internal_syscall): Change conditions for internal_exit,
internal_fork, internal_clone, internal_exec and internal_wait
calls from switching on known scno values to switching on known
sysent[tcp->scno].sys_func values.
Fixes RH#179740.
Dmitry V. Levin [Wed, 20 Dec 2006 22:37:21 +0000 (22:37 +0000)]
2006-12-20 Dmitry V. Levin <ldv@altlinux.org>
Show system call summary for each personality.
* syscall.c (countv): New call_counts pointers array.
(counts): Convert to macro wrapper around countv.
(call_summary_pers): New function.
(call_summary): Use it for each personality.
Fixes RH#192193.
Dmitry V. Levin [Wed, 13 Dec 2006 17:43:45 +0000 (17:43 +0000)]
2006-12-10 Dmitry V. Levin <ldv@altlinux.org>
Add biarch support for "struct timex".
* time.c [LINUX && SUPPORTED_PERSONALITIES > 1] (tprint_timex32):
New function.
[LINUX] (tprint_timex): New function.
[LINUX] (sys_adjtimex): Use it.
Dmitry V. Levin [Wed, 13 Dec 2006 16:59:44 +0000 (16:59 +0000)]
2006-12-10 Dmitry V. Levin <ldv@altlinux.org>
Make several global variables static.
#ifdef definitions of rarely unused functions.
* defs.h (rflag, tflag, outfname): Remove.
* strace.c (iflag, interactive, pflag_seen, rflag, tflag,
outfname, username): Make static.
* desc.c (sys_getdtablesize): Define only for
ALPHA || FREEBSD || SUNOS4.
* file.c (sys_fchroot): Define only for SUNOS4 || SVR4.
(sys_mkfifo): Define only for FREEBSD.
* mem.c (sys_sbrk): Define only for FREEBSD || SUNOS4.
(sys_getpagesize): Define only for
ALPHA || FREEBSD || IA64 || SUNOS4 || SVR4.
* net.c (sys_so_socket): Define only for SVR4.
* process.c (sys_gethostid): Define only for
FREEBSD || SUNOS4 || SVR4.
(sys_gethostname): Define only for
ALPHA || FREEBSD || SUNOS4 || SVR4.
(sys_setpgrp): Define only for ALPHA || SUNOS4 || SVR4.
(sys_execv): Define only for SPARC || SPARC64 || SUNOS4.
* signal.c (sys_sigblock): Define only for FREEBSD || SUNOS4.
(sys_sighold, sys_sigwait): Define only for SVR4.
(sys_killpg): Define only for FREEBSD || SUNOS4.
* stream.c (sys_getmsg): Define only for
SPARC || SPARC64 || SUNOS4 || SVR4.
* syscall.c (sys_indir): Define only for SUNOS4.
Dmitry V. Levin [Mon, 4 Dec 2006 13:48:10 +0000 (13:48 +0000)]
2006-11-27 Dmitry V. Levin <ldv@altlinux.org>
* system.c [LINUX]: Define CTL_PROC, since Linux 2.6.18+ headers
removed CTL_PROC enum. Patch from Jakub Jelinek.
[LINUX] (sysctl_root): Add CTL_BUS, CTL_ABI and CTL_CPU.
Dmitry V. Levin [Wed, 11 Oct 2006 23:11:43 +0000 (23:11 +0000)]
2006-10-06 Dmitry V. Levin <ldv@altlinux.org>
* strace.c [!USE_PROCFS] (trace): Presence of PT_GETSIGINFO
macro does not mean that PT_CR_IPSR and PT_CR_IIP macros are
also defined, so check them along with PT_GETSIGINFO.
Fixes RH#209856.
Dmitry V. Levin [Wed, 11 Oct 2006 22:55:25 +0000 (22:55 +0000)]
2006-03-29 Dmitry V. Levin <ldv@altlinux.org>
Fix race conditions in tcb allocation.
* process.c (fork_tcb): Return error code as documented. Do not
print "tcb table full" error message.
[USE_PROCFS] (internal_fork): Do not print "tcb table full"
error message.
[SYS_clone || SYS_clone2] (internal_clone, internal_fork): Call
fork_tcb() before alloctcb(). Do not print "tcb table full"
error message.
* strace.c (main): Do not print "tcb table full" error message.
(expand_tcbtab): Print error message in case of memory allocation
failure.
(alloctcb): Print error message when tcb table is full.
(trace): Expand tcb table if necessary prior to allocating
entry there. Do not print "tcb table full" error message.
Fixes RH#180293.
Roland McGrath [Thu, 12 Jan 2006 21:21:06 +0000 (21:21 +0000)]
2005-08-08 Dmitry V. Levin <ldv@altlinux.org>
* system.c [LINUX] (MS_MGC_VAL): New macro.
[LINUX] (mount_flags): Add it.
[LINUX] (sys_mount): If neither MS_BIND nor MS_MOVE bits are
set in the flags argument, try to fetch data string.
Fixes RH#165377.
Roland McGrath [Thu, 12 Jan 2006 10:18:53 +0000 (10:18 +0000)]
2006-01-12 Roland McGrath <roland@redhat.com>
* defs.h [LINUXSPARC] (PERSONALITY0_WORDSIZE, PERSONALITY1_WORDSIZE):
New macros.
[SPARC64] (PERSONALITY2_WORDSIZE): New macro.
[X86_64] (PERSONALITY0_WORDSIZE, PERSONALITY1_WORDSIZE): New macros.
* syscall.c (PERSONALITY0_WORDSIZE): New macro if undefined.
(personality_wordsize): New variable.
(decode_subcall): Use it for size of argument words.
Fixes RH#174354.
Roland McGrath [Thu, 12 Jan 2006 09:50:49 +0000 (09:50 +0000)]
2005-11-17 Dmitry V. Levin <ldv@altlinux.org>
Implement qual_flags support for each personality.
* strace.c (main): Move qualify calls after set_personality call.
* syscall.c (qual_flags0): New variable..
[SUPPORTED_PERSONALITIES >= 2] (qual_flags1): New variable.
[SUPPORTED_PERSONALITIES >= 3] (qual_flags2): New variable.
(qual_flags): Change variable definition from array to pointer.
(set_personality): Initialize qual_flags variable.
(qualify_one): Add "pers" argument to specify personality.
[SUPPORTED_PERSONALITIES >= 2]: Set qual_flags1 if requested.
[SUPPORTED_PERSONALITIES >= 3]: Set qual_flags2 if requested.
(qual_syscall): Pass personality to qualify_one.
[SUPPORTED_PERSONALITIES >= 2]: Look for syscall also in sysent1
table.
[SUPPORTED_PERSONALITIES >= 3]: Look for syscall also in sysent2
table.
(qual_signal): Pass personality to qualify_one.
(qual_desc): Likewise.
(qualify): Use qualify_one instead of manual qual_flags
manipulations.
[SUPPORTED_PERSONALITIES >= 2]: Look for syscall also in sysent1
table.
[SUPPORTED_PERSONALITIES >= 3]: Look for syscall also in sysent2
table.
* defs.h: Update qual_flags declaration.
Fixes RH#173986.
Roland McGrath [Wed, 3 Aug 2005 12:18:09 +0000 (12:18 +0000)]
2005-08-03 Roland McGrath <roland@redhat.com>
* configure.ac: Check for struct dqblk.dqb_curblocks field.
* resource.c [LINUX] (OLD_CMD): New macro.
(quotacmds): Use it to hard-wire old O_* values, don't use macros.
(sys_quotactl): If dqb_curblocks is not there, it's called
dqb_curspace instead. Print dqb_* fields as unsigned long long.