From patchwork Mon Apr 7 13:54:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 109976 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A0588384A476 for ; Mon, 7 Apr 2025 13:56:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A0588384A476 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=suse.com header.i=@suse.com header.a=rsa-sha256 header.s=google header.b=f+0hP+HE X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by sourceware.org (Postfix) with ESMTPS id C93923857002 for ; Mon, 7 Apr 2025 13:54:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C93923857002 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C93923857002 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::42a ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1744034065; cv=none; b=f6gxim+1B4mR14cu3G0dsrbhVGls1acIa8j4xTumtYyjrrx2BCptpHRRREvZXC5a5Ixx4/28Ye0QizixPEyTgcA4n2z5P6/hrtftheEzJssi8sORBYdd85fFGii2/Z97cEhqdWpXOHRIo64b9bRYU7ELSsFup/4SYSI6nAgIb0k= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1744034065; c=relaxed/simple; bh=hMRWOoRNTD/qKEb5AVZuskre+UiXxIFvOqb73nXK99w=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:From:To; b=E2Okn8US6RjmLVFKbSN6YJx/m5Bqw7d4IjMTg2xiY+FygE3nfuq3kaal0ONePc+FriIM9M36U/HfRCn5kU+uCVa8WSuWL4vFejeorth3Bos0hahiJCAH2RhWBtfORSzIDj5WYcrzCYTHXEblpAdBup0B7AalhduiVpX23oBLqaI= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C93923857002 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-39c1ef4acf2so2581156f8f.0 for ; Mon, 07 Apr 2025 06:54:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1744034063; x=1744638863; darn=sourceware.org; h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language :references:to:from:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=1JXK7BDRHAN9sGuROvbEyS9RW5stmzeNFj0Qdd27Cjw=; b=f+0hP+HE55f9Fn5Fs83ar8dmKcYzcclUxGsdpl5AGogJIv6mzpFNDGfH5siAGzqs4y TqLaUQn9OY7IpbQ2aHuALnGzixPxyJ4sVpB+vsghpFm9yeiv+UQDSEqWFZnTvt5p2NOA 6P29rU7d6+lV5I7kUZGKm521SBEcXDKKYZLa60nHOoOAf/L0BLN6oSJKMsXoIsVvu4DT hrQmuDJjHZucIO1uWZs+TG6vXZb4csl3fzz2syfx68VqHSJhWlxElb+VY9YYNWzlHKfo QTyRfW3qiEBGow2iby39dGHnCSeJq+RkRHEX5luju1jIvZh0cdy54TLVoP+cDuj6YMmS Ns6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744034063; x=1744638863; h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language :references:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=1JXK7BDRHAN9sGuROvbEyS9RW5stmzeNFj0Qdd27Cjw=; b=bx6cxQHi6En++5HyToPmL1xzIERODmwEbzRbwEl3FmP9xN9DndDdP5L7l3YuW6s830 41faWlVrojB1ZLxSxuxAYY3DjyBxTeoU57C66kCAlf6T3o58WMvqZuUGTurCNT/Cb5z5 f4MQCiNo5aWur/n704W24vxXSrb47StqW2UpXNcWkOuFAFEeG3zjt3ygimWZ4FGIHFCG n/fOi2GzMKqb7SXrKIgHns+IBzCudFUzEm2M1atkW1JFZZN1R8Th9Fq51c5rWhXrN/FP w1Jt3xldUs5kWpxSaPDSdx+RNvQPy8sM1iRsWbO9B9oR6IAPv9NihhGpq7ZqP+2nAESs K5tw== X-Gm-Message-State: AOJu0Yxo++EpM8Im7c3OCL4qv1z8ifWeuHm59Mm45yy+5ilTr9ePQNR+ VJOtN+OCVX23T7aNS25Bb48bhNG3YFfCpRjZRs9MJ7//6j7/ulSqDCfoihGUbHp3/Eh2hDb8rDQ = X-Gm-Gg: ASbGnctt2rkw/AYJX/rXixw3GF5E4RbIscouV159bHwG8hoXxmBP1hmz+6rJ6fDz2do /eHO6sEuvIvQB4TYNG8HzXtqx8oP79QPqoqTYZeZjmZY5yKiaG08gdNDEajb9MAYLvCX4PIlrx2 uhLxTBWUdfatf+I3TK2/TtGwA6+bxlZ56Gn0UTvN3mSYKI+WrwUOp1Uyudr1lwciXENatAyZ72W Nt57U9eAga0BasYn+eyWflDaJVqUcoVz/J1q0mMw+IJCKsS1iZ2xz5+SaHiqfGCHr2NfSfvb9TW 0k6TF5XGHmCk9VtlqUsUnW3kDcV2/gPpF8nrY8nSQHWu8X/tVxYg0aKxkXO/8xnJXHyxLQhgVPw 2LRY3eycLA8uN8g1KCpOSqlMQiTLvmA== X-Google-Smtp-Source: AGHT+IG+ozhODSOr5esHQaBIeodQmUDOH+7uokkBoGcw5pfdKiiz0lAawMwBgPS2Hi2gRZVxerVWCQ== X-Received: by 2002:a05:6000:4012:b0:390:f0ff:2bf8 with SMTP id ffacd0b85a97d-39d07ad8a43mr10929799f8f.10.1744034063535; Mon, 07 Apr 2025 06:54:23 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ea9a88b70sm104667945e9.3.2025.04.07.06.54.23 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 07 Apr 2025 06:54:23 -0700 (PDT) Message-ID: <2250ab62-8f0c-4672-a92f-ba31b8d90018@suse.com> Date: Mon, 7 Apr 2025 15:54:25 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 3/3] bfd/ELF/x86: avoid layering violation in link hash table entry init From: Jan Beulich To: Binutils References: <566b1382-8eba-4e25-904f-84b47092765b@suse.com> Content-Language: en-US Cc: "H.J. Lu" Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: <566b1382-8eba-4e25-904f-84b47092765b@suse.com> X-Spam-Status: No, score=-3021.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.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 There's no reason not to do as the comment says, just like all other architectures do when they need custom field: Call the allocation method of the "superclass". Which is the ELF one, of which in turn the BFD one is the "superclass", dealt with accordingly by _bfd_elf_link_hash_newfunc(). --- v2: New. --- a/bfd/elfxx-x86.c +++ b/bfd/elfxx-x86.c @@ -609,8 +609,7 @@ _bfd_elf_x86_get_local_sym_hash (struct return &ret->elf; } -/* Create an entry in a x86 ELF linker hash table. NB: THIS MUST BE IN - SYNC WITH _bfd_elf_link_hash_newfunc. */ +/* Create an entry in an x86 ELF linker hash table. */ struct bfd_hash_entry * _bfd_x86_elf_link_hash_newfunc (struct bfd_hash_entry *entry, @@ -629,27 +628,14 @@ _bfd_x86_elf_link_hash_newfunc (struct b } /* Call the allocation method of the superclass. */ - entry = _bfd_link_hash_newfunc (entry, table, string); + entry = _bfd_elf_link_hash_newfunc (entry, table, string); if (entry != NULL) { struct elf_x86_link_hash_entry *eh = (struct elf_x86_link_hash_entry *) entry; - struct elf_link_hash_table *htab - = (struct elf_link_hash_table *) table; - memset (&eh->elf.size, 0, - (sizeof (struct elf_x86_link_hash_entry) - - offsetof (struct elf_link_hash_entry, size))); + memset (&eh->elf + 1, 0, sizeof (*eh) - sizeof (eh->elf)); /* Set local fields. */ - eh->elf.indx = -1; - eh->elf.dynindx = -1; - eh->elf.got = htab->init_got_refcount; - eh->elf.plt = htab->init_plt_refcount; - /* Assume that we have been called by a non-ELF symbol reader. - This flag is then reset by the code which reads an ELF input - file. This ensures that a symbol created by a non-ELF symbol - reader will have the flag set correctly. */ - eh->elf.non_elf = 1; eh->plt_second.offset = (bfd_vma) -1; eh->plt_got.offset = (bfd_vma) -1; eh->tlsdesc_got = (bfd_vma) -1;