On 11/5/12, Simon Marlow <marlo...@gmail.com> wrote: > On 03/11/2012 00:16, Ian Lynagh wrote: >> >> Hi Karel, >> >> On Fri, Nov 02, 2012 at 07:39:45PM +0100, Karel Gardas wrote: >>> >>> I'm curious if this patch is kind of controversial so you are >>> reluctant to merge it. If you find any issue with it please let me >>> know so I can change it as per your suggestion. I've done this patch >>> to un-break GHC HEAD build failure on my solaris 11 box. >> >> If we're going to go this route, then I think we should do it by >> comparing SIZEOF_VOID_P to SIZEOF_INT etc, rather than assuming that >> either 'ld' or 'd' is right based on _LP64. >> >> However, I'm hoping to replace mkDerivedConstants.c with probably a >> configure script soon, so that it can produce the right results when >> cross-compiling. > > Yes we need to replace mkDerivedConstants.c with something else for > cross compilation, but I really hope it doesn't have to be a configure > script :-) Surely it's possible to convince the C compiler to emit > struct offsets without having to run the program, somehow?
+1. A configure script will run (almost) till the heat death of the universe. I have a solution on the cross-compiler-alienless branch which does exactly what you propose: feed the relevant headers into the cross-gcc, obtain the offsets/sizes back by 'nm', and massage stuff to obtain all as macros then feed those into mkDerivedConstants.c. So, unless we want a very generic solution, where more than one cross target is possible, there is no need to abolish mkDerivedConstants.c. The current architecture would do with a few tweaks. Cheers, Gabor > > Cheers, > Simon > > > > > > >>> On 10/30/12 06:59 PM, Karel Gardas wrote: >>>> Note that PRIdPTR is considered as linux-ism so it's not available on >>>> platforms >>>> like Solaris, although some other free Unix(-like) OSes apparently >>>> supports >>>> it too. >>>> --- >>>> includes/mkDerivedConstants.c | 11 +++++++++++ >>>> 1 files changed, 11 insertions(+), 0 deletions(-) >>>> >>>> diff --git a/includes/mkDerivedConstants.c >>>> b/includes/mkDerivedConstants.c >>>> index 1393112..953b2b5 100644 >>>> --- a/includes/mkDerivedConstants.c >>>> +++ b/includes/mkDerivedConstants.c >>>> @@ -30,6 +30,17 @@ >>>> #include<stdio.h> >>>> #include<string.h> >>>> >>>> + >>>> +#if !defined(PRIdPTR) >>>> +#if defined(_LP64) >>>> +/* compiling for 64bit target */ >>>> +#define PRIdPTR "ld" >>>> +#else >>>> +/* compiling for 32bit target */ >>>> +#define PRIdPTR "d" >>>> +#endif >>>> +#endif >> >> >> Thanks >> Ian >> >> >> _______________________________________________ >> Cvs-ghc mailing list >> Cvs-ghc@haskell.org >> http://www.haskell.org/mailman/listinfo/cvs-ghc >> > > > _______________________________________________ > Cvs-ghc mailing list > Cvs-ghc@haskell.org > http://www.haskell.org/mailman/listinfo/cvs-ghc > _______________________________________________ Cvs-ghc mailing list Cvs-ghc@haskell.org http://www.haskell.org/mailman/listinfo/cvs-ghc