This patch extends the linker script language to include SECTION_FLAGS on an output section statement. The purpose of the flags is to ensure that all input sections assigned to the output section either have the flags set or cleared. This version of the patch sets the infrastructure but does not define a backend implementation. I will provide that along with additional testcases when I contribute the Powerpc VLE port. This patch was originally discussed in the thread beginning here: http://sourceware.org/ml/binutils/2011-04/msg00428.html Does this look okay to install? Thanks, Catherine 2011-05-18 Catherine Moore include/ * bfdlink.h (flag_type): New enumeration. (flag_info_list): New structure. (flag_info): New structure. ld/ * ld.texinfo: Document usage of SECTION_FLAGS. * ldgram.y (section): Recognize sect_flags. (sect_flags): New rule. (sect_flag_list): New rule. * ldlang.c (lang_add_section): Check section flags. (lang_enter_output_section_statement): Add argument sflags. Initialize sflags field in output statement. * ldlang.h (lang_output_section_statement_type): Add flag_info field. (lang_enter_output_section_statement): New argument sflags. Update all callers. * ldlex.l (SECTION_FLAGS): New token.A * mri.c (mri_draw_tree): Update argument list for land_enter_output_section_statement. ld/testsuite/ * ld-scripts/section-flags-1.exp: New. * ld-scripts/section-flags-1.s: New. * ld-scripts/section-flags-1.t: New. bfd/ 2011-05-18 Catherine Moore * bfd-in2.h: Regenerated. * bfd.c (bfd_lookup_section_flags): New definition. * binary.c (binary_bfd_lookup_section_flags): New definition. * coff-rs6000.c (rs6000coff_vec): Include bfd_generic_lookup_section_flags. (pmac_xcoff_vec): Likewise. * coffcode.h (coff_bfd_lookup_section_flags): New definition. * elf-bfd.h (elf_backend_lookup_section_flags_hook): Declare. (bfd_elf_lookup_section_flags): Declare. * elflink.c (bfd_elf_lookup_section_flags): New function. * elfxx-target.h (bfd_elfNN_bfd_lookup_section_flags): Define. (elf_backend_lookup_section_flags_hook): Define. (elf_backend_data): Add elf_backend_lookup_section_flags_hook. * ieee.c (ieee_bfd_lookup_section_flags): New define. * ihex.c (ihex_bfd_lookup_section_flags): New define. * libbfd-in.h (_bfd_nolink_bfd_lookup_section_flags): Declare. (bfd_generic_lookup_section_flags): Declare. * libbfd.h: Regenerated. * mach-o-target.c (bfd_mach_o_bfd_lookup_section_flags): New. * mmo.c (mmo_fd_lookup_section_flags): New definition. * oasys.c (oasys_bfd_lookup_section_flags): New definition. * pef.c (bfd_pef_bfd_lookup_section_flags): New definition. * plugin.c (bfd_plugin_bfd_lookup_section_flags): New definition. * ppcboot.c (ppcboot_bfd_lookup_section_flags): New definition. * reloc.c (bfd_generic_lookup_section_flags): New function. * som.c (som_bfd_lookup_section_flags): New definition. * srec.c (srec_bfd_lookup_section_flags): New definition. * targets.c (flag_info): Declare. (NAME##_bfd_lookup_section_flags): Add to LINK jump table. (_bfd_lookup_section_flags): New. * tekhex.c (tekhex_bfd_lookup_section_flags): New definition. * versados.c (versados_bfd_lookup_section_flags): New definition. * vms-alpha.c (alpha_vms_bfd_lookup_section_flag): New definition. * xsym.c (bfd_sym_bfd_lookup_section_flags): New definition.