On Wed, 23 Sep 2020, Tobias Burnus wrote: > (Pre-remark: the following applies to the host; the offloading > is only involved as otherwise the (.gnu.)offload_{vars,funcs} > global variable/table wouldn't exist.) > > Due to partitioning, it can happen that the offloading table > and the functions and variables (which it contains as pointer), > end up in different ltrans. As the functions and vars end > up as local symbols ? the linker will not associate the entries > in the table of one ltrans with the symbol from the other ltrans, > failing with "undefined reference" errors. > > > This could be fixed properly by either placing all vars/funcs > referenced in the (.gnu.)offload_{vars,funcs} table in the same > ltrans parition ? or by ensuring that those symbols are available. > For funcs, the latter works by setting TREE_PUBLIC (cf. PR) ? but > I didn't manage to do this for variables. ? Hence: > > This patch disables lto partitioning if the code has offloading. > > OK for mainline? ? Or better suggestions how to handle this?
LTRANS usually makes the symbols hidden, not local. So are you sure this isn't a target bug (hidden symbols not implemented but the host compiler obviously having checked that but assuming the target behaves the same as the host) or a linker bug? Richard. > Tobias > > ----------------- > Mentor Graphics (Deutschland) GmbH, Arnulfstra?e 201, 80634 M?nchen / Germany > Registergericht M?nchen HRB 106955, Gesch?ftsf?hrer: Thomas Heurung, Alexander > Walter > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany; GF: Felix Imend