From nobody Thu Nov 5 07:32:45 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1793800319; cv=none; d=zohomail.com; s=zohoarc; b=c8it9uWm1HqO2Bb2kICm9O5mqoCTuizn2C68Wj0QTGH9M9ySK+VclCKa2SXnbFF1V3baGD1z235sn+uWQiQm817w7FLlbuDkNs8e3FNjH6cb+KCZxug1waogpdJeUkVolPNZxcLq+aNheTJtUnJPDEHA2zvuKHRdM4vw76hJiyQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1793800319; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OqSioAZzTvnhGM+tiUAbYDv/FOQtdV5dVRzP9neOBc4=; b=iZxq8/s2hqJQqtn33hTu8lw1KpK2VKgZlgKE8vcq9PrJTdtVqXgbBGFhmcp2c8C/d6PVgDRYPa4cVru8GeX5YlLOVZSDxkr9JZW6e/4ZMrxjId+OYbarsli/dpK88hM7+bxSssMmdrTEEU36MT6ZddKQTsqIHAslE1bKDLI1bGg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 17938003191711010.9836339405459; Wed, 4 Nov 2026 05:51:59 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1471921.1680046 (Exim 4.92) (envelope-from ) id 1xObOw-0003VT-MD; Wed, 04 Nov 2026 13:51:42 +0000 Received: by outflank-mailman (output) from mailman id 1471921.1680046; Wed, 04 Nov 2026 13:51:42 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1xObOw-0003VK-Ja; Wed, 04 Nov 2026 13:51:42 +0000 Received: by outflank-mailman (input) for mailman id 1471921; Wed, 04 Nov 2026 13:51:41 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) id 1xObOv-0003UD-Fb for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 13:51:41 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1xObOu-00EfW9-Si for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 14:51:40 +0100 Received: from [10.42.69.2] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6aeb3869-bab6-0a2a0a5309dd-0a2a4502df3e-0 for ; Wed, 04 Nov 2026 14:51:38 +0100 Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com) by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6aeb3869-6ca4-0a2a45020019-d1558035d9c5-3 for ; Wed, 04 Nov 2026 14:51:37 +0100 Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-4a35db1f202so5588575e9.3 for ; Wed, 04 Nov 2026 05:51:37 -0800 (PST) Received: from localhost.localdomain (host-78-146-248-75.as13285.net. [78.146.248.75]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4b4107b7198sm27919235e9.0.2026.11.04.05.51.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Nov 2026 05:51:36 -0800 (PST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1793800297; x=1794405097; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=OqSioAZzTvnhGM+tiUAbYDv/FOQtdV5dVRzP9neOBc4=; b=bhuUbDQytX7y1xM9E0HcOSYH2RFcAQGxG1ugvGsa2pz6W4fbsP59A8PmZy/ppRCpFP akdrckLC+7rxSzh9LwmB9awZEUEY7JbORxzWYEm8M63tQ7NGXy/yXSY7W+GR2r6cO2+r mzBC1lzGWIThFlLUj3U2I+gH4MHhDx9keYKlI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793800297; x=1794405097; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=OqSioAZzTvnhGM+tiUAbYDv/FOQtdV5dVRzP9neOBc4=; b=hNMMDrNJ3Yo2sI4iE3mIYlY/b9mAQd3DheChrZmyAKWpeyALwyBPoSZlPL2sjF6sdn +hBjMzHnIxT0gIEV0X+LaD9q4PJXySrw29VQp+2LhmpQYPdHnzKb1IexeKJ0Z+QqBVns LUCTOlN/hQCAt1TrSpFDjasMw2bFmdl9S/GyIepPYnXI+oxqk/RvXi+oRx92OTEZYv6x zv8ESCNskafS8xiRCLIdjMOGHZXCP0RrC5wm0izU99lIvHkB5p+l7wuTjlQmiR3Dcb+X V4vI9wXAq6Vga0m8fuD45PwD/9cfWFCQG+l8QqbOnyvFw34TwRrloXbM8h2WjBMxJuiL 8GZg== X-Gm-Message-State: APuU4Z9z2MZNq3gaCs6OwLSD6ZMPRQ73+CEtuqCyDbNuNFA4u5tVD1AB 2DaZEZ4zeXGHSZYtLY2pvbBfB2ZW76rdIyCb+jXsMISJrOeNUD41JrnVp8QSvn6/GWc/P3XjyUs b6nbJYNc= X-Gm-Gg: AYBFou1ueQJ31c7skZGgwizJ0hoi2aF0kcLCAabNfhGq8Qt766p+zeaeCqDgx/MHsN5 vp6q2+8CKF/+e4C2yoJLDmq7rLTCnWB8JhW29I13J1bMldOOHJjOEmeB6zhbSsrU+5YC7T5WA3u C8xDO08HF0aVVwzKZz2hwKIP7gGAxn3/tDV2d+mLLGZiwv4StlmI34P1Omeq4onEghg6/tdGhui 0vTvrTCn5rLSqV/n16zx3RnR7FZXbTc9hVFM40IAcS3PLec2CgJZLP+842a3qTm4fGNcG9K5ZHh mIsLRovCTrpR7epM38Y21uBn7qlk33W+ny4r03gbS+5eJlAbWtSrJWm+Grh+aEielULzaTGnkwM AtANSyqs9qSnJb/iflTwxrQ8i7AqMJggqhFRLulMG8BUB4VUwNhlDChU7VecK+zUU7HlpK2956V B8u5jKULAteIXTxX67AVmnX9MtgTBaq2EM0VMAjgfnwLm2URo6lsPqaZQ/Lq6O53OSSlbg66cvu GsD/4IClyYIhptV3GLUtvtTy4pVpQBU5z3MO8rt4sJUAmxTf4TI86o6eXKGLVsdMG/VngVidvFt fmDC+x/EtVq4BYZvnm2arpTzXnAXv/5Ba6+n2k+31lMQIFRuIU8KLuw8D35/vGD9t+igIuwkJVU Ymu4= X-Received: by 2002:a05:600c:c16d:b0:4a1:e00b:a0ea with SMTP id 5b1f17b1804b1-4ac150b204fmr354563865e9.1.1793800297209; Wed, 04 Nov 2026 05:51:37 -0800 (PST) From: Andrew Cooper To: Xen-devel Cc: Andrew Cooper , Ross Lagerwall , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini Subject: [PATCH 1/2] xen/build-id: Introduce is_gnu_build_id() Date: Wed, 4 Nov 2026 13:51:32 +0000 Message-Id: <20261104135133.2209628-2-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20261104135133.2209628-1-andrew.cooper3@citrix.com> References: <20261104135133.2209628-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-720697/1793800297-67EBB2AC-84823A1B/10/78276251493 X-purgate-type: spam X-purgate-size: 3387 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1793800321423158500 Broken out of the subsequent change for legibility reasons. It will be used to replace xen_build_id_check(). Signed-off-by: Andrew Cooper --- CC: Ross Lagerwall CC: Anthony PERARD CC: Michal Orzel CC: Jan Beulich CC: Julien Grall CC: Roger Pau Monn=C3=A9 CC: Stefano Stabellini --- xen/common/version.c | 33 +++++++++++++++++++++++++++++++++ xen/include/xen/elfstructs.h | 2 ++ xen/include/xen/version.h | 2 ++ 3 files changed, 37 insertions(+) diff --git a/xen/common/version.c b/xen/common/version.c index 80e7a9b981cf..7eb8a0221d82 100644 --- a/xen/common/version.c +++ b/xen/common/version.c @@ -114,6 +114,37 @@ void print_version(void) /* Defined in linker script. */ extern const Elf_Note __note_gnu_build_id_start[], __note_gnu_build_id_end= []; =20 +/* + * Check whether @n is a GNU Build ID note. + * + * We check that: + * - type is NT_GNU_BUILD_ID + * - name is GNU\0 + * - desc is non-empty and exactly covering the rest of the buffer + * + * If this returns true, the contents starts at n + NT_GNU_HDR_SIZE. + */ +bool is_gnu_build_id(const Elf_Note *n, unsigned int len) +{ + const char *name; + + if ( len <=3D NT_GNU_HDR_SIZE ) + return false; + + if ( n->type !=3D NT_GNU_BUILD_ID || + n->namesz !=3D 4 ) + return false; + + name =3D ELFNOTE_NAME(n); + if ( strncmp(name, "GNU", 4) !=3D 0 ) + return false; + + if ( len !=3D n->descsz + NT_GNU_HDR_SIZE ) + return false; + + return true; +} + int xen_build_id_check(const Elf_Note *n, unsigned int n_sz, const void **p, unsigned int *len) { @@ -234,6 +265,8 @@ static void __init __maybe_unused build_assertions(void) { BUILD_BUG_ON(sizeof(unsigned long) !=3D sizeof(void (*)(void))); BUILD_BUG_ON(sizeof(void *) !=3D sizeof(void (*)(void))); + + BUILD_BUG_ON(NT_GNU_HDR_SIZE !=3D sizeof(Elf_Note) + 4); } =20 /* diff --git a/xen/include/xen/elfstructs.h b/xen/include/xen/elfstructs.h index 8ee0d5aa5b15..1f0287aeed49 100644 --- a/xen/include/xen/elfstructs.h +++ b/xen/include/xen/elfstructs.h @@ -46,6 +46,8 @@ typedef uint32_t Elf64_Word; typedef int64_t Elf64_Sxword; typedef uint64_t Elf64_Xword; =20 +#define NT_GNU_HDR_SIZE 16 /* sizeof(Elf_note) + "GNU\0" */ + /* Unique build id string format when using --build-id. */ #define NT_GNU_BUILD_ID 3 =20 diff --git a/xen/include/xen/version.h b/xen/include/xen/version.h index b9fa8d70520d..ee857616f9e4 100644 --- a/xen/include/xen/version.h +++ b/xen/include/xen/version.h @@ -2,6 +2,7 @@ #define __XEN_VERSION_H__ =20 #include +#include =20 const char *xen_compile_date(void); const char *xen_compile_time(void); @@ -26,6 +27,7 @@ extern unsigned int xen_build_id_len; /* 0 -> No build id= . */ void xen_build_init(void); int xen_build_id_check(const Elf_Note *n, unsigned int n_sz, const void **p, unsigned int *len); +bool is_gnu_build_id(const Elf_Note *n, unsigned int len); #else static inline void xen_build_init(void) {}; #endif base-commit: 2043d22b7e926f508cc23391b4c75325fa7211e9 --=20 2.39.5 From nobody Thu Nov 5 07:32:45 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1793800327; cv=none; d=zohomail.com; s=zohoarc; b=a2mwFzZomma4Tg/5TJhWBq/tGQD4rckFz95YuWdFcpSiPAkwqko5P2fECxfZZzwODbTaSDl7ifNWP5yEm4FhJ3XK8XRg3b1vodc9ij6CVbw6C0i+mFrD5qNAjbhJuwsaJRZgKXznloZCWoyQQBmOoYMq7A3PGcCp6K9+r9t2kY0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1793800327; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jaSUwdtn0fOJl3oyF97eAOx5DNghLz7v5vcZc9L3meE=; b=QGgiDgQ8LdmxW52JxWOHDgbFxjYQeGPlp4IuMoNF2wGSSptGkCIE9XvnZzh7vYe/nKZeNlLeuKl0qG5LuvWxdbhUYOYkVHW1wLnPunxUtGpCcyQ1Ir9LYUgx5EF9e8zN0FDH0y1HoL7TwU65XlV3F2knqKIviaXVeN2XQUFvNVQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1793800327204694.5109290947602; Wed, 4 Nov 2026 05:52:07 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1471920.1680037 (Exim 4.92) (envelope-from ) id 1xObOu-0003Iz-GV; Wed, 04 Nov 2026 13:51:40 +0000 Received: by outflank-mailman (output) from mailman id 1471920.1680037; Wed, 04 Nov 2026 13:51:40 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1xObOu-0003Is-DX; Wed, 04 Nov 2026 13:51:40 +0000 Received: by outflank-mailman (input) for mailman id 1471920; Wed, 04 Nov 2026 13:51:39 +0000 Received: from mx.expurgate.net ([195.190.135.20]) by lists.xenproject.org with esmtp (Exim 4.92) id 1xObOt-0003Im-8e for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 13:51:39 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1xObOs-000SBp-LW for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 14:51:38 +0100 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6aeb3863-e002-0a2a0a5209dd-0a2a4505bbd4-16 for ; Wed, 04 Nov 2026 14:51:38 +0100 Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6aeb386a-4cb1-0a2a45050019-d1558033a566-3 for ; Wed, 04 Nov 2026 14:51:38 +0100 Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4a9a8d6cea8so7105755e9.1 for ; Wed, 04 Nov 2026 05:51:38 -0800 (PST) Received: from localhost.localdomain (host-78-146-248-75.as13285.net. [78.146.248.75]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4b4107b7198sm27919235e9.0.2026.11.04.05.51.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Nov 2026 05:51:37 -0800 (PST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1793800298; x=1794405098; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=jaSUwdtn0fOJl3oyF97eAOx5DNghLz7v5vcZc9L3meE=; b=KafRJ2o+OZRBcC4wRznev0sFp/98dIyER/L6xsB62ED0c+TsCXRckbmMSGpxyDhiZe Zgo82vcuZjAksOQ4OXde7ye8YPF35Z/rWIqDfIm11jCth6wjsxBFCPFw2YAlUGTY2AFP naEjOgORsTBknT4mSX5ghKyCiiX+ZJYK6Xpus= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793800298; x=1794405098; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=jaSUwdtn0fOJl3oyF97eAOx5DNghLz7v5vcZc9L3meE=; b=vIFIiWdHfqz1EjT+zneFPBmrW8tefQhveEHXQuIz+PO2D6UZ1uYdGEekwR6LDDNWZa VgH0F1dd0i/9c0ng4F0ON0kESdM6T5zkX5ljAdaG37Fu3P+pQiqDt53+o9tlBRDkLRvT ruAsrcACFRBElkauYvHi14RqfDvP7nP05xOoxjroaH9la7qBMbvuJJrGA9LkT9C9G67G lPs2FP3d0kzH1czwLGgM2KUDw20qVVdV728xZqiB/rzoyWCv+t8p6dACMAPYJp7MfPXG tbrIBXVR2bCNPb2cCz04S8QNb/REYTNI12oFZSouFQeReeALCyge+NABCk/1WBeZZJ+d s3XQ== X-Gm-Message-State: APuU4Z+Rygyuf4ljjs9/3dBv5D1jDyKu+ydXpTGmFmh7Jt/JoOfNYX3l ZiqM1GV42dRwVBhhZp7UaYO8sUqKaMTQDgTILq7yi9Dfg0uMw3IqxLtAq7Bm2PpuRipiD0jwie4 c47gzd+8= X-Gm-Gg: AYBFou3ixZd1pAu+0gunTWJgxtcXKoIhRniodsXDzpC9+j503TyJaLcuzlTmThgrpo9 YOWs8teaFMBegQ3phCQ++L3pFPLZ7UbHcZtLVQFiw1Rj7FmB6vabnZfMjHgC7jc1kFyea+j/C6g VpJvtkN7OX8GR53mLhVO1LNZj9VzuEk7ltvAwspysOF93vbZfOYCvVtSZfvD6Z1+VlxPDuRKQ7S V6yiOgQppGjyPOytaxAxuPpNUpwXqYjW0WtffZYcsV0WHOjzVIIsAelYx84HsgjhknIPtxJwj1U Dvq6pIMwgOsVatPTyf/yjzHhSLWgeDEuLcFe9g3NEdjeXTci//+aFBjLLmhi8Cr1jv3tAyl4ZqI k05fk0vkLpE4/teO+vsdrQ5UnRin4dqJ6l7l1v+CoooyQ4KaLkaAJzy8QQZR+rJA0ZX3HHTEyko jZgc9CAcnxVlGeidHrix1GjAYdJ/wRNNL5otJijBSt5oQoxrvUVDcKwiaP7N3EPQqJJu0wMs4lG puJ7ElTUtM3ccpytbTakkCXzgwImFIkv4GvOpHNghP9oWGmTWJ4phT4GVjdeGQWbpIRwzm+wmip YkqziDENoqkfW2Ch8muos2Jq/8mitzDCmw4wGoJjpl6ckpZ4kIUodWsiHh3SlFuaU0FNV/RPLKE MDC4= X-Received: by 2002:a05:600c:3b02:b0:4b4:a551:681a with SMTP id 5b1f17b1804b1-4b4a55168c2mr27758865e9.3.1793800297918; Wed, 04 Nov 2026 05:51:37 -0800 (PST) From: Andrew Cooper To: Xen-devel Cc: Andrew Cooper , Ross Lagerwall , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini Subject: [PATCH 2/2] xen/build-id: Drop xen_build_id_check() Date: Wed, 4 Nov 2026 13:51:33 +0000 Message-Id: <20261104135133.2209628-3-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20261104135133.2209628-1-andrew.cooper3@citrix.com> References: <20261104135133.2209628-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-c201ff/1793800298-734BC2A1-74C92054/10/78276251493 X-purgate-type: spam X-purgate-size: 4984 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1793800329479158500 The function is misnamed; it really is looking for a GNU Build ID note, not= a Xen note as the name suggests. It also has an awkward API to use. For a GNU Build ID, the content is alwa= ys at +16 from the start, so really doesn't need to be returned by pointer, nor is it necessary be doing additional checks on the returned pointers being valid. Switching to is_gnu_build_id() allows xen_build_init() to be simplified, returning after the first successful find rather than passing an rc down the function to skip later checks. No functional change. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich --- CC: Ross Lagerwall CC: Anthony PERARD CC: Michal Orzel CC: Jan Beulich CC: Julien Grall CC: Roger Pau Monn=C3=A9 CC: Stefano Stabellini The 16 probably ought to be a define somewhere, but I see no obvious candidates in the ELF spec. --- xen/common/livepatch.c | 13 +++++-------- xen/common/version.c | 41 +++++++-------------------------------- xen/include/xen/version.h | 2 -- 3 files changed, 12 insertions(+), 44 deletions(-) diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c index 7515a040ad46..9960db589b76 100644 --- a/xen/common/livepatch.c +++ b/xen/common/livepatch.c @@ -453,22 +453,19 @@ static int parse_buildid(const struct livepatch_elf_s= ec *sec, struct livepatch_build_id *id) { const Elf_Note *n; - int rc; + unsigned int len; =20 /* Presence of the sections is ensured by check_special_sections(). */ ASSERT(sec); =20 n =3D sec->addr; + len =3D sec->sec->sh_size; =20 - if ( sec->sec->sh_size <=3D sizeof(*n) ) + if ( !is_gnu_build_id(n, len) ) return -EINVAL; =20 - rc =3D xen_build_id_check(n, sec->sec->sh_size, &id->p, &id->len); - if ( rc ) - return rc; - - if ( !id->len || !id->p ) - return -EINVAL; + id->p =3D n + NT_GNU_HDR_SIZE; + id->len =3D len - NT_GNU_HDR_SIZE; =20 return 0; } diff --git a/xen/common/version.c b/xen/common/version.c index 7eb8a0221d82..63a5261a2279 100644 --- a/xen/common/version.c +++ b/xen/common/version.c @@ -145,36 +145,6 @@ bool is_gnu_build_id(const Elf_Note *n, unsigned int l= en) return true; } =20 -int xen_build_id_check(const Elf_Note *n, unsigned int n_sz, - const void **p, unsigned int *len) -{ - /* Check if we really have a build-id. */ - ASSERT(n_sz > sizeof(*n)); - - if ( NT_GNU_BUILD_ID !=3D n->type ) - return -ENODATA; - - if ( n->namesz + n->descsz < n->namesz ) - return -EINVAL; - - if ( n->namesz < 4 /* GNU\0 */) - return -EINVAL; - - if ( n->namesz + n->descsz > n_sz - sizeof(*n) ) - return -EINVAL; - - /* Sanity check, name should be "GNU" for ld-generated build-id. */ - if ( strncmp(ELFNOTE_NAME(n), "GNU", n->namesz) !=3D 0 ) - return -ENODATA; - - if ( len ) - *len =3D n->descsz; - if ( p ) - *p =3D ELFNOTE_DESC(n); - - return 0; -} - struct pe_external_debug_directory { uint32_t characteristics; @@ -201,7 +171,6 @@ void __init xen_build_init(void) { const Elf_Note *n =3D __note_gnu_build_id_start; unsigned int sz; - int rc; =20 /* --build-id invoked with wrong parameters. */ if ( __note_gnu_build_id_end <=3D &n[0] ) @@ -213,14 +182,18 @@ void __init xen_build_init(void) =20 sz =3D (uintptr_t)__note_gnu_build_id_end - (uintptr_t)n; =20 - rc =3D xen_build_id_check(n, sz, &xen_build_id, &xen_build_id_len); + if ( is_gnu_build_id(n, sz) ) + { + xen_build_id =3D n + NT_GNU_HDR_SIZE; + xen_build_id_len =3D sz - NT_GNU_HDR_SIZE; + return; + } =20 #ifdef CONFIG_X86 /* * xen.efi built with a new enough toolchain will have a CodeView reco= rd, * not an ELF note. */ - if ( rc ) { const struct pe_external_debug_directory *dir =3D (const void *)n; =20 @@ -241,7 +214,7 @@ void __init xen_build_init(void) { xen_build_id =3D info->signature; xen_build_id_len =3D sizeof(info->signature); - rc =3D 0; + return; } } } diff --git a/xen/include/xen/version.h b/xen/include/xen/version.h index ee857616f9e4..6e9a24b7fadf 100644 --- a/xen/include/xen/version.h +++ b/xen/include/xen/version.h @@ -25,8 +25,6 @@ extern unsigned int xen_build_id_len; /* 0 -> No build id= . */ =20 #ifdef BUILD_ID void xen_build_init(void); -int xen_build_id_check(const Elf_Note *n, unsigned int n_sz, - const void **p, unsigned int *len); bool is_gnu_build_id(const Elf_Note *n, unsigned int len); #else static inline void xen_build_init(void) {}; --=20 2.39.5