[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh.
From: |
Yann Dirson |
Subject: |
Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh. |
Date: |
Fri, 24 Sep 2010 07:59:08 +0200 |
User-agent: |
Mutt/1.5.20 (2009-06-14) |
On Thu, Sep 23, 2010 at 11:44:45PM +0200, Gunnar Farneb?ck wrote:
> On 09/23/10 20:52, Yann Dirson wrote:
> >configure does report results for the compiler's target platform
> >(which autostuff calls "host machine", it reserves "target machine" to
> >talk about the target of a toolchain when we are building one - so the
> >"canadian cross" setup is building on a "build machine" a compiler
> >that will run on "host machine" to build binaries for "target
> >machine" - now *that* is fishy ;)
>
> Ok, so then the world is basically sane. Is there any way of making
> the target SIZEOF_LONG available to the native build?
It is already available, since for cross-compilation ./configure does
not run for the build machine.
> >>Here's an experiment you could try. After running configure on your
> >>64-bit machine, change SIZEOF_LONG to 4, then do your cross-build and
> >>see if fusekiN.c compiles better.
> >
> >It correctly reports SIZEOF_LONG as 4 when I cross-compîle, and 8 when
> >I compile natively. But since my "build machine" printf's 64bit
> >longs, the cross-compiler with 32bit longs issues truncation warnings.
>
> My idea is to cheat the native compilation to build with SIZEOF_LONG 4
> despite sizeof(long) being 8. But apparently it's also necessary to
> first make this modification:
>
> diff --git a/engine/hash.c b/engine/hash.c
> index 6ccf892..ee18352 100644
> --- a/engine/hash.c
> +++ b/engine/hash.c
> @@ -60,7 +60,7 @@ hash_rand(void)
> int i;
> Hashvalue h = 0;
>
> - for (i = 0; 32*i < (int) (CHAR_BIT*sizeof(Hashvalue)); i++)
> + for (i = 0; 32*i < (int) (CHAR_BIT*SIZEOF_HASHVALUE); i++)
> h |= (Hashvalue) gg_urand() << 32*i;
>
> return h;
Ah, that may be what I missed.
> After that uncompress_fuseki builds perfectly fine 32 bit fusekiN.c.
> Unfortunately this won't work the other way round with forging
> SIZEOF_LONG 8 when sizeof(long) is 4. (Not to speak of the horrors of
> having different CHAR_BIT on host and target...)
>
> The primary problem is that, for efficiency reasons, uncompress_fuseki
> generates hash values which are built into the final binary, so
> uncompress_fuseki must agree on the hash value details with the board
> library in the final build. This can be achieved by either:
> 1. Building for and running uncompress_fuseki on the target platform.
> 2. Having identical datatypes for Hashvalue on host and target.
> 3. Giving uncompress_fuseki information about the size of Hashvalue on
> the target platform.
>
> Alternative one is really the proper solution, although impractical in
> practice. The second option is of course what your patch aims at but
> it doesn't make proper use 64 bit registers when such are available,
> there's no guarantee that uint32 exists (iirc), and it won't build
> with c99 unaware compilers (I think). I really like the simplicity of
> just using long.
>
> The third option requires that SIZEOF_LONG (and to be picky CHAR_BIT)
> for the target is available to the native build and a bit more work to
> make proper use of the knowledge. I'd prefer this approach if it's
> feasible.
Sounds sane.
On a sidenode, rumors of full success of the testsuite on gta02 are
slightly exagerated: it still has not finished (after nearly 36
hours), and there is finally (at least) this failure:
./regress.sh . nngs4.tst
480 unexpected FAIL: Correct 'R16', got 'Q17'
- [gnugo-devel] [PATCH SERIES] Cross-compilation support., Yann Dirson, 2010/09/14
- [gnugo-devel] [PATCH 1/4] Add AC_CANONICAL_BUILD for cross-build support., Yann Dirson, 2010/09/14
- [gnugo-devel] [PATCH 2/4] Add support for BUILD_ for cross-building., Yann Dirson, 2010/09/14
- [gnugo-devel] [PATCH 3/4] Make libs also generate native versions, use them when needed., Yann Dirson, 2010/09/14
- Message not available
- [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Yann Dirson, 2010/09/15
- Message not available
- Message not available
- Message not available
- Message not available
- Message not available
- Message not available
- Message not available
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Yann Dirson, 2010/09/23
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Gunnar Farnebäck, 2010/09/23
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh.,
Yann Dirson <=
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Yann Dirson, 2010/09/24
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Gunnar Farnebäck, 2010/09/25
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Yann Dirson, 2010/09/25
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Gunnar Farnebäck, 2010/09/25
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Yann Dirson, 2010/09/26
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Gunnar Farnebäck, 2010/09/26
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Yann Dirson, 2010/09/26
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Gunnar Farnebäck, 2010/09/26
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Gunnar Farnebäck, 2010/09/27