Uros Bizjak <ubiz...@gmail.com> writes: > On Thu, Mar 17, 2016 at 11:40 PM, Rainer Orth > <r...@cebitec.uni-bielefeld.de> wrote: >> gcc.target/i386/pr58218.c currently FAILs on 64-bit Solaris/x86 with the >> native assembler: >> >> FAIL: gcc.target/i386/pr58218.c (test for excess errors) >> >> Excess errors: >> Assembler: pr58218.c >> "/var/tmp//cciHFIO7.s", line 3 : Section attributes do not match >> >> .section .lbss,"aw",@nobits >> >> It turns out x86_64 large sections need to marked with a 'h' section >> flag for as. gas implicitly sets SHF_AMD64_LARGE based on section >> names, but also accepts an 'l' for the same purpose. >> >> The following patch fixes this by using the SECTION_MACH_DEP section >> flag to mark large sections and emit the right flag in >> default_elf_asm_named_section. >> >> Given this comment in output.h >> >> #define SECTION_MACH_DEP 0x4000000 /* subsequent bits reserved for target >> */ >> >> handling only a single SECTION_MACH_DEP can be considered a hack. >> Currently, only one user of SECTION_MACH_DEP (avr) uses more than one >> section flag, so maybe I can get away with this for now. >> >> A full solution would split out the part of >> default_elf_asm_named_section that emits the flags into a new >> default_elf_asm_section_flags which prints the flag string to a stream, >> invoking it either via a macro than be overridden or perhaps a target >> hook (which seems not fully right either since those are object file >> format agnostic and this is just a small part of emitting ELF named >> sections). >> >> The patch has been bootstrapped without regressions on >> i386-pc-solaris2.12 (with both as and gas) and x86_64-pc-linux-gnu. >> This is not a regression, so this may have to wait for GCC 7 stage 1. >> >> Ok for mainline now or then? > > I'd rather leave this and subsequent patch for gcc-7 at this point. > The patch touches middle-end, and from the explanation above, it looks > that some discussion with middle-end maintainers (relevant people > CC'd) and their approval is still needed.
Given that gcc-6 has branched now, could I please get a review for this patch https://gcc.gnu.org/ml/gcc-patches/2016-03/msg01056.html and its companion https://gcc.gnu.org/ml/gcc-patches/2016-03/msg01059.html now? Thanks. Rainer >> 2016-03-15 Rainer Orth <r...@cebitec.uni-bielefeld.de> >> >> PR target/59407 >> * config/i386/i386.c (SECTION_LARGE): Define. >> (x86_64_elf_select_section): Set it for large data/bss sections. >> Only clear SECTION_WRITE for .lrodata. >> (x86_64_elf_section_type_flags): Set SECTION_LARGE for large >> data/bss sections. >> * config/i386/sol2.h (MACH_DEP_SECTION_ASM_FLAG): Define. >> * varasm.c (default_elf_asm_named_section): Grow flagchars. >> [MACH_DEP_SECTION_ASM_FLAG] Emit MACH_DEP_SECTION_ASM_FLAG for >> SECTION_MACH_DEP. >> * doc/tm.texi.in (Sections, MACH_DEP_SECTION_ASM_FLAG): Describe. >> * doc/tm.texi: Regenerate. >> >> >> >> -- >> ----------------------------------------------------------------------------- >> Rainer Orth, Center for Biotechnology, Bielefeld University >> -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University