]>
Commit | Line | Data |
---|---|---|
2aa62f2b | 1 | /* $NetBSD: cdefs_aout.h,v 1.20 2006/05/18 17:55:38 christos Exp $ */\r |
2 | \r | |
3 | /*\r | |
4 | * Written by J.T. Conklin <jtc@wimsey.com> 01/17/95.\r | |
5 | * Public domain.\r | |
6 | */\r | |
7 | \r | |
8 | #ifndef _SYS_CDEFS_AOUT_H_\r | |
9 | #define _SYS_CDEFS_AOUT_H_\r | |
10 | \r | |
11 | #define _C_LABEL(x) __CONCAT(_,x)\r | |
12 | #define _C_LABEL_STRING(x) "_"x\r | |
13 | \r | |
d7ce7006 | 14 | #define ___RENAME(x)\r |
2aa62f2b | 15 | \r |
16 | #define __indr_reference(sym,alias) /* nada, since we do weak refs */\r | |
17 | \r | |
18 | #ifdef __GNUC__\r | |
19 | #if __STDC__\r | |
20 | #ifndef DONT_USE_STRONG_WEAK_ALIAS\r | |
21 | #define __strong_alias(alias,sym) \\r | |
22 | __asm(".global " _C_LABEL_STRING(#alias) "\n" \\r | |
23 | _C_LABEL_STRING(#alias) " = " _C_LABEL_STRING(#sym));\r | |
24 | #define __weak_alias(alias,sym) \\r | |
25 | __asm(".weak " _C_LABEL_STRING(#alias) "\n" \\r | |
26 | _C_LABEL_STRING(#alias) " = " _C_LABEL_STRING(#sym));\r | |
27 | \r | |
28 | /* Do not use __weak_extern, use __weak_reference instead */\r | |
29 | #define __weak_extern(sym) \\r | |
30 | __asm(".weak " _C_LABEL_STRING(#sym));\r | |
31 | \r | |
32 | #if __GNUC_PREREQ__(4, 0)\r | |
33 | #define __weak_reference(sym) __attribute__((__weakref__))\r | |
34 | #else\r | |
35 | #define __weak_reference(sym) ; __asm(".weak " _C_LABEL_STRING(#sym))\r | |
36 | #endif\r | |
37 | \r | |
38 | #define __warn_references(sym,msg) \\r | |
39 | __asm(".stabs \"" msg "\",30,0,0,0"); \\r | |
40 | __asm(".stabs \"_" #sym "\",1,0,0,0");\r | |
41 | #else\r | |
42 | #define __strong_alias(alias,sym) /* NOTHING */\r | |
43 | #define __weak_alias(alias,sym) /* NOTHING */\r | |
44 | #define __weak_extern(sym) /* NOTHING */\r | |
45 | #define __weak_reference(sym) /* NOTHING */\r | |
46 | \r | |
47 | #define __warn_references(sym,msg) \\r | |
48 | __asm(".stabs \"" msg "\",30,0,0,0"); \\r | |
49 | __asm(".stabs \"_" #sym "\",1,0,0,0");\r | |
50 | #endif\r | |
51 | #else /* __STDC__ */\r | |
52 | #define __weak_alias(alias,sym) ___weak_alias(_/**/alias,_/**/sym)\r | |
53 | #define ___weak_alias(alias,sym) \\r | |
54 | __asm(".weak alias\nalias = sym");\r | |
55 | /* Do not use __weak_extern, use __weak_reference instead */\r | |
56 | #define __weak_extern(sym) ___weak_extern(_/**/sym)\r | |
57 | #define ___weak_extern(sym) \\r | |
58 | __asm(".weak sym");\r | |
59 | \r | |
60 | #if __GNUC_PREREQ__(4, 0)\r | |
61 | #define __weak_reference(sym) __attribute__((__weakref__))\r | |
62 | #else\r | |
63 | #define ___weak_reference(sym) ; __asm(".weak sym");\r | |
64 | #define __weak_reference(sym) ___weak_reference(_/**/sym)\r | |
65 | #endif\r | |
66 | \r | |
67 | #define __warn_references(sym,msg) \\r | |
68 | __asm(".stabs msg,30,0,0,0"); \\r | |
69 | __asm(".stabs \"_/**/sym\",1,0,0,0");\r | |
70 | #endif /* __STDC__ */\r | |
71 | #else /* __GNUC__ */\r | |
72 | #define __warn_references(sym,msg)\r | |
73 | #endif /* __GNUC__ */\r | |
74 | \r | |
75 | #if defined(__sh__) /* XXX SH COFF */\r | |
76 | #undef __indr_reference(sym,alias)\r | |
77 | #undef __warn_references(sym,msg)\r | |
78 | #define __warn_references(sym,msg)\r | |
79 | #endif\r | |
80 | \r | |
81 | #define __IDSTRING(_n,_s) \\r | |
82 | __asm(".data ; .asciz \"" _s "\" ; .text")\r | |
83 | \r | |
84 | #undef __KERNEL_RCSID\r | |
85 | \r | |
53e1e5c6 | 86 | //#define __RCSID(_s) __IDSTRING(rcsid,_s)\r |
87 | #define __RCSID(_s)\r | |
2aa62f2b | 88 | #define __SCCSID(_s)\r |
89 | #define __SCCSID2(_s)\r | |
90 | #if 0 /* XXX userland __COPYRIGHTs have \ns in them */\r | |
91 | #define __COPYRIGHT(_s) __IDSTRING(copyright,_s)\r | |
92 | #else\r | |
93 | #define __COPYRIGHT(_s) \\r | |
94 | static const char copyright[] __attribute__((__unused__)) = _s\r | |
95 | #endif\r | |
96 | \r | |
97 | #if defined(USE_KERNEL_RCSIDS) || !defined(_KERNEL)\r | |
98 | #define __KERNEL_RCSID(_n,_s) __IDSTRING(__CONCAT(rcsid,_n),_s)\r | |
99 | #else\r | |
100 | #define __KERNEL_RCSID(_n,_s)\r | |
101 | #endif\r | |
102 | #define __KERNEL_SCCSID(_n,_s)\r | |
103 | #define __KERNEL_COPYRIGHT(_n, _s) __IDSTRING(__CONCAT(copyright,_n),_s)\r | |
104 | \r | |
105 | #ifndef __lint__\r | |
106 | #define __link_set_make_entry(set, sym, type) \\r | |
107 | static void const * const \\r | |
108 | __link_set_##set##_sym_##sym __used = &sym; \\r | |
109 | __asm(".stabs \"___link_set_" #set "\", " #type ", 0, 0, _" #sym)\r | |
110 | #else\r | |
111 | #define __link_set_make_entry(set, sym, type) \\r | |
112 | extern void const * const __link_set_##set##_sym_##sym\r | |
113 | #endif /* __lint__ */\r | |
114 | \r | |
115 | #define __link_set_add_text(set, sym) __link_set_make_entry(set, sym, 23)\r | |
116 | #define __link_set_add_rodata(set, sym) __link_set_make_entry(set, sym, 23)\r | |
117 | #define __link_set_add_data(set, sym) __link_set_make_entry(set, sym, 25)\r | |
118 | #define __link_set_add_bss(set, sym) __link_set_make_entry(set, sym, 27)\r | |
119 | \r | |
120 | #define __link_set_decl(set, ptype) \\r | |
121 | extern struct { \\r | |
122 | int __ls_length; \\r | |
123 | ptype *__ls_items[1]; \\r | |
124 | } __link_set_##set\r | |
125 | \r | |
126 | #define __link_set_start(set) (&(__link_set_##set).__ls_items[0])\r | |
127 | #define __link_set_end(set) \\r | |
128 | (&(__link_set_##set).__ls_items[(__link_set_##set).__ls_length])\r | |
129 | \r | |
130 | #define __link_set_count(set) ((__link_set_##set).__ls_length)\r | |
131 | \r | |
132 | #endif /* !_SYS_CDEFS_AOUT_H_ */\r |