Building mono-2.8 for 64 bit - possible solution to the problem
Hi,
In the wee small hours (UK time), I submitted mono-2.8 to koji.
Unfortunately, it failed to build for 64 bit systems and gave the
following error
In file included from sgen-gc.c:784:0:
sgen-los.c: In function 'los_scan_card_table':
sgen-los.c:482:21: warning: initialization from incompatible pointer
type
sgen-los.c:501:15: warning: comparison of distinct pointer types lacks a
cast
sgen-gc.c: At top level:
sgen-cardtable.c:229:1: warning: 'collect_faulted_cards' defined but not
used
{standard input}: Assembler messages:
{standard input}:24487: Error: @TLSLDM reloc is not supported with
64-bit output format
{standard input}:24487: Error: junk `@tlsld' after expression
make[3]: *** [libmonoruntimesgen_la-sgen-gc.lo] Error 1
After Googling around, I think I've hit the cause - it's down to the
cross compiler used on koji (or could be). I found this...
which seems to point to the cross compilation being the problem for
building mono on the 64 bit buildsys.
Could someone please confirm this is the problem before I bung it into
the big red lizard for fixing? If it is the problem, what component to I
file it against?
Thanks
Paul
--
Vertraue mir, ich weiss, was ich mache...
--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
10-13-2010, 09:39 PM
Josh Boyer
Building mono-2.8 for 64 bit - possible solution to the problem
On Wed, Oct 13, 2010 at 5:10 PM, Paul F. Johnson
<paul@all-the-johnsons.co.uk> wrote:
> Hi,
>
> In the wee small hours (UK time), I submitted mono-2.8 to koji.
> Unfortunately, it failed to build for 64 bit systems and gave the
> following error
>
> In file included from sgen-gc.c:784:0:
> sgen-los.c: In function 'los_scan_card_table':
> sgen-los.c:482:21: warning: initialization from incompatible pointer
> type
> sgen-los.c:501:15: warning: comparison of distinct pointer types lacks a
> cast
> sgen-gc.c: At top level:
> sgen-cardtable.c:229:1: warning: 'collect_faulted_cards' defined but not
> used
> {standard input}: Assembler messages:
> {standard input}:24487: Error: @TLSLDM reloc is not supported with
> 64-bit output format
> {standard input}:24487: Error: junk `@tlsld' after expression
> make[3]: *** [libmonoruntimesgen_la-sgen-gc.lo] Error 1
>
> After Googling around, I think I've hit the cause - it's down to the
> cross compiler used on koji (or could be). I found this...
koji doesn't cross compile at all.
> http://www.mail-archive.com/unattended-devel@lists.sourceforge.net/msg02316.html
>
> which seems to point to the cross compilation being the problem for
> building mono on the 64 bit buildsys.
If you look at your own build.log, you'll see very clearly during the
configure output that it is not cross compiling.
josh
--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
10-13-2010, 09:42 PM
Roland McGrath
Building mono-2.8 for 64 bit - possible solution to the problem
> {standard input}: Assembler messages:
> {standard input}:24487: Error: @TLSLDM reloc is not supported with
> 64-bit output format
> {standard input}:24487: Error: junk `@tlsld' after expression
> make[3]: *** [libmonoruntimesgen_la-sgen-gc.lo] Error 1
This is certainly a case of compiling i386 code and then trying to link it
as x86-64 (or with other code compiled for x86-64).
> After Googling around, I think I've hit the cause - it's down to the
> cross compiler used on koji (or could be). I found this...
>
> http://www.mail-archive.com/unattended-devel@lists.sourceforge.net/msg02316.html
>
> which seems to point to the cross compilation being the problem for
> building mono on the 64 bit buildsys.
If what you really intend is to compile i[3-6]86 code in an x86_64 rpm,
then indeed you need to make sure that you are passing -m32 for all
the compiler invocations any compilation or linking of the 32-bit code.
Thanks,
Roland
--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
10-13-2010, 09:42 PM
"Paul F. Johnson"
Building mono-2.8 for 64 bit - possible solution to the problem
Hi,
> > After Googling around, I think I've hit the cause - it's down to the
> > cross compiler used on koji (or could be). I found this...
>
> koji doesn't cross compile at all.
In that case, it looks like TLS support is not in the 64 bit version of
glibc...
TTFN
Paul
--
Vertraue mir, ich weiss, was ich mache...
--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
10-13-2010, 09:48 PM
"Paul F. Johnson"
Building mono-2.8 for 64 bit - possible solution to the problem
Hi,
> > {standard input}: Assembler messages:
> > {standard input}:24487: Error: @TLSLDM reloc is not supported with
> > 64-bit output format
> > {standard input}:24487: Error: junk `@tlsld' after expression
> > make[3]: *** [libmonoruntimesgen_la-sgen-gc.lo] Error 1
>
> This is certainly a case of compiling i386 code and then trying to link it
> as x86-64 (or with other code compiled for x86-64).
In previous incarnations of mono, this has worked without a hitch
> > After Googling around, I think I've hit the cause - it's down to the
> > cross compiler used on koji (or could be). I found this...
> >
> > http://www.mail-archive.com/unattended-devel@lists.sourceforge.net/msg02316.html
> >
> > which seems to point to the cross compilation being the problem for
> > building mono on the 64 bit buildsys.
>
> If what you really intend is to compile i[3-6]86 code in an x86_64 rpm,
> then indeed you need to make sure that you are passing -m32 for all
> the compiler invocations any compilation or linking of the 32-bit code.
I'm not sure in this case. As I've said, the last version (2.6.7-3)
build fine on the 64 bit boxes without the need to pass any flags to the
compiler so either Novell has messed with something or the buildsys is
not being nice to me. Can't decide which...
TTFN
Paul
--
Vertraue mir, ich weiss, was ich mache...
--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
10-13-2010, 09:56 PM
Roland McGrath
Building mono-2.8 for 64 bit - possible solution to the problem
> Hi,
>
> > > {standard input}: Assembler messages:
> > > {standard input}:24487: Error: @TLSLDM reloc is not supported with
> > > 64-bit output format
> > > {standard input}:24487: Error: junk `@tlsld' after expression
> > > make[3]: *** [libmonoruntimesgen_la-sgen-gc.lo] Error 1
> >
> > This is certainly a case of compiling i386 code and then trying to link it
> > as x86-64 (or with other code compiled for x86-64).
>
> In previous incarnations of mono, this has worked without a hitch
You mean that building some different code worked on x86-64, right? Not
that you are specifically aware that Mono compiles i386 code and then links
it together with x86-64 code. If you mean the latter, color me doubtful.
> I'm not sure in this case. As I've said, the last version (2.6.7-3)
> build fine on the 64 bit boxes without the need to pass any flags to the
> compiler so either Novell has messed with something or the buildsys is
> not being nice to me. Can't decide which...
It seems nearly certain that the Mono code broke to do something dumb.
Have you built it by hand on any x86-64 system?
Thanks,
Roland
--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
10-13-2010, 10:00 PM
"Paul F. Johnson"
Building mono-2.8 for 64 bit - possible solution to the problem
Hi,
> It seems nearly certain that the Mono code broke to do something dumb.
Quite possibly...
> Have you built it by hand on any x86-64 system?
I would if I had a 64 bit box...
TTFN
Paul
--
Vertraue mir, ich weiss, was ich mache...
--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
10-13-2010, 11:44 PM
Kevin Kofler
Building mono-2.8 for 64 bit - possible solution to the problem
Roland McGrath wrote:
> If what you really intend is to compile i[3-6]86 code in an x86_64 rpm,
> then indeed you need to make sure that you are passing -m32 for all
> the compiler invocations any compilation or linking of the 32-bit code.
Uh, -m32 is not supposed to get used in Fedora builds, in fact it will
normally not work because there are no 32-bit libraries in the buildroot.
And the problem at hand might even be caused by -m32 (ab)use in the first
place.
Kevin Kofler
--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
10-13-2010, 11:47 PM
Kevin Kofler
Building mono-2.8 for 64 bit - possible solution to the problem
Paul F. Johnson wrote:
> In file included from sgen-gc.c:784:0:
> sgen-los.c: In function 'los_scan_card_table':
> sgen-los.c:482:21: warning: initialization from incompatible pointer
> type
> sgen-los.c:501:15: warning: comparison of distinct pointer types lacks a
> cast
Those might be 64-bit-safety issues, depending on what the 2 offending
pointer types are.
> sgen-gc.c: At top level:
> sgen-cardtable.c:229:1: warning: 'collect_faulted_cards' defined but not
> used
This is harmless.
> {standard input}: Assembler messages:
> {standard input}:24487: Error: @TLSLDM reloc is not supported with
> 64-bit output format
> {standard input}:24487: Error: junk `@tlsld' after expression
> make[3]: *** [libmonoruntimesgen_la-sgen-gc.lo] Error 1
This is the error. Is there any inline assembly being used? I suspect that
there's 32-bit-only inline assembly involved here (unless it's C code being
compiled to assembly with -m32 and then assembled as 64-bit or some other
completely stupid thing like that, but inline assembly is my #1 suspect).
Kevin Kofler
--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
10-14-2010, 01:45 AM
Roland McGrath
Building mono-2.8 for 64 bit - possible solution to the problem
Hmm. I did a build with:
mock -r fedora-rawhide-x86_64 mono-2.8-1.1.fc15.src.rpm
on an f13/x86-64 host and it finished without complaint.
All the resultant binaries are 64-bit, not 32-bit.
So any hacks with -m32 are surely quite wrong.
Perhaps something is indeed wonky in koji, or maybe some prerequisite just
got broken and fixed since. You should try just resubmitting the package
build.
Thanks,
Roland
--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel