From 1a2c0dc1ab7aff2d1bca30a93dc4edb255828d15 Mon Sep 17 00:00:00 2001 From: Aditya Vidyadhar Kamath Date: Mon, 13 Mar 2023 07:32:57 -0500 Subject: [PATCH] Enable vector register visibility in core file for AIX binutils This patch will enable vector register visibility when AIX FOLKS do core file analysis. --- bfd/aix5ppc-core.c | 21 +++++++++++++++++++++ bfd/rs6000-core.c | 16 +++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/bfd/aix5ppc-core.c b/bfd/aix5ppc-core.c index 0a338ac391b..fae8bb6cb1a 100644 --- a/bfd/aix5ppc-core.c +++ b/bfd/aix5ppc-core.c @@ -142,6 +142,27 @@ xcoff64_core_p (bfd *abfd) sec->filepos = 0; sec->contents = (bfd_byte *)&new_core_hdr->c_flt.r64; + if (core.c_extctx) + { + /* vmx section. */ + flags = SEC_HAS_CONTENTS; + sec = bfd_make_section_anyway_with_flags (abfd, ".aix-vmx", flags); + if (sec == NULL) + return NULL; + sec->size = 560; + sec->vma = 0; + sec->filepos = core.c_extctx; + + /* vmx section. */ + flags = SEC_HAS_CONTENTS; + sec = bfd_make_section_anyway_with_flags (abfd, ".aix-vsx", flags); + if (sec == NULL) + return NULL; + sec->size = 256; + sec->vma = 0; + sec->filepos = core.c_extctx + 584; + } + /* .ldinfo section. To actually find out how long this section is in this particular core dump would require going down the whole list of struct diff --git a/bfd/rs6000-core.c b/bfd/rs6000-core.c index eb096098256..e8efeef5951 100644 --- a/bfd/rs6000-core.c +++ b/bfd/rs6000-core.c @@ -342,7 +342,7 @@ rs6000coff_core_p (bfd *abfd) /* Values from new and old core structures. */ int c_flag; file_ptr c_stack, c_regoff, c_loader; - bfd_size_type c_size, c_regsize, c_lsize; + bfd_size_type c_size, c_regsize, c_lsize, c_extoff; bfd_vma c_stackend; void *c_regptr; int proc64; @@ -370,6 +370,7 @@ rs6000coff_core_p (bfd *abfd) c_stackend = CNEW_STACKORG (core.new_dump) + c_size; c_lsize = CNEW_LSIZE (core.new_dump); c_loader = CNEW_LOADER (core.new_dump); + c_extoff = core.new_dump.c_extctx; #ifndef BFD64 proc64 = CNEW_PROC64 (core.new_dump); } @@ -517,6 +518,19 @@ rs6000coff_core_p (bfd *abfd) c_regsize, (bfd_vma) 0, c_regoff)) goto fail; + if (c_extoff) + { + if (!make_bfd_asection (abfd, ".aix-vmx", + SEC_HAS_CONTENTS, + 560, (bfd_vma) 0, c_extoff)) + goto fail; + + if (!make_bfd_asection (abfd, ".aix-vsx", + SEC_HAS_CONTENTS, + 256, (bfd_vma) 0, c_extoff + 584)) + goto fail; + } + /* .ldinfo section. To actually find out how long this section is in this particular core dump would require going down the whole list of struct ld_info's. -- 2.30.2