packaging: Enable testing infrastructure
[external/binutils.git] / bfd / elfxx-aarch64.h
index 8808104..f598852 100644 (file)
@@ -1,5 +1,5 @@
 /* AArch64-specific backend routines.
 /* AArch64-specific backend routines.
-   Copyright (C) 2009-2014 Free Software Foundation, Inc.
+   Copyright (C) 2009-2019 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of BFD, the Binary File Descriptor library.
    Contributed by ARM Ltd.
 
    This file is part of BFD, the Binary File Descriptor library.
    along with this program; see the file COPYING3. If not,
    see <http://www.gnu.org/licenses/>.  */
 
    along with this program; see the file COPYING3. If not,
    see <http://www.gnu.org/licenses/>.  */
 
-#include "bfd.h"
-#include "elf-bfd.h"
-#include "stdint.h"
-
 /* Take the PAGE component of an address or offset.  */
 /* Take the PAGE component of an address or offset.  */
-#define PG(x)        ((x) & ~ (bfd_vma) 0xfff)
+#define PG(x)       ((x) & ~ (bfd_vma) 0xfff)
 #define PG_OFFSET(x) ((x) &   (bfd_vma) 0xfff)
 
 #define PG_OFFSET(x) ((x) &   (bfd_vma) 0xfff)
 
+#define AARCH64_ADR_OP         0x10000000
+#define AARCH64_ADRP_OP                0x90000000
+#define AARCH64_ADRP_OP_MASK   0x9F000000
+
+extern bfd_signed_vma
+_bfd_aarch64_sign_extend (bfd_vma, int);
+
+extern uint32_t
+_bfd_aarch64_decode_adrp_imm (uint32_t);
+
+extern uint32_t
+_bfd_aarch64_reencode_adr_imm (uint32_t, uint32_t);
+
 extern bfd_reloc_status_type
 _bfd_aarch64_elf_put_addend (bfd *, bfd_byte *, bfd_reloc_code_real_type,
                             reloc_howto_type *, bfd_signed_vma);
 
 extern bfd_vma
 extern bfd_reloc_status_type
 _bfd_aarch64_elf_put_addend (bfd *, bfd_byte *, bfd_reloc_code_real_type,
                             reloc_howto_type *, bfd_signed_vma);
 
 extern bfd_vma
-_bfd_aarch64_elf_resolve_relocation (bfd_reloc_code_real_type, bfd_vma, bfd_vma,
-                                    bfd_vma, bfd_boolean);
-
-extern bfd_boolean
-_bfd_aarch64_elf_add_symbol_hook (bfd *, struct bfd_link_info *,
-                                 Elf_Internal_Sym *, const char **,
-                                 flagword *, asection **, bfd_vma *);
+_bfd_aarch64_elf_resolve_relocation (bfd *, bfd_reloc_code_real_type, bfd_vma,
+                                    bfd_vma, bfd_vma, bfd_boolean);
 
 extern bfd_boolean
 _bfd_aarch64_elf_grok_prstatus (bfd *, Elf_Internal_Note *);
 
 extern bfd_boolean
 _bfd_aarch64_elf_grok_prstatus (bfd *, Elf_Internal_Note *);
@@ -48,7 +52,29 @@ _bfd_aarch64_elf_grok_psinfo (bfd *, Elf_Internal_Note *);
 extern char *
 _bfd_aarch64_elf_write_core_note (bfd *, char *, int *, int, ...);
 
 extern char *
 _bfd_aarch64_elf_write_core_note (bfd *, char *, int *, int, ...);
 
-#define elf_backend_add_symbol_hook    _bfd_aarch64_elf_add_symbol_hook
 #define elf_backend_grok_prstatus      _bfd_aarch64_elf_grok_prstatus
 #define elf_backend_grok_prstatus      _bfd_aarch64_elf_grok_prstatus
-#define elf_backend_grok_psinfo         _bfd_aarch64_elf_grok_psinfo
-#define elf_backend_write_core_note     _bfd_aarch64_elf_write_core_note
+#define elf_backend_grok_psinfo                _bfd_aarch64_elf_grok_psinfo
+#define elf_backend_write_core_note    _bfd_aarch64_elf_write_core_note
+
+extern bfd *
+_bfd_aarch64_elf_link_setup_gnu_properties (struct bfd_link_info *,
+                                           uint32_t *);
+
+extern enum elf_property_kind
+_bfd_aarch64_elf_parse_gnu_properties (bfd *, unsigned int,
+                                      bfd_byte *, unsigned int);
+
+extern bfd_boolean
+_bfd_aarch64_elf_merge_gnu_properties (struct bfd_link_info *, bfd *,
+                                      elf_property *, elf_property *,
+                                      uint32_t);
+
+extern void
+_bfd_aarch64_elf_link_fixup_gnu_properties (struct bfd_link_info *,
+                                           elf_property_list **);
+
+#define elf_backend_parse_gnu_properties       \
+  _bfd_aarch64_elf_parse_gnu_properties
+
+#define elf_backend_fixup_gnu_properties       \
+  _bfd_aarch64_elf_link_fixup_gnu_properties