[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 2/2] xen: update CONFIG_DEBUG_INFO help text



On 07.03.23 16:14, Jan Beulich wrote:
On 07.03.2023 16:02, Juergen Gross wrote:
On 07.03.23 15:34, Jan Beulich wrote:
On 07.03.2023 15:23, Juergen Gross wrote:
On 07.03.23 15:18, Jan Beulich wrote:
On 07.03.2023 15:04, Juergen Gross wrote:
On 07.03.23 11:41, Jan Beulich wrote:
On 07.03.2023 07:32, Juergen Gross wrote:
--- a/xen/Kconfig.debug
+++ b/xen/Kconfig.debug
@@ -15,8 +15,11 @@ config DEBUG_INFO
        bool "Compile Xen with debug info"
        default DEBUG
        ---help---
-         If you say Y here the resulting Xen will include debugging info
-         resulting in a larger binary image.
+         Say Y here if you want to build Xen with debug information. This
+         information is needed e.g. for doing crash dump analysis of the
+         hypervisor via the "crash" tool.
+         Saying Y will increase the size of xen-syms and the built EFI
+         binary.

Largely fine with me, just one question: Why do you mention xen-syms by
name, but then verbally describe xen.efi? And since, unlike for xen-syms,

For xen-syms I couldn't find an easily understandable wording. I'd be fine
with just saying "xen.efi".

this affects the installed binary actually used for booting (which may
be placed on a space constrained partition), it may be prudent to
mention INSTALL_EFI_STRIP here (as a way to reduce the binary size of
what ends up on the EFI partition, even if that wouldn't affect the
"normal" way of putting the binary on the EFI partition - people would
still need to take care of that in their distros).

What about adding a related Kconfig option instead?

How would a Kconfig option possibly affect this? You want debug info
in the xen.efi in its standard install location (outside of the EFI
partition); or else if you don't want it there why would you want it
in xen-syms? It is the step of populating the EFI partition from the
standard install location where some equivalent of INSTALL_EFI_STRIP
would come into play. That step is done outside of Xen's build
system and hence outside of any Kconfig control.

We have 2 binaries for the non-EFI hypervisor (xen-syms and xen[.gz]).
Why can't we have the same for EFI? E.g. xen-syms.efi and xen.efi.
The former would have the debug-info, the latter could be installed
into the EFI partition.

I view the two-binaries model of the non-EFI case as merely an
implementation detail;

The ability to do crash dump analysis is more than an implementation
detail IMHO. It is a feature and as such the availability of xen-syms
should be seen as an interface which functionality should be kept.

That you're looking the opposite way at things: The oddity is that we
can't use xen-syms directly for booting (which is also why it has this
specific name; otherwise "xen" would be what the linker produces).

it just so happens that there's little point
in mkelf32 retaining debug info. I therefore don't view it as very
reasonable to artificially introduce yet another binary.

In case there is no other way to enable hypervisor crash dump analysis
I don't see this as an unreasonable approach.

It should be verified that this approach is really enabling the crash
dump analysis of a crash dump from a xen.efi booted system, of course.

Right. First question would be whether they manage to consume Dwarf
debug info from a PE/COFF executable. Possibly the way to go is to
separate Dwarf data out of xen.efi into an ELF "container"; I have no
idea whether objcopy could be used for something like that.

I tried:

> objcopy --remove-section=.text --remove-section=.rodata --remove-section=.init.* --remove-section=.data --remove-section=.data.* --remove-section=.bss --output-target=elf64-x86-64 xen.efi xen-debug

and the result was:

> objdump -h xen-debug

xen-debug:     file format elf64-x86-64

Sections:
Idx Name          Size      VMA               LMA               File off  Algn
  0 .buildid      00000035  ffff82d040486fb8  ffff82d040486fb8  00000fb8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  1 .init         000a2340  ffff82d040600000  ffff82d040600000  00001000  2**2
                  CONTENTS, ALLOC, LOAD, CODE
  2 .reloc        00001658  ffff82d04094d5a0  ffff82d04094d5a0  000a35a0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  3 .debug_abbrev 00091f6b  ffff82d04094ebf8  ffff82d04094ebf8  000a4bf8  2**0
                  CONTENTS, READONLY, DEBUGGING, OCTETS
  4 .debug_info   00fd7af4  ffff82d0409e0b63  ffff82d0409e0b63  00136b63  2**0
                  CONTENTS, READONLY, DEBUGGING, OCTETS
  5 .debug_str    00843395  ffff82d0419b8657  ffff82d0419b8657  0110e657  2**0
                  CONTENTS, READONLY, DEBUGGING, OCTETS
  6 .debug_line   0011dba5  ffff82d0421fb9ec  ffff82d0421fb9ec  019519ec  2**0
                  CONTENTS, READONLY, DEBUGGING, OCTETS
  7 .debug_frame  0003fd7c  ffff82d042319594  ffff82d042319594  01a6f591  2**0
                  CONTENTS, READONLY, DEBUGGING, OCTETS
  8 .debug_loc    0047fcfd  ffff82d042359310  ffff82d042359310  01aaf30d  2**0
                  CONTENTS, READONLY, DEBUGGING, OCTETS
  9 .debug_ranges 000d2650  ffff82d0427d9010  ffff82d0427d9010  01f2f00a  2**0
                  CONTENTS, READONLY, DEBUGGING, OCTETS
 10 .debug_aranges 00015bd0  ffff82d0428ab660  ffff82d0428ab660  0200165a  2**0
                  CONTENTS, READONLY, DEBUGGING, OCTETS

This seems to be a reasonable output. Whether crash is happy with that file is
another question, of course.


Juergen

Attachment: OpenPGP_0xB0DE9DD628BF132F.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.