From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22804 invoked by alias); 12 Jul 2002 12:47:34 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 22797 invoked from network); 12 Jul 2002 12:47:31 -0000 Received: from unknown (HELO d12lmsgate-3.de.ibm.com) (195.212.91.201) by sources.redhat.com with SMTP; 12 Jul 2002 12:47:31 -0000 Received: from d12relay02.de.ibm.com (d12relay02.de.ibm.com [9.165.215.23]) by d12lmsgate-3.de.ibm.com (8.12.3/8.12.3) with ESMTP id g6CClTRa023432 for ; Fri, 12 Jul 2002 14:47:30 +0200 Received: from d12ml015.de.ibm.com (d12ml015_cs0 [9.165.223.40]) by d12relay02.de.ibm.com (8.11.1m3/NCO/VER6.2) with ESMTP id g6CClSv29166 for ; Fri, 12 Jul 2002 14:47:29 +0200 Importance: Normal Sensitivity: To: gdb-patches@sources.redhat.com Message-ID: From: "Gerhard Tonn" Date: Fri, 12 Jul 2002 07:57:00 -0000 Subject: [Patch] Fix multithread debugging problems on s390 MIME-Version: 1.0 Content-type: multipart/mixed; Boundary="0__=4EBBE167DFD5C5A58f9e8a93df938690918c4EBBE167DFD5C5A5" Content-Disposition: inline X-SW-Source: 2002-07/txt/msg00263.txt.bz2 --0__=4EBBE167DFD5C5A58f9e8a93df938690918c4EBBE167DFD5C5A5 Content-type: text/plain; charset=us-ascii Content-length: 2416 Hi, attached is a patch that fixes the multi-thread debugging problems on s390. The functions fill_gregset and fill_fpregset were broken, but seem to be used only since the gdb thread code has been revised in 5.1. I have attached the fix also as file in case there are any line mangling in the code below. 2002-07-12 Gerhard Tonn * s390-nat.c (fill_gregset and fill_fpregset): Call regcache_collect functions. I would appreciate, if someone could commit it to trunk and 5.2 branch, if possible even for 5.2.1 Thanks --- src/gdb/s390-nat.c Tue Nov 6 22:18:13 2001 +++ /home/ton/gdb/src/gdb/s390-nat.c Wed Jul 10 10:15:26 2002 @@ -273,14 +273,23 @@ void fill_gregset (gregset_t * gregsetp, int regno) { + int regi; greg_t *gregp = (greg_t *) gregsetp; if (regno >= S390_FIRST_CR && regno <= S390_LAST_CR) - supply_register (regno, NULL); + ; else if (regno != -1) - supply_register (regno, (char *) &gregp[regno]); - else - supply_gregset (gregsetp); + regcache_collect (regno, (char *) &gregp[regno]); + else { + regcache_collect (S390_PSWM_REGNUM, (char *) &gregp[S390_PSWM_REGNUM]); + regcache_collect (S390_PC_REGNUM, (char *) &gregp[S390_PC_REGNUM]); + for (regi = 0; regi < S390_NUM_GPRS; regi++) + regcache_collect (S390_GP0_REGNUM + regi, + (char *) &gregp[S390_GP0_REGNUM + regi]); + for (regi = 0; regi < S390_NUM_ACRS; regi++) + regcache_collect (S390_FIRST_ACR + regi, + (char *) &gregp[S390_FIRST_ACR + regi]); + } } /* Given a pointer to a floating point register set in /proc format @@ -291,10 +300,15 @@ void fill_fpregset (fpregset_t * fpregsetp, int regno) { - if (regno == -1) - supply_fpregset (fpregsetp); + int regi; + + if (regno == -1) { + regcache_collect (S390_FPC_REGNUM, (char *) &fpregsetp->fpc); + for (regi = 0; regi < S390_NUM_FPRS; regi++) + regcache_collect (S390_FP0_REGNUM + regi, (char *) &fpregsetp->fprs[regi]); + } else - supply_register (regno, + regcache_collect (regno, &((char *) fpregsetp)[REGISTER_BYTE (regno) - REGISTER_BYTE (S390_FPC_REGNUM)]); } (See attached file: gdb-5.2.1-s390.diff) Regards / Mit freundlichen Gruessen Gerhard Gerhard Tonn, Linux for eServer Development, +(49)-7031-16-4716, Lotus Notes: ton@ibmde, Internet: ton@de.ibm.com --0__=4EBBE167DFD5C5A58f9e8a93df938690918c4EBBE167DFD5C5A5 Content-type: application/octet-stream; name="gdb-5.2.1-s390.diff" Content-Disposition: attachment; filename="gdb-5.2.1-s390.diff" Content-transfer-encoding: base64 Content-length: 2221 LS0tIHNyYy9nZGIvczM5MC1uYXQuYwlUdWUgTm92ICA2IDIyOjE4OjEzIDIw MDENCisrKyAvaG9tZS90b24vZ2RiL3NyYy9nZGIvczM5MC1uYXQuYwlXZWQg SnVsIDEwIDEwOjE1OjI2IDIwMDINCkBAIC0yNzMsMTQgKzI3MywyMyBAQA0K IHZvaWQNCiBmaWxsX2dyZWdzZXQgKGdyZWdzZXRfdCAqIGdyZWdzZXRwLCBp bnQgcmVnbm8pDQogew0KKyAgaW50IHJlZ2k7DQogICBncmVnX3QgKmdyZWdw ID0gKGdyZWdfdCAqKSBncmVnc2V0cDsNCiANCiAgIGlmIChyZWdubyA+PSBT MzkwX0ZJUlNUX0NSICYmIHJlZ25vIDw9IFMzOTBfTEFTVF9DUikNCi0gICAg c3VwcGx5X3JlZ2lzdGVyIChyZWdubywgTlVMTCk7DQorICAgIDsNCiAgIGVs c2UgaWYgKHJlZ25vICE9IC0xKQ0KLSAgICBzdXBwbHlfcmVnaXN0ZXIgKHJl Z25vLCAoY2hhciAqKSAmZ3JlZ3BbcmVnbm9dKTsNCi0gIGVsc2UNCi0gICAg c3VwcGx5X2dyZWdzZXQgKGdyZWdzZXRwKTsNCisgICAgcmVnY2FjaGVfY29s bGVjdCAocmVnbm8sIChjaGFyICopICZncmVncFtyZWdub10pOw0KKyAgZWxz ZSB7DQorICAgIHJlZ2NhY2hlX2NvbGxlY3QgKFMzOTBfUFNXTV9SRUdOVU0s IChjaGFyICopICZncmVncFtTMzkwX1BTV01fUkVHTlVNXSk7DQorICAgIHJl Z2NhY2hlX2NvbGxlY3QgKFMzOTBfUENfUkVHTlVNLCAoY2hhciAqKSAmZ3Jl Z3BbUzM5MF9QQ19SRUdOVU1dKTsNCisgICAgZm9yIChyZWdpID0gMDsgcmVn aSA8IFMzOTBfTlVNX0dQUlM7IHJlZ2krKykNCisgICAgICByZWdjYWNoZV9j b2xsZWN0IChTMzkwX0dQMF9SRUdOVU0gKyByZWdpLA0KKwkJKGNoYXIgKikg JmdyZWdwW1MzOTBfR1AwX1JFR05VTSArIHJlZ2ldKTsNCisgICAgZm9yIChy ZWdpID0gMDsgcmVnaSA8IFMzOTBfTlVNX0FDUlM7IHJlZ2krKykNCisgICAg ICByZWdjYWNoZV9jb2xsZWN0IChTMzkwX0ZJUlNUX0FDUiArIHJlZ2ksDQor CQkoY2hhciAqKSAmZ3JlZ3BbUzM5MF9GSVJTVF9BQ1IgKyByZWdpXSk7DQor ICB9DQogfQ0KIA0KIC8qICBHaXZlbiBhIHBvaW50ZXIgdG8gYSBmbG9hdGlu ZyBwb2ludCByZWdpc3RlciBzZXQgaW4gL3Byb2MgZm9ybWF0DQpAQCAtMjkx LDEwICszMDAsMTUgQEANCiB2b2lkDQogZmlsbF9mcHJlZ3NldCAoZnByZWdz ZXRfdCAqIGZwcmVnc2V0cCwgaW50IHJlZ25vKQ0KIHsNCi0gIGlmIChyZWdu byA9PSAtMSkNCi0gICAgc3VwcGx5X2ZwcmVnc2V0IChmcHJlZ3NldHApOw0K KyAgaW50IHJlZ2k7DQorDQorICBpZiAocmVnbm8gPT0gLTEpIHsNCisgICAg cmVnY2FjaGVfY29sbGVjdCAoUzM5MF9GUENfUkVHTlVNLCAoY2hhciAqKSAm ZnByZWdzZXRwLT5mcGMpOw0KKyAgICBmb3IgKHJlZ2kgPSAwOyByZWdpIDwg UzM5MF9OVU1fRlBSUzsgcmVnaSsrKQ0KKyAgICAgIHJlZ2NhY2hlX2NvbGxl Y3QgKFMzOTBfRlAwX1JFR05VTSArIHJlZ2ksIChjaGFyICopICZmcHJlZ3Nl dHAtPmZwcnNbcmVnaV0pOw0KKyAgfQ0KICAgZWxzZQ0KLSAgICBzdXBwbHlf cmVnaXN0ZXIgKHJlZ25vLA0KKyAgICByZWdjYWNoZV9jb2xsZWN0IChyZWdu bywNCiAJCSAgICAgJigoY2hhciAqKSBmcHJlZ3NldHApW1JFR0lTVEVSX0JZ VEUgKHJlZ25vKSAtDQogCQkJCQkgICBSRUdJU1RFUl9CWVRFIChTMzkwX0ZQ Q19SRUdOVU0pXSk7DQogfQ0K --0__=4EBBE167DFD5C5A58f9e8a93df938690918c4EBBE167DFD5C5A5--