diff options
Diffstat (limited to 'bfd/elf32-v850.c')
-rw-r--r-- | bfd/elf32-v850.c | 77 |
1 files changed, 67 insertions, 10 deletions
diff --git a/bfd/elf32-v850.c b/bfd/elf32-v850.c index 4fb41ed977..00affbb0d8 100644 --- a/bfd/elf32-v850.c +++ b/bfd/elf32-v850.c @@ -3121,35 +3121,92 @@ v850_elf_relax_section (abfd, sec, link_info, again) goto finish; } -static struct bfd_elf_special_section const v850_elf_special_sections[]= +static struct bfd_elf_special_section const + v850_special_sections_c[]= +{ + { ".call_table_data", 16, 0, SHT_PROGBITS, (SHF_ALLOC + + SHF_WRITE) }, + { ".call_table_text", 16, 0, SHT_PROGBITS, (SHF_ALLOC + SHF_WRITE + + SHF_EXECINSTR) }, + { NULL, 0, 0, 0, 0 } +}; + +static struct bfd_elf_special_section const + v850_special_sections_r[]= { - { ".sdata", 6, -2, SHT_PROGBITS, (SHF_ALLOC + SHF_WRITE - + SHF_V850_GPREL) }, { ".rosdata", 8, -2, SHT_PROGBITS, (SHF_ALLOC + SHF_V850_GPREL) }, + { ".rozdata", 8, -2, SHT_PROGBITS, (SHF_ALLOC + + SHF_V850_R0REL) }, + { NULL, 0, 0, 0, 0 } +}; + +static struct bfd_elf_special_section const + v850_special_sections_s[]= +{ + { ".sdata", 6, -2, SHT_PROGBITS, (SHF_ALLOC + SHF_WRITE + + SHF_V850_GPREL) }, { ".sbss", 5, -2, SHT_NOBITS, (SHF_ALLOC + SHF_WRITE + SHF_V850_GPREL) }, { ".scommon", 8, -2, SHT_V850_SCOMMON, (SHF_ALLOC + SHF_WRITE + SHF_V850_GPREL) }, + { NULL, 0, 0, 0, 0 } +}; + +static struct bfd_elf_special_section const + v850_special_sections_t[]= +{ { ".tdata", 6, -2, SHT_PROGBITS, (SHF_ALLOC + SHF_WRITE + SHF_V850_EPREL) }, { ".tbss", 5, -2, SHT_NOBITS, (SHF_ALLOC + SHF_WRITE + SHF_V850_EPREL) }, { ".tcommon", 8, -2, SHT_V850_TCOMMON, (SHF_ALLOC + SHF_WRITE + SHF_V850_R0REL) }, + { NULL, 0, 0, 0, 0 } +}; + +static struct bfd_elf_special_section const + v850_special_sections_z[]= +{ { ".zdata", 6, -2, SHT_PROGBITS, (SHF_ALLOC + SHF_WRITE + SHF_V850_R0REL) }, - { ".rozdata", 8, -2, SHT_PROGBITS, (SHF_ALLOC - + SHF_V850_R0REL) }, { ".zbss", 5, -2, SHT_NOBITS, (SHF_ALLOC + SHF_WRITE + SHF_V850_R0REL) }, { ".zcommon", 8, -2, SHT_V850_ZCOMMON, (SHF_ALLOC + SHF_WRITE + SHF_V850_R0REL) }, - { ".call_table_data", 16, 0, SHT_PROGBITS, (SHF_ALLOC - + SHF_WRITE) }, - { ".call_table_text", 16, 0, SHT_PROGBITS, (SHF_ALLOC + SHF_WRITE - + SHF_EXECINSTR) }, - { NULL, 0, 0, 0, 0 } + { NULL, 0, 0, 0, 0 } +}; + +static struct bfd_elf_special_section const * + v850_elf_special_sections[27] = +{ + NULL, /* 'a' */ + NULL, /* 'b' */ + v850_special_sections_c, /* 'c' */ + NULL, /* 'd' */ + NULL, /* 'e' */ + NULL, /* 'f' */ + NULL, /* 'g' */ + NULL, /* 'h' */ + NULL, /* 'i' */ + NULL, /* 'j' */ + NULL, /* 'k' */ + NULL, /* 'l' */ + NULL, /* 'm' */ + NULL, /* 'n' */ + NULL, /* 'o' */ + NULL, /* 'p' */ + NULL, /* 'q' */ + v850_special_sections_r, /* 'r' */ + v850_special_sections_s, /* 's' */ + v850_special_sections_t, /* 't' */ + NULL, /* 'u' */ + NULL, /* 'v' */ + NULL, /* 'w' */ + NULL, /* 'x' */ + NULL, /* 'y' */ + v850_special_sections_z, /* 'z' */ + NULL /* other */ }; #define TARGET_LITTLE_SYM bfd_elf32_v850_vec |