]> git.saurik.com Git - apple/xnu.git/blobdiff - EXTERNAL_HEADERS/mach-o/reloc.h
xnu-2782.40.9.tar.gz
[apple/xnu.git] / EXTERNAL_HEADERS / mach-o / reloc.h
index 172a5b5238d1e503275e229a9b6e26b047af9b9c..d5741efa3fe1428fd36eb26f6c494ce425d4dd92 100644 (file)
@@ -1,19 +1,14 @@
 /*
  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
  *
- * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. The rights granted to you under the License
- * may not be used to create, or enable the creation or redistribution of,
- * unlawful or unlicensed copies of an Apple operating system, or to
- * circumvent, violate, or enable the circumvention or violation of, any
- * terms of an Apple operating system software license agreement.
- * 
- * Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
  * 
  * The Original Code and all software distributed under the License are
  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
@@ -23,7 +18,7 @@
  * Please see the License for the specific language governing rights and
  * limitations under the License.
  * 
- * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ * @APPLE_LICENSE_HEADER_END@
  */
 /*     $NetBSD: exec.h,v 1.6 1994/10/27 04:16:05 cgd Exp $     */
 
@@ -56,6 +51,7 @@
 
 #ifndef _MACHO_RELOC_H_
 #define _MACHO_RELOC_H_
+#include <stdint.h>
 
 /*
  * Format of a relocation entry of a Mach-O file.  Modified from the 4.3BSD
  * Also the last 4 bits have had the r_type tag added to them.
  */
 struct relocation_info {
-   long                r_address;      /* offset in the section to what is being
+   int32_t     r_address;      /* offset in the section to what is being
                                   relocated */
-   unsigned int r_symbolnum:24,        /* symbol index if r_extern == 1 or section
+   uint32_t     r_symbolnum:24,        /* symbol index if r_extern == 1 or section
                                   ordinal if r_extern == 0 */
                r_pcrel:1,      /* was relocated pc relative already */
-               r_length:2,     /* 0=byte, 1=word, 2=long */
+               r_length:2,     /* 0=byte, 1=word, 2=long, 3=quad */
                r_extern:1,     /* does not include value of sym referenced */
                r_type:4;       /* if not 0, machine specific relocation type */
 };
@@ -154,31 +150,31 @@ struct relocation_info {
                                   stucture */
 struct scattered_relocation_info {
 #ifdef __BIG_ENDIAN__
-   unsigned int r_scattered:1, /* 1=scattered, 0=non-scattered (see above) */
+   uint32_t    r_scattered:1,  /* 1=scattered, 0=non-scattered (see above) */
                r_pcrel:1,      /* was relocated pc relative already */
-               r_length:2,     /* 0=byte, 1=word, 2=long */
+               r_length:2,     /* 0=byte, 1=word, 2=long, 3=quad */
                r_type:4,       /* if not 0, machine specific relocation type */
                r_address:24;   /* offset in the section to what is being
                                   relocated */
-   long                r_value;        /* the value the item to be relocated is
+   int32_t     r_value;        /* the value the item to be relocated is
                                   refering to (without any offset added) */
 #endif /* __BIG_ENDIAN__ */
 #ifdef __LITTLE_ENDIAN__
-   unsigned int
+   uint32_t
                r_address:24,   /* offset in the section to what is being
                                   relocated */
                r_type:4,       /* if not 0, machine specific relocation type */
-               r_length:2,     /* 0=byte, 1=word, 2=long */
+               r_length:2,     /* 0=byte, 1=word, 2=long, 3=quad */
                r_pcrel:1,      /* was relocated pc relative already */
                r_scattered:1;  /* 1=scattered, 0=non-scattered (see above) */
-   long                r_value;        /* the value the item to be relocated is
+   int32_t     r_value;        /* the value the item to be relocated is
                                   refering to (without any offset added) */
 #endif /* __LITTLE_ENDIAN__ */
 };
 
 /*
  * Relocation types used in a generic implementation.  Relocation entries for
- * nornal things use the generic relocation as discribed above and their r_type
+ * normal things use the generic relocation as discribed above and their r_type
  * is GENERIC_RELOC_VANILLA (a value of zero).
  *
  * Another type of generic relocation, GENERIC_RELOC_SECTDIFF, is to support
@@ -197,9 +193,11 @@ struct scattered_relocation_info {
 enum reloc_type_generic
 {
     GENERIC_RELOC_VANILLA,     /* generic relocation as discribed above */
-    GENERIC_RELOC_PAIR,                /* Only follows a GENRIC_RELOC_SECTDIFF */
+    GENERIC_RELOC_PAIR,                /* Only follows a GENERIC_RELOC_SECTDIFF */
     GENERIC_RELOC_SECTDIFF,
-    GENERIC_RELOC_PB_LA_PTR    /* prebound lazy pointer */
+    GENERIC_RELOC_PB_LA_PTR,   /* prebound lazy pointer */
+    GENERIC_RELOC_LOCAL_SECTDIFF,
+    GENERIC_RELOC_TLV          /* thread local variables */
 };
 
 #endif /* _MACHO_RELOC_H_ */