Date: Tue, 21 Sep 2004 23:58:07 +0200
From: Andreas Gruenbacher <agruen@suse.de>
Subject: Add CVS timestamp to Oopses

OOPS_TIMESTAMP is set to [$BRANCH-]$CVS_TIMESTAMP in the kernel-binary
spec file. This allows us to easily track down the exact kernel
version in bug reports.

Index: linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/i386/kernel/Makefile
===================================================================
--- linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991.orig/arch/i386/kernel/Makefile	Sun Apr  4 13:36:26 2004
+++ linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/i386/kernel/Makefile	Fri Oct 15 11:36:47 2004
@@ -65,3 +65,6 @@ $(obj)/built-in.o: ld_flags += -R $(obj)
 SYSCFLAGS_vsyscall-syms.o = -r
 $(obj)/vsyscall-syms.o: $(src)/vsyscall.lds $(obj)/vsyscall-sysenter.o FORCE
 	$(call if_changed,syscall)
+
+CFLAGS_process.o += -DOOPS_TIMESTAMP='"$(OOPS_TIMESTAMP)"'
+CFLAGS_traps.o   += -DOOPS_TIMESTAMP='"$(OOPS_TIMESTAMP)"'
Index: linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/i386/kernel/process.c
===================================================================
--- linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991.orig/arch/i386/kernel/process.c	Fri Oct 15 11:01:24 2004
+++ linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/i386/kernel/process.c	Fri Oct 15 11:36:47 2004
@@ -219,7 +219,8 @@ void show_regs(struct pt_regs * regs)
 
 	if (regs->xcs & 3)
 		printk(" ESP: %04x:%08lx",0xffff & regs->xss,regs->esp);
-	printk(" EFLAGS: %08lx    %s  (%s)\n",regs->eflags, print_tainted(),UTS_RELEASE);
+	printk(" EFLAGS: %08lx    %s  (%s %s)\n",regs->eflags, print_tainted(),
+		UTS_RELEASE, OOPS_TIMESTAMP);
 	printk("EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n",
 		regs->eax,regs->ebx,regs->ecx,regs->edx);
 	printk("ESI: %08lx EDI: %08lx EBP: %08lx",
Index: linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/i386/kernel/traps.c
===================================================================
--- linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991.orig/arch/i386/kernel/traps.c	Fri Oct 15 11:31:19 2004
+++ linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/i386/kernel/traps.c	Fri Oct 15 11:36:47 2004
@@ -187,9 +187,9 @@ void show_registers(struct pt_regs *regs
 	}
 	print_modules();
 	printk("CPU:    %d\nEIP:    %04x:[<%08lx>]    %s\nEFLAGS: %08lx"
-			"   (%s) \n",
+			"   (%s %s) \n",
 		smp_processor_id(), 0xffff & regs->xcs, regs->eip,
-		print_tainted(), regs->eflags, UTS_RELEASE);
+		print_tainted(), regs->eflags, UTS_RELEASE, OOPS_TIMESTAMP);
 	print_symbol("EIP is at %s\n", regs->eip);
 	printk("eax: %08lx   ebx: %08lx   ecx: %08lx   edx: %08lx\n",
 		regs->eax, regs->ebx, regs->ecx, regs->edx);
Index: linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/ia64/kernel/Makefile
===================================================================
--- linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991.orig/arch/ia64/kernel/Makefile	Sun Apr  4 13:38:23 2004
+++ linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/ia64/kernel/Makefile	Fri Oct 15 11:37:58 2004
@@ -44,3 +44,5 @@ $(obj)/gate-syms.o: $(src)/gate.lds.s $(
 # We must build gate.so before we can assemble it.
 # Note: kbuild does not track this dependency due to usage of .incbin
 $(obj)/gate-data.o: $(obj)/gate.so
+
+CFLAGS_process.o += -DOOPS_TIMESTAMP='"$(OOPS_TIMESTAMP)"'
Index: linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/ia64/kernel/process.c
===================================================================
--- linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991.orig/arch/ia64/kernel/process.c	Fri Oct 15 11:01:24 2004
+++ linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/ia64/kernel/process.c	Fri Oct 15 11:36:47 2004
@@ -6,6 +6,7 @@
  */
 #define __KERNEL_SYSCALLS__	/* see <asm/unistd.h> */
 #include <linux/config.h>
+#include <linux/version.h>
 
 #include <linux/pm.h>
 #include <linux/elf.h>
@@ -91,8 +92,9 @@ show_regs (struct pt_regs *regs)
 	unsigned long ip = regs->cr_iip + ia64_psr(regs)->ri;
 
 	printk("\nPid: %d, CPU %d, comm: %20s\n", current->pid, smp_processor_id(), current->comm);
-	printk("psr : %016lx ifs : %016lx ip  : [<%016lx>]    %s\n",
-	       regs->cr_ipsr, regs->cr_ifs, ip, print_tainted());
+	printk("psr : %016lx ifs : %016lx ip  : [<%016lx>]    %s (%s %s)\n",
+	       regs->cr_ipsr, regs->cr_ifs, ip, print_tainted(),
+	       UTS_RELEASE, OOPS_TIMESTAMP);
 	print_symbol("ip is at %s\n", ip);
 	printk("unat: %016lx pfs : %016lx rsc : %016lx\n",
 	       regs->ar_unat, regs->ar_pfs, regs->ar_rsc);
Index: linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/ppc/kernel/Makefile
===================================================================
--- linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991.orig/arch/ppc/kernel/Makefile	Fri Oct 15 11:01:23 2004
+++ linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/ppc/kernel/Makefile	Fri Oct 15 11:36:47 2004
@@ -35,3 +35,4 @@ ifdef CONFIG_MATH_EMULATION
 obj-$(CONFIG_8xx)		+= softemu8xx.o
 endif
 
+CFLAGS_process.o += -DOOPS_TIMESTAMP='"$(OOPS_TIMESTAMP)"'
Index: linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/ppc/kernel/process.c
===================================================================
--- linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991.orig/arch/ppc/kernel/process.c	Fri Oct 15 11:35:22 2004
+++ linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/ppc/kernel/process.c	Fri Oct 15 11:36:47 2004
@@ -18,6 +18,7 @@
  */
 
 #include <linux/config.h>
+#include <linux/version.h>
 #include <linux/errno.h>
 #include <linux/sched.h>
 #include <linux/kernel.h>
@@ -262,9 +263,9 @@ void show_regs(struct pt_regs * regs)
 {
 	int i, trap;
 
-	printk("NIP: %08lX LR: %08lX SP: %08lX REGS: %p TRAP: %04lx    %s\n",
-	       regs->nip, regs->link, regs->gpr[1], regs, regs->trap,
-	       print_tainted());
+	printk("NIP: %08lX LR: %08lX SP: %08lX REGS: %p TRAP: %04lx "
+	       "%s (%s %s)\n", regs->nip, regs->link, regs->gpr[1], regs,
+	       regs->trap, print_tainted(), UTS_RELEASE, OOPS_TIMESTAMP);
 	printk("MSR: %08lx EE: %01x PR: %01x FP: %01x ME: %01x IR/DR: %01x%01x\n",
 	       regs->msr, regs->msr&MSR_EE ? 1 : 0, regs->msr&MSR_PR ? 1 : 0,
 	       regs->msr & MSR_FP ? 1 : 0,regs->msr&MSR_ME ? 1 : 0,
Index: linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/ppc64/kernel/Makefile
===================================================================
--- linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991.orig/arch/ppc64/kernel/Makefile	Fri Oct 15 11:01:23 2004
+++ linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/ppc64/kernel/Makefile	Fri Oct 15 11:36:47 2004
@@ -60,3 +60,4 @@ endif
 obj-$(CONFIG_ALTIVEC)		+= vecemu.o vector.o
 
 CFLAGS_ioctl32.o += -Ifs/
+CFLAGS_process.o += -DOOPS_TIMESTAMP='"$(OOPS_TIMESTAMP)"'
Index: linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/ppc64/kernel/process.c
===================================================================
--- linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991.orig/arch/ppc64/kernel/process.c	Fri Oct 15 11:01:24 2004
+++ linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/ppc64/kernel/process.c	Fri Oct 15 11:36:47 2004
@@ -169,8 +169,8 @@ void show_regs(struct pt_regs * regs)
 
 	printk("NIP: %016lX XER: %016lX LR: %016lX\n",
 	       regs->nip, regs->xer, regs->link);
-	printk("REGS: %p TRAP: %04lx   %s  (%s)\n",
-	       regs, regs->trap, print_tainted(), UTS_RELEASE);
+	printk("REGS: %p TRAP: %04lx   %s  (%s %s)\n",
+	       regs, regs->trap, print_tainted(), UTS_RELEASE, OOPS_TIMESTAMP);
 	printk("MSR: %016lx EE: %01x PR: %01x FP: %01x ME: %01x IR/DR: %01x%01x\n",
 	       regs->msr, regs->msr&MSR_EE ? 1 : 0, regs->msr&MSR_PR ? 1 : 0,
 	       regs->msr & MSR_FP ? 1 : 0,regs->msr&MSR_ME ? 1 : 0,
Index: linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/s390/kernel/Makefile
===================================================================
--- linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991.orig/arch/s390/kernel/Makefile	Sun Apr  4 13:38:20 2004
+++ linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/s390/kernel/Makefile	Fri Oct 15 11:36:47 2004
@@ -27,3 +27,5 @@ obj-$(CONFIG_ARCH_S390X)	+= entry64.o re
 # This is just to get the dependencies...
 #
 binfmt_elf32.o:	$(TOPDIR)/fs/binfmt_elf.c
+
+CFLAGS_process.o += -DOOPS_TIMESTAMP='"$(OOPS_TIMESTAMP)"'
Index: linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/s390/kernel/process.c
===================================================================
--- linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991.orig/arch/s390/kernel/process.c	Fri Oct 15 11:35:33 2004
+++ linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/s390/kernel/process.c	Fri Oct 15 11:36:47 2004
@@ -16,6 +16,7 @@
  */
 
 #include <linux/config.h>
+#include <linux/version.h>
 #include <linux/errno.h>
 #include <linux/sched.h>
 #include <linux/kernel.h>
@@ -137,7 +138,9 @@ void show_regs(struct pt_regs *regs)
 {
 	struct task_struct *tsk = current;
 
-        printk("CPU:    %d    %s\n", tsk->thread_info->cpu, print_tainted());
+        printk("CPU:    %d    %s (%s %s)\n",
+	       tsk->thread_info->cpu, print_tainted(),
+	       UTS_RELEASE, OOPS_TIMESTAMP);
         printk("Process %s (pid: %d, task: %p, ksp: %p)\n",
 	       current->comm, current->pid, (void *) tsk,
 	       (void *) tsk->thread.ksp);
Index: linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/x86_64/kernel/Makefile
===================================================================
--- linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991.orig/arch/x86_64/kernel/Makefile	Fri Oct 15 11:01:24 2004
+++ linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/x86_64/kernel/Makefile	Fri Oct 15 11:36:47 2004
@@ -36,3 +36,5 @@ cpuid-$(subst m,y,$(CONFIG_X86_CPUID))  
 topology-y                     += ../../i386/mach-default/topology.o
 swiotlb-$(CONFIG_SWIOTLB)      += ../../ia64/lib/swiotlb.o
 microcode-$(subst m,y,$(CONFIG_MICROCODE))  += ../../i386/kernel/microcode.o
+
+CFLAGS_process.o += -DOOPS_TIMESTAMP='"$(OOPS_TIMESTAMP)"'
Index: linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/x86_64/kernel/process.c
===================================================================
--- linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991.orig/arch/x86_64/kernel/process.c	Fri Oct 15 11:01:24 2004
+++ linux-2.6.5-SLES9_SP1_BRANCH_2004101316103991/arch/x86_64/kernel/process.c	Fri Oct 15 11:36:47 2004
@@ -202,8 +202,9 @@ void __show_regs(struct pt_regs * regs)
 
 	printk("\n");
 	print_modules();
-	printk("Pid: %d, comm: %.20s %s %s\n", 
-	       current->pid, current->comm, print_tainted(), UTS_RELEASE);
+	printk("Pid: %d, comm: %.20s %s (%s %s)\n", 
+	       current->pid, current->comm, print_tainted(), UTS_RELEASE,
+	       OOPS_TIMESTAMP);
 	printk("RIP: %04lx:[<%016lx>] ", regs->cs & 0xffff, regs->rip);
 	printk_address(regs->rip); 
 	printk("\nRSP: %04lx:%016lx  EFLAGS: %08lx\n", regs->ss, regs->rsp, regs->eflags);
