[kernel] r15093 - in dists/trunk/linux-2.6/debian: . patches/bugfix/all patches/series

Ben Hutchings benh at alioth.debian.org
Mon Feb 1 22:54:15 UTC 2010


Author: benh
Date: Mon Feb  1 22:54:12 2010
New Revision: 15093

Log:
[sparc] ftrace: Fix build-time architecture detection (Closes: #568025)

Added:
   dists/trunk/linux-2.6/debian/patches/bugfix/all/ftrace-Use-UTS_MACHINE-not-ARCH-and-word-size-in-recordmcount.patch
   dists/trunk/linux-2.6/debian/patches/series/7
Modified:
   dists/trunk/linux-2.6/debian/changelog

Modified: dists/trunk/linux-2.6/debian/changelog
==============================================================================
--- dists/trunk/linux-2.6/debian/changelog	Mon Feb  1 22:08:30 2010	(r15092)
+++ dists/trunk/linux-2.6/debian/changelog	Mon Feb  1 22:54:12 2010	(r15093)
@@ -1,7 +1,11 @@
 linux-2.6 (2.6.32-7) UNRELEASED; urgency=low
 
+  [ maximilian attems]
   * [x86] Disable deprecated X86_CPU_DEBUG, causes boot failures.
 
+  [ Ben Hutchings ]
+  * [sparc] ftrace: Fix build-time architecture detection (Closes: #568025)
+
  -- maximilian attems <maks at debian.org>  Mon, 01 Feb 2010 17:16:31 +0100
 
 linux-2.6 (2.6.32-6) unstable; urgency=high

Added: dists/trunk/linux-2.6/debian/patches/bugfix/all/ftrace-Use-UTS_MACHINE-not-ARCH-and-word-size-in-recordmcount.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/all/ftrace-Use-UTS_MACHINE-not-ARCH-and-word-size-in-recordmcount.patch	Mon Feb  1 22:54:12 2010	(r15093)
@@ -0,0 +1,154 @@
+From 6cb4452dcd9108720e0aae978b98a30a8b7ebf69 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Mon, 1 Feb 2010 22:12:56 +0000
+Subject: [PATCH] ftrace: Use UTS_MACHINE, not ARCH and word size, in recordmcount.pl
+
+$(ARCH) is user input and does not reliably correspond to either a
+source architecture or a utsname machine name.  recordmcount.pl is not
+even consistent in which names it uses internally at the moment.
+Replace $(ARCH) and word size arguments with $(UTS_MACHINE), which
+should be a stable identifier for the target architecture.
+---
+ scripts/Makefile.build  |    4 ++--
+ scripts/recordmcount.pl |   34 +++++++++++++---------------------
+ 2 files changed, 15 insertions(+), 23 deletions(-)
+
+diff --git a/scripts/Makefile.build b/scripts/Makefile.build
+index 341b589..49e4b4f 100644
+--- a/scripts/Makefile.build
++++ b/scripts/Makefile.build
+@@ -206,8 +206,8 @@ cmd_modversions =							\
+ endif
+ 
+ ifdef CONFIG_FTRACE_MCOUNT_RECORD
+-cmd_record_mcount = set -e ; perl $(srctree)/scripts/recordmcount.pl "$(ARCH)" \
+-	"$(if $(CONFIG_64BIT),64,32)" \
++cmd_record_mcount = set -e ; perl $(srctree)/scripts/recordmcount.pl	  \
++	"$(UTS_MACHINE)"						  \
+ 	"$(OBJDUMP)" "$(OBJCOPY)" "$(CC)" "$(LD)" "$(NM)" "$(RM)" "$(MV)" \
+ 	"$(if $(part-of-module),1,0)" "$(@)";
+ endif
+diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl
+index 090d300..7d53e2a 100755
+--- a/scripts/recordmcount.pl
++++ b/scripts/recordmcount.pl
+@@ -105,7 +105,7 @@ if ($#ARGV < 7) {
+ 	exit(1);
+ }
+ 
+-my ($arch, $bits, $objdump, $objcopy, $cc,
++my ($machine, $objdump, $objcopy, $cc,
+     $ld, $nm, $rm, $mv, $is_module, $inputfile) = @ARGV;
+ 
+ # This file refers to mcount and shouldn't be ftraced, so lets' ignore it
+@@ -129,7 +129,7 @@ $nm = "nm" if ((length $nm) == 0);
+ $rm = "rm" if ((length $rm) == 0);
+ $mv = "mv" if ((length $mv) == 0);
+ 
+-#print STDERR "running: $P '$arch' '$objdump' '$objcopy' '$cc' '$ld' " .
++#print STDERR "running: $P '$machine' '$objdump' '$objcopy' '$cc' '$ld' " .
+ #    "'$nm' '$rm' '$mv' '$inputfile'\n";
+ 
+ my %locals;		# List of local (static) functions
+@@ -145,14 +145,6 @@ my $mcount_regex;	# Find the call site to mcount (return offset)
+ my $alignment;		# The .align value to use for $mcount_section
+ my $section_type;	# Section header plus possible alignment command
+ 
+-if ($arch eq "x86") {
+-    if ($bits == 64) {
+-	$arch = "x86_64";
+-    } else {
+-	$arch = "i386";
+-    }
+-}
+-
+ #
+ # We base the defaults off of i386, the other archs may
+ # feel free to change them in the below if statements.
+@@ -164,7 +156,7 @@ $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\smcount\$";
+ $section_type = '@progbits';
+ $type = ".long";
+ 
+-if ($arch eq "x86_64") {
++if ($machine eq "x86_64") {
+     $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\smcount([+-]0x[0-9a-zA-Z]+)?\$";
+     $type = ".quad";
+     $alignment = 8;
+@@ -175,7 +167,7 @@ if ($arch eq "x86_64") {
+     $objcopy .= " -O elf64-x86-64";
+     $cc .= " -m64";
+ 
+-} elsif ($arch eq "i386") {
++} elsif ($machine eq "i386") {
+     $alignment = 4;
+ 
+     # force flags for this arch
+@@ -184,20 +176,20 @@ if ($arch eq "x86_64") {
+     $objcopy .= " -O elf32-i386";
+     $cc .= " -m32";
+ 
+-} elsif ($arch eq "s390" && $bits == 32) {
++} elsif ($machine eq "s390") {
+     $mcount_regex = "^\\s*([0-9a-fA-F]+):\\s*R_390_32\\s+_mcount\$";
+     $alignment = 4;
+     $ld .= " -m elf_s390";
+     $cc .= " -m31";
+ 
+-} elsif ($arch eq "s390" && $bits == 64) {
++} elsif ($machine eq "s390x") {
+     $mcount_regex = "^\\s*([0-9a-fA-F]+):\\s*R_390_(PC|PLT)32DBL\\s+_mcount\\+0x2\$";
+     $alignment = 8;
+     $type = ".quad";
+     $ld .= " -m elf64_s390";
+     $cc .= " -m64";
+ 
+-} elsif ($arch eq "sh") {
++} elsif ($machine eq "sh") {
+     $alignment = 2;
+ 
+     # force flags for this arch
+@@ -205,27 +197,27 @@ if ($arch eq "x86_64") {
+     $objcopy .= " -O elf32-sh-linux";
+     $cc .= " -m32";
+ 
+-} elsif ($arch eq "powerpc") {
++} elsif ($machine eq "ppc" || $machine eq "ppc64") {
+     $nm_regex = "^[0-9a-fA-F]+\\s+t\\s+(\\.?\\S+)";
+     $function_regex = "^([0-9a-fA-F]+)\\s+<(\\.?.*?)>:";
+     $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\s\\.?_mcount\$";
+ 
+-    if ($bits == 64) {
++    if ($machine eq "ppc64") {
+ 	$type = ".quad";
+     }
+ 
+-} elsif ($arch eq "arm") {
++} elsif ($machine eq "arm") {
+     $alignment = 2;
+     $section_type = '%progbits';
+ 
+-} elsif ($arch eq "ia64") {
++} elsif ($machine eq "ia64") {
+     $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\s_mcount\$";
+     $type = "data8";
+ 
+     if ($is_module eq "0") {
+         $cc .= " -mconstant-gp";
+     }
+-} elsif ($arch eq "sparc64") {
++} elsif ($machine eq "sparc64") {
+     # In the objdump output there are giblets like:
+     # 0000000000000000 <igmp_net_exit-0x18>:
+     # As there's some data blobs that get emitted into the
+@@ -246,7 +238,7 @@ if ($arch eq "x86_64") {
+     $cc .= " -m64";
+     $objcopy .= " -O elf64-sparc";
+ } else {
+-    die "Arch $arch is not supported with CONFIG_FTRACE_MCOUNT_RECORD";
++    die "Arch $machine is not supported with CONFIG_FTRACE_MCOUNT_RECORD";
+ }
+ 
+ my $text_found = 0;
+-- 
+1.6.6
+

Added: dists/trunk/linux-2.6/debian/patches/series/7
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/trunk/linux-2.6/debian/patches/series/7	Mon Feb  1 22:54:12 2010	(r15093)
@@ -0,0 +1 @@
++ bugfix/all/ftrace-Use-UTS_MACHINE-not-ARCH-and-word-size-in-recordmcount.patch



More information about the Kernel-svn-changes mailing list