Processed: gdc: FTBFS: ld: final link failed: Bad value
Iain Buclaw
ibuclaw at gdcproject.org
Tue Dec 6 09:28:12 UTC 2016
Attaching patch that was done against gdc-6 (6.2.1-5).
Fixes against version 7 is already in master, so I imagine it's easier
to just grab the latest source tarballs (and remove gdc-hacks.diff).
Regards
Iain
On 4 December 2016 at 18:39, Iain Buclaw <ibuclaw at gdcproject.org> wrote:
> On 4 December 2016 at 10:15, Iain Buclaw <ibuclaw at gdcproject.org> wrote:
>> On 3 December 2016 at 22:29, Matthias Klose <doko at debian.org> wrote:
>>> On 03.12.2016 22:13, Markus Koschany wrote:
>>>> On 03.12.2016 22:00, Matthias Klose wrote:
>>>>> reassign 846669 gdc-6
>>>>> forcemerge 845377 846669
>>>>> thanks
>>>>>
>>>>> please see #845377.
>>>>>
>>>>> This build is configured with --enable-default-pie. The linker is now called
>>>>> with -pie, but cc1d isn't passed either -fPIE, or -fPIC. The work around is to
>>>>> pass either -fPIC, or -no-pie. Also passing -fPIE doesn't have an effect.
>>>>
>>>> Hi,
>>>>
>>>> sorry I'm not a D expert. Do you intend to fix #845377 before the Freeze or are all
>>>> reverse-dependencies supposed to work around this issue by passing either -fPIC or -no-pie to configure?
>>>
>>> Please give Iain some time to have a look at this.
>>>
>>
>> I'll be spending today on this. Hopefully not all. :-)
>>
>> Regards
>
> It looks like the pre-emptive check for "is this symbol external?" is
> not right. The codegen pass thinks it should be static, but it is
> infact not, and so it emits the call without @PLT. This only affects
> D templates.
>
> Incidentally, I recently cleaned up the area where this is done,
> making it a small fix in upstream. Will have a look at debian's
> source package to prepare the relevant patch.
>
> Regards
> Iain
-------------- next part --------------
Index: gcc-6-6.2.1/src/gcc/d/d-objfile.cc
===================================================================
--- gcc-6-6.2.1.orig/src/gcc/d/d-objfile.cc
+++ gcc-6-6.2.1/src/gcc/d/d-objfile.cc
@@ -1727,21 +1727,17 @@ d_comdat_linkage(tree decl)
void
get_template_storage_info (Dsymbol *dsym, bool *local_p, bool *template_p)
{
- *local_p = output_module_p(dsym->getModule());
+ TemplateInstance *ti = dsym->isInstantiated();
+ *local_p = false;
*template_p = false;
- Dsymbol *sym = dsym->toParent();
- while (sym)
+ if (ti != NULL)
{
- TemplateInstance *ti = sym->isTemplateInstance();
- if (ti)
- {
- *local_p = output_module_p(ti->minst);
- *template_p = true;
- break;
- }
- sym = sym->toParent();
+ *local_p = ti->needsCodegen();
+ *template_p = true;
}
+ else
+ *local_p = (dsym->getModule() && dsym->getModule()->isRoot());
}
// Set a DECL's STATIC and EXTERN based on the decl's storage class
More information about the Pkg-games-devel
mailing list