xref: /xnu-8020.101.4/EXTERNAL_HEADERS/mach-o/arm64/reloc.h (revision e7776783b89a353188416a9a346c6cdb4928faad)
1 /*
2  * Copyright (c) 2010 Apple Computer, Inc. All rights reserved.
3  *
4  * @APPLE_LICENSE_HEADER_START@
5  *
6  * This file contains Original Code and/or Modifications of Original Code
7  * as defined in and that are subject to the Apple Public Source License
8  * Version 2.0 (the 'License'). You may not use this file except in
9  * compliance with the License. Please obtain a copy of the License at
10  * http://www.opensource.apple.com/apsl/ and read it before using this
11  * file.
12  *
13  * The Original Code and all software distributed under the License are
14  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18  * Please see the License for the specific language governing rights and
19  * limitations under the License.
20  *
21  * @APPLE_LICENSE_HEADER_END@
22  */
23 /*
24  * Relocation types used in the arm64 implementation.
25  */
26 enum reloc_type_arm64
27 {
28     ARM64_RELOC_UNSIGNED,	  // for pointers
29     ARM64_RELOC_SUBTRACTOR,       // must be followed by a ARM64_RELOC_UNSIGNED
30     ARM64_RELOC_BRANCH26,         // a B/BL instruction with 26-bit displacement
31     ARM64_RELOC_PAGE21,           // pc-rel distance to page of target
32     ARM64_RELOC_PAGEOFF12,        // offset within page, scaled by r_length
33     ARM64_RELOC_GOT_LOAD_PAGE21,  // pc-rel distance to page of GOT slot
34     ARM64_RELOC_GOT_LOAD_PAGEOFF12, // offset within page of GOT slot,
35                                     //  scaled by r_length
36     ARM64_RELOC_POINTER_TO_GOT,   // for pointers to GOT slots
37     ARM64_RELOC_TLVP_LOAD_PAGE21, // pc-rel distance to page of TLVP slot
38     ARM64_RELOC_TLVP_LOAD_PAGEOFF12, // offset within page of TLVP slot,
39                                      //  scaled by r_length
40     ARM64_RELOC_ADDEND		  // must be followed by PAGE21 or PAGEOFF12
41 };
42