00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef ELF32_SH64_H
00021 #define ELF32_SH64_H
00022
00023 #define SH64_CRANGES_SECTION_NAME ".cranges"
00024 enum sh64_elf_cr_type {
00025 CRT_NONE = 0,
00026 CRT_DATA = 1,
00027 CRT_SH5_ISA16 = 2,
00028 CRT_SH5_ISA32 = 3
00029 };
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 typedef struct {
00042 bfd_vma cr_addr;
00043 bfd_size_type cr_size;
00044 enum sh64_elf_cr_type cr_type;
00045 } sh64_elf_crange;
00046
00047 #define SH64_CRANGE_SIZE (4 + 4 + 2)
00048 #define SH64_CRANGE_CR_ADDR_OFFSET 0
00049 #define SH64_CRANGE_CR_SIZE_OFFSET 4
00050 #define SH64_CRANGE_CR_TYPE_OFFSET (4 + 4)
00051
00052
00053 extern enum sh64_elf_cr_type sh64_get_contents_type
00054 (asection *, bfd_vma, sh64_elf_crange *);
00055
00056
00057
00058 extern bfd_boolean sh64_address_is_shmedia
00059 (asection *, bfd_vma);
00060
00061 extern int _bfd_sh64_crange_qsort_cmpb
00062 (const void *, const void *);
00063 extern int _bfd_sh64_crange_qsort_cmpl
00064 (const void *, const void *);
00065 extern int _bfd_sh64_crange_bsearch_cmpb
00066 (const void *, const void *);
00067 extern int _bfd_sh64_crange_bsearch_cmpl
00068 (const void *, const void *);
00069
00070 struct sh64_section_data
00071 {
00072 flagword contents_flags;
00073
00074
00075
00076 bfd_size_type cranges_growth;
00077 };
00078
00079 struct _sh64_elf_section_data
00080 {
00081 struct bfd_elf_section_data elf;
00082 struct sh64_section_data *sh64_info;
00083 };
00084
00085 #define sh64_elf_section_data(sec) \
00086 ((struct _sh64_elf_section_data *) elf_section_data (sec))
00087
00088 #endif