diff mbox

[Ada] Undefined symbol with interface types

Message ID 20160502095801.GA136689@adacore.com
State New
Headers show

Commit Message

Arnaud Charlet May 2, 2016, 9:58 a.m. UTC
Compiling with optimizations enabled the linker may report undefined
symbols of the form "xxxT<number>s" associated with types that implement
interface types. This issue was introduced on 2016-01-16 as part of
improving the support of subprograms that are inlined across units
with optimization.

No small reproducer available.

Tested on x86_64-pc-linux-gnu, committed on trunk

2016-05-02  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_Tags): Do not generate the
	external name of interface tags adding the suffix counter since
	it causes problems at link time when the IP routines are inlined
	across units with optimization.
diff mbox

Patch

Index: exp_disp.adb
===================================================================
--- exp_disp.adb	(revision 235706)
+++ exp_disp.adb	(working copy)
@@ -6,7 +6,7 @@ 
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -6751,8 +6751,7 @@ 
                if Building_Static_DT (Typ) then
                   Iface_DT :=
                     Make_Defining_Identifier (Loc,
-                      Chars => New_External_Name
-                                 (Typ_Name, 'T', Suffix_Index => -1));
+                      Chars => New_External_Name (Typ_Name, 'T'));
                   Import_DT
                     (Tag_Typ => Related_Type (Node (AI_Tag_Comp)),
                      DT      => Iface_DT,