From: Steffen Eiden <seiden@linux.ibm.com>
To: Janosch Frank <frankja@linux.ibm.com>, qemu-devel@nongnu.org
Cc: marcandre.lureau@redhat.com, pbonzini@redhat.com,
mhartmay@linux.ibm.com, borntraeger@linux.ibm.com,
imbrenda@linux.ibm.com, pasic@linux.ibm.com, cohuck@redhat.com,
thuth@redhat.com, qemu-s390x@nongnu.org, scgl@linux.ibm.com
Subject: Re: [PATCH v5 12/18] dump/dump: Add section string table support
Date: Tue, 30 Aug 2022 13:35:53 +0200 [thread overview]
Message-ID: <67ed362f-2e25-0ee9-baae-5e2a0ac52749@linux.ibm.com> (raw)
In-Reply-To: <20220811121111.9878-13-frankja@linux.ibm.com>
Hi Janosch,
On 8/11/22 14:11, Janosch Frank wrote:
> As sections don't have a type like the notes do we need another way to
> determine their contents. The string table allows us to assign each
> section an identification string which architectures can then use to
> tag their sections with.
>
> There will be no string table if the architecture doesn't add custom
> sections which are introduced in a following patch.
>
> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
> ---
> dump/dump.c | 71 +++++++++++++++++++++++++++++++++++++++++++
> include/sysemu/dump.h | 4 +++
> 2 files changed, 75 insertions(+)
>
> diff --git a/dump/dump.c b/dump/dump.c
> index 31eb20108c..0d6dbf453a 100644
> --- a/dump/dump.c
> +++ b/dump/dump.c
[ snip ]
> }
>
> +static void prepare_elf_section_hdr_string(DumpState *s, void *buff)
> +{
> + Elf32_Shdr shdr32;
> + Elf64_Shdr shdr64;
> + int shdr_size;
> + void *shdr;
> +
> + if (dump_is_64bit(s)) {
> + shdr_size = sizeof(Elf64_Shdr);
> + memset(&shdr64, 0, shdr_size);
> + shdr64.sh_type = SHT_STRTAB;
> + shdr64.sh_offset = s->section_offset + s->elf_section_data_size;
> + shdr64.sh_name = s->string_table_buf->len;
> + g_array_append_vals(s->string_table_buf, ".strtab", sizeof(".strtab"));
I think you mixed up .strtab and .shstrtab here.
'.shstrtab' should be used here.
The ELF specs define bots as follows (from man 5 elf) :
.shstrtab
This section holds section names. This section is of type
SHT_STRTAB. No attribute types are used.
.strtab
This section holds strings, most commonly the strings that
represent the names associated with symbol table entries.
If the file has a loadable segment that includes the
symbol string table, the section's attributes will include
the SHF_ALLOC bit. Otherwise, the bit will be off. This
section is of type SHT_STRTAB.
However, the name lookup works, as you correctly specified that this
section holds the section header names via the 'e_shstrndx' field in the
elf header.
> + shdr64.sh_size = s->string_table_buf->len;
> + shdr = &shdr64;
> + } else {
> + shdr_size = sizeof(Elf32_Shdr);
> + memset(&shdr32, 0, shdr_size);
> + shdr32.sh_type = SHT_STRTAB;
> + shdr32.sh_offset = s->section_offset + s->elf_section_data_size;
> + shdr32.sh_name = s->string_table_buf->len;
> + g_array_append_vals(s->string_table_buf, ".strtab", sizeof(".strtab"));
> + shdr32.sh_size = s->string_table_buf->len;
> + shdr = &shdr32;
> + }
> +
> + memcpy(buff, shdr, shdr_size);
> +
[snip]
Also, with your patches the dump output places the headers in this ordering:
[elf hdr]
[section hdrs]
[program hdrs]
**normally** program hdrs are placed before section hdrs,
but this is just a convention IIRC.
Steffen
next prev parent reply other threads:[~2022-08-30 11:37 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-11 12:10 [PATCH v5 00/18] dump: Add arch section and s390x PV dump Janosch Frank
2022-08-11 12:10 ` [PATCH v5 01/18] dump: Replace opaque DumpState pointer with a typed one Janosch Frank
2022-08-11 16:51 ` Daniel Henrique Barboza
2022-08-16 7:58 ` Marc-André Lureau
2022-08-11 12:10 ` [PATCH v5 02/18] dump: Rename write_elf_loads to write_elf_phdr_loads Janosch Frank
2022-08-11 12:10 ` [PATCH v5 03/18] dump: Refactor dump_iterate and introduce dump_filter_memblock_*() Janosch Frank
2022-08-16 8:12 ` Marc-André Lureau
2022-08-11 12:10 ` [PATCH v5 04/18] dump: Rework get_start_block Janosch Frank
2022-08-29 20:17 ` Janis Schoetterl-Glausch
2022-09-26 14:48 ` Janosch Frank
2022-08-11 12:10 ` [PATCH v5 05/18] dump: Rework filter area variables Janosch Frank
2022-08-16 8:19 ` Marc-André Lureau
2022-08-11 12:10 ` [PATCH v5 06/18] dump: Rework dump_calculate_size function Janosch Frank
2022-09-01 9:24 ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 07/18] dump: Split elf header functions into prepare and write Janosch Frank
2022-08-16 8:26 ` Marc-André Lureau
2022-09-01 9:24 ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 08/18] dump: Rename write_elf*_phdr_note to prepare_elf*_phdr_note Janosch Frank
2022-08-16 8:28 ` Marc-André Lureau
2022-09-01 9:24 ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 09/18] dump: Use a buffer for ELF section data and headers Janosch Frank
2022-08-16 8:43 ` Marc-André Lureau
2022-08-29 20:43 ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 10/18] dump: Reorder struct DumpState Janosch Frank
2022-08-11 12:11 ` [PATCH v5 11/18] dump: Swap segment and section header locations Janosch Frank
2022-08-11 12:11 ` [PATCH v5 12/18] dump/dump: Add section string table support Janosch Frank
2022-08-30 11:35 ` Steffen Eiden [this message]
2022-08-30 14:02 ` Janosch Frank
2022-09-01 9:25 ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 13/18] dump/dump: Add arch section support Janosch Frank
2022-09-01 9:26 ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 14/18] DRAFT: linux header sync Janosch Frank
2022-08-11 12:11 ` [PATCH v5 15/18] s390x: Add protected dump cap Janosch Frank
2022-08-29 11:29 ` Thomas Huth
2022-09-01 9:26 ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 16/18] s390x: Introduce PV query interface Janosch Frank
2022-08-29 11:30 ` Thomas Huth
2022-09-01 9:26 ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 17/18] s390x: Add KVM PV dump interface Janosch Frank
2022-08-23 15:25 ` Steffen Eiden
2022-09-01 9:26 ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 18/18] s390x: pv: Add dump support Janosch Frank
2022-08-11 13:03 ` Janosch Frank
2022-08-23 15:26 ` Steffen Eiden
2022-08-29 11:57 ` Thomas Huth
2022-09-01 9:31 ` Janis Schoetterl-Glausch
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=67ed362f-2e25-0ee9-baae-5e2a0ac52749@linux.ibm.com \
--to=seiden@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=cohuck@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=marcandre.lureau@redhat.com \
--cc=mhartmay@linux.ibm.com \
--cc=pasic@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=scgl@linux.ibm.com \
--cc=thuth@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.