All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tom <fivemiletom@gmail.com>
To: Sam Ravnborg <sam@ravnborg.org>
Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.arm.linux.org.uk
Subject: Re: [PATCH 2.6.21.3] kbuild: fix build for cygwin
Date: Fri, 08 Jun 2007 18:47:46 -0700	[thread overview]
Message-ID: <466A06C2.5090801@gmail.com> (raw)
In-Reply-To: <20070608201527.GC25468@uranus.ravnborg.org>

Sam Ravnborg wrote:
> On Fri, Jun 08, 2007 at 11:32:29AM -0700, Tom wrote:
>> From: Tom Enderes <enderes@gmail.com>
>>
>> The kernel build failed on cygwin hosts, because cygwin has slightly 
>> different typedefs compared to linux:
>> scripts/mod/file2alias.c:518: error: dereferencing pointer to incomplete
>> type
>> Two files, scripts/mod/file2alias.c and scripts/mod/modpost.h, were 
>> modified as follows:
>> Whever __CYGWIN__ is defined, __uint32 is defined as __uint32_t (instead 
>> of uint_32_t) and the missing ElfxxSection definitions are added.
>> These changes have been tested both on cygwin 1.5.24, hostcc=gcc 3.4.4 
>> and on FC5, hostcc=gcc 4.1.1-1. Any tests on cygwin, with and without 
>> this change, were executed with the following set for make: 
>> HOST_LOADLIBES="-lcurses -lintl".
>>
>> Signed-off-by: Tom Enderes <enderes@gmail.com>
>>
>>
>> diff -Naur -r o21.1/scripts/mod/file2alias.c
>> 2.6.21.1/scripts/mod/file2alias.c
>> --- o21.1/scripts/mod/file2alias.c    2007-04-27 14:49:26.000000000 -0700
>> +++ 2.6.21.1/scripts/mod/file2alias.c    2007-05-29 20:35:01.209115300
>> -0700
>> @@ -29,7 +29,11 @@
>>
>>  #include <ctype.h>
>>
>> +#ifdef __CYGWIN__
>> +typedef __uint32_t      __u32;
>> +#else
>>  typedef uint32_t    __u32;
>> +#endif
>>  typedef uint16_t    __u16;
>>  typedef unsigned char    __u8;
> This change is wrong.
> Somehow __uint32_t_defined gets defined and cygwin fails to define
> uint32_t.
> 
> So we have hit a bug in cygwin here.
> 
> Browsing the code I think that including inttypes.h much sooner will fix it.
> In file2alias.c I moved include of inttypes.h up.
> 
>  
>> diff -Naur -r o21.1/scripts/mod/modpost.h 2.6.21.1/scripts/mod/modpost.h
>> --- o21.1/scripts/mod/modpost.h    2007-04-27 14:49:26.000000000 -0700
>> +++ 2.6.21.1/scripts/mod/modpost.h    2007-05-29 20:35:01.599732800
>> -0700
>> @@ -9,6 +9,11 @@
>>  #include <unistd.h>
>>  #include <elf.h>
>>
>> +#ifdef __CYGWIN__
>> +typedef uint16_t Elf32_Section;
>> +typedef uint16_t Elf64_Section;
>> +#endif
> 
> I did this in an alternative way.
> Replacing use of Elf32_section with Elf32_Half did the trick.
> Same for the 64 bit type.
> 
> 
> Let me know if this works on Cygwin.

This is what I got on cygwin:

In file included from scripts/mod/../../include/linux/input.h:19,
                  from scripts/mod/file2alias.c:41:
/usr/include/asm/types.h:21: error: conflicting types for '__u32'
scripts/mod/file2alias.c:33: error: previous declaration of '__u32' was here
scripts/mod/file2alias.c: In function `do_ieee1394_entry':
scripts/mod/file2alias.c:193: warning: unsigned int format, __u32 arg 
(arg 3)
scripts/mod/file2alias.c:195: warning: unsigned int format, __u32 arg 
(arg 3)
scripts/mod/file2alias.c:197: warning: unsigned int format, __u32 arg 
(arg 3)
scripts/mod/file2alias.c:199: warning: unsigned int format, __u32 arg 
(arg 3)
scripts/mod/file2alias.c: In function `do_pci_entry':
scripts/mod/file2alias.c:221: warning: unsigned int format, __u32 arg 
(arg 3)
scripts/mod/file2alias.c:222: warning: unsigned int format, __u32 arg 
(arg 3)
scripts/mod/file2alias.c:223: warning: unsigned int format, __u32 arg 
(arg 3)
scripts/mod/file2alias.c:224: warning: unsigned int format, __u32 arg 
(arg 3)
scripts/mod/file2alias.c: In function `do_pcmcia_entry':
scripts/mod/file2alias.c:346: warning: unsigned int format, long 
unsigned int ar
g (arg 3)
scripts/mod/file2alias.c:347: warning: unsigned int format, long 
unsigned int ar
g (arg 3)
scripts/mod/file2alias.c:348: warning: unsigned int format, long 
unsigned int ar
g (arg 3)
scripts/mod/file2alias.c:349: warning: unsigned int format, long 
unsigned int ar
g (arg 3)
scripts/mod/file2alias.c: In function `do_parisc_entry':
scripts/mod/file2alias.c:469: warning: unsigned int format, __u32 arg 
(arg 3)
make[2]: *** [scripts/mod/file2alias.o] Error 1
make[1]: *** [scripts/mod] Error 2
make: *** [scripts] Error 2


> I have tested with a few architectures on Linux with success.
> 
> (Needs to look into the lib part next).
> 
> Thanks for keeping attention on this.
> 
> 	Sam
> 
> diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
> index f646381..5e017a9 100644
> --- a/scripts/mod/file2alias.c
> +++ b/scripts/mod/file2alias.c
> @@ -10,6 +10,14 @@
>   * of the GNU General Public License, incorporated herein by reference.
>   */
>  
> +#ifdef __sun__
> +#include <inttypes.h>
> +#else
> +#include <stdint.h>
> +#endif
> +
> +#include <ctype.h>
> +
>  #include "modpost.h"
>  
>  /* We use the ELF typedefs for kernel_ulong_t but bite the bullet and
> @@ -21,13 +29,6 @@ typedef Elf32_Addr	kernel_ulong_t;
>  typedef Elf64_Addr	kernel_ulong_t;
>  #define BITS_PER_LONG 64
>  #endif
> -#ifdef __sun__
> -#include <inttypes.h>
> -#else
> -#include <stdint.h>
> -#endif
> -
> -#include <ctype.h>
>  
>  typedef uint32_t	__u32;
>  typedef uint16_t	__u16;
> diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h
> index 4156dd3..0ffed17 100644
> --- a/scripts/mod/modpost.h
> +++ b/scripts/mod/modpost.h
> @@ -17,7 +17,7 @@
>  #define Elf_Shdr    Elf32_Shdr
>  #define Elf_Sym     Elf32_Sym
>  #define Elf_Addr    Elf32_Addr
> -#define Elf_Section Elf32_Section
> +#define Elf_Section Elf32_Half
>  #define ELF_ST_BIND ELF32_ST_BIND
>  #define ELF_ST_TYPE ELF32_ST_TYPE
>  
> @@ -31,7 +31,7 @@
>  #define Elf_Shdr    Elf64_Shdr
>  #define Elf_Sym     Elf64_Sym
>  #define Elf_Addr    Elf64_Addr
> -#define Elf_Section Elf64_Section
> +#define Elf_Section Elf64_Half
>  #define ELF_ST_BIND ELF64_ST_BIND
>  #define ELF_ST_TYPE ELF64_ST_TYPE
>  
> 


  reply	other threads:[~2007-06-09  1:46 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <46608757.4020503@gmail.com>
     [not found] ` <20070601212208.GA4559@uranus.ravnborg.org>
     [not found]   ` <4660971E.5020609@gmail.com>
     [not found]     ` <12D4B80525C5B744A216276E209921D9CE8016@MIAMI.xi-lite.lan>
2007-06-04 18:45       ` RE : Building kernel 2.6.21.3 for arm on cygwin Tom
2007-06-07 20:47         ` Sam Ravnborg
2007-06-08 15:57           ` Matthieu CASTET
2007-06-08 22:10             ` Sam Ravnborg
2007-06-09  7:51               ` Jan Engelhardt
2007-06-11  7:25               ` Matthieu CASTET
2007-06-08 18:32           ` [PATCH 2.6.21.3] kbuild: fix build for cygwin Tom
2007-06-08 20:15             ` Sam Ravnborg
2007-06-09  1:47               ` Tom [this message]
2007-08-28 19:34             ` Sam Ravnborg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=466A06C2.5090801@gmail.com \
    --to=fivemiletom@gmail.com \
    --cc=linux-arm-kernel@lists.arm.linux.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sam@ravnborg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.