Jump to page: 1 2
Thread overview
[Issue 14814] ld: GOT load reloc does not point to a movq instruction
Jul 21, 2015
Martin Nowak
Jul 21, 2015
Timothee Cour
Jul 21, 2015
Timothee Cour
Jul 21, 2015
Kenji Hara
Jul 22, 2015
Timothee Cour
Jul 22, 2015
Kenji Hara
Jul 25, 2015
Kenji Hara
Jul 25, 2015
Kenji Hara
Jul 16, 2020
Walter Bright
July 21, 2015
https://issues.dlang.org/show_bug.cgi?id=14814

Martin Nowak <code@dawg.eu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |code@dawg.eu

--- Comment #1 from Martin Nowak <code@dawg.eu> ---
Regression in which dmd version?
Can you please bisect dmd using Digger (https://github.com/CyberShadow/Digger)?

--
July 21, 2015
https://issues.dlang.org/show_bug.cgi?id=14814

Timothee Cour <timothee.cour2@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |timothee.cour2@gmail.com

--- Comment #2 from Timothee Cour <timothee.cour2@gmail.com> ---
(In reply to Martin Nowak from comment #1)
> Regression in which dmd version?
> Can you please bisect dmd using Digger
> (https://github.com/CyberShadow/Digger)?

I had written it in that link
https://github.com/timotheecour/dsnippet/tree/master/bug_ld_GOT_reloc :
`
dmd --version
DMD64 D Compiler v2.068-devel-80a326e
NOTE: works fine with dmd v2.067.1
`

--
July 21, 2015
https://issues.dlang.org/show_bug.cgi?id=14814

--- Comment #3 from Timothee Cour <timothee.cour2@gmail.com> ---
(In reply to Timothee Cour from comment #2)
> (In reply to Martin Nowak from comment #1)
> > Regression in which dmd version?
> > Can you please bisect dmd using Digger
> > (https://github.com/CyberShadow/Digger)?
> 
> I had written it in that link
> https://github.com/timotheecour/dsnippet/tree/master/bug_ld_GOT_reloc :
> `
> dmd --version
> DMD64 D Compiler v2.068-devel-80a326e
> NOTE: works fine with dmd v2.067.1
> `


ok here's a more fine grained version showing https://github.com/D-Programming-Language/dmd/pull/4654 is the culprit:

digger: 2c5809577aafd8c6199dc04ca4ea874c4bafae9b is the first bad commit
commit 2c5809577aafd8c6199dc04ca4ea874c4bafae9b
Author: Hara Kenji <k.hara.pg+dev@gmail.com>
Date:   Mon May 18 23:37:54 2015 +0900

    dmd: Merge pull request #4654 from yebblies/typeid

    https://github.com/D-Programming-Language/dmd/pull/4654

    Resolve TypeInfo variables after semantic

diff --git a/dmd b/dmd
index a7d1edb..7fa9cd9 160000
--- a/dmd
+++ b/dmd
@@ -1 +1 @@
-Subproject commit a7d1edb3c17282994c53fdc797dc3d15f3919d68
+Subproject commit 7fa9cd9de5d24bede6cb5b4f5d4840a2b5140b7c
digger: Bisection completed successfully.


Thanks for suggesting using Digger!

--
July 21, 2015
https://issues.dlang.org/show_bug.cgi?id=14814

--- Comment #4 from Kenji Hara <k.hara.pg@gmail.com> ---
(In reply to Timothee Cour from comment #3)
> ok here's a more fine grained version showing https://github.com/D-Programming-Language/dmd/pull/4654 is the culprit:

I don't have Mac OS X environment, so I cannot directly test the reduced case. But I found a difference in the glue-layer output introduced by the PR.

(In reply to Timothee Cour from comment #0)
> fun3:
> void fun0()
> {
> }
> 
> alias Fun = void function(); //same with delegate()
> 
> void fun4()
> {
>     Fun[TypeInfo] funs;
>     funs[typeid(int)] = &fun0; //same with s/&fun0/(){}/
> }

If you replace the `typeid(int)` with `null`, will the failure disappear?

If so, may following patch fix fix the issue?

---
 src/e2ir.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/e2ir.c b/src/e2ir.c
index 863bd14..88d2a63 100644
--- a/src/e2ir.c
+++ b/src/e2ir.c
@@ -1175,6 +1175,7 @@ elem *toElem(Expression *e, IRState *irs)
             if (Type *t = isType(e->obj))
             {
                 result = getTypeInfo(t, irs);
+                result = el_bin(OPadd, result->Ety, result, el_long(TYsize_t,
t->vtinfo->offset));
                 return;
             }
             if (Expression *ex = isExpression(e->obj))
--

--
July 22, 2015
https://issues.dlang.org/show_bug.cgi?id=14814

--- Comment #5 from Timothee Cour <timothee.cour2@gmail.com> ---
>> If you replace the `typeid(int)` with `null`, will the failure disappear?

yes


>> If so, may following patch fix fix the issue?

it does.

Here's the corresponding pull request:

https://github.com/D-Programming-Language/dmd/pull/4827

--
July 22, 2015
https://issues.dlang.org/show_bug.cgi?id=14814

--- Comment #6 from Kenji Hara <k.hara.pg@gmail.com> ---
(In reply to Timothee Cour from comment #5)
> >> If you replace the `typeid(int)` with `null`, will the failure disappear?
> 
> yes
> 
> >> If so, may following patch fix fix the issue?
> 
> it does.

Thanks for the test.

I also confirmed the issue on auto-tester with a test case, then applied my patch.

https://github.com/D-Programming-Language/dmd/pull/4828

--
July 25, 2015
https://issues.dlang.org/show_bug.cgi?id=14814

Kenji Hara <k.hara.pg@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Hardware|x86                         |x86_64

--- Comment #7 from Kenji Hara <k.hara.pg@gmail.com> ---
(In reply to Kenji Hara from comment #6)
> https://github.com/D-Programming-Language/dmd/pull/4828

New PR based on the 'stable' branch: https://github.com/D-Programming-Language/dmd/pull/4829

--
July 25, 2015
https://issues.dlang.org/show_bug.cgi?id=14814

--- Comment #8 from github-bugzilla@puremagic.com ---
Commits pushed to stable at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/afc3ace1fadbe47fb7bacc4ba93f3c3582f1c475 fix Issue 14814 - ld: GOT load reloc does not point to a movq instruction

https://github.com/D-Programming-Language/dmd/commit/3a8dc471abbcd6952519e6ddf9f496ba3147c3f5 Merge pull request #4829 from 9rnsr/fix14814

[REG2.068a] Issue 14814 - ld: GOT load reloc does not point to a movq instruction

--
July 25, 2015
https://issues.dlang.org/show_bug.cgi?id=14814

--- Comment #9 from Kenji Hara <k.hara.pg@gmail.com> ---
*** Issue 14812 has been marked as a duplicate of this issue. ***

--
July 30, 2015
https://issues.dlang.org/show_bug.cgi?id=14814

--- Comment #10 from github-bugzilla@puremagic.com ---
Commits pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/afc3ace1fadbe47fb7bacc4ba93f3c3582f1c475 fix Issue 14814 - ld: GOT load reloc does not point to a movq instruction

https://github.com/D-Programming-Language/dmd/commit/3a8dc471abbcd6952519e6ddf9f496ba3147c3f5 Merge pull request #4829 from 9rnsr/fix14814

--
« First   ‹ Prev
1 2