elfxx-aarch64.h revision 1.1.1.1 1 1.1 christos /* AArch64-specific backend routines.
2 1.1 christos Copyright (C) 2009-2015 Free Software Foundation, Inc.
3 1.1 christos Contributed by ARM Ltd.
4 1.1 christos
5 1.1 christos This file is part of BFD, the Binary File Descriptor library.
6 1.1 christos
7 1.1 christos This program is free software; you can redistribute it and/or modify
8 1.1 christos it under the terms of the GNU General Public License as published by
9 1.1 christos the Free Software Foundation; either version 3 of the License, or
10 1.1 christos (at your option) any later version.
11 1.1 christos
12 1.1 christos This program is distributed in the hope that it will be useful,
13 1.1 christos but WITHOUT ANY WARRANTY; without even the implied warranty of
14 1.1 christos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 1.1 christos GNU General Public License for more details.
16 1.1 christos
17 1.1 christos You should have received a copy of the GNU General Public License
18 1.1 christos along with this program; see the file COPYING3. If not,
19 1.1 christos see <http://www.gnu.org/licenses/>. */
20 1.1 christos
21 1.1 christos #include "bfd.h"
22 1.1 christos #include "elf-bfd.h"
23 1.1 christos #include "stdint.h"
24 1.1 christos
25 1.1 christos /* Take the PAGE component of an address or offset. */
26 1.1 christos #define PG(x) ((x) & ~ (bfd_vma) 0xfff)
27 1.1 christos #define PG_OFFSET(x) ((x) & (bfd_vma) 0xfff)
28 1.1 christos
29 1.1 christos #define AARCH64_ADR_OP 0x10000000
30 1.1 christos #define AARCH64_ADRP_OP 0x90000000
31 1.1 christos #define AARCH64_ADRP_OP_MASK 0x9F000000
32 1.1 christos
33 1.1 christos extern bfd_signed_vma
34 1.1 christos _bfd_aarch64_sign_extend (bfd_vma, int);
35 1.1 christos
36 1.1 christos extern uint32_t
37 1.1 christos _bfd_aarch64_decode_adrp_imm (uint32_t);
38 1.1 christos
39 1.1 christos extern uint32_t
40 1.1 christos _bfd_aarch64_reencode_adr_imm (uint32_t, uint32_t);
41 1.1 christos
42 1.1 christos extern bfd_reloc_status_type
43 1.1 christos _bfd_aarch64_elf_put_addend (bfd *, bfd_byte *, bfd_reloc_code_real_type,
44 1.1 christos reloc_howto_type *, bfd_signed_vma);
45 1.1 christos
46 1.1 christos extern bfd_vma
47 1.1 christos _bfd_aarch64_elf_resolve_relocation (bfd_reloc_code_real_type, bfd_vma, bfd_vma,
48 1.1 christos bfd_vma, bfd_boolean);
49 1.1 christos
50 1.1 christos extern bfd_boolean
51 1.1 christos _bfd_aarch64_elf_add_symbol_hook (bfd *, struct bfd_link_info *,
52 1.1 christos Elf_Internal_Sym *, const char **,
53 1.1 christos flagword *, asection **, bfd_vma *);
54 1.1 christos
55 1.1 christos extern bfd_boolean
56 1.1 christos _bfd_aarch64_elf_grok_prstatus (bfd *, Elf_Internal_Note *);
57 1.1 christos
58 1.1 christos extern bfd_boolean
59 1.1 christos _bfd_aarch64_elf_grok_psinfo (bfd *, Elf_Internal_Note *);
60 1.1 christos
61 1.1 christos extern char *
62 1.1 christos _bfd_aarch64_elf_write_core_note (bfd *, char *, int *, int, ...);
63 1.1 christos
64 1.1 christos #define elf_backend_add_symbol_hook _bfd_aarch64_elf_add_symbol_hook
65 1.1 christos #define elf_backend_grok_prstatus _bfd_aarch64_elf_grok_prstatus
66 1.1 christos #define elf_backend_grok_psinfo _bfd_aarch64_elf_grok_psinfo
67 1.1 christos #define elf_backend_write_core_note _bfd_aarch64_elf_write_core_note
68