X-Git-Url: http://drtracing.org/?a=blobdiff_plain;ds=sidebyside;f=elfcpp%2Farm.h;h=6f7d4662f918c50c839e529549bcb00cef5c9763;hb=2951f6c068f961a2ea1de892fc82cf0229af67da;hp=08a17ad8871f005af10d484f79bd6be5a774c9d2;hpb=a0351a698b33aea0c0cec14ae44070a45bac6329;p=deliverable%2Fbinutils-gdb.git diff --git a/elfcpp/arm.h b/elfcpp/arm.h index 08a17ad887..6f7d4662f9 100644 --- a/elfcpp/arm.h +++ b/elfcpp/arm.h @@ -1,6 +1,6 @@ // arm.h -- ELF definitions specific to EM_ARM -*- C++ -*- -// Copyright 2009, Free Software Foundation, Inc. +// Copyright (C) 2009-2020 Free Software Foundation, Inc. // Written by Doug Kwan . // This file is part of elfcpp. @@ -192,11 +192,17 @@ enum R_ARM_PRIVATE_14 = 126, R_ARM_PRIVATE_15 = 127, R_ARM_ME_TOO = 128, // Obsolete - R_ARM_THM_TLS_DESCSEQ16 = 129,// Static Thumb16 + R_ARM_THM_TLS_DESCSEQ16 = 129,// Static Thumb16 R_ARM_THM_TLS_DESCSEQ32 = 130,// Static Thumb32 - // 131 - 139 Unallocated + // 131 - 135 Unallocated + // Relocations for Armv8.1-M Mainline (BF/BFL) + R_ARM_THM_BF16 = 136, // Static Thumb32 ((S + A) | T) – P + R_ARM_THM_BF12 = 137, // Static Thumb32 ((S + A) | T) – P + R_ARM_THM_BF18 = 138, // Static Thumb32 ((S + A) | T) – P + // 139 Unallocated // 140 - 159 Dynamic Reserved for future allocation - // 160 - 255 Unallocated + R_ARM_IRELATIVE = 160, // Dynamic + // 161 - 255 Unallocated }; // e_flags values used for ARM. We only support flags defined in AAELF. @@ -222,6 +228,14 @@ inline Elf_Word arm_eabi_version(Elf_Word flags) { return flags & EF_ARM_EABIMASK; } +// EABI_VER5 e_flags values for identifying soft- and hard-float ABI +// choice. +enum +{ + EF_ARM_ABI_FLOAT_SOFT = 0x200, + EF_ARM_ABI_FLOAT_HARD = 0x400, +}; + // Values for the Tag_CPU_arch EABI attribute. enum { @@ -239,7 +253,8 @@ enum TAG_CPU_ARCH_V6_M, TAG_CPU_ARCH_V6S_M, TAG_CPU_ARCH_V7E_M, - MAX_TAG_CPU_ARCH = TAG_CPU_ARCH_V7E_M, + TAG_CPU_ARCH_V8, + MAX_TAG_CPU_ARCH = TAG_CPU_ARCH_V8, // Pseudo-architecture to allow objects to be compatible with the subset of // armv4t and armv6-m. This value should never be stored in object files. TAG_CPU_ARCH_V4T_PLUS_V6_M = (MAX_TAG_CPU_ARCH + 1) @@ -255,7 +270,7 @@ enum Tag_CPU_arch_profile = 7, Tag_ARM_ISA_use = 8, Tag_THUMB_ISA_use = 9, - Tag_VFP_arch = 10, + Tag_FP_arch = 10, Tag_WMMX_arch = 11, Tag_Advanced_SIMD_arch = 12, Tag_PCS_config = 13, @@ -269,8 +284,8 @@ enum Tag_ABI_FP_exceptions = 21, Tag_ABI_FP_user_exceptions = 22, Tag_ABI_FP_number_model = 23, - Tag_ABI_align8_needed = 24, - Tag_ABI_align8_preserved = 25, + Tag_ABI_align_needed = 24, + Tag_ABI_align_preserved = 25, Tag_ABI_enum_size = 26, Tag_ABI_HardFP_use = 27, Tag_ABI_VFP_args = 28, @@ -281,17 +296,29 @@ enum Tag_undefined33 = 33, Tag_CPU_unaligned_access = 34, Tag_undefined35 = 35, - Tag_VFP_HP_extension = 36, + Tag_FP_HP_extension = 36, Tag_undefined37 = 37, Tag_ABI_FP_16bit_format = 38, Tag_undefined39 = 39, + Tag_undefined40 = 40, + Tag_undefined41 = 41, + Tag_MPextension_use = 42, + Tag_undefined43 = 43, + Tag_DIV_use = 44, + Tag_MVE_arch = 48, Tag_nodefaults = 64, Tag_also_compatible_with = 65, Tag_T2EE_use = 66, Tag_conformance = 67, Tag_Virtualization_use = 68, Tag_undefined69 = 69, - Tag_MPextension_use = 70 + Tag_MPextension_use_legacy = 70, + + // The following tags are legacy names for other tags. + Tag_VFP_arch = Tag_FP_arch, + Tag_ABI_align8_needed = Tag_ABI_align_needed, + Tag_ABI_align8_preserved = Tag_ABI_align_preserved, + Tag_VFP_HP_extension = Tag_FP_HP_extension }; // Values for Tag_ABI_PCS_R9_use. @@ -321,6 +348,31 @@ enum AEABI_enum_forced_wide = 3 }; +// Values for Tag_ABI_FP_number_model. +enum +{ + AEABI_FP_number_model_none = 0, + AEABI_FP_number_model_ieee754_number = 1, + AEABI_FP_number_model_rtabi = 2, + AEABI_FP_number_model_ieee754_all = 3 +}; + +// Values for Tag_ABI_VFP_args. +enum +{ + AEABI_VFP_args_base = 0, + AEABI_VFP_args_vfp = 1, + AEABI_VFP_args_toolchain = 2, + AEABI_VFP_args_compatible = 3 +}; + +// For Exception Index Table. (Exception handling ABI for the ARM +// architectue, Section 5) +enum +{ + EXIDX_CANTUNWIND = 1, +}; + } // End namespace elfcpp. #endif // !defined(ELFCPP_ARM_H)