gdc for D1 on x86_64

Iain Buclaw ibuclaw at ubuntu.com
Sat Oct 16 04:08:36 PDT 2010


== Quote from "Jérôme M. Berger" (jeberger at free.fr)'s article
> This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
> --------------enigFA970E325419AA4704D394C4
> Content-Type: multipart/mixed;
>  boundary="------------020802090108050507010000"
> This is a multi-part message in MIME format.
> --------------020802090108050507010000
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: quoted-printable
> 	Hi,
> 	Gdc (c3e22fb3bf19) fails to build phobos on x86_64:
> > /home/jerome/abs/gdc-hg/src/gcc-build/./gcc/gdc -B/home/jerome/abs/gdc-=
> hg/src/gcc-build/./gcc/ -B/usr/x86_64-unknown-linux-gnu/bin/ -B/usr/x86_6=
> 4-unknown-linux-gnu/lib/ -isystem /usr/x86_64-unknown-linux-gnu/include -=
> isystem /usr/x86_64-unknown-linux-gnu/sys-include -o std/regexp.o -g -fre=
> lease -O2 -fversion=3DGC_Use_Alloc_MMap -fversion=3DGC_Use_Stack_GLibC -f=
> version=3DGC_Use_Data_Fixed -nostdinc -pipe   \
> > 	-I ../../../gcc-4.4.5-build/libphobos -I ../../../gcc-4.4.5-build/libp=
> hobos/internal/gc -I ./x86_64-unknown-linux-gnu -c ../../../gcc-4.4.5-bui=
> ld/libphobos/std/regexp.d
> > ../../../gcc-4.4.5-build/libphobos/std/regexp.d:1632: Error: function s=
> td.intrinsic.bt (ulong*,ulong) does not match parameter types (uint*,uint=
> )
> > ../../../gcc-4.4.5-build/libphobos/std/regexp.d:1632: Error: cannot imp=
> licitly convert expression (cast(uint*)&this.program[pc + 1LU + 4LU]) of =
> type uint* to ulong*
> > ../../../gcc-4.4.5-build/libphobos/std/regexp.d:1647: Error: function s=
> td.intrinsic.bt (ulong*,ulong) does not match parameter types (uint*,uint=
> )
> > ../../../gcc-4.4.5-build/libphobos/std/regexp.d:1647: Error: cannot imp=
> licitly convert expression (cast(uint*)&this.program[pc + 1LU + 4LU]) of =
> type uint* to ulong*
> > ../../../gcc-4.4.5-build/libphobos/std/regexp.d:1662: Error: function s=
> td.intrinsic.bt (ulong*,ulong) does not match parameter types (uint*,uint=
> )
> > ../../../gcc-4.4.5-build/libphobos/std/regexp.d:1662: Error: cannot imp=
> licitly convert expression (cast(uint*)&this.program[pc + 1LU + 4LU]) of =
> type uint* to ulong*
> > make[3]: *** [std/regexp.o] Error 1
> > make[3]: Leaving directory `/home/jerome/abs/gdc-hg/src/gcc-build/x86_6=
> 4-unknown-linux-gnu/libphobos'
> > make[2]: *** [all] Error 2
> > make[2]: Leaving directory `/home/jerome/abs/gdc-hg/src/gcc-build/x86_6=
> 4-unknown-linux-gnu/libphobos'
> > make[1]: *** [all-target-libphobos] Error 2
> > make[1]: Leaving directory `/home/jerome/abs/gdc-hg/src/gcc-build'
> > make: *** [all] Error 2
> 	The attached patch allows it to build (but I haven't tested the
> resulting lib since I don't use regexp myself).
> 		Jerome
> --=20
> mailto:jeberger at free.fr
> http://jeberger.free.fr
> Jabber: jeberger at jabber.fr
> --------------020802090108050507010000
> Content-Type: text/x-patch;
>  name="regexp-x86_64.patch"
> Content-Transfer-Encoding: quoted-printable
> Content-Disposition: inline;
>  filename="regexp-x86_64.patch"
> # HG changeset patch
> # Parent c3e22fb3bf19523679289f50b83bd0c5c39fc463
> Fix phobos 1 build issues on x86_64.
> diff -r c3e22fb3bf19 -r f424bf435a88 d/phobos/std/regexp.d
> --- a/d/phobos/std/regexp.d	Thu Oct 14 14:15:30 2010 +0100
> +++ b/d/phobos/std/regexp.d	Sat Oct 16 09:09:09 2010 +0200
> @@ -1486,7 +1486,7 @@
>      size_t pop;
>      size_t ss;
>      regmatch_t *psave;
> -    uint c1;
> +    size_t c1;
>      uint c2;
>      ushort* pu;
>      uint* puint;
> @@ -1629,7 +1629,7 @@
>                  c1 =3D input[src];
>                  //printf("[x%02x]=3Dx%02x, x%02x\n", c1 >> 3, ((&program=
> [pc + 1 + 4])[c1 >> 3] ), (1 << (c1 & 7)));
>                  if (c1 <=3D pu[0] &&
> -                    !bt(cast(uint*)&(program[pc + 1 + 4]), c1)) // assum=
> es BitArray implementation
> +                    !bt(cast(size_t*)&(program[pc + 1 + 4]), c1)) // ass=
> umes BitArray implementation
>                      goto Lnomatch;
>                  pc +=3D 1 + 2 * ushort.sizeof + len;
>                  break;
> @@ -1644,7 +1644,7 @@
>                  c1 =3D input[src];
>                  if (c1 > pu[0])
>                      goto Lnomatch;
> -                if (!bt(cast(uint*)&(program[pc + 1 + 4]), c1)) // assum=
> es BitArray implementation
> +                if (!bt(cast(size_t*)&(program[pc + 1 + 4]), c1)) // ass=
> umes BitArray implementation
>                      goto Lnomatch;
>                  src++;
>                  pc +=3D 1 + 2 * ushort.sizeof + len;
> @@ -1659,7 +1659,7 @@
>                  len =3D pu[1];
>                  c1 =3D input[src];
>                  if (c1 <=3D pu[0] &&
> -                    bt(cast(uint*)&(program[pc + 1 + 4]), c1)) // assume=
> s BitArray implementation
> +                    bt(cast(size_t*)&(program[pc + 1 + 4]), c1)) // assu=
> mes BitArray implementation
>                      goto Lnomatch;
>                  src++;
>                  pc +=3D 1 + 2 * ushort.sizeof + len;
> --------------020802090108050507010000--
> --------------enigFA970E325419AA4704D394C4
> Content-Type: application/pgp-signature; name="signature.asc"
> Content-Description: OpenPGP digital signature
> Content-Disposition: attachment; filename="signature.asc"
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
> iEYEARECAAYFAky5T94ACgkQd0kWM4JG3k87PgCghlzpo3/dPTAtBaW0D7Ordf7I
> 1v0AoLFdbWDHc1VnHiboqlCmMFidn5i1
> =mj9j
> -----END PGP SIGNATURE-----
> --------------enigFA970E325419AA4704D394C4--

Strange, I thought I fixed this in commit 282, but according to history it got
reverted back in 288 by accident. Thanks for letting us know!

Regards
Iain


More information about the D.gnu mailing list