Thread overview
[Issue 18798] ld.gold: relocation R_386_GOTOFF against preemptible symbol cannot be used when making a shared object
Apr 28, 2018
Marco Leise
Apr 28, 2018
Marco Leise
Apr 28, 2018
Marco Leise
May 16, 2020
Walter Bright
Dec 17, 2022
Iain Buclaw
April 28, 2018
https://issues.dlang.org/show_bug.cgi?id=18798

--- Comment #1 from Marco Leise <Marco.Leise@gmx.de> ---
Created attachment 1689
  --> https://issues.dlang.org/attachment.cgi?id=1689&action=edit
small reproduction case for the linker error

I attached a test case that can be compiled with dmd 2.079.1 like this:

    dmd -m32 -shared -fPIC -defaultlib=phobos2 reprocase.d

ld.gold has to be your default linker, otherwise you need to split compilation and linking:

    dmd -m32 -fPIC -c reprocase.d
    ld.gold -shared reprocase.o

What I found interesting about the test case is that it happens when you create a sufficiently complex switch-case. Remove one case and the error is gone. Could it be a bug in jump table generation on x86/PIC ?

--
April 28, 2018
https://issues.dlang.org/show_bug.cgi?id=18798

--- Comment #2 from Marco Leise <Marco.Leise@gmx.de> ---
My guess was hitting close:


https://github.com/dlang/dmd/blob/1a05f4413ac6daaa8ae000dbe7399a302e3fc16b/src/dmd/backend/cod3.c#L1360

Above three cases a different code path is chosen in the back-end.

--
April 28, 2018
https://issues.dlang.org/show_bug.cgi?id=18798

Marco Leise <Marco.Leise@gmx.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |link-failure

--
May 16, 2020
https://issues.dlang.org/show_bug.cgi?id=18798

Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bugzilla@digitalmars.com

--- Comment #3 from Walter Bright <bugzilla@digitalmars.com> ---
Can you show a piece of DMD code that, when compiled, uses a different location than GDC does (or even gcc) ?

--
December 17, 2022
https://issues.dlang.org/show_bug.cgi?id=18798

Iain Buclaw <ibuclaw@gdcproject.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P1                          |P3

--
December 13
https://issues.dlang.org/show_bug.cgi?id=18798

--- Comment #4 from dlangBugzillaToGithub <robert.schadek@posteo.de> ---
THIS ISSUE HAS BEEN MOVED TO GITHUB

https://github.com/dlang/dmd/issues/19427

DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB

--