Subject: Modifications of standard headers for PECOFF
To: None <tech-userlevel@netbsd.org>
From: TAMURA Kent <kent@netbsd.org>
List: tech-userlevel
Date: 05/16/2002 15:19:29
I'd like to modify some standard headers as follows to support
PECOFF format, on which the PEACE project [1] bases.

- 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[];

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?


[1] http://chiharu.hauN.org/peace/

-- 
TAMURA Kent <kent2002@hauN.org> <kent@netbsd.org>