From patchwork Mon May 25 09:37:32 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Modra X-Patchwork-Id: 135605 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 077A14BA79BF for ; Mon, 25 May 2026 09:41:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 077A14BA79BF Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=Cj3X6a5m X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-pj1-x102d.google.com (mail-pj1-x102d.google.com [IPv6:2607:f8b0:4864:20::102d]) by sourceware.org (Postfix) with ESMTPS id 816C04BA9028 for ; Mon, 25 May 2026 09:37:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 816C04BA9028 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 816C04BA9028 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::102d ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1779701856; cv=none; b=XrfojuLP6blHjfl4dTLHZq1dMabXyNpUTyP8dCsoxADgVl/MXeZ0yzBj0BfnMb7HkuTuXiUEawue+0GhbDoM0E3iJAspSXhYityYDaqEpkyAvEh/J1paR4s72Yw7fPo3ny2KzhyGHUhpQYxPKjbvxhuR73dpvMyk2EMV5d/RQcY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1779701856; c=relaxed/simple; bh=eMQ9maItYXVq1x3NhuWE1B/8HElF/lUgSe6z7JI9GIQ=; h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version; b=AIQDx0EpI0d8P5dcmAE/myURf9JHzwse5jKn00184Dvu6FsItzehvNUYYe5SIF5WGm0oR8wFiLiBeC5U53KNydhYEiWsthMEC+tr3KXQqEAPCZb9lzig147N3w1kCtNeRkfuTzpfIhBDCg5vffNgaxSt6wFXdBfvqUIq8h0tnHM= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=Cj3X6a5m DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 816C04BA9028 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-367cbac9cb1so9184401a91.3 for ; Mon, 25 May 2026 02:37:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779701855; x=1780306655; darn=sourceware.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=hYzrrOao3tUvv1T7fJFs14ORModjIye2ftpe3wGiBLA=; b=Cj3X6a5mxty5N4n6xRpeKlGaKVzgo1aBGVpOX4qkqjFcyIPIdmP81crhYQkgUEnXQk y6fjybZrCkZci9fl+0vt7Rlam8zZKr/i9R5Sd6STByB7bgwgc/h/S/lxewxy/PaP3ZWG JPDuuW5JNdEjwiqJbQ+J4zb7tErDzJ6JTRbnGub0+oTBsdlOhTQtiCqs2b/O9Vypu4Z2 fVIqN60HEndjXuQMR+fCqlVdd+q8QdyL939+yxGPWIUN8jdadU7kv1fKuqf8lVEGhaB5 MQi5A03H4YBhWnnsByTGK71E/mYjQd5W7FS54QM/3WIAuwtex/zUKTYPEYfK8WE11VFD 9Tzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779701855; x=1780306655; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hYzrrOao3tUvv1T7fJFs14ORModjIye2ftpe3wGiBLA=; b=HDkCrdKe2vwBTM3wsnDPyqe95mdmATGcIKDBqRVBhhK6qjquTW3zNO4mj+pNi0mhfk Je8xXGgqh/eo8lKPTl/FcGyn7PfH+uB7qBQjfSq3mSszbP4PmLG+KxuZY8S5wdcqGa8B 2EDOLWYXezNXrKQwi5WMuONZdm+mGqD+UM9xif9xdv5jD9MhJVLECxDuHPgkyJzV5I70 7MQfrR2pOrVdzlGrPbkJmLLakOILZBnfx7bU16YPfyIzQzley0nfdPsa7bXlQ/cIf6V2 aki4ayOT9DKXYuINRnHnW9vkOYnQ+d28u0eweq6tZ0fjGMB94ETmfAwFhln2b7E8GAW6 6pUw== X-Gm-Message-State: AOJu0Ywh5oCMWbp6YE4zbcLVCIYBldodY+4EbnaYHdfxd5sc5QQwRvCz Jeq2jVitemOKSImPQo277dlndEN6GUjeseflpw6DyWrc9ZFVvqnANj2p X-Gm-Gg: Acq92OH2JspTRENVGWHdz+Wc3KsG1vp5rwsXa8FNezpI9VieSZCjHQG8ZYXqSgRRouu d9a9LV+E/YuuvCmjnOY0wJZinAJcdxNvkM4hmJwFrb4nN7irke5solnfMd/PG/j8Ow4XuERixZ+ 0a1HtxYUR/fZ1kYwjBoWsSLtzSnfS4wAMBg1EBZEzzLfPUEl8mbMl5GCzc0Iq8WuwDhlGX/rgZu fzi7RuqqW0mI+SidqLSCDtKD5f+OOWug2MKVoP89AjZnZWRjE5KF9iOtF7JovBd9GYAK8WVduPX k4mX/Iv8UQ+oey7B2Sz4A2mf8kFMgGwK43H3kTNTbhU1C5v4JNIErZ1UFVe21ifSMz4niqStM7n V6fdImGV2AvI8dRL8sxv4KcQQmrNh/vT5LEhdsNiw+sod9JIkA0gLcIDLBCGqK3DYKCoepGrTuN h3RjJYjYVZwUT6VRYmx3ka2qJFpKGvaxwSfpFbu11QklGgpds= X-Received: by 2002:a17:903:2f06:b0:2bd:c925:3a16 with SMTP id d9443c01a7336-2beb039078amr165264605ad.2.1779701855378; Mon, 25 May 2026 02:37:35 -0700 (PDT) Received: from squeak.grove.modra.org ([2406:3400:51d:8cc0:50d9:6845:85ed:1fde]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2beb58c7046sm93863335ad.57.2026.05.25.02.37.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 May 2026 02:37:34 -0700 (PDT) Received: by squeak.grove.modra.org (Postfix, from userid 1000) id A91581141A6F; Mon, 25 May 2026 19:07:32 +0930 (ACST) Date: Mon, 25 May 2026 19:07:32 +0930 From: Alan Modra To: binutils@sourceware.org Cc: Tristan Gingold , Iain Sandoe Subject: macho debug changes Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-3029.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE, SPF_PASS, TXREP shortcircuit=no 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 This patch is aimed at fixing "FAIL: eqv involving dot" and any similar problems in real code when generating DWARF. * config/obj-macho.c (obj_mach_o_frob_label), (obj_mach_o_frob_symbol): Ignore more debug symbols. (obj_mach_o_set_subsections): Ignore SEC_DEBUGGING sections. (obj_mach_o_force_reloc_sub_same), (obj_mach_o_force_reloc_sub_local), (obj_mach_o_force_reloc): Add seg param. Return false when processing debug sections. * config/obj-macho.h: Update prototypes. * config/tc-i386.h : Smuggle section being processed by TC_FORCE_RELOCATION* to obj_macho_o functions. diff --git a/gas/config/obj-macho.c b/gas/config/obj-macho.c index bf6f2758bc7..d0d4763724e 100644 --- a/gas/config/obj-macho.c +++ b/gas/config/obj-macho.c @@ -1383,7 +1383,8 @@ void obj_mach_o_frob_label (struct symbol *sp) s = (bfd_mach_o_asymbol *) symbol_get_bfdsym (sp); /* Leave debug symbols alone. */ - if ((s->n_type & BFD_MACH_O_N_STAB) != 0) + if ((s->n_type & BFD_MACH_O_N_STAB) != 0 + || (s->symbol.section->flags & SEC_DEBUGGING) != 0) return; /* This is the base symbol type, that we mask in. */ @@ -1433,7 +1434,8 @@ obj_mach_o_frob_symbol (struct symbol *sp) s = (bfd_mach_o_asymbol *) symbol_get_bfdsym (sp); /* Leave debug symbols alone. */ - if ((s->n_type & BFD_MACH_O_N_STAB) != 0) + if ((s->n_type & BFD_MACH_O_N_STAB) != 0 + || (s->symbol.section->flags & SEC_DEBUGGING) != 0) return 0; base_type = obj_mach_o_type_for_symbol (s); @@ -1570,6 +1572,10 @@ obj_mach_o_set_subsections (bfd *abfd ATTRIBUTE_UNUSED, fragS *frag; frchainS *chain; + /* Don't waste time on debug sections. */ + if ((sec->flags & SEC_DEBUGGING) != 0) + return; + /* Protect against sections not created by gas. */ if (seginfo == NULL) return; @@ -1893,17 +1899,22 @@ obj_mach_o_in_different_subsection (symbolS *a, segT aseg, valueT offset, } bool -obj_mach_o_force_reloc_sub_same (fixS *fix, segT seg) +obj_mach_o_force_reloc_sub_same (segT seg, fixS *fix, segT addsymseg) { - if (! SEG_NORMAL (seg)) + if (!SEG_NORMAL (addsymseg)) return true; - return obj_mach_o_in_different_subsection (fix->fx_addsy, seg, + if ((seg->flags & SEC_DEBUGGING) != 0) + return false; + return obj_mach_o_in_different_subsection (fix->fx_addsy, addsymseg, fix->fx_offset, fix->fx_subsy); } bool -obj_mach_o_force_reloc_sub_local (fixS *fix, segT seg ATTRIBUTE_UNUSED) +obj_mach_o_force_reloc_sub_local (segT seg, fixS *fix, + segT addsymseg ATTRIBUTE_UNUSED) { + if ((seg->flags & SEC_DEBUGGING) != 0) + return false; symbolS *fragsym = fix->fx_frag->obj_frag_data.subsection; if (fragsym == NULL) return false; @@ -1911,11 +1922,14 @@ obj_mach_o_force_reloc_sub_local (fixS *fix, segT seg ATTRIBUTE_UNUSED) } bool -obj_mach_o_force_reloc (fixS *fix) +obj_mach_o_force_reloc (segT seg, fixS *fix) { if (generic_force_reloc (fix)) return true; + if ((seg->flags & SEC_DEBUGGING) != 0) + return false; + /* Force a reloc if the target is not in the same subsection. FIXME: handle (a - b) where a and b belongs to the same subsection ? */ if (fix->fx_addsy != NULL) diff --git a/gas/config/obj-macho.h b/gas/config/obj-macho.h index eac0afdf407..0a499f29503 100644 --- a/gas/config/obj-macho.h +++ b/gas/config/obj-macho.h @@ -108,8 +108,8 @@ extern int obj_mach_o_allow_local_subtract (expressionS *, expressionS *, segT); struct fix; -extern bool obj_mach_o_force_reloc (struct fix *); -extern bool obj_mach_o_force_reloc_sub_same (struct fix *, segT); -extern bool obj_mach_o_force_reloc_sub_local (struct fix *, segT); +extern bool obj_mach_o_force_reloc (segT, struct fix *); +extern bool obj_mach_o_force_reloc_sub_same (segT, struct fix *, segT); +extern bool obj_mach_o_force_reloc_sub_local (segT, struct fix *, segT); #endif /* _OBJ_MACH_O_H */ diff --git a/gas/config/tc-i386.h b/gas/config/tc-i386.h index 20e5334d14e..5eaed702ea9 100644 --- a/gas/config/tc-i386.h +++ b/gas/config/tc-i386.h @@ -498,13 +498,13 @@ void tc_pe_dwarf2_emit_offset (symbolS *, unsigned int); #ifdef OBJ_MACH_O -#define TC_FORCE_RELOCATION(FIX) (obj_mach_o_force_reloc (FIX)) +#define TC_FORCE_RELOCATION(FIX) (obj_mach_o_force_reloc (this_segment, FIX)) #define TC_FORCE_RELOCATION_SUB_SAME(FIX,SEG) \ - (obj_mach_o_force_reloc_sub_same (FIX, SEG)) + (obj_mach_o_force_reloc_sub_same (this_segment, FIX, SEG)) #define TC_FORCE_RELOCATION_SUB_LOCAL(FIX,SEG) \ - (obj_mach_o_force_reloc_sub_local (FIX, SEG)) + (obj_mach_o_force_reloc_sub_local (this_segment, FIX, SEG)) #endif /* OBJ_MACH_O */