Re: dmd and Archlinux

2017-07-19 Thread Vladimir Panteleev via Digitalmars-d

On Saturday, 15 July 2017 at 19:00:57 UTC, Seb wrote:
Bumping this as the PIE changes have been moved to core and as 
the maintainers haven't rebuilt Phobos with PIE yet, one will 
see messages like:


Looks like dmd got bumped to 2.075, and the problem is now 
finally gone :)


Thanks to Antonio Rojas for updating the package!



Re: dmd and Archlinux

2017-07-15 Thread Seb via Digitalmars-d

On Tuesday, 11 July 2017 at 12:00:51 UTC, Seb wrote:

On Tuesday, 11 July 2017 at 00:23:55 UTC, Marco Leise wrote:

Am Sun, 09 Jul 2017 18:35:09 +
schrieb Antonio Corbi <aaaco...@mail.com>:


Hi!

Are there any news about the status of packaging dmd for 
archlinux?


The last dmd compiler packaged is 2.074.0 and since the last 
batch of updated packages in archlinux, dmd generated objects 
fail to link with libphobos with erros like these:


/usr/bin/ld: /usr/lib/libphobos2.a(object_a_66e.o): relocation
R_X86_64_32 against `.rodata.str1.1' can not be used when 
making

a shared object; recompile con -fPIC
/usr/bin/ld: /usr/lib/libphobos2.a(object_b_58c.o): relocation
R_X86_64_32 against `.rodata.str1.1' can not be used when 
making

a shared object; recompile con -fPIC
/usr/bin/ld: /usr/lib/libphobos2.a(object_c_7f4.o): relocation
R_X86_64_32 against `.rodata.str1.1' can not be used when 
making

a shared object; recompile con -fPIC
/usr/bin/ld: /usr/lib/libphobos2.a(object_d_a07.o): relocation
R_X86_64_32 against `.rodata.str1.1' can not be used when 
making

a shared object; recompile con ...

A. Corbi


The linker gold (since binutils 2.27) is problematic with DMD 
and would emit such errors. (Is ld a symlink to ld.gold in 
this case?) Also binutils 2.28 breaks how DMD's druntime loads 
shared libraries. You have to either downgrade binutils or use 
the hack of adding '-fPIC' when compiling executable that link 
against shared libraries. binutils 2.26 should be the most 
compatible version for the time being.


@mleise: OP is using the testing repos where the PIE 
enforcement already landed [1], but libphobos.a isn't built 
with -fPIC on Arch yet.
The Arch developers, however, are aware of the need to rebuild 
libphobos [2], but maybe we can simply build Phobos with -fPIC 
by default on Posix [3].


[1] https://www.archlinux.org/todo/pie-rebuild
[2] https://bugs.archlinux.org/task/54749
[3] https://github.com/dlang/phobos/pull/5586


Bumping this as the PIE changes have been moved to core and as 
the maintainers haven't rebuilt Phobos with PIE yet, one will see 
messages like:


/usr/local/bin/ld: error: 
/usr/lib/libphobos2.a(encoding_4bd_6d6.o): requires dynamic 
R_X86_64_32 reloc which may overflow at runtime; recompile with 
-fPIC


A quick fix is:

curl https://i.dlang.io | bash -s dmd-2.074.0
sudo cp ~/dlang/dmd-2.074.0/linux/lib64/libphobos2.a /usr/lib

The official releases [1] are built with PIE=1

[1] http://dlang.org/download.html


Re: dmd and Archlinux

2017-07-12 Thread Marco Leise via Digitalmars-d
Am Tue, 11 Jul 2017 06:21:33 -0600
schrieb Jonathan M Davis via Digitalmars-d
:

> On Tuesday, July 11, 2017 12:00:51 PM MDT Seb via Digitalmars-d wrote:
> > @mleise: OP is using the testing repos where the PIE enforcement
> > already landed [1], but libphobos.a isn't built with -fPIC on
> > Arch yet.
> > The Arch developers, however, are aware of the need to rebuild
> > libphobos [2], but maybe we can simply build Phobos with -fPIC by
> > default on Posix [3].
> >
> > [1] https://www.archlinux.org/todo/pie-rebuild
> > [2] https://bugs.archlinux.org/task/54749
> > [3] https://github.com/dlang/phobos/pull/5586  
> 
> PIC and PIE may make sense from security perspective, but they've sure made
> dealing with some the Linux distros over the last year or so a bit of a
> pain.
> 
> - Jonathan M Davis

It adds to security and adds another shovel of dirt on the
grave of x86. X86 needs to emulate access to global constants
in PIE, while amd64 is using offsets relative to the
instruction pointer. RIP x86. (pun intended!)

-- 
Marco



Re: dmd and Archlinux

2017-07-11 Thread Jonathan M Davis via Digitalmars-d
On Tuesday, July 11, 2017 12:00:51 PM MDT Seb via Digitalmars-d wrote:
> @mleise: OP is using the testing repos where the PIE enforcement
> already landed [1], but libphobos.a isn't built with -fPIC on
> Arch yet.
> The Arch developers, however, are aware of the need to rebuild
> libphobos [2], but maybe we can simply build Phobos with -fPIC by
> default on Posix [3].
>
> [1] https://www.archlinux.org/todo/pie-rebuild
> [2] https://bugs.archlinux.org/task/54749
> [3] https://github.com/dlang/phobos/pull/5586

PIC and PIE may make sense from security perspective, but they've sure made
dealing with some the Linux distros over the last year or so a bit of a
pain.

- Jonathan M Davis



Re: dmd and Archlinux

2017-07-11 Thread Seb via Digitalmars-d

On Tuesday, 11 July 2017 at 00:23:55 UTC, Marco Leise wrote:

Am Sun, 09 Jul 2017 18:35:09 +
schrieb Antonio Corbi <aaaco...@mail.com>:


Hi!

Are there any news about the status of packaging dmd for 
archlinux?


The last dmd compiler packaged is 2.074.0 and since the last 
batch of updated packages in archlinux, dmd generated objects 
fail to link with libphobos with erros like these:


/usr/bin/ld: /usr/lib/libphobos2.a(object_a_66e.o): relocation
R_X86_64_32 against `.rodata.str1.1' can not be used when 
making

a shared object; recompile con -fPIC
/usr/bin/ld: /usr/lib/libphobos2.a(object_b_58c.o): relocation
R_X86_64_32 against `.rodata.str1.1' can not be used when 
making

a shared object; recompile con -fPIC
/usr/bin/ld: /usr/lib/libphobos2.a(object_c_7f4.o): relocation
R_X86_64_32 against `.rodata.str1.1' can not be used when 
making

a shared object; recompile con -fPIC
/usr/bin/ld: /usr/lib/libphobos2.a(object_d_a07.o): relocation
R_X86_64_32 against `.rodata.str1.1' can not be used when 
making

a shared object; recompile con ...

A. Corbi


The linker gold (since binutils 2.27) is problematic with DMD 
and would emit such errors. (Is ld a symlink to ld.gold in this 
case?) Also binutils 2.28 breaks how DMD's druntime loads 
shared libraries. You have to either downgrade binutils or use 
the hack of adding '-fPIC' when compiling executable that link 
against shared libraries. binutils 2.26 should be the most 
compatible version for the time being.


@mleise: OP is using the testing repos where the PIE enforcement 
already landed [1], but libphobos.a isn't built with -fPIC on 
Arch yet.
The Arch developers, however, are aware of the need to rebuild 
libphobos [2], but maybe we can simply build Phobos with -fPIC by 
default on Posix [3].


[1] https://www.archlinux.org/todo/pie-rebuild
[2] https://bugs.archlinux.org/task/54749
[3] https://github.com/dlang/phobos/pull/5586


Re: dmd and Archlinux

2017-07-10 Thread Marco Leise via Digitalmars-d
Am Sun, 09 Jul 2017 18:35:09 +
schrieb Antonio Corbi <aaaco...@mail.com>:

> Hi!
> 
> Are there any news about the status of packaging dmd for 
> archlinux?
> 
> The last dmd compiler packaged is 2.074.0 and since the last 
> batch of updated packages in archlinux, dmd generated objects 
> fail to link with libphobos with erros like these:
> 
> /usr/bin/ld: /usr/lib/libphobos2.a(object_a_66e.o): relocation 
> R_X86_64_32 against `.rodata.str1.1' can not be used when making 
> a shared object; recompile con -fPIC
> /usr/bin/ld: /usr/lib/libphobos2.a(object_b_58c.o): relocation 
> R_X86_64_32 against `.rodata.str1.1' can not be used when making 
> a shared object; recompile con -fPIC
> /usr/bin/ld: /usr/lib/libphobos2.a(object_c_7f4.o): relocation 
> R_X86_64_32 against `.rodata.str1.1' can not be used when making 
> a shared object; recompile con -fPIC
> /usr/bin/ld: /usr/lib/libphobos2.a(object_d_a07.o): relocation 
> R_X86_64_32 against `.rodata.str1.1' can not be used when making 
> a shared object; recompile con ...
> 
> A. Corbi

The linker gold (since binutils 2.27) is problematic with DMD
and would emit such errors. (Is ld a symlink to ld.gold in
this case?) Also binutils 2.28 breaks how DMD's druntime
loads shared libraries. You have to either downgrade binutils
or use the hack of adding '-fPIC' when compiling executable
that link against shared libraries. binutils 2.26 should be
the most compatible version for the time being.

-- 
Marco



Re: dmd and Archlinux

2017-07-09 Thread Seb via Digitalmars-d

On Sunday, 9 July 2017 at 19:33:45 UTC, Antonio Corbi wrote:

On Sunday, 9 July 2017 at 19:21:48 UTC, Seb wrote:

On Sunday, 9 July 2017 at 18:35:09 UTC, Antonio Corbi wrote:

[...]



I think the Arch Linux TUs are in the process of enabling 
-fPIC by default, see e.g. [1] - it might be releated to this?
In any case - building dmd/druntime/phobos with -fPIC enabled 
is a good idea and since 2.072.2 the official releases do so. 
Not sure why it's not done on Arch, maybe because Dicebot 
stepped down as maintainer? (see [2, 3]).


[1] 
https://lists.archlinux.org/pipermail/arch-dev-public/2017-July/028918.html

[2] http://forum.dlang.org/post/o6fbbu$1qli$1...@digitalmars.com
[3] http://forum.dlang.org/post/o6sldo$1pad$1...@digitalmars.com


Hi Seb!

I think you are right. Official releases (the ones downloaded 
from dlang.org via curl) work for me.


A. Corbi



Maybe phobos/5586 [1] helps us. Of course the package would need 
to be rebuilt by the Arch Linux maintainers. Something I am not 
sure whether they are interested - the packages are orphaned and 
flagged out-of-date since more than a month [2]. Maybe you have 
an idea?


[1] https://github.com/dlang/phobos/pull/5586
[2] 
http://forum.dlang.org/post/ppyeysvwmgjpchazu...@forum.dlang.org


Re: dmd and Archlinux

2017-07-09 Thread Antonio Corbi via Digitalmars-d

On Sunday, 9 July 2017 at 19:21:48 UTC, Seb wrote:

On Sunday, 9 July 2017 at 18:35:09 UTC, Antonio Corbi wrote:

[...]



I think the Arch Linux TUs are in the process of enabling -fPIC 
by default, see e.g. [1] - it might be releated to this?
In any case - building dmd/druntime/phobos with -fPIC enabled 
is a good idea and since 2.072.2 the official releases do so. 
Not sure why it's not done on Arch, maybe because Dicebot 
stepped down as maintainer? (see [2, 3]).


[1] 
https://lists.archlinux.org/pipermail/arch-dev-public/2017-July/028918.html

[2] http://forum.dlang.org/post/o6fbbu$1qli$1...@digitalmars.com
[3] http://forum.dlang.org/post/o6sldo$1pad$1...@digitalmars.com


Hi Seb!

I think you are right. Official releases (the ones downloaded 
from dlang.org via curl) work for me.


A. Corbi


Re: dmd and Archlinux

2017-07-09 Thread Antonio Corbi via Digitalmars-d

On Sunday, 9 July 2017 at 19:15:15 UTC, Nemanja Boric wrote:

On Sunday, 9 July 2017 at 18:35:09 UTC, Antonio Corbi wrote:

[...]


Hm, I can't reproduce this issue with dmd 2.074.0-1. I've just 
installed dmd and it works out

of the box:

```
➜  arch tmp% pacman -Q | grep phob
libphobos-devel 1:2.074.0-1
➜  arch tmp% pacman -Q | grep dmd
dmd 1:2.074.0-1
➜  arch tmp% cat test.d
import std.stdio;

void main()
{
writeln("hello!");
}
➜  arch tmp% dmd -c test.d
➜  arch tmp% dmd test.o
➜  arch tmp% ./test
hello!
```


Thank's!

In my case the error persists.
I'm using the testing repo...so I think it must be related to 
that.


A. Corbi


Re: dmd and Archlinux

2017-07-09 Thread Seb via Digitalmars-d

On Sunday, 9 July 2017 at 18:35:09 UTC, Antonio Corbi wrote:

Hi!

Are there any news about the status of packaging dmd for 
archlinux?


The last dmd compiler packaged is 2.074.0 and since the last 
batch of updated packages in archlinux, dmd generated objects 
fail to link with libphobos with erros like these:


/usr/bin/ld: /usr/lib/libphobos2.a(object_a_66e.o): relocation 
R_X86_64_32 against `.rodata.str1.1' can not be used when 
making a shared object; recompile con -fPIC
/usr/bin/ld: /usr/lib/libphobos2.a(object_b_58c.o): relocation 
R_X86_64_32 against `.rodata.str1.1' can not be used when 
making a shared object; recompile con -fPIC
/usr/bin/ld: /usr/lib/libphobos2.a(object_c_7f4.o): relocation 
R_X86_64_32 against `.rodata.str1.1' can not be used when 
making a shared object; recompile con -fPIC
/usr/bin/ld: /usr/lib/libphobos2.a(object_d_a07.o): relocation 
R_X86_64_32 against `.rodata.str1.1' can not be used when 
making a shared object; recompile con ...


A. Corbi



I think the Arch Linux TUs are in the process of enabling -fPIC 
by default, see e.g. [1] - it might be releated to this?
In any case - building dmd/druntime/phobos with -fPIC enabled is 
a good idea and since 2.072.2 the official releases do so. Not 
sure why it's not done on Arch, maybe because Dicebot stepped 
down as maintainer? (see [2, 3]).


[1] 
https://lists.archlinux.org/pipermail/arch-dev-public/2017-July/028918.html

[2] http://forum.dlang.org/post/o6fbbu$1qli$1...@digitalmars.com
[3] http://forum.dlang.org/post/o6sldo$1pad$1...@digitalmars.com


Re: dmd and Archlinux

2017-07-09 Thread Nemanja Boric via Digitalmars-d

On Sunday, 9 July 2017 at 18:35:09 UTC, Antonio Corbi wrote:

Hi!

Are there any news about the status of packaging dmd for 
archlinux?


The last dmd compiler packaged is 2.074.0 and since the last 
batch of updated packages in archlinux, dmd generated objects 
fail to link with libphobos with erros like these:


/usr/bin/ld: /usr/lib/libphobos2.a(object_a_66e.o): relocation 
R_X86_64_32 against `.rodata.str1.1' can not be used when 
making a shared object; recompile con -fPIC
/usr/bin/ld: /usr/lib/libphobos2.a(object_b_58c.o): relocation 
R_X86_64_32 against `.rodata.str1.1' can not be used when 
making a shared object; recompile con -fPIC
/usr/bin/ld: /usr/lib/libphobos2.a(object_c_7f4.o): relocation 
R_X86_64_32 against `.rodata.str1.1' can not be used when 
making a shared object; recompile con -fPIC
/usr/bin/ld: /usr/lib/libphobos2.a(object_d_a07.o): relocation 
R_X86_64_32 against `.rodata.str1.1' can not be used when 
making a shared object; recompile con ...


A. Corbi


Hm, I can't reproduce this issue with dmd 2.074.0-1. I've just 
installed dmd and it works out

of the box:

```
➜  arch tmp% pacman -Q | grep phob
libphobos-devel 1:2.074.0-1
➜  arch tmp% pacman -Q | grep dmd
dmd 1:2.074.0-1
➜  arch tmp% cat test.d
import std.stdio;

void main()
{
writeln("hello!");
}
➜  arch tmp% dmd -c test.d
➜  arch tmp% dmd test.o
➜  arch tmp% ./test
hello!
```


dmd and Archlinux

2017-07-09 Thread Antonio Corbi via Digitalmars-d

Hi!

Are there any news about the status of packaging dmd for 
archlinux?


The last dmd compiler packaged is 2.074.0 and since the last 
batch of updated packages in archlinux, dmd generated objects 
fail to link with libphobos with erros like these:


/usr/bin/ld: /usr/lib/libphobos2.a(object_a_66e.o): relocation 
R_X86_64_32 against `.rodata.str1.1' can not be used when making 
a shared object; recompile con -fPIC
/usr/bin/ld: /usr/lib/libphobos2.a(object_b_58c.o): relocation 
R_X86_64_32 against `.rodata.str1.1' can not be used when making 
a shared object; recompile con -fPIC
/usr/bin/ld: /usr/lib/libphobos2.a(object_c_7f4.o): relocation 
R_X86_64_32 against `.rodata.str1.1' can not be used when making 
a shared object; recompile con -fPIC
/usr/bin/ld: /usr/lib/libphobos2.a(object_d_a07.o): relocation 
R_X86_64_32 against `.rodata.str1.1' can not be used when making 
a shared object; recompile con ...


A. Corbi