Subject: Re: Modifications of standard headers for PECOFF
To: TAMURA Kent <kent@netbsd.org>
From: Jason R Thorpe <thorpej@wasabisystems.com>
List: tech-userlevel
Date: 05/15/2002 23:34:57
On Thu, May 16, 2002 at 03:19:29PM +0900, TAMURA Kent wrote:
> - Add /usr/include/sys/cdefs_pe.h
> - Add LIBC_EXTERN definitions to cdefs_elf.h, cdefs_aout.h and cdefs_pe.h like:
> cdefs_elf.h cdefs_aout.h:
> #define LIBC_EXTERN extern
> cdefs_pe.h:
> #ifdef LIBC
> #define LIBC_EXTERN __declspec(dllexport) extern
> #else
> #define LIBC_EXTERN __declspec(dllimport) extern
> #endif
> - Modify cdefs.h so that it includes cdefs_pe.h if __PECOFF__ is defined.
> - For global variables defined in libc and exposed to the outside of libc,
> add LIBC_EXTERN to their declaration. For example,
> stdio.h:
> extern FILE __sF[];
> ->
> LIBC_EXTERN FILE __sF[];
If these are going to be in header files, it must be in the implementation
namespace. Might I suggest:
__libc_extern FILE __sF[];
...or possibly:
__lib_extern ...
because I guess libraries other than libc would need similar treatment?
Anyway, other than that, I don't see any reason not to allow these
changes.
> The modifications are required because of the special treatment
> for global variables exported/imported over DLLs. In the PEACE
> project, we provide PECOFF versions of some standard libraries
> such as libc.dll. If the standard headers in /usr/include
> supports PECOFF, we don't have to copy the headers and patch
> them.
>
> Any comments?
...it might be nice to have to have the run-time linker in the
main source tree :-)
--
-- Jason R. Thorpe <thorpej@wasabisystems.com>