From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 6719F3857C4C; Mon, 5 Apr 2021 11:07:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6719F3857C4C From: "ibuclaw at gdcproject dot org" To: gcc-bugs@gcc.gnu.org Subject: [Bug d/99914] New: d: Template symbols not overridable by normal symbols Date: Mon, 05 Apr 2021 11:07:39 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: d X-Bugzilla-Version: 11.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: ibuclaw at gdcproject dot org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: ibuclaw at gdcproject dot org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter target_milestone Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2021 11:07:39 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D99914 Bug ID: 99914 Summary: d: Template symbols not overridable by normal symbols Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: d Assignee: ibuclaw at gdcproject dot org Reporter: ibuclaw at gdcproject dot org Target Milestone: --- Currently, the following does not link: extern(C) __gshared bool rt_cmdline_enabled =3D false; Because the symbol conflicts with a template symbol of the same name in the= D runtime library. template rt_cmdline_enabled() { pragma(mangle, "rt_cmdline_enabled") __gshared bool rt_cmdline_enabled =3D true; } Template symbols are made DECL_ONE_ONLY, which ends up in the gnu.linkonce section as a unique global symbol. However, the linker only considers other symbols in gnu.linkonce as being candidates for discarding duplicates. The expected and correct behaviour is for all instantiations to be declared weak.=