From: Aditya Kamath1 <Aditya.Kamath1@ibm.com>
To: Ulrich Weigand <Ulrich.Weigand@de.ibm.com>,
"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Cc: Sangamesh Mallayya <sangamesh.swamy@in.ibm.com>
Subject: Re: [PATCH] Enable-vector-register-visibility-in-core-file-for-AIX.patch
Date: Wed, 15 Mar 2023 04:54:19 +0000 [thread overview]
Message-ID: <CH2PR15MB35447F4FBE976FD08AF7FB70D6BF9@CH2PR15MB3544.namprd15.prod.outlook.com> (raw)
In-Reply-To: <61e5844bc9b0acb8f548608d8c5f9e1f534c9efb.camel@de.ibm.com>
[-- Attachment #1.1: Type: text/plain, Size: 11448 bytes --]
Hi Ulrich and community,
Please find attached the patch.
>The function looks reasonable, but it's in the wrong file -
>you still install it unconditionally on all operating systems.
>Instead, this function should go to rs6000-aix-tdep.c (next
>to rs6000_aix_iterate_over_regset_sections) and should be
>installed from rs6000_aix_init_osabi.
This is done. Kindly check it out. I have pasted both 64 bit and 32 bit core file outputs below. It works alright. Thank you for the guidance.
So I always thought rs6000-tdep.c is only used by AIX. Just for my knowledge kindly let me know who else is using it? Is it powerpc Linux folks? And is the rs600-tdep file is common to both of us. This will be useful for me if ever I need to do any change in the future.
Kindly push this if there are no more changes required from your end. If there are, then let me know.
Have a nice day ahead.
Thanks and regards,
Aditya.
-------------------------------------
32 bit output with patch:-
./gdb ~/gdb_tests/bll_core core.13828468
GNU gdb (GDB) 14.0.50.20230221-git
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "powerpc64-ibm-aix7.2.0.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
https://www.gnu.org/software/gdb/bugs/.
Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /home/aditya/gdb_tests/bll_core...
Core was generated by `bll_core'.
#0 main () at /home/aditya/gdb_tests/bll_core.c:24
24 int length1 = 7;
(gdb) info reg
r0 0x2ff22b50 804399952
r1 0x2ff22b10 804399888
r2 0x20000448 536872008
r3 0x2ff22b50 804399952
r4 0x100010e0 268439776
r5 0x0 0
r6 0x5 5
r7 0x2b67 11111
r8 0x56ce 22222
r9 0x60 96
r10 0xad9c 44444
r11 0x0 0
r12 0x22648680 577013376
r13 0xdeadbeef 3735928559
r14 0x1 1
r15 0x2ff22c00 804400128
r16 0x2ff22c08 804400136
r17 0xdeadbeef 3735928559
r18 0xdeadbeef 3735928559
r19 0xf0806b50 4034947920
r20 0xdeadbeef 3735928559
r21 0xdeadbeef 3735928559
r22 0xdeadbeef 3735928559
r23 0xdeadbeef 3735928559
r24 0xdeadbeef 3735928559
r25 0xdeadbeef 3735928559
r26 0x96c2062c 2529297964
r27 0x88 136
r28 0x200002ed 536871661
r29 0x10000000 268435456
r30 0x3 3
r31 0x2ff22b10 804399888
pc 0x10000690 0x10000690 <main+144>
msr 0x200d032 33607730
cr 0x24648244 610566724
lr 0x10000634 0x10000634 <main+52>
ctr 0x0 0
xer 0x20040000 537133056
fpscr 0x0 0
vscr 0x0 0
vrsave 0x1 1
(gdb) info reg $vr0
vr0 {uint128 = 0x14de4f00a6f27802337255053793c0, v4_float = {0x14de4f, 0xa6f278, 0x2337255, 0x53793c0}, v4_int32 = {0x14de4f, 0xa6f278, 0x2337255, 0x53793c0}, v8_int16 = {0x14, 0xde4f, 0xa6, 0xf278, 0x233, 0x7255, 0x537, 0x93c0}, v16_int8 = {0x0, 0x14, 0xde, 0x4f, 0x0, 0xa6, 0xf2, 0x78, 0x2, 0x33, 0x72, 0x55, 0x5, 0x37, 0x93, 0xc0}}
-----------------------------------------------
64 bit output with patch
./gdb ~/gdb_tests/vector_lab_test_64 core.24773118
GNU gdb (GDB) 14.0.50.20230221-git
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "powerpc64-ibm-aix7.2.0.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
https://www.gnu.org/software/gdb/bugs/.
Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /home/aditya/gdb_tests/vector_lab_test_64...
Core was generated by `vector_lab_test_64'.
#0 main () at /home/aditya/gdb_tests/vector_lab_test.c:26
26 printf("Arr3[1] = { %d, %d, %d, %d }\n", Arr3[1][0], Arr3[1][1], Arr3[1][2], Arr3[1][3]);
(gdb) info reg
r0 0xffffffff 4294967295
r1 0xffffffffffff8f0 1152921504606845168
r2 0x110000310 4563403536
r3 0xe 14
r4 0x9001000a009ad4e 648535941212384590
r5 0xfffffffffffffe8 1152921504606846952
r6 0x800000000000d032 9223372036854829106
r7 0x3ba0 15264
r8 0x0 0
r9 0x120 288
r10 0x0 0
r11 0x1030 4144
r12 0x100000740 4294969152
r13 0xbadc0ffee0ddf00d 13464654573299691533
r14 0x1 1
r15 0xffffffffffffad0 1152921504606845648
r16 0xffffffffffffae0 1152921504606845664
r17 0x800200140000000 576495942044221440
r18 0xffffffffffffed0 1152921504606846672
r19 0x9fffffff000ec40 720575940110904384
r20 0xbadc0ffee0ddf00d 13464654573299691533
r21 0xbadc0ffee0ddf00d 13464654573299691533
r22 0xbadc0ffee0ddf00d 13464654573299691533
r23 0xbadc0ffee0ddf00d 13464654573299691533
r24 0xbadc0ffee0ddf00d 13464654573299691533
r25 0xbadc0ffee0ddf00d 13464654573299691533
r26 0xbadc0ffee0ddf00d 13464654573299691533
r27 0xbadc0ffee0ddf00d 13464654573299691533
r28 0xbadc0ffee0ddf00d 13464654573299691533
r29 0xbadc0ffee0ddf00d 13464654573299691533
r30 0xbadc0ffee0ddf00d 13464654573299691533
r31 0xffffffffffff8f0 1152921504606845168
pc 0x100000760 0x100000760 <main+192>
msr 0xa00000000200d032 11529215046102077490
cr 0x82240228 2183397928
lr 0x100000740 0x100000740 <main+160>
ctr 0xe 14
xer 0xe 14
fpscr 0x0 0
vscr 0x0 0
vrsave 0x1 1
(gdb) info reg $vr0
vr0 {uint128 = 0x4c60000098c00000e5200001318, v4_float = {0x4c6, 0x98c, 0xe52, 0x1318}, v4_int32 = {0x4c6, 0x98c, 0xe52, 0x1318}, v8_int16 = {0x0, 0x4c6, 0x0, 0x98c, 0x0, 0xe52, 0x0, 0x1318}, v16_int8 = {0x0, 0x0, 0x4, 0xc6, 0x0, 0x0, 0x9, 0x8c, 0x0, 0x0, 0xe, 0x52, 0x0, 0x0, 0x13, 0x18}}
(gdb)
--------------------------------------------------
Output without patch:-
./gdb ~/gdb_tests/bll_core core.13828468
GNU gdb (GDB) 14.0.50.20230221-git
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "powerpc64-ibm-aix7.2.0.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
https://www.gnu.org/software/gdb/bugs/.
Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /home/aditya/gdb_tests/bll_core...
Core was generated by `bll_core'.
#0 main () at /home/aditya/gdb_tests/bll_core.c:24
24 int length1 = 7;
(gdb) info reg
r0 0x2ff22b50 804399952
r1 0x2ff22b10 804399888
r2 0x20000448 536872008
r3 0x2ff22b50 804399952
r4 0x100010e0 268439776
r5 0x0 0
r6 0x5 5
r7 0x2b67 11111
r8 0x56ce 22222
r9 0x60 96
r10 0xad9c 44444
r11 0x0 0
r12 0x22648680 577013376
r13 0xdeadbeef -559038737
r14 0x1 1
r15 0x2ff22c00 804400128
r16 0x2ff22c08 804400136
r17 0xdeadbeef -559038737
r18 0xdeadbeef -559038737
r19 0xf0806b50 -260019376
r20 0xdeadbeef -559038737
r21 0xdeadbeef -559038737
r22 0xdeadbeef -559038737
r23 0xdeadbeef -559038737
r24 0xdeadbeef -559038737
r25 0xdeadbeef -559038737
r26 0x96c2062c -1765669332
r27 0x88 136
r28 0x200002ed 536871661
r29 0x10000000 268435456
r30 0x3 3
r31 0x2ff22b10 804399888
pc 0x10000690 0x10000690 <main+144>
msr 0x200d032 33607730
cnd 0x24648244 610566724
lr 0x10000634 0x10000634 <main+52>
cnt 0x0 0
xer 0x20040000 537133056
fpscr 0x0 0
mq 0xdeadbeef -559038737
From: Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Date: Tuesday, 14 March 2023 at 11:28 PM
To: gdb-patches@sourceware.org <gdb-patches@sourceware.org>, Aditya Kamath1 <Aditya.Kamath1@ibm.com>
Cc: Sangamesh Mallayya <sangamesh.swamy@in.ibm.com>
Subject: Re: [PATCH] Enable-vector-register-visibility-in-core-file-for-AIX.patch
Aditya Kamath1 <Aditya.Kamath1@ibm.com> wrote:
>Kindly check in this patch.. It is a simple check to see for
>aix-vmx or vsx presence in a bfd file. And then we return
>the required target desc.
The function looks reasonable, but it's in the wrong file -
you still install it unconditionally on all operating systems.
Instead, this function should go to rs6000-aix-tdep.c (next
to rs6000_aix_iterate_over_regset_sections) and should be
installed from rs6000_aix_init_osabi.
Bye,
Ulrich
[-- Attachment #2: 0001-Enable-vector-register-visibility-in-core-for-AIX.patch --]
[-- Type: application/octet-stream, Size: 2588 bytes --]
From 84d5cba220470e74a359bfc34aa548ea3c19fab6 Mon Sep 17 00:00:00 2001
From: Aditya Vidyadhar Kamath <Aditya.Kamath1@ibm.com>
Date: Tue, 14 Mar 2023 22:48:40 -0500
Subject: [PATCH] Enable vector register visibility in core for AIX.
This patch enables AIX folks to see vector register contents while they
analyse the core file.
---
gdb/rs6000-aix-tdep.c | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/gdb/rs6000-aix-tdep.c b/gdb/rs6000-aix-tdep.c
index 9a3a5396508..41558ff31ff 100644
--- a/gdb/rs6000-aix-tdep.c
+++ b/gdb/rs6000-aix-tdep.c
@@ -40,6 +40,11 @@
#include "trad-frame.h"
#include "frame-unwind.h"
+#include "features/rs6000/powerpc-altivec32.c"
+#include "features/rs6000/powerpc-vsx32.c"
+#include "features/rs6000/powerpc-altivec64.c"
+#include "features/rs6000/powerpc-vsx64.c"
+
/* If the kernel has to deliver a signal, it pushes a sigcontext
structure on the stack and then calls the signal handler, passing
the address of the sigcontext in an argument register. Usually
@@ -450,6 +455,36 @@ rs6000_aix_iterate_over_regset_sections (struct gdbarch *gdbarch,
}
+/* Read core file description for AIX. */
+
+static const struct target_desc *
+ppc_aix_core_read_description (struct gdbarch *gdbarch,
+ struct target_ops *target,
+ bfd *abfd)
+{
+ asection *altivec = bfd_get_section_by_name (abfd, ".aix-vmx");
+ asection *vsx = bfd_get_section_by_name (abfd, ".aix-vsx");
+ asection *section = bfd_get_section_by_name (abfd, ".reg");
+ ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
+
+ if (!section)
+ return NULL;
+
+ int arch64 = 0;
+ if (tdep->wordsize == 8)
+ arch64 = 1;
+
+ if (vsx && arch64)
+ return tdesc_powerpc_vsx64;
+ else if (vsx && !arch64)
+ return tdesc_powerpc_vsx32;
+ else if (altivec && arch64)
+ return tdesc_powerpc_altivec64;
+ else if (altivec && !arch64)
+ return tdesc_powerpc_altivec32;
+
+ return NULL;
+}
/* Pass the arguments in either registers, or in the stack. In RS/6000,
the first eight words of the argument list (that might be less than
@@ -1348,6 +1383,7 @@ rs6000_aix_init_osabi (struct gdbarch_info info, struct gdbarch *gdbarch)
(gdbarch, rs6000_aix_iterate_over_regset_sections);
set_gdbarch_core_xfer_shared_libraries_aix
(gdbarch, rs6000_aix_core_xfer_shared_libraries_aix);
+ set_gdbarch_core_read_description (gdbarch, ppc_aix_core_read_description);
if (tdep->wordsize == 8)
tdep->lr_frame_offset = 16;
--
2.38.3
next prev parent reply other threads:[~2023-03-15 4:54 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-13 12:23 Aditya Kamath1
2023-03-13 13:06 ` Ulrich Weigand
2023-03-14 7:43 ` Aditya Kamath1
2023-03-14 17:58 ` Ulrich Weigand
2023-03-15 4:54 ` Aditya Kamath1 [this message]
2023-03-15 18:32 ` Ulrich Weigand
2023-03-15 19:04 ` Simon Marchi
2023-03-16 12:50 ` Luis Machado
2023-03-16 13:51 ` Tom Tromey
2023-03-16 15:11 ` Ulrich Weigand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CH2PR15MB35447F4FBE976FD08AF7FB70D6BF9@CH2PR15MB3544.namprd15.prod.outlook.com \
--to=aditya.kamath1@ibm.com \
--cc=Ulrich.Weigand@de.ibm.com \
--cc=gdb-patches@sourceware.org \
--cc=sangamesh.swamy@in.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).