From patchwork Thu May 7 19:43:59 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 134655 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5B9084BA2E12 for ; Thu, 7 May 2026 19:50:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5B9084BA2E12 X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from simark.ca (simark.ca [158.69.221.121]) by sourceware.org (Postfix) with ESMTPS id 7EB824BA2E38 for ; Thu, 7 May 2026 19:46:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7EB824BA2E38 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=efficios.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7EB824BA2E38 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=158.69.221.121 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1778183180; cv=none; b=YFlIAvll4PDWaWY4d8VGhdSLKiBwq2DrJ5sV06xDKTb/ylVi4oYjudsCZjvu0qa3HyRA+qkrzoj8dWfQKfmxUHGF7z9pb4jGxujwwgGzluFY+WnJmgyVh10W1vS2EaW0tLEyjt/Tr1QVrpUxEYGRj7N8FUfILj9nRwILIDPIYtA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1778183180; c=relaxed/simple; bh=oeRQMG7XS90EOq6raNAwo9PHGUQ9o9PqVGUcK4MyvUs=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=eiZSyoYhwPG2WFl8sBYgPv427ZkR8Hh8w9za2FSy8Jcb6P9CduXkIxU66hvL+TW/cKVoVM0pDWpFXH+YyTjJR0kip/xJv+Y31iHlLf+E35tWE835pevs4b6eNPGgNvSYixRh+fEndWlPn2Q3mIdac2wsy+5/nzbAOJ0mUm1p010= ARC-Authentication-Results: i=1; sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7EB824BA2E38 Received: by simark.ca (Postfix) id F1AD81E0CA; Thu, 07 May 2026 15:46:18 -0400 (EDT) From: Simon Marchi To: binutils@sourceware.org Cc: Luis Machado , Lancelot Six , Simon Marchi Subject: [PATCH v2 3/4] readelf: Add support for AMDGPU code object V6 Date: Thu, 7 May 2026 15:43:59 -0400 Message-ID: <20260507194615.943267-4-simon.marchi@efficios.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260507194615.943267-1-simon.marchi@efficios.com> References: <20251031175411.1303161-1-luis.machado@amd.com> <20260507194615.943267-1-simon.marchi@efficios.com> MIME-Version: 1.0 X-Spam-Status: No, score=-1165.8 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_NONE, KAM_DMARC_STATUS, LOCAL_AUTHENTICATION_FAIL_DMARC, LOCAL_AUTHENTICATION_FAIL_SPF, SPF_HELO_PASS, SPF_SOFTFAIL, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org From: Lancelot Six AMDGPU code object V6 adds the EF_AMDGPU_GENERIC_VERSION_V field. Decode it when decoding the e_flags value for amdgpu. The output for such generic GFX targets will look like: $ readelf -h gpu.elf ELF Header: ... Flags: 0x1000151, gfx9-generic, xnack any, generic v1 ---------- ... ... indicating that this ELF has the "generic code object v1" flag. Change-Id: I0cb8014fc23150e16f43ab98adb3832ede253c88 Co-Authored-By: Simon Marchi --- binutils/readelf.c | 14 ++++++++++++++ include/elf/amdgpu.h | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/binutils/readelf.c b/binutils/readelf.c index 8b565f085e5a..44fae500859c 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -5405,6 +5405,20 @@ decode_AMDGPU_machine_flags (char *out, unsigned int e_flags, Filedata *filedata } e_flags &= ~EF_AMDGPU_FEATURE_SRAMECC_V4; + + /* Extensions for HSA v6+. */ + if (abiversion >= ELFABIVERSION_AMDGPU_HSA_V6) + { + unsigned int generic_v; + + generic_v = ((e_flags & EF_AMDGPU_GENERIC_VERSION_V) + >> EF_AMDGPU_GENERIC_VERSION_V_SHIFT); + + if (generic_v > 0) + out += sprintf (out, _(", generic v%u"), generic_v); + + e_flags &= ~EF_AMDGPU_GENERIC_VERSION_V; + } } if (e_flags != 0) diff --git a/include/elf/amdgpu.h b/include/elf/amdgpu.h index 747a15c417d1..c0bd74edfa01 100644 --- a/include/elf/amdgpu.h +++ b/include/elf/amdgpu.h @@ -29,6 +29,7 @@ #define ELFABIVERSION_AMDGPU_HSA_V3 1 #define ELFABIVERSION_AMDGPU_HSA_V4 2 #define ELFABIVERSION_AMDGPU_HSA_V5 3 +#define ELFABIVERSION_AMDGPU_HSA_V6 4 /* Processor selection mask for EF_AMDGPU_MACH_* values. */ @@ -107,6 +108,11 @@ #define EF_AMDGPU_FEATURE_SRAMECC_OFF_V4 0x800 #define EF_AMDGPU_FEATURE_SRAMECC_ON_V4 0xc00 +/* Code object v6 machine flags. */ + +#define EF_AMDGPU_GENERIC_VERSION_V 0xff000000 +#define EF_AMDGPU_GENERIC_VERSION_V_SHIFT 24 + /* Notes. */ #define NT_AMDGPU_METADATA 32