[csw-maintainers] Building MySQL 5.1.x

Philip Brown phil at bolthole.com
Thu Aug 12 19:51:34 CEST 2010


On 8/12/10, Maciej (Matchek) Blizinski <maciej at opencsw.org> wrote:
>
>
> 2. Compilation fails on sparc:
>
> "../include/my_global.h", line 1046: #error: sizeof(void *) is neither
> sizeof(int) nor sizeof(long) nor sizeof(long long)
> cc: acomp failed for strxmov.c
>
> Is this a known problem with a known fix or workaround?
>

well thats surprising.

its really just looking for "size of address pointer". So replace with
the appropriate typedef, and possibly disable that whole clause.
and/or its trying to determine "is this 32bit or 64bit machine". erm..
sigh.. goes to look at code.
nope, its like I said the first time.

  /*blahblahblah*/
typedef int intptr;


You may note that there are hardcoded definitions for sections such as
#if defined(__APPLE__) && defined(__MACH__)
It's whining about SIZEOF_CHARP



when in doubt, compare to older versions.
The older 5.0.90 has a much simpler, saner approach:

#if SIZEOF_CHARP == 4
typedef long            my_ptrdiff_t;
#else
typedef long long       my_ptrdiff_t;
#endif

although REALLY, it should be

#if SIZEOF_CHARP == 4
typedef uint32_t           my_ptrdiff_t;
#else
typedef uint64_t       my_ptrdiff_t;
#endif


getting even more fancy, since there are already checks for
#ifdef HAVE_SYS_TYPES_H


then I think it may be save to have
#ifdef HAVE_SYS_TYPES_H
#  if SIZEOF_CHARP == 4
typedef uint32_t           my_ptrdiff_t;
#  else
typedef uint64_t       my_ptrdiff_t;
#  endif
#else
/* Original dumb #if SIZEOF_CHARP == SIZEOF_INT   code here */
#endif



HOWEVER, all that being said...
the following code works fine in solaris:
        printf("size of pointer is %d\n", sizeof(void*));

(result: "size of pointer is 4")

so, given that SIZEOF_CHARP seems to be getting calculated wrong...
maybe you need to figure out why that is, and fix it, first.

for what it's worth, I also tried
        printf("size of charp is %d\n", sizeof(char*));
and that also came out to be 4.


More information about the maintainers mailing list