diff options
Diffstat (limited to 'gcc-4.7/libobjc/objc-private/module-abi-8.h')
-rw-r--r-- | gcc-4.7/libobjc/objc-private/module-abi-8.h | 308 |
1 files changed, 0 insertions, 308 deletions
diff --git a/gcc-4.7/libobjc/objc-private/module-abi-8.h b/gcc-4.7/libobjc/objc-private/module-abi-8.h deleted file mode 100644 index 06846e796..000000000 --- a/gcc-4.7/libobjc/objc-private/module-abi-8.h +++ /dev/null @@ -1,308 +0,0 @@ -/* Definitions of Module Structures used by ABI version 8 - Copyright (C) 1993, 1995, 1996, 1997, 2001, 2002, 2003, 2004, 2005, - 2007, 2009, 2010 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under the -terms of the GNU General Public License as published by the Free Software -Foundation; either version 3, or (at your option) any later version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. */ - -#ifndef __objc_private_module_abi_8_INCLUDE_GNU -#define __objc_private_module_abi_8_INCLUDE_GNU - -/* For every class which happens to have statically allocated instances in - this module, one OBJC_STATIC_INSTANCES is allocated by the compiler. - INSTANCES is NULL terminated and points to all statically allocated - instances of this class. */ -struct objc_static_instances -{ - char *class_name; -#ifdef __cplusplus - id instances[1]; -#else - id instances[0]; -#endif -}; - -/* Whereas a Module (defined further down) is the root (typically) of a file, - a Symtab is the root of the class and category definitions within the - module. - - A Symtab contains a variable length array of pointers to classes and - categories defined in the module. */ -struct objc_symtab -{ - unsigned long sel_ref_cnt; /* Unused (always set to 0). */ - struct objc_selector *refs; /* The table of selectors referenced in - this module. This is terminated by a - selector with NULL sel_id and NULL - sel_types. Note that we use the type - 'struct objc_selector *' and not - 'SEL' (which is 'const struct - objc_selector *') because the sel_id - of these selectors is patched up by - the runtime when the module is - loaded. */ - unsigned short cls_def_cnt; /* Number of classes compiled (defined) - in the module. */ - unsigned short cat_def_cnt; /* Number of categories compiled - (defined) in the module. */ - void *defs[1]; /* Variable array of pointers. - cls_def_cnt of type Class followed by - cat_def_cnt of type Category_t, - followed by a NULL terminated array - of objc_static_instances. */ -}; - -/* The compiler generates one of these structures for each module that - composes the executable (eg main.m). - - This data structure is the root of the definition tree for the - module. - - A collect program runs between ld stages and creates a ObjC ctor - array. That array holds a pointer to each module structure of the - executable. */ -struct objc_module -{ - unsigned long version; /* Version of the Module data - structure. */ - unsigned long size; /* sizeof(Module) according to the - compiler - only used to sanity check - that it matches sizeof(Module) - according to the runtime. */ - const char* name; /* Name of the file used to compile the - module - not set by modern compilers - for security reasons. */ - struct objc_symtab *symtab; /* Pointer to the Symtab of the module. - The Symtab holds an array of pointers - to the classes and categories defined - in the module. */ -}; - -/* The compiler generates one of these structures for a class that has - instance variables defined in its specification. */ -struct objc_ivar -{ - const char* ivar_name; /* Name of the instance variable as entered - in the class definition. */ - const char* ivar_type; /* Description of the Ivar's type. Useful - for debuggers. */ - int ivar_offset; /* Byte offset from the base address of the - instance structure to the variable. */ -}; - -struct objc_ivar_list -{ - int ivar_count; /* Number of structures (Ivar) - contained in the list. One - structure per instance variable - defined in the class. */ - struct objc_ivar ivar_list[1]; /* Variable length structure. */ -}; - -/* The compiler generates one (or more) of these structures for a - class that has methods defined in its specification. - - The implementation of a class can be broken into separate pieces in - a file and categories can break them across modules. To handle this - problem is a singly linked list of methods. */ -struct objc_method -{ - SEL method_name; /* This variable is the method's name. - The compiler puts a char* here, and - it's replaced by a real SEL at runtime - when the method is registered. */ - const char* method_types; /* Description of the method's parameter - list. Used when registering the - selector with the runtime. When that - happens, method_name will contain the - method's parameter list. */ - IMP method_imp; /* Address of the method in the - executable. */ -}; - -struct objc_method_list -{ - struct objc_method_list* method_next; /* This variable is used to - link a method list to - another. It is a singly - linked list. */ - int method_count; /* Number of methods defined - in this structure. */ - struct objc_method method_list[1]; /* Variable length - structure. */ -}; - -/* Note that a 'struct objc_method_description' as embedded inside a - Protocol uses the same trick as a 'struct objc_method': the - method_name is a 'char *' according to the compiler, who puts the - method name as a string in there. At runtime, the selectors need - to be registered, and the method_name then becomes a SEL. */ -struct objc_method_description_list -{ - int count; - struct objc_method_description list[1]; -}; - -struct objc_protocol { - struct objc_class* class_pointer; - char *protocol_name; - struct objc_protocol_list *protocol_list; - struct objc_method_description_list *instance_methods, *class_methods; -}; - - -struct objc_protocol_list -{ - struct objc_protocol_list *next; - size_t count; - struct objc_protocol *list[1]; -}; - -/* - The compiler generates one of these structures for each class. - - This structure is the definition for classes. - - This structure is generated by the compiler in the executable and - used by the run-time during normal messaging operations. Therefore - some members change type. The compiler generates "char* const" and - places a string in the following member variables: super_class. -*/ -struct objc_class { - struct objc_class* class_pointer; /* Pointer to the class's meta - class. */ - struct objc_class* super_class; /* Pointer to the super - class. NULL for class - Object. */ - const char* name; /* Name of the class. */ - long version; /* Unknown. */ - unsigned long info; /* Bit mask. See class masks - defined below. */ - long instance_size; /* Size in bytes of the class. - The sum of the class - definition and all super - class definitions. */ -#ifdef _WIN64 - /* We pad the structure manually to prevent warning when -Wpadded is - used. The compiler automatically pads the structures that it - generates, so this manually padded structure still matches the - one generated by the compiler, but if we don't pad manually, - -Wpadded detects that padding is being added and generates - annoying warnings. This hack is necessary as on LLP64 targets - sizeof (long) isn't equal to sizeof (void *). */ - long pad; -#endif - struct objc_ivar_list* ivars; /* Pointer to a structure that - describes the instance - variables in the class - definition. NULL indicates - no instance variables. - Does not include super - class variables. */ - struct objc_method_list* methods; /* Linked list of instance - methods defined for the - class. */ - struct sarray * dtable; /* Pointer to instance method - dispatch table. */ - struct objc_class* subclass_list; /* Subclasses */ - struct objc_class* sibling_class; - - struct objc_protocol_list *protocols; /* Protocols conformed to */ - void* gc_object_type; -}; - -/* This is used to assure consistent access to the info field of - classes. */ -#ifndef HOST_BITS_PER_LONG -# define HOST_BITS_PER_LONG (sizeof(long)*8) -#endif - -#define __CLS_INFO(cls) ((cls)->info) -#define __CLS_ISINFO(cls, mask) ((__CLS_INFO(cls)&mask)==mask) -#define __CLS_SETINFO(cls, mask) (__CLS_INFO(cls) |= mask) -#define __CLS_SETNOTINFO(cls, mask) (__CLS_INFO(cls) &= ~mask) - -/* The structure is of type MetaClass */ -#define _CLS_META 0x2L -#define CLS_ISMETA(cls) ((cls)&&__CLS_ISINFO(cls, _CLS_META)) - -/* The structure is of type Class */ -#define _CLS_CLASS 0x1L -#define CLS_ISCLASS(cls) ((cls)&&__CLS_ISINFO(cls, _CLS_CLASS)) - -/* The class is initialized within the runtime. This means that it - has had correct super and sublinks assigned. */ -#define _CLS_RESOLV 0x8L -#define CLS_ISRESOLV(cls) __CLS_ISINFO(cls, _CLS_RESOLV) -#define CLS_SETRESOLV(cls) __CLS_SETINFO(cls, _CLS_RESOLV) - -/* The class has been send a +initialize message or a such is not - defined for this class. */ -#define _CLS_INITIALIZED 0x04L -#define CLS_ISINITIALIZED(cls) __CLS_ISINFO(cls, _CLS_INITIALIZED) -#define CLS_SETINITIALIZED(cls) __CLS_SETINFO(cls, _CLS_INITIALIZED) - -/* The class is being constructed; it has been allocated using - objc_allocateClassPair(), but has not been registered yet by using - objc_registerClassPair(). This means it is possible to freely add - instance variables to the class, but it can't be used for anything - yet. */ -#define _CLS_IN_CONSTRUCTION 0x10L -#define CLS_IS_IN_CONSTRUCTION(cls) __CLS_ISINFO(cls, _CLS_IN_CONSTRUCTION) -#define CLS_SET_IN_CONSTRUCTION(cls) __CLS_SETINFO(cls, _CLS_IN_CONSTRUCTION) -#define CLS_SET_NOT_IN_CONSTRUCTION(cls) __CLS_SETNOTINFO(cls, _CLS_IN_CONSTRUCTION) - -/* The class number of this class. This must be the same for both the - class and its meta class object. */ -#define CLS_GETNUMBER(cls) (__CLS_INFO(cls) >> (HOST_BITS_PER_LONG/2)) -#define CLS_SETNUMBER(cls, num) \ - ({ (cls)->info <<= (HOST_BITS_PER_LONG/2); \ - (cls)->info >>= (HOST_BITS_PER_LONG/2); \ - __CLS_SETINFO(cls, (((unsigned long)num) << (HOST_BITS_PER_LONG/2))); }) - -/* The compiler generates one of these structures for each category. - A class may have many categories and contain both instance and - factory methods. */ -struct objc_category -{ - const char* category_name; /* Name of the category. - Name contained in the - () of the category - definition. */ - const char* class_name; /* Name of the class to - which the category - belongs. */ - struct objc_method_list *instance_methods; /* Linked list of - instance methods - defined in the - category. NULL - indicates no instance - methods defined. */ - struct objc_method_list *class_methods; /* Linked list of - factory methods - defined in the - category. NULL - indicates no class - methods defined. */ - struct objc_protocol_list *protocols; /* List of Protocols - conformed to. */ -}; - -#endif /* __objc_private_module_abi_8_INCLUDE_GNU */ |