diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2003-07-25 14:35:56 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2003-07-25 14:35:56 +0000 |
commit | 2f89ff8d8ead0e6eb034d7c26470be4eac7c3185 (patch) | |
tree | deecbf5e1012acc2b9492ad093cde8236a3404e6 /gas | |
parent | 20650579793e339d3438ee509c464a253d7ef079 (diff) | |
download | gdb-2f89ff8d8ead0e6eb034d7c26470be4eac7c3185.zip gdb-2f89ff8d8ead0e6eb034d7c26470be4eac7c3185.tar.gz gdb-2f89ff8d8ead0e6eb034d7c26470be4eac7c3185.tar.bz2 |
bfd/
2003-07-25 H.J. Lu <hongjiu.lu@intel.com>
* elf-bfd.h (bfd_elf_special_section): New.
(elf_backend_data): Add special_sections, a pointer to
bfd_elf_special_section.
(elf_section_type). New.
(elf_section_flags): New.
(_bfd_elf_get_sec_type_attr): New.
* elf.c (_bfd_elf_make_section_from_shdr): Always use the
real section type/flags.
(special_sections): New.
(get_special_section): New.
(_bfd_elf_get_sec_type_attr): New.
(_bfd_elf_new_section_hook): Check special_section to set
elf_section_type and elf_section_flags.
(elf_fake_sections): Don't use section name to set ELF section
data.
* elf32-m32r.c (m32r_elf_special_sections): New.
(elf_backend_special_sections): Defined.
* elf32-m68hc11.c (elf32_m68hc11_special_sections): New.
(elf_backend_special_sections): Defined.
* elf32-mcore.c (mcore_elf_special_sections): New.
(elf_backend_special_sections): Defined.
* elf32-ppc.c (ppc_elf_special_sections): New.
(elf_backend_special_sections): Defined.
* elf32-sh64.c (sh64_elf_special_sections): New.
(elf_backend_special_sections): Defined.
* elf32-v850.c (v850_elf_special_sections): New.
(elf_backend_special_sections): Defined.
* elf32-xtensa.c (elf_xtensa_special_sections): New.
(elf_backend_special_sections): Defined.
* elf64-alpha.c (elf64_alpha_special_sections): New.
(elf_backend_special_sections): Defined.
* elf64-hppa.c (elf64_hppa_special_sections): New.
(elf_backend_special_sections): Defined.
* elf64-ppc.c (ppc64_elf_special_sections): New.
(elf_backend_special_sections): Defined.
* elf64-sh64.c (sh64_elf64_special_sections): New.
(elf_backend_special_sections): Defined.
* elfxx-ia64.c (elfNN_ia64_special_sections): New.
(elf_backend_special_sections): Defined.
* elfxx-mips.c (_bfd_mips_elf_special_sections): New.
* elfxx-mips.h (_bfd_mips_elf_special_sections): New.
(elf_backend_special_sections): Defined.
* elfxx-target.h (elf_backend_special_sections): New. Default
to NULL.
(elfNN_bed): Initialize special_sections.
* section.c (bfd_abs_section): Remove const.
(bfd_und_section): Likewise.
(bfd_com_section): Likewise.
(bfd_ind_section): Likewise.
gas/
2003-07-25 H.J. Lu <hongjiu.lu@intel.com>
* config/obj-elf.c (special_sections): Removed.
(obj_elf_change_section): Call _bfd_elf_get_sec_type_attr. Set
elf_section_type and elf_section_flags.
(elf_frob_file): Set SHT_GROUP.
* config/obj-elf.h (obj_sec_set_private_data): New.
* config/tc-alpha.h (ELF_TC_SPECIAL_SECTIONS): Removed.
* config/tc-ia64.h: Likewise.
* config/tc-m32r.h: Likewise.
* config/tc-m68hc11.h: Likewise.
* config/tc-mcore.h: Likewise.
* config/tc-mips.h: Likewise.
* config/tc-ppc.h: Likewise.
* config/tc-sh64.h: Likewise.
* config/tc-v850.h: Likewise.
* config/tc-xtensa.h: Likewise.
* config/tc-v850.h (SHF_V850_GPREL): Removed.
(SHF_V850_EPREL): Likewise.
(SHF_V850_R0REL): Likewise.
* subsegs.c (subseg_get): Call obj_sec_set_private_data if it
is defined.
include/elf/
2003-07-25 H.J. Lu <hongjiu.lu@intel.com>
* v850.h (SHF_V850_GPREL): New.
(SHF_V850_EPREL): Likewise.
(SHF_V850_R0REL): Likewise.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 27 | ||||
-rw-r--r-- | gas/config/obj-elf.c | 143 | ||||
-rw-r--r-- | gas/config/obj-elf.h | 7 | ||||
-rw-r--r-- | gas/config/tc-alpha.h | 4 | ||||
-rw-r--r-- | gas/config/tc-ia64.h | 4 | ||||
-rw-r--r-- | gas/config/tc-m32r.h | 5 | ||||
-rw-r--r-- | gas/config/tc-m68hc11.h | 12 | ||||
-rw-r--r-- | gas/config/tc-mcore.h | 6 | ||||
-rw-r--r-- | gas/config/tc-mips.h | 10 | ||||
-rw-r--r-- | gas/config/tc-ppc.h | 16 | ||||
-rw-r--r-- | gas/config/tc-sh64.h | 3 | ||||
-rw-r--r-- | gas/config/tc-v850.h | 22 | ||||
-rw-r--r-- | gas/config/tc-xtensa.h | 8 | ||||
-rw-r--r-- | gas/subsegs.c | 4 |
14 files changed, 84 insertions, 187 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 7560fc0..43cfcc7 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,30 @@ +2003-07-25 H.J. Lu <hongjiu.lu@intel.com> + + * config/obj-elf.c (special_sections): Removed. + (obj_elf_change_section): Call _bfd_elf_get_sec_type_attr. Set + elf_section_type and elf_section_flags. + (elf_frob_file): Set SHT_GROUP. + + * config/obj-elf.h (obj_sec_set_private_data): New. + + * config/tc-alpha.h (ELF_TC_SPECIAL_SECTIONS): Removed. + * config/tc-ia64.h: Likewise. + * config/tc-m32r.h: Likewise. + * config/tc-m68hc11.h: Likewise. + * config/tc-mcore.h: Likewise. + * config/tc-mips.h: Likewise. + * config/tc-ppc.h: Likewise. + * config/tc-sh64.h: Likewise. + * config/tc-v850.h: Likewise. + * config/tc-xtensa.h: Likewise. + + * config/tc-v850.h (SHF_V850_GPREL): Removed. + (SHF_V850_EPREL): Likewise. + (SHF_V850_R0REL): Likewise. + + * subsegs.c (subseg_get): Call obj_sec_set_private_data if it + is defined. + 2003-07-24 Stephane Carrez <stcarrez@nerim.fr> * config/tc-m68hc11.h (DWARF2_ADDR_SIZE): Use 32-bit address for diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c index 18cf50d..7d89175 100644 --- a/gas/config/obj-elf.c +++ b/gas/config/obj-elf.c @@ -601,63 +601,6 @@ static struct section_stack *section_stack; other possibilities, but I don't know what they are. In any case, BFD doesn't really let us set the section type. */ -/* Certain named sections have particular defined types, listed on p. - 4-19 of the ABI. */ -struct special_section -{ - const char *name; - int type; - int attributes; -}; - -static struct special_section const special_sections[] = -{ - { ".bss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE }, - { ".comment", SHT_PROGBITS, 0 }, - { ".data", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, - { ".data1", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, - { ".debug", SHT_PROGBITS, 0 }, -#if defined (TC_HPPA) && !defined (TE_LINUX) && TARGET_ARCH_SIZE == 64 - { ".fini", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, - { ".init", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, -#else - { ".fini", SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR }, - { ".init", SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR }, -#endif - { ".line", SHT_PROGBITS, 0 }, - { ".note", SHT_NOTE, 0 }, - { ".rodata", SHT_PROGBITS, SHF_ALLOC }, - { ".rodata1", SHT_PROGBITS, SHF_ALLOC }, - { ".tbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_TLS }, - { ".tdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_TLS }, - { ".text", SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR }, - { ".init_array",SHT_INIT_ARRAY, SHF_ALLOC + SHF_WRITE }, - { ".fini_array",SHT_FINI_ARRAY, SHF_ALLOC + SHF_WRITE }, - { ".preinit_array",SHT_PREINIT_ARRAY, SHF_ALLOC + SHF_WRITE }, - -#ifdef ELF_TC_SPECIAL_SECTIONS - ELF_TC_SPECIAL_SECTIONS -#endif - -#if 0 - /* The following section names are special, but they can not - reasonably appear in assembler code. Some of the attributes are - processor dependent. */ - { ".dynamic", SHT_DYNAMIC, SHF_ALLOC /* + SHF_WRITE */ }, - { ".dynstr", SHT_STRTAB, SHF_ALLOC }, - { ".dynsym", SHT_DYNSYM, SHF_ALLOC }, - { ".got", SHT_PROGBITS, 0 }, - { ".hash", SHT_HASH, SHF_ALLOC }, - { ".interp", SHT_PROGBITS, /* SHF_ALLOC */ }, - { ".plt", SHT_PROGBITS, 0 }, - { ".shstrtab",SHT_STRTAB, 0 }, - { ".strtab", SHT_STRTAB, /* SHF_ALLOC */ }, - { ".symtab", SHT_SYMTAB, /* SHF_ALLOC */ }, -#endif - - { NULL, 0, 0 } -}; - void obj_elf_change_section (name, type, attr, entsize, group_name, linkonce, push) const char *name; @@ -671,7 +614,8 @@ obj_elf_change_section (name, type, attr, entsize, group_name, linkonce, push) asection *old_sec; segT sec; flagword flags; - int i; + int def_type; + int def_attr; #ifdef md_flush_pending_output md_flush_pending_output (); @@ -695,48 +639,52 @@ obj_elf_change_section (name, type, attr, entsize, group_name, linkonce, push) old_sec = bfd_get_section_by_name (stdoutput, name); sec = subseg_new (name, 0); - /* See if this is one of the special sections. */ - for (i = 0; special_sections[i].name != NULL; i++) - if (strcmp (name, special_sections[i].name) == 0) - { - if (type == SHT_NULL) - type = special_sections[i].type; - else if (type != special_sections[i].type) - { - if (old_sec == NULL - /* FIXME: gcc, as of 2002-10-22, will emit + if (_bfd_elf_get_sec_type_attr (stdoutput, name, &def_type, + &def_attr)) + { + if (type == SHT_NULL) + type = def_type; + else if (type != def_type) + { + if (old_sec == NULL + /* FIXME: gcc, as of 2002-10-22, will emit - .section .init_array,"aw",@progbits + .section .init_array,"aw",@progbits - for __attribute__ ((section (".init_array"))). - "@progbits" is incorrect. */ - && special_sections[i].type != SHT_INIT_ARRAY - && special_sections[i].type != SHT_FINI_ARRAY - && special_sections[i].type != SHT_PREINIT_ARRAY) - { - as_warn (_("setting incorrect section type for %s"), name); - } - else - { - as_warn (_("ignoring incorrect section type for %s"), name); - type = special_sections[i].type; - } - } - if ((attr &~ special_sections[i].attributes) != 0 - && old_sec == NULL) - { - /* As a GNU extension, we permit a .note section to be - allocatable. If the linker sees an allocateable .note - section, it will create a PT_NOTE segment in the output - file. */ - if (strcmp (name, ".note") != 0 - || attr != SHF_ALLOC) - as_warn (_("setting incorrect section attributes for %s"), + for __attribute__ ((section (".init_array"))). + "@progbits" is incorrect. */ + && def_type != SHT_INIT_ARRAY + && def_type != SHT_FINI_ARRAY + && def_type != SHT_PREINIT_ARRAY) + { + /* We allow to specify any type for a .note section. */ + if (def_type != SHT_NOTE) + as_warn (_("setting incorrect section type for %s"), + name); + } + else + { + as_warn (_("ignoring incorrect section type for %s"), name); - } - attr |= special_sections[i].attributes; - break; - } + type = def_type; + } + } + + if (old_sec == NULL && (attr &~ def_attr) != 0) + { + /* As a GNU extension, we permit a .note section to be + allocatable. If the linker sees an allocateable .note + section, it will create a PT_NOTE segment in the output + file. */ + if (strcmp (name, ".note") != 0 || attr != SHF_ALLOC) + as_warn (_("setting incorrect section attributes for %s"), + name); + } + attr |= def_attr; + + elf_section_type (sec) = type; + elf_section_flags (sec) = attr; + } /* Convert ELF type and flags to BFD flags. */ flags = (SEC_RELOC @@ -2076,6 +2024,7 @@ elf_frob_file () as_fatal (_("can't create group: %s"), bfd_errmsg (bfd_get_error ())); } + elf_section_type (s) = SHT_GROUP; /* Pass a pointer to the first section in this group. */ elf_next_in_group (s) = list.head[i]; diff --git a/gas/config/obj-elf.h b/gas/config/obj-elf.h index 0fa2ba6..641a373 100644 --- a/gas/config/obj-elf.h +++ b/gas/config/obj-elf.h @@ -134,6 +134,13 @@ int elf_s_get_other PARAMS ((symbolS *)); extern asection *gdb_section; +#ifndef obj_sec_set_private_data +#define obj_sec_set_private_data(B, S) \ + if (! BFD_SEND ((B), _new_section_hook, ((B), (S)))) \ + as_fatal (_("can't allocate ELF private section data: %s"), \ + bfd_errmsg (bfd_get_error ())) +#endif + #ifndef obj_frob_file #define obj_frob_file elf_frob_file #endif diff --git a/gas/config/tc-alpha.h b/gas/config/tc-alpha.h index d9275e2..37e5838 100644 --- a/gas/config/tc-alpha.h +++ b/gas/config/tc-alpha.h @@ -104,10 +104,6 @@ extern void alpha_frob_file_before_adjust PARAMS ((void)); #define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */ #ifdef OBJ_ELF -#define ELF_TC_SPECIAL_SECTIONS \ - { ".sdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_ALPHA_GPREL }, \ - { ".sbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_ALPHA_GPREL }, - #define md_elf_section_letter alpha_elf_section_letter extern int alpha_elf_section_letter PARAMS ((int, char **)); #define md_elf_section_flags alpha_elf_section_flags diff --git a/gas/config/tc-ia64.h b/gas/config/tc-ia64.h index 884bfb7..8d2f437 100644 --- a/gas/config/tc-ia64.h +++ b/gas/config/tc-ia64.h @@ -151,10 +151,6 @@ extern void ia64_check_label PARAMS ((symbolS *)); #define WORKING_DOT_WORD /* don't do broken word processing for now */ -#define ELF_TC_SPECIAL_SECTIONS \ -{ ".sbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_IA_64_SHORT }, \ -{ ".sdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_IA_64_SHORT }, - #define DWARF2_LINE_MIN_INSN_LENGTH 1 /* so slot-multipliers can be 1 */ /* This is the information required for unwind records in an ia64 diff --git a/gas/config/tc-m32r.h b/gas/config/tc-m32r.h index 12512f7..f54c980 100644 --- a/gas/config/tc-m32r.h +++ b/gas/config/tc-m32r.h @@ -98,11 +98,6 @@ int m32r_fill_insn PARAMS ((int)); #define md_after_pass_hook() m32r_fill_insn (1) #define TC_START_LABEL(ch, ptr) (ch == ':' && m32r_fill_insn (0)) -/* Add extra M32R sections. */ -#define ELF_TC_SPECIAL_SECTIONS \ - { ".sdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, \ - { ".sbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE }, - #define md_cleanup m32r_elf_section_change_hook #define md_elf_section_change_hook m32r_elf_section_change_hook extern void m32r_elf_section_change_hook PARAMS ((void)); diff --git a/gas/config/tc-m68hc11.h b/gas/config/tc-m68hc11.h index 7254db4..c894edd 100644 --- a/gas/config/tc-m68hc11.h +++ b/gas/config/tc-m68hc11.h @@ -53,18 +53,6 @@ extern int m68hc11_mach PARAMS ((void)); #define TARGET_FORMAT (m68hc11_arch_format ()) extern const char *m68hc11_arch_format PARAMS ((void)); -/* Specific sections: - - The .page0 is a data section that is mapped in [0x0000..0x00FF]. - Page0 accesses are faster on the M68HC11. Soft registers used by GCC-m6811 - are located in .page0. - - The .vectors is the data section that represents the interrupt - vectors. */ -#define ELF_TC_SPECIAL_SECTIONS \ - { ".eeprom", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, \ - { ".softregs",SHT_NOBITS, SHF_ALLOC + SHF_WRITE }, \ - { ".page0", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, \ - { ".vectors", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, - #define LISTING_WORD_SIZE 1 /* A word is 1 bytes */ #define LISTING_LHS_WIDTH 4 /* One word on the first line */ #define LISTING_LHS_WIDTH_SECOND 4 /* One word on the second line */ diff --git a/gas/config/tc-mcore.h b/gas/config/tc-mcore.h index 4ab84e4..c727a57 100644 --- a/gas/config/tc-mcore.h +++ b/gas/config/tc-mcore.h @@ -83,12 +83,6 @@ struct mcore_tc_sy #define TARGET_FORMAT (target_big_endian ? "elf32-mcore-big" : "elf32-mcore-little") -#define ELF_TC_SPECIAL_SECTIONS \ - { ".ctors", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, \ - { ".dtors", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, \ -/* Other special sections not generated by the assembler: .reginfo, - .liblist, .conflict, .gptab, .got, .dynamic, .rel.dyn. */ - /* No shared lib support, so we don't need to ensure externally visible symbols can be overridden. */ #define EXTERN_FORCE_RELOC 0 diff --git a/gas/config/tc-mips.h b/gas/config/tc-mips.h index 7afee94..fc96ef3 100644 --- a/gas/config/tc-mips.h +++ b/gas/config/tc-mips.h @@ -162,16 +162,6 @@ extern unsigned long mips_cprmask[4]; #define elf_tc_final_processing mips_elf_final_processing extern void mips_elf_final_processing (void); -#define ELF_TC_SPECIAL_SECTIONS \ - { ".sdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_MIPS_GPREL }, \ - { ".sbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_MIPS_GPREL }, \ - { ".lit4", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_MIPS_GPREL }, \ - { ".lit8", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_MIPS_GPREL }, \ - { ".ucode", SHT_MIPS_UCODE, 0 }, \ - { ".mdebug", SHT_MIPS_DEBUG, 0 }, -/* Other special sections not generated by the assembler: .reginfo, - .liblist, .conflict, .gptab, .got, .dynamic, .rel.dyn. */ - #endif extern void md_mips_end (void); diff --git a/gas/config/tc-ppc.h b/gas/config/tc-ppc.h index 3612f43..a1c74b2 100644 --- a/gas/config/tc-ppc.h +++ b/gas/config/tc-ppc.h @@ -222,22 +222,6 @@ extern int ppc_section_flags PARAMS ((int, int, int)); #define md_elf_section_word(STR, LEN) ppc_section_word (STR, LEN) #define md_elf_section_flags(FLAGS, ATTR, TYPE) ppc_section_flags (FLAGS, ATTR, TYPE) -/* Add extra PPC sections -- Note, for now, make .sbss2 and .PPC.EMB.sbss0 a - normal section, and not a bss section so that the linker doesn't crater - when trying to make more than 2 sections. */ -#define ELF_TC_SPECIAL_SECTIONS \ - { ".tags", SHT_ORDERED, SHF_ALLOC }, \ - { ".sdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, \ - { ".sbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE }, \ - { ".sdata2", SHT_PROGBITS, SHF_ALLOC }, \ - { ".sbss2", SHT_PROGBITS, SHF_ALLOC }, \ - { ".PPC.EMB.apuinfo", SHT_NOTE, 0 }, \ - { ".PPC.EMB.sdata0", SHT_PROGBITS, SHF_ALLOC }, \ - { ".PPC.EMB.sbss0", SHT_PROGBITS, SHF_ALLOC }, \ - /* Extra sections for 64-bit ELF PPC. */ \ - { ".toc", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE}, \ - { ".tocbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE}, - #define tc_comment_chars ppc_comment_chars extern const char *ppc_comment_chars; diff --git a/gas/config/tc-sh64.h b/gas/config/tc-sh64.h index 888ad99..8280c94 100644 --- a/gas/config/tc-sh64.h +++ b/gas/config/tc-sh64.h @@ -174,9 +174,6 @@ extern void sh64_flush_pending_output PARAMS ((void)); #define tc_frob_section(sec) shmedia_frob_section_type (sec) extern void shmedia_frob_section_type PARAMS ((asection *)); -#define ELF_TC_SPECIAL_SECTIONS \ - { ".cranges", SHT_PROGBITS, 0 }, - /* We need to emit fixups relative to the frag in which the instruction resides. Safest way without calculating max fragment growth or making it a fixed number is to provide a pointer to the opcode frag. diff --git a/gas/config/tc-v850.h b/gas/config/tc-v850.h index 7130760..26b1bf1 100644 --- a/gas/config/tc-v850.h +++ b/gas/config/tc-v850.h @@ -74,28 +74,6 @@ extern const struct relax_type md_relax_table[]; #define HANDLE_ALIGN(frag) v850_handle_align (frag) extern void v850_handle_align PARAMS ((fragS *)); -/* This section must be in the small data area (pointed to by GP). */ -#define SHF_V850_GPREL 0x10000000 -/* This section must be in the tiny data area (pointed to by EP). */ -#define SHF_V850_EPREL 0x20000000 -/* This section must be in the zero data area (pointed to by R0). */ -#define SHF_V850_R0REL 0x40000000 - -#define ELF_TC_SPECIAL_SECTIONS \ - { ".sdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_V850_GPREL }, \ - { ".rosdata", SHT_PROGBITS, SHF_ALLOC + SHF_V850_GPREL }, \ - { ".sbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_V850_GPREL }, \ - { ".scommon", SHT_V850_SCOMMON, SHF_ALLOC + SHF_WRITE + SHF_V850_GPREL }, \ - { ".tdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_V850_EPREL }, \ - { ".tbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_V850_EPREL }, \ - { ".tcommon", SHT_V850_TCOMMON, SHF_ALLOC + SHF_WRITE + SHF_V850_R0REL }, \ - { ".zdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_V850_R0REL }, \ - { ".rozdata", SHT_PROGBITS, SHF_ALLOC + SHF_V850_R0REL }, \ - { ".zbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_V850_R0REL }, \ - { ".zcommon", SHT_V850_ZCOMMON, SHF_ALLOC + SHF_WRITE + SHF_V850_R0REL }, \ - { ".call_table_data", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, \ - { ".call_table_text", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_EXECINSTR }, - #define MD_PCREL_FROM_SECTION(FIX, SEC) v850_pcrel_from_section (FIX, SEC) extern long v850_pcrel_from_section PARAMS ((struct fix *, asection *)); diff --git a/gas/config/tc-xtensa.h b/gas/config/tc-xtensa.h index c6bc09d..2f317b0 100644 --- a/gas/config/tc-xtensa.h +++ b/gas/config/tc-xtensa.h @@ -189,12 +189,4 @@ extern long xtensa_relax_frag #define MD_APPLY_SYM_VALUE(FIX) 0 -/* The default literal sections should always be marked as "code" (i.e., - SHF_EXECINSTR). This is particularly important for the Linux kernel - module loader so that the literals are not placed after the text. */ -#define ELF_TC_SPECIAL_SECTIONS \ - { ".literal", SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR }, \ - { ".init.literal", SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR }, \ - { ".fini.literal", SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR }, - #endif /* TC_XTENSA */ diff --git a/gas/subsegs.c b/gas/subsegs.c index dfdb000..0fe11e7 100644 --- a/gas/subsegs.c +++ b/gas/subsegs.c @@ -422,6 +422,10 @@ subseg_get (segname, force_new) else secptr = bfd_make_section_anyway (stdoutput, segname); +#ifdef obj_sec_set_private_data + obj_sec_set_private_data (stdoutput, secptr); +#endif + seginfo = seg_info (secptr); if (! seginfo) { |