Linux Archive

Linux Archive (http://www.linux-archive.org/)
-   Fedora Development (http://www.linux-archive.org/fedora-development/)
-   -   Building mono-2.8 for 64 bit - possible solution to the problem (http://www.linux-archive.org/fedora-development/439417-building-mono-2-8-64-bit-possible-solution-problem.html)

"Paul F. Johnson" 10-13-2010 09:10 PM

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...

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.

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

Josh Boyer 10-13-2010 09:39 PM

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

Roland McGrath 10-13-2010 09:42 PM

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

"Paul F. Johnson" 10-13-2010 09:42 PM

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

"Paul F. Johnson" 10-13-2010 09:48 PM

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

Roland McGrath 10-13-2010 09:56 PM

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

"Paul F. Johnson" 10-13-2010 10:00 PM

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

Kevin Kofler 10-13-2010 11:44 PM

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

Kevin Kofler 10-13-2010 11:47 PM

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

Roland McGrath 10-14-2010 01:45 AM

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


All times are GMT. The time now is 01:47 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.