Hello community, here is the log from the commit of package glibc checked in at Thu Apr 13 14:44:31 CEST 2006. -------- --- glibc/glibc.changes 2006-04-07 13:42:33.000000000 +0200 +++ STABLE/glibc/glibc.changes 2006-04-13 13:34:29.000000000 +0200 @@ -1,0 +2,17 @@ +Thu Apr 13 13:34:07 CEST 2006 - kukuk@suse.de + +- Add /usr/include/linux/taskstats.h [#141936] + +------------------------------------------------------------------- +Tue Apr 11 12:20:57 CEST 2006 - kukuk@suse.de + +- nptl/init.c (sigcancel_handler): Compare with correct PID even + if the thread is in the middle of a fork call. + (sighandler_setxid): Likewise. + +------------------------------------------------------------------- +Sun Apr 9 16:27:20 CEST 2006 - ihno@suse.de + +- S390 fix for startupcode. Part of it was not PIC. + +------------------------------------------------------------------- New: ---- glibc-2.4-nptl-negpid.diff s390_main_got_diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ glibc.spec ++++++ --- /var/tmp/diff_new_pack.QMtTba/_old 2006-04-13 14:43:31.000000000 +0200 +++ /var/tmp/diff_new_pack.QMtTba/_new 2006-04-13 14:43:31.000000000 +0200 @@ -28,7 +28,7 @@ Obsoletes: ngpt ngpt-devel Autoreqprov: on Version: 2.4 -Release: 18 +Release: 21 %define snapshot_date 2006032009 URL: http://www.gnu.org/software/libc/libc.html PreReq: filesystem @@ -84,6 +84,8 @@ Patch34: glibc-2.4-2006040312-CVS.diff Patch35: glibc-2.4-readlink.diff Patch36: glibc-nptl-2.4-nofixsyscallnr.diff +Patch37: s390_main_got_diff +Patch38: glibc-2.4-nptl-negpid.diff %description The GNU C Library provides the most important standard libraries used @@ -249,6 +251,8 @@ %patch34 -p2 %patch35 %patch36 +%patch37 -p1 +%patch38 # Install blowfish crypt add-on rm crypt_blowfish-*/crypt.h cp -a crypt_blowfish-*/*.[ch] crypt @@ -888,6 +892,14 @@ %{_libdir}/libdl_p.a %changelog -n glibc +* Thu Apr 13 2006 - kukuk@suse.de +- Add /usr/include/linux/taskstats.h [#141936] +* Tue Apr 11 2006 - kukuk@suse.de +- nptl/init.c (sigcancel_handler): Compare with correct PID even + if the thread is in the middle of a fork call. + (sighandler_setxid): Likewise. +* Sun Apr 09 2006 - ihno@suse.de +- S390 fix for startupcode. Part of it was not PIC. * Fri Apr 07 2006 - kukuk@suse.de - Don't hardcode syscall numbers at our own * Tue Apr 04 2006 - schwab@suse.de ++++++ glibc-2.4-nptl-negpid.diff ++++++ --- nptl/init.c 28 Mar 2006 04:15:08 -0000 1.57 +++ nptl/init.c 8 Apr 2006 20:26:31 -0000 1.58 @@ -148,6 +148,14 @@ static void sigcancel_handler (int sig, siginfo_t *si, void *ctx) { +#ifdef __ASSUME_CORRECT_SI_PID + /* Determine the process ID. It might be negative if the thread is + in the middle of a fork() call. */ + pid_t pid = THREAD_GETMEM (THREAD_SELF, pid); + if (__builtin_expect (pid < 0, 0)) + pid = -pid; +#endif + /* Safety check. It would be possible to call this function for other signals and send a signal from another process. This is not correct and might even be a security problem. Try to catch as @@ -156,7 +164,7 @@ #ifdef __ASSUME_CORRECT_SI_PID /* Kernels before 2.5.75 stored the thread ID and not the process ID in si_pid so we skip this test. */ - || si->si_pid != THREAD_GETMEM (THREAD_SELF, pid) + || si->si_pid != pid #endif || si->si_code != SI_TKILL) return; @@ -201,6 +209,14 @@ static void sighandler_setxid (int sig, siginfo_t *si, void *ctx) { +#ifdef __ASSUME_CORRECT_SI_PID + /* Determine the process ID. It might be negative if the thread is + in the middle of a fork() call. */ + pid_t pid = THREAD_GETMEM (THREAD_SELF, pid); + if (__builtin_expect (pid < 0, 0)) + pid = -pid; +#endif + /* Safety check. It would be possible to call this function for other signals and send a signal from another process. This is not correct and might even be a security problem. Try to catch as @@ -209,7 +225,7 @@ #ifdef __ASSUME_CORRECT_SI_PID /* Kernels before 2.5.75 stored the thread ID and not the process ID in si_pid so we skip this test. */ - || si->si_pid != THREAD_GETMEM (THREAD_SELF, pid) + || si->si_pid != pid #endif || si->si_code != SI_TKILL) return; ++++++ kernel-headers.dif ++++++ --- /var/tmp/diff_new_pack.QMtTba/_old 2006-04-13 14:43:33.000000000 +0200 +++ /var/tmp/diff_new_pack.QMtTba/_new 2006-04-13 14:43:33.000000000 +0200 @@ -1,5 +1,5 @@ --- asm-alpha/cache.h -+++ asm-alpha/cache.h 2006/03/24 13:57:10 ++++ asm-alpha/cache.h 2006/04/13 11:32:46 @@ -4,6 +4,8 @@ #ifndef __ARCH_ALPHA_CACHE_H #define __ARCH_ALPHA_CACHE_H @@ -16,7 +16,7 @@ + +#endif --- asm-alpha/param.h -+++ asm-alpha/param.h 2006/03/24 13:57:10 ++++ asm-alpha/param.h 2006/04/13 11:32:46 @@ -5,14 +5,8 @@ hardware ignores reprogramming. We also need userland buy-in to the change in HZ, since this is visible in the wait4 resources etc. */ @@ -43,7 +43,7 @@ - #endif /* _ASM_ALPHA_PARAM_H */ --- asm-generic/ioctl.h -+++ asm-generic/ioctl.h 2006/03/24 13:57:10 ++++ asm-generic/ioctl.h 2006/04/13 11:32:46 @@ -48,11 +48,7 @@ ((size) << _IOC_SIZESHIFT)) @@ -58,7 +58,7 @@ /* used to create numbers */ #define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0) --- asm-i386/byteorder.h -+++ asm-i386/byteorder.h 2006/03/24 13:57:10 ++++ asm-i386/byteorder.h 2006/04/13 11:32:46 @@ -9,6 +9,8 @@ /* For avoiding bswap on i386 */ #ifdef __KERNEL__ @@ -85,7 +85,7 @@ return v.u; } --- asm-i386/cache.h -+++ asm-i386/cache.h 2006/03/24 13:57:10 ++++ asm-i386/cache.h 2006/04/13 11:32:46 @@ -4,6 +4,8 @@ #ifndef __ARCH_I386_CACHE_H #define __ARCH_I386_CACHE_H @@ -102,7 +102,7 @@ + +#endif --- asm-i386/module.h -+++ asm-i386/module.h 2006/03/24 13:57:10 ++++ asm-i386/module.h 2006/04/13 11:32:46 @@ -10,6 +10,8 @@ #define Elf_Sym Elf32_Sym #define Elf_Ehdr Elf32_Ehdr @@ -120,7 +120,7 @@ + #endif /* _ASM_I386_MODULE_H */ --- asm-i386/processor.h -+++ asm-i386/processor.h 2006/03/24 13:57:10 ++++ asm-i386/processor.h 2006/04/13 11:32:46 @@ -7,6 +7,8 @@ #ifndef __ASM_I386_PROCESSOR_H #define __ASM_I386_PROCESSOR_H @@ -147,7 +147,7 @@ + #endif /* __ASM_I386_PROCESSOR_H */ --- asm-i386/types.h -+++ asm-i386/types.h 2006/03/24 13:57:10 ++++ asm-i386/types.h 2006/04/13 11:32:46 @@ -19,10 +19,8 @@ typedef __signed__ int __s32; typedef unsigned int __u32; @@ -160,7 +160,7 @@ #endif /* __ASSEMBLY__ */ --- asm-ia64/atomic.h -+++ asm-ia64/atomic.h 2006/03/24 13:57:10 ++++ asm-ia64/atomic.h 2006/04/13 11:32:46 @@ -23,6 +23,8 @@ typedef struct { volatile __s32 counter; } atomic_t; typedef struct { volatile __s64 counter; } atomic64_t; @@ -180,7 +180,7 @@ #define smp_mb__before_atomic_dec() barrier() #define smp_mb__after_atomic_dec() barrier() --- asm-ia64/bitops.h -+++ asm-ia64/bitops.h 2006/03/24 13:57:10 ++++ asm-ia64/bitops.h 2006/04/13 11:32:46 @@ -14,6 +14,11 @@ #include <asm/bitops.h> #include <asm/intrinsics.h> @@ -403,7 +403,7 @@ /** --- asm-ia64/cache.h -+++ asm-ia64/cache.h 2006/03/24 13:57:10 ++++ asm-ia64/cache.h 2006/04/13 11:32:46 @@ -1,6 +1,8 @@ #ifndef _ASM_IA64_CACHE_H #define _ASM_IA64_CACHE_H @@ -421,7 +421,7 @@ + #endif /* _ASM_IA64_CACHE_H */ --- asm-ia64/elf.h -+++ asm-ia64/elf.h 2006/03/24 13:57:10 ++++ asm-ia64/elf.h 2006/04/13 11:32:46 @@ -43,7 +43,7 @@ */ #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x800000000UL) @@ -432,7 +432,7 @@ /* IA-64 relocations: */ #define R_IA64_NONE 0x00 /* none */ --- asm-ia64/gcc_intrin.h -+++ asm-ia64/gcc_intrin.h 2006/03/24 13:57:10 ++++ asm-ia64/gcc_intrin.h 2006/04/13 11:32:46 @@ -24,7 +24,7 @@ extern void ia64_bad_param_for_setreg (void); extern void ia64_bad_param_for_getreg (void); @@ -443,7 +443,7 @@ #define ia64_setreg(regnum, val) \ ({ \ --- asm-ia64/intrinsics.h -+++ asm-ia64/intrinsics.h 2006/03/24 13:57:10 ++++ asm-ia64/intrinsics.h 2006/04/13 11:32:46 @@ -44,7 +44,7 @@ #define ia64_fetchadd(i,v,sem) \ @@ -497,7 +497,7 @@ } \ switch (size) { \ --- asm-ia64/page.h -+++ asm-ia64/page.h 2006/03/24 13:57:10 ++++ asm-ia64/page.h 2006/04/13 11:32:46 @@ -25,22 +25,8 @@ #define RGN_GATE 5 /* Gate page, Kernel text, etc */ #define RGN_HPAGE 4 /* For Huge TLB pages */ @@ -523,7 +523,7 @@ #define PAGE_ALIGN(addr) (((addr) + PAGE_SIZE - 1) & PAGE_MASK) --- asm-ia64/pal.h -+++ asm-ia64/pal.h 2006/03/24 13:57:10 ++++ asm-ia64/pal.h 2006/04/13 11:32:46 @@ -78,7 +78,7 @@ #define PAL_GET_PSTATE 262 /* get the current P-state */ #define PAL_SET_PSTATE 263 /* set the P-state */ @@ -534,7 +534,7 @@ #include <linux/types.h> #include <asm/fpu.h> --- asm-ia64/processor.h -+++ asm-ia64/processor.h 2006/03/24 13:57:10 ++++ asm-ia64/processor.h 2006/04/13 11:32:46 @@ -20,6 +20,9 @@ #include <asm/ptrace.h> #include <asm/ustack.h> @@ -546,7 +546,7 @@ /* * Limits for PMC and PMD are set to less than maximum architected values --- asm-ia64/string.h -+++ asm-ia64/string.h 2006/03/24 13:57:10 ++++ asm-ia64/string.h 2006/04/13 11:32:46 @@ -9,6 +9,8 @@ * David Mosberger-Tang <davidm@hpl.hp.com> */ @@ -564,7 +564,7 @@ + #endif /* _ASM_IA64_STRING_H */ --- asm-ia64/system.h -+++ asm-ia64/system.h 2006/03/24 13:57:10 ++++ asm-ia64/system.h 2006/04/13 11:32:46 @@ -12,7 +12,6 @@ * Copyright (C) 1999 Asit Mallick <asit.k.mallick@intel.com> * Copyright (C) 1999 Don Dugger <don.dugger@intel.com> @@ -594,7 +594,7 @@ # define IS_IA32_PROCESS(regs) (ia64_psr(regs)->is != 0) #else --- asm-ia64/unistd.h -+++ asm-ia64/unistd.h 2006/03/24 13:57:10 ++++ asm-ia64/unistd.h 2006/04/13 11:32:46 @@ -121,11 +121,11 @@ #define __NR_setdomainname 1129 #define __NR_uname 1130 @@ -668,7 +668,7 @@ #endif /* __KERNEL__ */ #endif /* _ASM_IA64_UNISTD_H */ --- asm-mips/string.h -+++ asm-mips/string.h 2006/03/24 13:57:10 ++++ asm-mips/string.h 2006/04/13 11:32:46 @@ -10,8 +10,6 @@ #ifndef _ASM_STRING_H #define _ASM_STRING_H @@ -679,7 +679,7 @@ * Most of the inline functions are rather naive implementations so I just * didn't bother updating them for 64-bit ... --- asm-parisc/ioctl.h -+++ asm-parisc/ioctl.h 2006/03/24 13:57:10 ++++ asm-parisc/ioctl.h 2006/04/13 11:32:46 @@ -62,10 +62,7 @@ /* provoke compile error for invalid uses of size argument */ @@ -693,7 +693,7 @@ /* used to create numbers */ #define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0) --- asm-powerpc/ioctl.h -+++ asm-powerpc/ioctl.h 2006/03/24 13:57:10 ++++ asm-powerpc/ioctl.h 2006/04/13 11:32:46 @@ -37,12 +37,7 @@ ((nr) << _IOC_NRSHIFT) | \ ((size) << _IOC_SIZESHIFT)) @@ -709,7 +709,7 @@ /* used to create numbers */ #define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0) --- asm-powerpc/page.h -+++ asm-powerpc/page.h 2006/03/24 13:58:17 ++++ asm-powerpc/page.h 2006/04/13 11:32:46 @@ -10,7 +10,6 @@ * 2 of the License, or (at your option) any later version. */ @@ -738,7 +738,7 @@ #endif /* _ASM_POWERPC_PAGE_H */ --- asm-powerpc/types.h -+++ asm-powerpc/types.h 2006/03/24 13:57:10 ++++ asm-powerpc/types.h 2006/04/13 11:32:47 @@ -40,7 +40,7 @@ typedef __signed__ long __s64; typedef unsigned long __u64; @@ -749,7 +749,7 @@ typedef unsigned long long __u64; #endif --- asm-s390/bitops.h -+++ asm-s390/bitops.h 2006/03/24 13:57:10 ++++ asm-s390/bitops.h 2006/04/13 11:32:47 @@ -119,7 +119,7 @@ */ static inline void set_bit_cs(unsigned long nr, volatile unsigned long *ptr) @@ -862,7 +862,7 @@ return (old & mask) != 0; } --- asm-s390/dasd.h -+++ asm-s390/dasd.h 2006/03/24 13:57:10 ++++ asm-s390/dasd.h 2006/04/13 11:32:47 @@ -13,6 +13,7 @@ #ifndef DASD_H #define DASD_H @@ -883,7 +883,7 @@ /* definition of operation (cache) bits within attributes of DE */ --- asm-s390/setup.h -+++ asm-s390/setup.h 2006/03/24 13:57:10 ++++ asm-s390/setup.h 2006/04/13 11:32:47 @@ -70,30 +70,30 @@ #define SET_CONSOLE_3270 do { console_mode = 3; } while (0) @@ -944,7 +944,7 @@ #define IPL_DEVNO_VALID (ipl_parameter_flags & 1) #define IPL_PARMBLOCK_VALID (ipl_parameter_flags & 2) --- asm-s390/sigcontext.h -+++ asm-s390/sigcontext.h 2006/03/24 13:57:10 ++++ asm-s390/sigcontext.h 2006/04/13 11:32:47 @@ -63,7 +63,7 @@ struct sigcontext { @@ -955,7 +955,7 @@ --- asm-x86_64/processor.h -+++ asm-x86_64/processor.h 2006/03/24 13:57:10 ++++ asm-x86_64/processor.h 2006/04/13 11:32:47 @@ -67,7 +67,7 @@ unsigned long loops_per_jiffy; __u8 apicid; @@ -966,7 +966,7 @@ #define X86_VENDOR_INTEL 0 #define X86_VENDOR_CYRIX 1 --- linux/acct.h -+++ linux/acct.h 2006/03/24 13:57:10 ++++ linux/acct.h 2006/04/13 11:32:47 @@ -16,8 +16,6 @@ #define _LINUX_ACCT_H @@ -977,7 +977,7 @@ #include <asm/byteorder.h> --- linux/audit.h -+++ linux/audit.h 2006/03/24 13:57:10 ++++ linux/audit.h 2006/04/13 11:32:47 @@ -24,8 +24,7 @@ #ifndef _LINUX_AUDIT_H_ #define _LINUX_AUDIT_H_ @@ -1036,7 +1036,7 @@ #ifdef __KERNEL__ --- linux/blockgroup_lock.h -+++ linux/blockgroup_lock.h 2006/03/24 13:57:10 ++++ linux/blockgroup_lock.h 2006/04/13 11:32:47 @@ -36,7 +36,7 @@ struct bgl_lock { @@ -1047,7 +1047,7 @@ struct blockgroup_lock { struct bgl_lock locks[NR_BG_LOCKS]; --- linux/capi.h -+++ linux/capi.h 2006/03/24 13:57:10 ++++ linux/capi.h 2006/04/13 11:32:47 @@ -77,7 +77,7 @@ typedef struct capi_manufacturer_cmd { @@ -1058,7 +1058,7 @@ /* --- linux/config.h -+++ linux/config.h 2006/03/24 13:57:10 ++++ linux/config.h 2006/04/13 11:32:47 @@ -1,8 +1,7 @@ #ifndef _LINUX_CONFIG_H #define _LINUX_CONFIG_H @@ -1072,7 +1072,7 @@ #endif --- linux/ext2_fs_sb.h -+++ linux/ext2_fs_sb.h 2006/03/24 13:57:10 ++++ linux/ext2_fs_sb.h 2006/04/13 11:32:47 @@ -46,9 +46,9 @@ int s_inode_size; int s_first_ino; @@ -1086,7 +1086,7 @@ struct percpu_counter s_freeinodes_counter; struct percpu_counter s_dirs_counter; --- linux/genhd.h -+++ linux/genhd.h 2006/03/24 13:57:10 ++++ linux/genhd.h 2006/04/13 11:32:47 @@ -9,13 +9,14 @@ * <drew@colorado.edu> */ @@ -1141,7 +1141,7 @@ #ifdef CONFIG_MINIX_SUBPARTITION # define MINIX_NR_SUBPARTITIONS 4 --- linux/if_fddi.h -+++ linux/if_fddi.h 2006/03/24 13:57:10 ++++ linux/if_fddi.h 2006/04/13 11:32:47 @@ -85,7 +85,7 @@ __u8 ssap; /* always 0xAA */ __u8 ctrl; /* always 0x03 */ @@ -1167,7 +1167,7 @@ #endif /* _LINUX_IF_FDDI_H */ --- linux/in.h -+++ linux/in.h 2006/03/24 13:57:10 ++++ linux/in.h 2006/04/13 11:32:47 @@ -52,7 +52,7 @@ /* Internet address. */ @@ -1236,7 +1236,7 @@ }; --- linux/input.h -+++ linux/input.h 2006/03/24 13:57:10 ++++ linux/input.h 2006/04/13 11:32:47 @@ -796,6 +796,7 @@ #define FF_MAX 0x7f @@ -1254,7 +1254,7 @@ /* * Structure for hotplug & device<->driver matching. --- linux/ixjuser.h -+++ linux/ixjuser.h 2006/03/24 13:57:10 ++++ linux/ixjuser.h 2006/04/13 11:32:47 @@ -348,7 +348,7 @@ typedef struct { int elements_used; @@ -1265,7 +1265,7 @@ #define IXJCTL_TONE_CADENCE _IOW ('q', 0xCA, IXJ_CADENCE *) --- linux/limits.h -+++ linux/limits.h 2006/03/24 13:57:10 ++++ linux/limits.h 2006/04/13 11:32:47 @@ -5,7 +5,7 @@ #define NGROUPS_MAX 65536 /* supplemental group IDs are available */ @@ -1276,7 +1276,7 @@ #define LINK_MAX 127 /* # links a file may have */ #define MAX_CANON 255 /* size of the canonical input queue */ --- linux/mod_devicetable.h -+++ linux/mod_devicetable.h 2006/03/24 13:57:10 ++++ linux/mod_devicetable.h 2006/04/13 11:32:47 @@ -9,15 +9,17 @@ #ifdef __KERNEL__ @@ -1389,7 +1389,7 @@ }; --- linux/pci.h -+++ linux/pci.h 2006/03/24 13:57:10 ++++ linux/pci.h 2006/04/13 11:32:47 @@ -17,7 +17,9 @@ #ifndef LINUX_PCI_H #define LINUX_PCI_H @@ -1400,23 +1400,8 @@ /* Include the pci register defines */ #include <linux/pci_regs.h> ---- linux/percpu.h -+++ linux/percpu.h 2006/03/24 13:57:10 -@@ -1,5 +1,6 @@ - #ifndef __LINUX_PERCPU_H - #define __LINUX_PERCPU_H -+#ifdef __KERNEL__ - #include <linux/spinlock.h> /* For preempt_disable() */ - #include <linux/slab.h> /* For kmalloc() */ - #include <linux/smp.h> -@@ -56,4 +57,5 @@ - /* Simple wrapper for the common case: zeros memory. */ - #define alloc_percpu(type) ((type *)(__alloc_percpu(sizeof(type)))) - -+#endif /* __KERNEL__ */ - #endif /* __LINUX_PERCPU_H */ --- linux/percpu_counter.h -+++ linux/percpu_counter.h 2006/03/24 13:57:10 ++++ linux/percpu_counter.h 2006/04/13 11:32:47 @@ -6,13 +6,15 @@ * WARNING: these things are HUGE. 4 kbytes per counter on 32-way P4. */ @@ -1434,8 +1419,23 @@ struct percpu_counter { spinlock_t lock; +--- linux/percpu.h ++++ linux/percpu.h 2006/04/13 11:32:47 +@@ -1,5 +1,6 @@ + #ifndef __LINUX_PERCPU_H + #define __LINUX_PERCPU_H ++#ifdef __KERNEL__ + #include <linux/spinlock.h> /* For preempt_disable() */ + #include <linux/slab.h> /* For kmalloc() */ + #include <linux/smp.h> +@@ -56,4 +57,5 @@ + /* Simple wrapper for the common case: zeros memory. */ + #define alloc_percpu(type) ((type *)(__alloc_percpu(sizeof(type)))) + ++#endif /* __KERNEL__ */ + #endif /* __LINUX_PERCPU_H */ --- linux/ppp_defs.h -+++ linux/ppp_defs.h 2006/03/24 13:57:10 ++++ linux/ppp_defs.h 2006/04/13 11:32:47 @@ -42,7 +42,9 @@ #ifndef _PPP_DEFS_H_ #define _PPP_DEFS_H_ @@ -1447,7 +1447,7 @@ /* * The basic PPP frame. --- linux/rtc.h -+++ linux/rtc.h 2006/03/24 13:57:10 ++++ linux/rtc.h 2006/04/13 11:32:47 @@ -11,7 +11,9 @@ #ifndef _LINUX_RTC_H_ #define _LINUX_RTC_H_ @@ -1459,7 +1459,7 @@ /* * The struct used to pass data via the following ioctl. Similar to the --- linux/spinlock.h -+++ linux/spinlock.h 2006/03/24 13:57:10 ++++ linux/spinlock.h 2006/04/13 11:32:47 @@ -1,6 +1,8 @@ #ifndef __LINUX_SPINLOCK_H #define __LINUX_SPINLOCK_H @@ -1480,3 +1480,125 @@ +#endif + #endif /* __LINUX_SPINLOCK_H */ +--- linux/taskstats.h ++++ linux/taskstats.h 2006/04/10 07:57:39 +@@ -0,0 +1,119 @@ ++/* taskstats.h - exporting per-task statistics ++ * ++ * Copyright (C) Shailabh Nagar, IBM Corp. 2006 ++ * (C) Balbir Singh, IBM Corp. 2006 ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of version 2.1 of the GNU Lesser General Public License ++ * as published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it would be useful, but ++ * WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++ */ ++ ++#ifndef _LINUX_TASKSTATS_H ++#define _LINUX_TASKSTATS_H ++ ++/* Format for per-task data returned to userland when ++ * - a task exits ++ * - listener requests stats for a task ++ * ++ * The struct is versioned. Newer versions should only add fields to ++ * the bottom of the struct to maintain backward compatibility. ++ * ++ * To create the next version, bump up the taskstats_version variable ++ * and delineate the start of newly added fields with a comment indicating ++ * the version number. ++ */ ++ ++#define TASKSTATS_VERSION 1 ++#define TASKSTATS_NOPID -1 ++ ++struct taskstats { ++ /* Maintain 64-bit alignment while extending */ ++ /* Version 1 */ ++ ++ /* XXX_count is number of delay values recorded. ++ * XXX_total is corresponding cumulative delay in nanoseconds ++ */ ++ ++#define TASKSTATS_NOCPUSTATS 1 ++ __u64 cpu_count; ++ __u64 cpu_delay_total; /* wait, while runnable, for cpu */ ++ __u64 blkio_count; ++ __u64 blkio_delay_total; /* sync,block io completion wait*/ ++ __u64 swapin_count; ++ __u64 swapin_delay_total; /* swapin page fault wait*/ ++ ++ __u64 cpu_run_real_total; /* cpu "wall-clock" running time ++ * Potentially accounts for cpu ++ * virtualization, on some arches ++ */ ++ __u64 cpu_run_virtual_total; /* cpu "virtual" running time ++ * Uses time intervals as seen by ++ * the kernel ++ */ ++}; ++ ++ ++#define TASKSTATS_LISTEN_GROUP 0x1 ++ ++/* ++ * Commands sent from userspace ++ * Not versioned. New commands should only be inserted at the enum's end ++ */ ++ ++enum { ++ TASKSTATS_CMD_UNSPEC = 0, /* Reserved */ ++ TASKSTATS_CMD_GET, /* user->kernel request/get-response */ ++ TASKSTATS_CMD_NEW, /* kernel->user event */ ++ __TASKSTATS_CMD_MAX, ++}; ++ ++#define TASKSTATS_CMD_MAX (__TASKSTATS_CMD_MAX - 1) ++ ++enum { ++ TASKSTATS_TYPE_UNSPEC = 0, /* Reserved */ ++ TASKSTATS_TYPE_PID, /* Process id */ ++ TASKSTATS_TYPE_TGID, /* Thread group id */ ++ TASKSTATS_TYPE_STATS, /* taskstats structure */ ++ TASKSTATS_TYPE_AGGR_PID, /* contains pid + stats */ ++ TASKSTATS_TYPE_AGGR_TGID, /* contains tgid + stats */ ++ __TASKSTATS_TYPE_MAX, ++}; ++ ++#define TASKSTATS_TYPE_MAX (__TASKSTATS_TYPE_MAX - 1) ++ ++enum { ++ TASKSTATS_CMD_ATTR_UNSPEC = 0, ++ TASKSTATS_CMD_ATTR_PID, ++ TASKSTATS_CMD_ATTR_TGID, ++ __TASKSTATS_CMD_ATTR_MAX, ++}; ++ ++#define TASKSTATS_CMD_ATTR_MAX (__TASKSTATS_CMD_ATTR_MAX - 1) ++ ++/* NETLINK_GENERIC related info */ ++ ++#define TASKSTATS_GENL_NAME "TASKSTATS" ++#define TASKSTATS_GENL_VERSION 0x1 ++ ++#ifdef __KERNEL__ ++ ++#include <linux/sched.h> ++ ++enum { ++ TASKSTATS_MSG_UNICAST, /* send data only to requester */ ++ TASKSTATS_MSG_MULTICAST, /* send data to a group */ ++}; ++ ++#ifdef CONFIG_TASKSTATS ++extern void taskstats_exit_pid(struct task_struct *); ++#else ++static inline void taskstats_exit_pid(struct task_struct *tsk) ++{} ++#endif ++ ++#endif /* __KERNEL__ */ ++#endif /* _LINUX_TASKSTATS_H */ ++++++ s390_main_got_diff ++++++ diff -urpN libc/sysdeps/s390/s390-32/elf/start.S libc-s390/sysdeps/s390/s390-32/elf/start.S --- libc/sysdeps/s390/s390-32/elf/start.S 2004-08-16 00:50:59.000000000 -0400 +++ libc-s390/sysdeps/s390/s390-32/elf/start.S 2006-03-29 14:17:48.000000000 -0500 @@ -88,9 +88,9 @@ _start: l %r12,.L5-.Llit(%r13) # load .got pointer la %r6,0(%r13,%r6) la %r5,0(%r13,%r5) - la %r2,0(%r13,%r2) - la %r1,0(%r13,%r1) la %r12,0(%r13,%r12) + l %r2,0(%r12,%r2) + la %r1,0(%r13,%r1) #endif /* ok, now branch to the libc main routine */ @@ -108,7 +108,7 @@ _start: #else .L1: .long __libc_csu_init-.Llit .L2: .long __libc_csu_fini-.Llit -.L3: .long main-.Llit +.L3: .long main@GOT .L4: .long __libc_start_main@plt-.Llit .L5: .long _GLOBAL_OFFSET_TABLE_-.Llit #endif diff -urpN libc/sysdeps/s390/s390-64/elf/start.S libc-s390/sysdeps/s390/s390-64/elf/start.S --- libc/sysdeps/s390/s390-64/elf/start.S 2004-08-16 00:50:55.000000000 -0400 +++ libc-s390/sysdeps/s390/s390-64/elf/start.S 2006-03-29 14:17:48.000000000 -0500 @@ -78,12 +78,14 @@ _start: la %r7,160(%r15) larl %r6,__libc_csu_fini # load pointer to __libc_csu_fini larl %r5,__libc_csu_init # load pointer to __libc_csu_init - larl %r2,main # load pointer to main /* Ok, now branch to the libc main routine. */ #ifdef PIC + larl %r2,main@GOTENT # load pointer to main + lg %r2,0(%r2) brasl %r14,__libc_start_main@plt #else + larl %r2,main # load pointer to main brasl %r14,__libc_start_main #endif ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun...