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
#include
@@ -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
#include
--- 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
#include
@@ -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
*/
@@ -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
* Copyright (C) 1999 Don Dugger
@@ -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
--- 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 @@
*
*/
@@ -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/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 /* For preempt_disable() */
- #include /* For kmalloc() */
- #include
-@@ -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 /* For preempt_disable() */
+ #include /* For kmalloc() */
+ #include
+@@ -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
++
++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...