Roland McGrath [Thu, 9 Jan 2003 06:53:27 +0000 (06:53 +0000)]
2003-01-08 Roland McGrath <roland@redhat.com>
Support for new Linux 2.5 thread features.
* defs.h [LINUX]: Define __NR_exit_group if not defined.
(struct tcb): New members nclone_threads, nclone_detached,
and nclone_waiting.
(TCB_CLONE_DETACHED, TCB_CLONE_THREAD, TCB_GROUP_EXITING): New macros.
(waiting_parent): Macro removed.
(pid2tcb): Declare it.
* process.c (internal_clone) [TCB_CLONE_THREAD]: Reparent the new
child to our parent if we are a CLONE_THREAD child ourselves.
Maintain TCB_CLONE_THREAD and TCB_CLONE_DETACHED flags and counts.
(internal_wait) [TCB_CLONE_THREAD]: Factor out detached children when
determining if we have any. If TCB_CLONE_THREAD is set, check
parent's children instead of our own, and bump nclone_waiting count.
(internal_exit) [__NR_exit_group]: Set the TCB_GROUP_EXITING flag if
the syscall was exit_group.
* syscall.c (internal_syscall): Use internal_exit for exit_group.
* strace.c (pid2tcb): No longer static.
(alloctcb) [TCB_CLONE_THREAD]: Initialize new fields.
(droptcb) [TCB_CLONE_THREAD]: Maintain new fields.
If we have thread children, set TCB_EXITING and don't clear the TCB.
(resume) [TCB_CLONE_THREAD]: Decrement parent's nclone_waiting.
(detach) [TCB_CLONE_THREAD]: When calling resume, check all thread
children of our parent that might be waiting for us too.
[TCB_GROUP_EXITING] (handle_group_exit): New function.
(trace) [TCB_GROUP_EXITING]: Use that in place of detach or droptcb.
Roland McGrath [Mon, 30 Dec 2002 10:23:00 +0000 (10:23 +0000)]
2002-12-30 Roland McGrath <roland@redhat.com>
* syscall.c (qualify_one): New function.
(qual_options): Replace lookup field with qualify, update initializer.
(qualify): Update caller.
(qual_signal, qual_fault, qual_desc): Rewritten from lookup_*.
(qual_syscall): Rewritten lookup_syscall, match name more than once.
Fixes RH#70579, bites IA64 -efoo when foo exists on IA32.
Roland McGrath [Mon, 30 Dec 2002 00:51:23 +0000 (00:51 +0000)]
2002-12-26 Roland McGrath <roland@redhat.com>
* linux/Makefile.am: New file.
* linux/Makefile.in: File removed.
* freebsd/Makefile.am: New file.
* freebsd/i386/Makefile.am: New file.
* freebsd/i386/Makefile.in: File removed.
2002-12-22 Roland McGrath <roland@redhat.com>
* linux/Makefile.in (ioctldefs.h ioctls.h): Use $(SHELL) instead of
sh, and use $(srcdir) to find the script.
* linux/powerpc/Makefile.in (ioctlent.raw): Find ioctlent.sh in ../.
(ioctlsort.o): Use ../ioctlsort.c, not ../../ioctlsort.c.
* linux/x86_64/Makefile.in (headers): Renamed to all.
* linux/alpha/Makefile.in: Add empty install target.
* linux/x86_64/Makefile.in: Likewise.
* linux/powerpc/Makefile.in: Likewise.
* linux/Makefile.in: Likewise.
Roland McGrath [Mon, 30 Dec 2002 00:51:23 +0000 (00:51 +0000)]
2002-12-22 Roland McGrath <roland@redhat.com>
* linux/Makefile.in (ioctldefs.h ioctls.h): Use $(SHELL) instead of
sh, and use $(srcdir) to find the script.
* linux/powerpc/Makefile.in (ioctlent.raw): Find ioctlent.sh in ../.
(ioctlsort.o): Use ../ioctlsort.c, not ../../ioctlsort.c.
* linux/x86_64/Makefile.in (headers): Renamed to all.
* linux/alpha/Makefile.in: Add empty install target.
* linux/x86_64/Makefile.in: Likewise.
* linux/powerpc/Makefile.in: Likewise.
* linux/Makefile.in: Likewise.
* linux/Makefile.in (ioctldefs.h ioctls.h): Use $(SHELL) instead of
sh, and use $(srcdir) to find the script.
* linux/powerpc/Makefile.in (ioctlent.raw): Find ioctlent.sh in ../.
(ioctlsort.o): Use ../ioctlsort.c, not ../../ioctlsort.c.
* linux/x86_64/Makefile.in (headers): Renamed to all.
* linux/alpha/Makefile.in: Add empty install target.
* linux/x86_64/Makefile.in: Likewise.
* linux/powerpc/Makefile.in: Likewise.
* linux/Makefile.in: Likewise.
Roland McGrath [Sun, 22 Dec 2002 03:34:39 +0000 (03:34 +0000)]
2002-12-21 Roland McGrath <roland@redhat.com>
* linux/syscall.h [I386 || IA64] (SYS_socket_subcall): Bump to 300 for
safety, since up to 260 are already used in 2.5 kernels.
* linux/syscallent.h: Update the table.
* linux/ia64/syscallent.h: Likewise.
Roland McGrath [Sun, 22 Dec 2002 03:34:36 +0000 (03:34 +0000)]
2002-12-21 Roland McGrath <roland@redhat.com>
* linux/syscallent.h: Add some new 2.5 syscall names.
Now clone takes 5 args.
* process.c [LINUX] (clone_flags): Update with 2.5 flag bits.
[LINUX] (sys_clone): Print new args.
* mem.c (print_ldt_entry): Make global.
Roland McGrath [Sun, 22 Dec 2002 03:34:34 +0000 (03:34 +0000)]
2002-12-21 Roland McGrath <roland@redhat.com>
* linux/syscallent.h: Add some new 2.5 syscall names.
Now clone takes 5 args.
* process.c [LINUX] (clone_flags): Update with 2.5 flag bits.
[LINUX] (sys_clone): Print new args.
* mem.c (print_ldt_entry): Make global.
* linux/syscall.h [I386 || IA64] (SYS_socket_subcall): Bump to 300 for
safety, since up to 260 are already used in 2.5 kernels.
* linux/syscallent.h: Update the table.
* linux/ia64/syscallent.h: Likewise.
Roland McGrath [Sat, 21 Dec 2002 23:25:18 +0000 (23:25 +0000)]
2002-12-21 Roland McGrath <roland@redhat.com>
* syscall.c (force_result): New function.
* process.c (internal_wait): Handle ECHILD exit from wait call with
WNOHANG flag set; force the return value to 0 in the inferior when it
has live children we are tracing.
Roland McGrath [Wed, 18 Dec 2002 04:16:10 +0000 (04:16 +0000)]
2002-12-17 Roland McGrath <roland@redhat.com>
* strace.c (tcbtab): Make this a pointer to pointers, not an array.
(tcbtabsize): New variable.
(main): Initialize them using dynamic allocation.
(alloctcb, main): Use tcbtabsize in place of MAX_PROCS; indirect.
(pid2tcb, cleanup): Likewise.
[USE_PROCFS] (pollv): Make this a pointer, not an array; make static.
(rebuild_pollv): Dynamically allocate the vector.
* defs.h (tcbtab): Update decls.
(MAX_PROCS): Macro removed, no more static limit on this.
* process.c (fork_tcb): New function.
(internal_clone, internal_fork): Use it instead of checking nprocs.
Roland McGrath [Mon, 16 Dec 2002 20:40:54 +0000 (20:40 +0000)]
2002-12-15 Roland McGrath <roland@redhat.com>
* util.c [POWERPC] (LOOP): Fix value, now 0x48000000 (0: b 0b).
Old value was bogus, not even a proper instruction.
From Guy M. Streeter <streeter@redhat.com>.
Michal Ludvig [Mon, 23 Sep 2002 13:30:09 +0000 (13:30 +0000)]
2002-09-23 Michal Ludvig <mludvig@suse.cz>
* configure.in: Fix regular expressions.
* linux/syscall.h: Added missing braces in prototype of
sys_getdents64().
* file.c: Use '#ifdef LINUX' instead of '#ifdef linux'.
(struct fileflags): Made extern to inhibit compiation warnings.
(sys_getdents64): Merged LINUX and SVR4 part.
* syscall.c(get_scno): Split multiline string into two distinct
strings.