aboutsummaryrefslogtreecommitdiff
path: root/libgupc/config/darwin/upc-crt-config.h
blob: 2fa35d13046b14cb1ed7ffe22c9f9b795778e47f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#define _XSTR(X) #X
#define _STR(S) _XSTR(S)

#define DARWIN_DEF_SECT_SYM(TYPE, SECT, SUFFIX) \
	__asm__ (".globl ___" _STR(SECT) "_" _STR(SUFFIX) "\n" \
	"\t.section __" _STR(TYPE) "," _STR(SECT) "\n" \
	"___" _STR(SECT) "_" _STR(SUFFIX) ":\n")

#define DARWIN_DEF_SECT_BEGIN(TYPE, SECT) \
        DARWIN_DEF_SECT_SYM (TYPE, SECT, start)

#define DARWIN_DEF_SECT_END(TYPE, SECT) \
        DARWIN_DEF_SECT_SYM (TYPE, SECT, end)

/* Define UPC sections via __asm__ as zero space cannot be
   allocated on Darwin OS via the usual method.  */

#define UPC_SHARED_SECTION_BEGIN \
	DARWIN_DEF_SECT_BEGIN (DATA, GUPCR_SHARED_SECTION_NAME); \
	__asm__ (".space 256\n");
#define UPC_SHARED_SECTION_END \
	DARWIN_DEF_SECT_END (DATA, GUPCR_SHARED_SECTION_NAME);
#define UPC_PGM_INFO_SECTION_BEGIN \
	DARWIN_DEF_SECT_BEGIN (DATA, GUPCR_PGM_INFO_SECTION_NAME);
#define UPC_PGM_INFO_SECTION_END \
	DARWIN_DEF_SECT_END (DATA, GUPCR_PGM_INFO_SECTION_NAME);
#define UPC_INIT_ARRAY_SECTION_BEGIN \
	DARWIN_DEF_SECT_BEGIN (DATA, GUPCR_INIT_ARRAY_SECTION_NAME);
#define UPC_INIT_ARRAY_SECTION_END \
	DARWIN_DEF_SECT_END (DATA, GUPCR_INIT_ARRAY_SECTION_NAME);