|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: Xen PVH domU start-of-day VCPU state
Oh! I think I've found a solution, even though I don't entirely understand the
problem/root cause:
On Tuesday, 26.05.2020 at 12:12, Martin Lucina wrote:
> > On Tue, May 26, 2020 at 11:34:21AM +0200, Roger Pau Monné wrote:
> > Forgot to ask, but can you also add the output of readelf -lW
> > <kernel>?
>
> Elf file type is EXEC (Executable file)
> Entry point 0x1001e0
> There are 7 program headers, starting at offset 64
>
> Program Headers:
> Type Offset VirtAddr PhysAddr FileSiz
> MemSiz Flg Align
> INTERP 0x001000 0x0000000000100000 0x0000000000100000 0x000018
> 0x000018 R 0x8
> [Requesting program interpreter: /nonexistent/solo5/]
> LOAD 0x001000 0x0000000000100000 0x0000000000100000 0x00626c
> 0x00626c R E 0x1000
> LOAD 0x008000 0x0000000000107000 0x0000000000107000 0x007120
> 0x00ed48 RW 0x1000
> NOTE 0x0080ac 0x00000000001070ac 0x00000000001070ac 0x000018
> 0x000018 R 0x4
> NOTE 0x00f120 0x00000000001070c4 0x00000000001070c4 0x000014
> 0x000000 R 0x4
^^^^^^^^
I should have picked up on the above, but thought it wasn't relevant.
> NOTE 0x008088 0x0000000000107088 0x0000000000107088 0x000024
> 0x000024 R 0x4
> NOTE 0x008000 0x0000000000107000 0x0000000000107000 0x000088
> 0x000088 R 0x4
>
> Section to Segment mapping:
> Segment Sections...
> 00 .interp
> 01 .interp .text .rodata .eh_frame
> 02 .note.solo5.manifest .note.solo5.abi .note.solo5.not-openbsd
> .data .bss
And also the missing .note.solo5.xen above.
> 03 .note.solo5.not-openbsd
> 04 .note.solo5.xen
> 05 .note.solo5.abi
> 06 .note.solo5.manifest
Turns out that the .note.solo5.xen section as defined in boot.S was not
marked allocatable, and that was doing <something> that was confusing our
linker script[1] (?).
If I make this simple change:
--- a/bindings/xen/boot.S
+++ b/bindings/xen/boot.S
@@ -32,7 +32,7 @@
#define ENTRY(x) .text; .globl x; .type x,%function; x:
#define END(x) .size x, . - x
-.section .note.solo5.xen
+.section .note.solo5.xen, "a", @note
.align 4
.long 4
then I get the expected output from readelf -lW, and I can get as far as
the C _start() with no issues!
FWIW, here's the diff of readelf -lW before/after:
--- before 2020-05-26 17:36:46.117885855 +0200
+++ after 2020-05-26 17:38:07.090508322 +0200
@@ -8,9 +8,9 @@
INTERP 0x001000 0x0000000000100000 0x0000000000100000 0x000018
0x000018 R 0x8
[Requesting program interpreter: /nonexistent/solo5/]
LOAD 0x001000 0x0000000000100000 0x0000000000100000 0x00615c
0x00615c R E 0x1000
- LOAD 0x008000 0x0000000000107000 0x0000000000107000 0x007120
0x00ed28 RW 0x1000
+ LOAD 0x008000 0x0000000000107000 0x0000000000107000 0x006120
0x00dd28 RW 0x1000
NOTE 0x0080ac 0x00000000001070ac 0x00000000001070ac 0x000018
0x000018 R 0x4
- NOTE 0x00f120 0x00000000001070c4 0x00000000001070c4 0x000014
0x000000 R 0x4
+ NOTE 0x0080c4 0x00000000001070c4 0x00000000001070c4 0x000014
0x000014 R 0x4
NOTE 0x008088 0x0000000000107088 0x0000000000107088 0x000024
0x000024 R 0x4
NOTE 0x008000 0x0000000000107000 0x0000000000107000 0x000088
0x000088 R 0x4
@@ -18,7 +18,7 @@
Segment Sections...
00 .interp
01 .interp .text .rodata .eh_frame
- 02 .note.solo5.manifest .note.solo5.abi .note.solo5.not-openbsd .data
.bss
+ 02 .note.solo5.manifest .note.solo5.abi .note.solo5.not-openbsd
.note.solo5.xen .data .bss
03 .note.solo5.not-openbsd
04 .note.solo5.xen
05 .note.solo5.abi
-mato
[1] https://github.com/mato/solo5/blob/xen/bindings/xen/solo5_xen.lds
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |