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

Re: [PATCH] coverage: place GCOV-generated .text.* sections in Xen text


  • To: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • From: Dmytro Prokopchuk1 <dmytro_prokopchuk1@xxxxxxxx>
  • Date: Thu, 28 May 2026 12:20:54 +0000
  • Accept-language: en-US, uk-UA, ru-RU
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.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=Yn6cD4B+vWQMSyZe+Xb1pwRiw24ZIq/CbRgerj+mVQc=; b=UHUtFd/5OtIbi9t2LcfFkWh4iZhiNZZcYe9n+9M1y6vsoupD8GPhqZ+rynvaJmLjlAZ/16AtsVuOrLBpW8gIuxRfMdVcQLnIGCTcNYpk88r3Qz1Cc+lMTvazR2Zs1ZnrOd+Jj88l8ArF5Md/bmQ/xtiNdMzS4RQAp5470nt6Uv+pP1N16zRxpbTCnANQSAi8TczG+HwvSTVedNmHgdVu5yUBuwGI4bbsKHWFAej6V9b3VPOU++J0TAhEGBFQwuC2QkgZvM5b4JiDFP80u1ccfViro0YklHRgmwf7G9o/89vytUi2Ay5eLuIj9tOFDk7mIneWJyAYAWMrY01gJqLsvQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=P85UiEpS7WutJa6Oo2Ezl/W2XuqIT+V57+lvXzspiqgg3L0ig7lE6tLduw/UxuyOZ7AZ5M2MSyC2qRTI0W2JNtWFqaSHDLTVnTK8ILdhbsRRXU96xfA1UBlLDu5PFwXjbUtC1Qpef9Z7544+VlHQRVdL38mgrP0DOn2hWLtJTO46+bQ6vtIDD/ixCxikoh4cAxrkDZvIiaDB2o9V6Izl2oP4q0wUH1X+iPxP7vONt+8koMKcFKu95WXOs2FS17WakBTQkQ6svK284JLHQx0x5n3dTG/dcOnoIHnPsz43ewIQEIFLh05S8XieEEGz+ZH60uZpMoSGXUBZpha2354fzw==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=epam.com;
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, 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>, Jan Beulich <jbeulich@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Teddy Astie <teddy.astie@xxxxxxxxxx>
  • Delivery-date: Thu, 28 May 2026 12:21:08 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHc7VOxa7dJ7uwiTkiCFpTyz2B8prYh27QAgAGCf4A=
  • Thread-topic: [PATCH] coverage: place GCOV-generated .text.* sections in Xen text


On 5/27/26 16:17, Roger Pau Monné wrote:
> On Tue, May 26, 2026 at 09:07:42PM +0000, Dmytro Prokopchuk1 wrote:
>> GCOV instrumentation can emit executable input sections such as
>> .text.startup and .text.exit when CONFIG_COVERAGE is enabled.
>> At present the Xen linker scripts only collect .text.* into the
>> main text output section when CONFIG_CC_SPLIT_SECTIONS is enabled.
>>
>> With CONFIG_COVERAGE=y and CONFIG_CC_SPLIT_SECTIONS=n, these executable
>> sections may be placed as linker orphans outside the expected Xen text
>> region. 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
> 
> The x86 linker script does account for .text.startup in the .init
> section:
> 
>    DECL_SECTION(.init.text) {
> #endif
>         _sinittext = .;
>         *(.init.text)
>         *(.text.startup)
>         _einittext = .;
> 
> I think you just need to copy this to the arches that don't have it?
> 
> Thanks, Roger.
Hello Roger,

Yes, probably it could be done in this way.
I can prepare V2 and update the commit message.

Thanks,
Dmytro.

 


Rackspace

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