[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2] coverage: place GCOV-generated .text.startup section in init text
- To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@xxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
- From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
- Date: Fri, 29 May 2026 11:41:50 +0100
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NwZmiP5bUbjE+gwp/QJvJyWGRZ9RQ12I/oanFjhqSTc=; b=qArZ5zrZ6c4r+F1arPMaeVqDaXzhXEBTiEai4OszPEtxU0Ay8BqUYeyj8jo57nw6Wjtglw2W+pX/cytcyYAIKE/taOKmDE97sgLIUg7kMVMNBLvuoSmguzDN1LI+Oirlm5BanEHd3OYCNEKskuqvkph0f5aPcvJd1+i0oSMa8nuBxNfyD0TfeDoSnjElqrzG+NSzJTXsc6Xk9TnGbIOgKvjsQnpapWWTGpzgEn8+RLLL9mJ148GUaz+7L7GXO3T6LhrTQBuYuoRkchXNzQpHbn8JtONiAdubQvErhO7to0a/AxndbPA6b5/IcX8JLHXhcBKJ9W1u1Cx7pRSfKtFB9g==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QT1DjAII6QVqmLLo2u9mS/8AlKq4g2BtMBRONXMIDcJKsYYu+QILN55nrZEkZ2OH3x+qd2molkLycZjZE0f9nAUPanQ1o/YrjSj2uPb2L9tPq7qvAaxaZsgWck5xhEF0cZt/tzVIuvjMEPuwSeiXESrxbh/Wbkwn3DzqFCrecXn5tfWvCKknfTpgLshjXFfk4Nim7OtKTBRCARYgDD476G8Iy45uGgEIkj/5rdKe0wdfVuMD/VFv5zGUpdfOPWRQW69gIpb811hwVo7dfYbu169qHBhHCn7GlgUez+S/DxIwLWkMT/RXLF45GygNgS66SN0mNehjEtyh5T0IqP2C/A==
- Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
- Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
- Autocrypt: addr=andrew.cooper3@xxxxxxxxxx; keydata= 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 6+ahAA==
- Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Timothy Pearson <tpearson@xxxxxxxxxxxxxxxxxxxxx>, Alistair Francis <alistair.francis@xxxxxxx>, Connor Davis <connojdavis@xxxxxxxxx>, Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>
- Delivery-date: Fri, 29 May 2026 10:42:22 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
On 29/05/2026 9:53 am, Dmytro Prokopchuk1 wrote:
> GCOV instrumentation can emit executable input sections such as
> .text.startup when CONFIG_COVERAGE is enabled.
>
> At present the x86 already places .text.startup in .init.text,
> but Arm, RISC-V and PPC do not. With CONFIG_COVERAGE=y .text.startup
> can therefore be treated as a linker orphan on those architectures.
>
> Constructors generated by coverage instrumentation can then point
> at code outside the normal RX text mapping, leading to early boot
> crashes from init_constructors():
>
> (XEN) [ 12.331193] Instruction Abort Trap. Syndrome=0xf
> (XEN) [ 12.334253] Walking Hypervisor VA 0xa00003ce000 on CPU0 via TTBR
> 0x000000004352d000
> (XEN) [ 12.338550] 0TH[0x014] = 0x4352cf7f
> (XEN) [ 12.341823] 1ST[0x000] = 0x4352bf7f
> (XEN) [ 12.345124] 2ND[0x001] = 0x40000043527f7f
> (XEN) [ 12.347329] 3RD[0x1ce] = 0x400000433cef7f
> (XEN) [ 12.351233] CPU0: Unexpected Trap: Instruction Abort
> (XEN) [ 12.357643] ----[ Xen-4.21.1 arm64 debug=n gcov=y Not tainted
> ]----
> (XEN) [ 12.360243] CPU: 0
> (XEN) [ 12.364098] PC: 00000a00003ce000 00000a00003ce000
> (XEN) [ 12.375835] LR: 00000a00004802f8
> (XEN) [ 12.378273] SP: 00000a00004c7e10
> (XEN) [ 12.380492] CPSR: 0000000080000249 MODE:64-bit EL2h
> (Hypervisor, handler)
> (XEN) [ 12.382785] X0: 00000a00003ce000 X1: 0000000000000000 X2:
> 00000a0000410fa0
> (XEN) [ 12.385176] X3: 0000000000000000 X4: 0000000000000010 X5:
> 0000000000000001
> (XEN) [ 12.387555] X6: 00000a00004e5f40 X7: 00000a00004e5f38 X8:
> 0000000000000000
> (XEN) [ 12.390027] X9: 00000a00004e5f20 X10: 00000a00004e5f30 X11:
> 00000a00004e5f40
> (XEN) [ 12.392510] X12: 00000a0000439748 X13: 00000a0000406938 X14:
> 000000000000062e
> (XEN) [ 12.394954] X15: 00000a00004f3918 X16: 00000a00004c7bb5 X17:
> 00000000004c7bb5
> (XEN) [ 12.397293] X18: 0000000000000030 X19: 000000000000001d X20:
> 00000000000000a9
> (XEN) [ 12.399803] X21: 00000a00004c8008 X22: 00000a00003fa000 X23:
> 00000a00004e2000
> (XEN) [ 12.402392] X24: 00000a00003f9390 X25: 00000a00003fa000 X26:
> 00000a00003f4ca8
> (XEN) [ 12.404798] X27: 0000000000000002 X28: 00000a000057a9c0 FP:
> 00000000bedb6740
> (XEN) [ 12.407110]
> (XEN) [ 12.409442] VTCR_EL2: 0000000080023558
> (XEN) [ 12.411291] VTTBR_EL2: 00000000bffc4000
> (XEN) [ 12.412895]
> (XEN) [ 12.414204] SCTLR_EL2: 0000000030cd183d
> (XEN) [ 12.415928] HCR_EL2: 0000000000000039
> (XEN) [ 12.417642] TTBR0_EL2: 000000004352d000
> (XEN) [ 12.419152]
> (XEN) [ 12.420327] ESR_EL2: 000000008600000f
> (XEN) [ 12.422056] HPFAR_EL2: 0000000000000000
> (XEN) [ 12.423809] FAR_EL2: 00000a00003ce000
> ...
> (XEN) [ 12.485355] Xen call trace:
> (XEN) [ 12.489080] [<00000a00003ce000>] 00000a00003ce000 (PC)
> (XEN) [ 12.512076] [<00000a00004802f8>] init_constructors+0x38/0x50
> (LR)
>
> Observed failing symbol:
> _sub_I_00100_0
> called from:
> init_constructors()
> The issue can be diagnosed by enabling linker orphan diagnostics or
> generating a linker map:
> LDFLAGS += "--orphan-handling=warn"
> LDFLAGS += "-Map=xen.map"
> and then inspecting orphaned executable sections such as:
> .text.startup
>
> Place .text.startup in .init.text on the non-x86 linker scripts,
> matching the existing x86 behavior.
>
> Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@xxxxxxxx>
> ---
> Changes in v2:
> - do not add *(.text.*) when CONFIG_COVERAGE is enables
> - copy the existing x86 linker script behavior to the non-x86 linker scripts
> (put .text.startup into .init.text on Arm, RISC-V and PPC)
> - update commit subject and message accordingly
>
> Link to v1:
> https://patchew.org/Xen/cb8c1e0862a554f7a28347f549e9cfd0b0d6db2f.1779829545.git.dmytro._5Fprokopchuk1@xxxxxxxx/
What about my feedback to v1 which showed that .text.startup
specifically is buggy in x86, and provided a suggestion of what to do
about it?
~Andrew
|