Hi,
this is a regression present on all active branches: the attached testcase
fails to link with debug info in LTO mode because of an undefined reference to
a symbol coming from the object files containing the early debug info.
Tested on x86_64-suse-linux, OK for all active branches?
2019-20-25 Eric Botcazou <ebotca...@adacore.com>
* dwarf2out.c (dwarf2out_size_function): Run in early-DWARF mode.
2019-20-25 Eric Botcazou <ebotca...@adacore.com>
* gnat.dg/lto24.adb: New test.
* gnat.dg/lto24_pkg1.ads: New helper.
* gnat.dg/lto24_pkg2.ad[sb]: Likewise.
--
Eric Botcazou
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index fe46c7e1eee..1fcb19a0489 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -27610,6 +27610,7 @@ dwarf2out_inline_entry (tree block)
static void
dwarf2out_size_function (tree decl)
{
+ set_early_dwarf s;
function_to_dwarf_procedure (decl);
}
-- { dg-do link }
-- { dg-options "-O -g -flto" { target lto } }
with Lto24_Pkg1;
procedure Lto24 is
R : Lto24_Pkg1.Rec (False);
begin
R.Empty := True;
end;
with Lto24_Pkg2;
package Lto24_Pkg1 is
Max_Elem : constant Natural := Lto24_Pkg2.Get;
type Arr is array (Natural range <>) of Boolean;
type Rec (B : Boolean) is record
I : Integer;
case B is
when True => A : Arr (1 .. Max_Elem);
when False => Empty : Boolean;
end case;
end record;
end Lto24_Pkg1;
package Lto24_Pkg2 is
function Get return Natural;
end Lto24_Pkg2;
package body Lto24_Pkg2 is
function Get return Natural is
begin
return 16;
end;
end Lto24_Pkg2;