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 <mira...@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.
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,