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

Re: [PATCH v2] Eclair: scan the last xen-syms linking pass on Arm


  • To: Nicola Vetrini <nicola.vetrini@xxxxxxxxxxx>
  • From: Dmytro Prokopchuk1 <dmytro_prokopchuk1@xxxxxxxx>
  • Date: Mon, 12 Oct 2026 20:23:11 +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=md+Lhsj9yCG295s24srLu2uJb8GGrTGsiItMkltFnns=; b=Am6/+ycH4vcsTBVUti7HDvfsj3E8QoBdW4GC9lBGIsaBytBhBDibutYoEBRnwo79fIx5piL0Ve8k4+hAgiUfrBGvyz8xFytuDyeIcbjsskTab5f/IYNcy/GuXzdjNOIPetNpzdq+u8jn0jtKclRyOwvqdRw1Pcgwag/3cOHzlcGf96u+C64BHBSkV3PldHoHVnn5nd2k1BeUFaIFvFBo1pVAbA8zwjIT1Xkf7FSmSwDpCSQkJhkELpblyhNqD+LvdCtOLCutWHUviJgkoqyJZsfSa3H040myvdLStGgks2Blf92rmufjwBdhZxSdfPHRGfw5FB1SM0gIEPjfKKG7kw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YG4JMSfH/bnvpfs2WoTd/5WOZiXwK/RBc1KaDQG6zz+VMtRpN4UoGiuuyqKbI1mEEKW/jaLg0/XUQte2C/ZViXRbbrO2IKEecvLWjaMOvVFJHaXNFEN+KVeZec+lTquTPbFhqOY2UhkLkLUgjHw5fRfNMcN+oyVcheDLam/QxOF+IG1jdW+D61NkisvHTjrlhn4bGFjJJb+Pe1biekwLSZ6NOWGTmnVG1ahWjq4xvo/BGDgrzPg7xjS5hSLHgrFsmYY6Hz8F9KYgPBXhHVY+nNhRzal1qN+hVYwtwWu7/tewaH81uP4gcZF/iOIYXMS1BLROX6J/l1jvV780uGzKNw==
  • 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: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com;
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Doug Goldstein <cardoe@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>
  • Delivery-date: Mon, 12 Oct 2026 20:23:19 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHdVn8C9qte4lKYxEOXexEb5NUBWrbyYIQAgAgBfQA=
  • Thread-topic: [PATCH v2] Eclair: scan the last xen-syms linking pass on Arm


On 10/7/26 21:07, Nicola Vetrini wrote:
> On 2026-10-07 19:12, Dmytro Prokopchuk1 wrote:
>> The hide pattern .xen-syms.[013] leaves pass 2 visible. On x86
>> LAST_LINKING_PASS is 2, so that is the final link. On Arm
>> LAST_LINKING_PASS is 3 and the final image is .xen-syms.3. Pass 2 is
>> usually only a symlink, so Eclair saw no program link and reported every
>> translation unit as unreachable.
>>
>> Before the analysis build, read LAST_LINKING_PASS from the architecture
>> makefile and the pass numbers from the foreach list in
>> xen/scripts/Makefile.link. Hide every pass except that one. An earlier
>> pass that is a real link stays hidden.
>>
>> Fixes: a401b5c9dc35 ("Eclair: re-enable scanning of the (almost) final 
>> linking step")
>> Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@xxxxxxxx>
>> ---
>> Current patch isn't tested, sent just for review (if this accepted, 
>> I'll run pipeline).
>>
>> Changes in v2:
>> - update commit message
>> - generate hide pattern before analysis
>> - read LAST_LINKING_PASS from the arch Makefile and pass numbers from 
>> the Makefile.link
>>
>> Link to v1:
>> https://eur01.safelinks.protection.outlook.com/? 
>> url=https%3A%2F%2Fpatchew.org%2FXen%2F2f67ef7c4593d3ab94b75b5b819e7e046e055796.1791293680.git.dmytro._5Fprokopchuk1%40epam.com%2F&data=05%7C02%7Cdmytro_prokopchuk1%40epam.com%7C9b0501101af94002015708df249de48f%7Cb41b72d04e9f4c268a69f949f367c91d%7C1%7C0%7C639269932708373791%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=ghw9lA2FpRo3fV7P8HBslmCEbSJB29AvKTHdgWZfr6w%3D&reserved=0
>> ---
>>  .../eclair_analysis/ECLAIR/analysis.ecl       |  2 +-
>>  automation/eclair_analysis/ECLAIR/analyze.sh  |  3 +++
>>  .../ECLAIR/generate-xen-syms-passes.sh        | 20 +++++++++++++++++++
>>  3 files changed, 24 insertions(+), 1 deletion(-)
>>  create mode 100755 automation/eclair_analysis/ECLAIR/generate-xen- 
>> syms-passes.sh
>>
>> diff --git a/automation/eclair_analysis/ECLAIR/analysis.ecl b/ 
>> automation/eclair_analysis/ECLAIR/analysis.ecl
>> index c6e1a7a95d..df1006bcaa 100644
>> --- a/automation/eclair_analysis/ECLAIR/analysis.ecl
>> +++ b/automation/eclair_analysis/ECLAIR/analysis.ecl
>> @@ -37,7 +37,7 @@ their Standard Library equivalents."
>>  -doc_begin="Do not analyze intermediate linking artifacts, as they do 
>> not differ from their final
>>  counterparts for the purposes of MISRA C static analysis."
>>  -file_tag+={xen_efi_tmp, "^xen/\\.xen\\.efi\\.([01]|alt\\..*)$"}
>> --file_tag+={xen_syms_tmp, "^xen/\\.xen-syms\\.[013]$"}
>> +-eval_file=xen_syms_passes.ecl
>>  -frames+={hide, "kind(program)&&target(xen_syms_tmp||xen_efi_tmp)"}
>>  -doc_end
>>
> 
>> diff --git a/automation/eclair_analysis/ECLAIR/analyze.sh b/ 
>> automation/eclair_analysis/ECLAIR/analyze.sh
>> index 2356fc4007..ef59e87212 100755
>> --- a/automation/eclair_analysis/ECLAIR/analyze.sh
>> +++ b/automation/eclair_analysis/ECLAIR/analyze.sh
>> @@ -78,6 +78,9 @@ export ECLAIR_PROJECT_NAME="XEN_${VARIANT}-${SET}"
>>  rm -rf "${ECLAIR_OUTPUT_DIR:?}/*"
>>  mkdir -p "${ECLAIR_DATA_DIR}"
>>
>> +# Generate hide pattern.
>> +"${SCRIPT_DIR}/generate-xen-syms-passes.sh"
>> +
> 
> I would prefer it integrated in [1] instead, running in prepare.sh. At 
> least we keep these calls to ECL generation scripts together.

Ack. I'll prepare v3.

> 
> [1] https://eur01.safelinks.protection.outlook.com/? 
> url=https%3A%2F%2Fgitlab.com%2Fxen-project%2Fhardware%2Fxen%2F- 
> %2Fblob%2Fstaging%2Fautomation%2Feclair_analysis%2FECLAIR%2Fgenerate_ecl.sh%3Fref_type%3Dheads&data=05%7C02%7Cdmytro_prokopchuk1%40epam.com%7C9b0501101af94002015708df249de48f%7Cb41b72d04e9f4c268a69f949f367c91d%7C1%7C0%7C639269932708403274%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=roZoL%2BoiphL9a0hJhOWE9%2Fr3LSrYpf%2BOOgZRbvZ9HN0%3D&reserved=0
> 
>>  # Perform the build (from scratch) in an ECLAIR environment.
>>  "${ECLAIR_BIN_DIR}eclair_env" \
>>      "-config_file='${SCRIPT_DIR}/analysis.ecl'" \
>> diff --git a/automation/eclair_analysis/ECLAIR/generate-xen-syms- 
>> passes.sh b/automation/eclair_analysis/ECLAIR/generate-xen-syms-passes.sh
>> new file mode 100755
>> index 0000000000..e3795e8234
>> --- /dev/null
>> +++ b/automation/eclair_analysis/ECLAIR/generate-xen-syms-passes.sh
>> @@ -0,0 +1,20 @@
>> +#!/bin/bash
>> +
>> +# Hide every xen-syms linking pass except LAST_LINKING_PASS.
>> +# The pass list is the foreach in xen/scripts/Makefile.link.
>> +
>> +set -e
>> +
>> +cd "$(dirname "$0")"
>> +arch=$(echo "${XEN_TARGET_ARCH}" | sed -e 's/x86.*/x86/' -e 's/arm.*/ 
>> arm/')
>> +last=$(sed -n 's/^LAST_LINKING_PASS *:= *\([0-9]\).*/\1/p' \
>> +    "../../../xen/arch/${arch}/Makefile" | head -n 1)
>> +passes=$(sed -n 's/.*foreach n,\([0-9 ]*\).*/\1/p' \
>> +    ../../../xen/scripts/Makefile.link | head -n 1)
>> +test -n "${last}"
>> +test -n "${passes}"
>> +hidden=$(printf '%s' "${passes}" | tr -d " ${last}")
>> +
>> +printf '%s\n' \
>> +    "-file_tag+={xen_syms_tmp, \"^xen/\\\\.xen-syms\\\\.[${hidden}]\$ 
>> \"}" \
>> +    >xen_syms_passes.ecl
> 


BR, Dmytro.

 


Rackspace

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