OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [objc/] [objc-next-metadata-tags.h] - Blame information for rev 717

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 717 jeremybenn
/* Declarations for meta-data attribute tags.
2
   Copyright (C) 2011 Free Software Foundation, Inc.
3
   Contributed by Iain Sandoe
4
 
5
This file is part of GCC.
6
 
7
GCC is free software; you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation; either version 3, or (at your option)
10
any later version.
11
 
12
GCC is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
GNU General Public License for more details.
16
 
17
You should have received a copy of the GNU General Public License
18
along with GCC; see the file COPYING3.  If not see
19
<http://www.gnu.org/licenses/>.  */
20
 
21
/* These are identifiers used to flag meta-data attributes such that they
22
   survive LTO and might be placed in correct sections for the target.  */
23
 
24
enum objc_runtime_tree_index
25
{
26
  OCTI_RT_OBJC_META,
27
  OCTI_RT_META_BASE,
28
 
29
  OCTI_RT_META_CLASS,
30
  OCTI_RT_META_METACLASS,
31
  OCTI_RT_META_CATEGORY,
32
  OCTI_RT_META_PROTOCOL,
33
 
34
  OCTI_RT_META_CLASS_CLS_VARS,
35
  OCTI_RT_META_CLASS_NST_VARS,
36
 
37
  OCTI_RT_META_CLASS_CLS_METH,
38
  OCTI_RT_META_CLASS_NST_METH,
39
  OCTI_RT_META_CATEG_CLS_METH,
40
  OCTI_RT_META_CATEG_NST_METH,
41
  OCTI_RT_META_PROTO_CLS_METH,
42
  OCTI_RT_META_PROTO_NST_METH,
43
 
44
  OCTI_RT_META_CLASS_PROT,
45
  OCTI_RT_META_CATEG_PROT,
46
  OCTI_RT_META_PROT_REFS,
47
 
48
  OCTI_RT_META_MSG_REFS,
49
  OCTI_RT_META_SEL_REFS,
50
 
51
  OCTI_RT_META_CLSLST_REFS,
52
  OCTI_RT_META_CLASS_REF,
53
  OCTI_RT_META_SUPER_REF,
54
  OCTI_RT_META_CLSLST_NLZY_LAB,
55
  OCTI_RT_META_CLSLST_LAB,
56
  OCTI_RT_META_LAB_PROTOLIST,
57
  OCTI_RT_META_LAB_NLZY_CAT,
58
  OCTI_RT_META_LAB_CAT,
59
 
60
  OCTI_RT_META_PROPERTY_LIST,
61
  OCTI_RT_META_PROTOCOL_EXT,
62
  OCTI_RT_META_CLASS_EXT,
63
 
64
  OCTI_RT_META_CLASS_NAME,
65
  OCTI_RT_META_METHD_NAME,
66
  OCTI_RT_META_METHD_TYPE,
67
  OCTI_RT_META_PROPN_ATTR,
68
 
69
  OCTI_RT_META_MODULES,
70
  OCTI_RT_META_SYMTAB,
71
  OCTI_RT_META_INFO,
72
 
73
  OCTI_RT_META_EHTYPE,
74
 
75
  OCTI_RT_META_CONST_STR,
76
 
77
  OCTI_RT_META_MAX
78
};
79
 
80
/* Tags for the META data so that the backend can put them in the correct
81
   sections for targets/runtimes (Darwin/NeXT) that require this.
82
   This information also survives LTO - which might produce mixed language
83
   output.  */
84
 
85
/* Objective-C meta data attribute tag */
86
#define objc_meta       objc_rt_trees[OCTI_RT_OBJC_META]
87
/* Attribute values, base = default section. */
88
#define meta_base       objc_rt_trees[OCTI_RT_META_BASE]
89
 
90
  /* CLASS.  */
91
#define meta_class      objc_rt_trees[OCTI_RT_META_CLASS]
92
 /* METACLASS.  */
93
#define meta_metaclass  objc_rt_trees[OCTI_RT_META_METACLASS]
94
  /* CLASS.  */
95
#define meta_category   objc_rt_trees[OCTI_RT_META_CATEGORY]
96
  /* PROTOCOL.  */
97
#define meta_protocol   objc_rt_trees[OCTI_RT_META_PROTOCOL]
98
 
99
 /* Class class vars section.  */
100
#define meta_clac_vars  objc_rt_trees[OCTI_RT_META_CLASS_CLS_VARS]
101
 /* Class instance vars section.  */
102
#define meta_clai_vars  objc_rt_trees[OCTI_RT_META_CLASS_NST_VARS]
103
 /* Class class methods section.  */
104
#define meta_clac_meth  objc_rt_trees[OCTI_RT_META_CLASS_CLS_METH]
105
 /* Class instance methods section.  */
106
#define meta_clai_meth  objc_rt_trees[OCTI_RT_META_CLASS_NST_METH]
107
 /* Category class methods section.  */
108
#define meta_catc_meth  objc_rt_trees[OCTI_RT_META_CATEG_CLS_METH]
109
 /* Category instance methods section.  */
110
#define meta_cati_meth  objc_rt_trees[OCTI_RT_META_CATEG_NST_METH]
111
#define meta_proto_cls_meth \
112
                        objc_rt_trees[OCTI_RT_META_PROTO_CLS_METH]
113
#define meta_proto_nst_meth \
114
                        objc_rt_trees[OCTI_RT_META_PROTO_NST_METH]
115
 
116
 /* Class protocols.  */
117
#define meta_clas_prot  objc_rt_trees[OCTI_RT_META_CLASS_PROT]
118
 /* Category protocols.  */
119
#define meta_catg_prot  objc_rt_trees[OCTI_RT_META_CATEG_PROT]
120
 /* Protocol references.  */
121
#define meta_proto_ref  objc_rt_trees[OCTI_RT_META_PROT_REFS]
122
 
123
 /* Message refs.  */
124
#define meta_mref       objc_rt_trees[OCTI_RT_META_MSG_REFS]
125
 /* Selector refs.  */
126
#define meta_sel_refs   objc_rt_trees[OCTI_RT_META_SEL_REFS]
127
 
128
 /* Class list refs.  */
129
#define meta_class_ref  objc_rt_trees[OCTI_RT_META_CLSLST_REFS]
130
#define meta_class_reference \
131
                        objc_rt_trees[OCTI_RT_META_CLASS_REF]
132
#define meta_superclass_ref \
133
                        objc_rt_trees[OCTI_RT_META_SUPER_REF]
134
 /* Class list Label.  */
135
#define meta_label_classlist \
136
                        objc_rt_trees[OCTI_RT_META_CLSLST_LAB]
137
 /* Class list Label (non lazy).  */
138
#define meta_label_nonlazy_classlist \
139
                        objc_rt_trees[OCTI_RT_META_CLSLST_NLZY_LAB]
140
#define meta_label_categorylist \
141
                        objc_rt_trees[OCTI_RT_META_LAB_CAT]
142
#define meta_label_nonlazy_categorylist \
143
                        objc_rt_trees[OCTI_RT_META_LAB_NLZY_CAT]
144
 
145
#define meta_label_protocollist \
146
                        objc_rt_trees[OCTI_RT_META_LAB_PROTOLIST]
147
 
148
 
149
/* V1 - property list.  */
150
#define meta_proplist   objc_rt_trees[OCTI_RT_META_PROPERTY_LIST]
151
#define meta_protocol_extension \
152
                        objc_rt_trees[OCTI_RT_META_PROTOCOL_EXT]
153
#define meta_class_extension \
154
                        objc_rt_trees[OCTI_RT_META_CLASS_EXT]
155
 /* String sections.  */
156
#define meta_class_name objc_rt_trees[OCTI_RT_META_CLASS_NAME]
157
#define meta_meth_name  objc_rt_trees[OCTI_RT_META_METHD_NAME]
158
#define meta_meth_type  objc_rt_trees[OCTI_RT_META_METHD_TYPE]
159
#define meta_prop_name_attr \
160
                        objc_rt_trees[OCTI_RT_META_PROPN_ATTR]
161
 
162
#define meta_modules    objc_rt_trees[OCTI_RT_META_MODULES]
163
#define meta_symtab     objc_rt_trees[OCTI_RT_META_SYMTAB]
164
#define meta_info       objc_rt_trees[OCTI_RT_META_INFO]
165
 
166
#define meta_ehtype     objc_rt_trees[OCTI_RT_META_EHTYPE]
167
 
168
#define meta_const_str  objc_rt_trees[OCTI_RT_META_CONST_STR]
169
 
170
#define OBJCMETA(DECL,VERS,KIND)                                        \
171
  if (VERS)                                                             \
172
    DECL_ATTRIBUTES (DECL) = build_tree_list ((VERS), (KIND));

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.