From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15543 invoked by alias); 4 Dec 2007 15:01:59 -0000 Received: (qmail 15506 invoked by uid 22791); 4 Dec 2007 15:01:52 -0000 X-Spam-Check-By: sourceware.org Received: from dmz.mips-uk.com (HELO dmz.mips-uk.com) (194.74.144.194) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 04 Dec 2007 15:01:43 +0000 Received: from internal-mx1 ([192.168.192.240] helo=ukservices1.mips.com) by dmz.mips-uk.com with esmtp (Exim 3.35 #1 (Debian)) id 1IzZHI-00042u-00; Tue, 04 Dec 2007 15:01:40 +0000 Received: from perivale.mips.com ([192.168.192.200]) by ukservices1.mips.com with esmtp (Exim 3.36 #1 (Debian)) id 1IzZHB-0005XR-00; Tue, 04 Dec 2007 15:01:33 +0000 Received: from macro (helo=localhost) by perivale.mips.com with local-esmtp (Exim 4.63) (envelope-from ) id 1IzZHB-0004T4-KD; Tue, 04 Dec 2007 15:01:33 +0000 Date: Tue, 04 Dec 2007 15:01:00 -0000 From: "Maciej W. Rozycki" To: gdb-patches@sourceware.org cc: "Maciej W. Rozycki" Subject: MIPS/Linux: Register number overlap in target descriptions Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-MIPS-Technologies-UK-MailScanner: Found to be clean X-MIPS-Technologies-UK-MailScanner-From: macro@mips.com Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2007-12/txt/msg00053.txt.bz2 Hello, Due to the way target register numbers are assigned in the target description (using the last number used plus one unless overridden) we have two registers overlapping each other. Specifically, both "pc" and "f0" are assigned 37 as their number, which happens because the description of "f0" is provided after one of "cause", which specifies 36 explicitly and "pc" is assigned 37 likewise. I gather it breaks register numbering as such too as there are places elsewhere in the code that refer to some registers by number literally. To rectify, the change specifies 38 for "f0" explicitly. For consistency and to raise people's attention, I have similarly decided to specify 0 for "r0". Tested natively for mips-linux-gnu with no regressions. 2007-12-04 Maciej W. Rozycki * features/mips-cpu.xml: Specify "regnum" for "r0" explicitly. * features/mips64-cpu.xml: Likewise. * features/mips-fpu.xml: Specify "regnum" for "f0" explicitly. * features/mips64-fpu.xml: Likewise. * features/mips-linux.c: Regenerate. * features/mips64-linux.c: Regenerate. OK to apply? Maciej gdb-mips-tdesc.diff Index: gdb/src/gdb/features/mips-cpu.xml =================================================================== --- gdb.orig/src/gdb/features/mips-cpu.xml 2007-12-03 11:05:25.000000000 +0000 +++ gdb/src/gdb/features/mips-cpu.xml 2007-12-03 11:07:06.000000000 +0000 @@ -7,7 +7,7 @@ - + Index: gdb/src/gdb/features/mips-fpu.xml =================================================================== --- gdb.orig/src/gdb/features/mips-fpu.xml 2007-12-03 11:05:25.000000000 +0000 +++ gdb/src/gdb/features/mips-fpu.xml 2007-12-03 11:07:15.000000000 +0000 @@ -7,7 +7,7 @@ - + Index: gdb/src/gdb/features/mips64-cpu.xml =================================================================== --- gdb.orig/src/gdb/features/mips64-cpu.xml 2007-12-03 11:05:25.000000000 +0000 +++ gdb/src/gdb/features/mips64-cpu.xml 2007-12-03 11:06:01.000000000 +0000 @@ -7,7 +7,7 @@ - + Index: gdb/src/gdb/features/mips64-fpu.xml =================================================================== --- gdb.orig/src/gdb/features/mips64-fpu.xml 2007-12-03 11:05:25.000000000 +0000 +++ gdb/src/gdb/features/mips64-fpu.xml 2007-12-03 11:06:48.000000000 +0000 @@ -7,7 +7,7 @@ - + Index: gdb/src/gdb/features/mips-linux.c =================================================================== --- gdb.orig/src/gdb/features/mips-linux.c 2007-12-03 11:13:40.000000000 +0000 +++ gdb/src/gdb/features/mips-linux.c 2007-12-03 11:53:07.000000000 +0000 @@ -57,43 +57,43 @@ tdesc_create_reg (feature, "cause", 36, 1, NULL, 32, "int"); feature = tdesc_create_feature (result, "org.gnu.gdb.mips.fpu"); - tdesc_create_reg (feature, "f0", 37, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f1", 38, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f2", 39, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f3", 40, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f4", 41, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f5", 42, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f6", 43, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f7", 44, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f8", 45, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f9", 46, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f10", 47, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f11", 48, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f12", 49, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f13", 50, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f14", 51, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f15", 52, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f16", 53, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f17", 54, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f18", 55, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f19", 56, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f20", 57, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f21", 58, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f22", 59, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f23", 60, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f24", 61, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f25", 62, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f26", 63, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f27", 64, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f28", 65, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f29", 66, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f30", 67, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "f31", 68, 1, NULL, 32, "ieee_single"); - tdesc_create_reg (feature, "fcsr", 69, 1, "float", 32, "int"); - tdesc_create_reg (feature, "fir", 70, 1, "float", 32, "int"); + tdesc_create_reg (feature, "f0", 38, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f1", 39, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f2", 40, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f3", 41, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f4", 42, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f5", 43, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f6", 44, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f7", 45, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f8", 46, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f9", 47, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f10", 48, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f11", 49, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f12", 50, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f13", 51, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f14", 52, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f15", 53, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f16", 54, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f17", 55, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f18", 56, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f19", 57, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f20", 58, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f21", 59, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f22", 60, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f23", 61, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f24", 62, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f25", 63, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f26", 64, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f27", 65, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f28", 66, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f29", 67, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f30", 68, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f31", 69, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "fcsr", 70, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fir", 71, 1, "float", 32, "int"); feature = tdesc_create_feature (result, "org.gnu.gdb.mips.linux"); - tdesc_create_reg (feature, "restart", 71, 1, "system", 32, "int"); + tdesc_create_reg (feature, "restart", 72, 1, "system", 32, "int"); tdesc_mips_linux = result; } Index: gdb/src/gdb/features/mips64-linux.c =================================================================== --- gdb.orig/src/gdb/features/mips64-linux.c 2007-12-03 11:13:40.000000000 +0000 +++ gdb/src/gdb/features/mips64-linux.c 2007-12-03 11:53:07.000000000 +0000 @@ -57,43 +57,43 @@ tdesc_create_reg (feature, "cause", 36, 1, NULL, 64, "int"); feature = tdesc_create_feature (result, "org.gnu.gdb.mips.fpu"); - tdesc_create_reg (feature, "f0", 37, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f1", 38, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f2", 39, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f3", 40, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f4", 41, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f5", 42, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f6", 43, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f7", 44, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f8", 45, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f9", 46, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f10", 47, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f11", 48, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f12", 49, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f13", 50, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f14", 51, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f15", 52, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f16", 53, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f17", 54, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f18", 55, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f19", 56, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f20", 57, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f21", 58, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f22", 59, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f23", 60, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f24", 61, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f25", 62, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f26", 63, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f27", 64, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f28", 65, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f29", 66, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f30", 67, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "f31", 68, 1, NULL, 64, "ieee_double"); - tdesc_create_reg (feature, "fcsr", 69, 1, "float", 64, "int"); - tdesc_create_reg (feature, "fir", 70, 1, "float", 64, "int"); + tdesc_create_reg (feature, "f0", 38, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f1", 39, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f2", 40, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f3", 41, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f4", 42, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f5", 43, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f6", 44, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f7", 45, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f8", 46, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f9", 47, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f10", 48, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f11", 49, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f12", 50, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f13", 51, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f14", 52, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f15", 53, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f16", 54, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f17", 55, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f18", 56, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f19", 57, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f20", 58, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f21", 59, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f22", 60, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f23", 61, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f24", 62, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f25", 63, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f26", 64, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f27", 65, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f28", 66, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f29", 67, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f30", 68, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f31", 69, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "fcsr", 70, 1, "float", 64, "int"); + tdesc_create_reg (feature, "fir", 71, 1, "float", 64, "int"); feature = tdesc_create_feature (result, "org.gnu.gdb.mips.linux"); - tdesc_create_reg (feature, "restart", 71, 1, "system", 64, "int"); + tdesc_create_reg (feature, "restart", 72, 1, "system", 64, "int"); tdesc_mips64_linux = result; }