On Thu, Jun 7, 2012 at 7:52 PM, Richard Sandiford <rdsandif...@googlemail.com> wrote: > Steven Bosscher <stevenb....@gmail.com> writes: >> On Wed, Jun 6, 2012 at 7:15 PM, Paolo Bonzini <bonz...@gnu.org> wrote: >>> Il 06/06/2012 09:15, Steven Bosscher ha scritto: >>>> + add_asm_printf ("%s\n\t.ascii \"%s\"\n", >>>> + READONLY_DATA_SECTION_ASM_OP, string); >>>> + else >>> >>> Need to escape the string as in mips_output_ascii, of course. :( >> >> Well, I suppose so... >> But I was wondering why mips writes out ident strings as ascii in the >> first place. >> >> The GCC version string is output as .ident with "normal" quoting, but >> a user #ident is printed out as a .ascii. It has been like that since >> the initial revision (r297, more than 20 years ago). See example at >> the bottom of this mail (some test case in the test suite, but I don't >> remember which one). >> >> Shouldn't we just print out .ident for #ident? That would make things >> a lot easier for me, at least :-) >> Richard S.? > > Yeah, I think both the ASM_OUTPUT_ASCII and ASM_OUTPUT_IDENT definitions > can go. We only support GAS and ELF these days, and all MIPS configs > need to include elfos.h. Will be a few days before I have chance to > test though.
Would it be OK for you if I change the MIPS specific parts of http://gcc.gnu.org/ml/gcc-patches/2012-06/msg00416.html to be as follows: Index: config/mips/sde.h =================================================================== --- config/mips/sde.h (revision 188182) +++ config/mips/sde.h (working copy) @@ -97,17 +97,6 @@ along with GCC; see the file COPYING3. If not see /* Use periods rather than dollar signs in special g++ assembler names. */ #define NO_DOLLAR_IN_LABEL -/* Attach a special .ident directive to the end of the file to identify - the version of GCC which compiled this code. */ -#undef IDENT_ASM_OP -#define IDENT_ASM_OP "\t.ident\t" - -/* Output #ident string into the ELF .comment section, so it doesn't - form part of the load image, and so that it can be stripped. */ -#undef ASM_OUTPUT_IDENT -#define ASM_OUTPUT_IDENT(STREAM, STRING) \ - fprintf (STREAM, "%s\"%s\"\n", IDENT_ASM_OP, STRING); - /* Currently we don't support 128bit long doubles, so for now we force n32 to be 64bit. */ #undef LONG_DOUBLE_TYPE_SIZE Index: config/mips/mips.c =================================================================== --- config/mips/mips.c (revision 188182) +++ config/mips/mips.c (working copy) @@ -58,6 +58,7 @@ along with GCC; see the file COPYING3. If not see #include "diagnostic.h" #include "target-globals.h" #include "opts.h" +#include "cgraph.h" /* True if X is an UNSPEC wrapper around a SYMBOL_REF or LABEL_REF. */ #define UNSPEC_ADDRESS_P(X) \ @@ -3097,6 +3098,7 @@ mips_legitimize_move (enum machine_mode mode, rtx } return false; } + ^L /* Return true if value X in context CONTEXT is a small-data address that can be rewritten as a LO_SUM. */ Index: config/mips/mips.h =================================================================== --- config/mips/mips.h (revision 188182) +++ config/mips/mips.h (working copy) @@ -2674,15 +2674,6 @@ do { \ #undef ASM_OUTPUT_ASCII #define ASM_OUTPUT_ASCII mips_output_ascii -/* Output #ident as a in the read-only data section. */ -#undef ASM_OUTPUT_IDENT -#define ASM_OUTPUT_IDENT(FILE, STRING) \ -{ \ - const char *p = STRING; \ - int size = strlen (p) + 1; \ - switch_to_section (readonly_data_section); \ - assemble_string (p, size); \ -} ^L /* Default to -G 8 */ #ifndef MIPS_DEFAULT_GVALUE I would test this with a mips-elf cross compiler on mips-sim. Ciao! Steven