File suse-record-gcc-opts.diff of Package gcc43
--- gcc/toplev.c
+++ gcc/toplev.c
@@ -1434,6 +1434,8 @@ init_asm_output (const char *name)
inform ("-frecord-gcc-switches is not supported by the current target");
}
+ suse_file_end_indicate_optflags ();
+
#ifdef ASM_COMMENT_START
if (flag_verbose_asm)
{
--- gcc/varasm.c
+++ gcc/varasm.c
@@ -6304,6 +6304,35 @@ file_end_indicate_exec_stack (void)
switch_to_section (get_section (".note.GNU-stack", flags, NULL));
}
+/* This is a generic routine emitting a SUSE specific section for
+ QA check marks. */
+
+void
+suse_file_end_indicate_optflags (void)
+{
+ unsigned int flags = SECTION_DEBUG | SECTION_STRINGS | SECTION_MERGE | (SECTION_ENTSIZE & 1);
+
+ /*
+ o/O: optimize was off/on
+ s/S: size optimisation was off/on
+ p/P: stack-protector was off/on
+ w/W: warnings were off/on
+ g/G: debug was off/on
+ */
+
+ char opts_buffer[6];
+
+ opts_buffer[0] = (optimize >= 2) ? 'O' : 'o';
+ opts_buffer[1] = (optimize >= 1 && optimize_size) ? 'S' : 's';
+ opts_buffer[2] = (flag_stack_protect >= 1) ? 'P' : 'p';
+ opts_buffer[3] = (warn_uninitialized >= 1 && warn_sequence_point >= 1) ? 'W' : 'w';
+ opts_buffer[4] = (debug_info_level > DINFO_LEVEL_NONE) ? 'G' : 'g';
+ opts_buffer[5] = '\0';
+
+ switch_to_section (get_section (".comment.SuSE.OPTs", flags, NULL));
+ ASM_OUTPUT_ASCII (asm_out_file, opts_buffer, strlen (opts_buffer));
+}
+
/* Output DIRECTIVE (a C string) followed by a newline. This is used as
a get_unnamed_section callback. */
--- gcc/output.h
+++ gcc/output.h
@@ -612,6 +612,7 @@ extern void default_emit_except_table_la
extern void default_internal_label (FILE *, const char *, unsigned long);
extern void default_file_start (void);
extern void file_end_indicate_exec_stack (void);
+extern void suse_file_end_indicate_optflags (void);
extern bool default_valid_pointer_mode (enum machine_mode);
extern void default_elf_asm_output_external (FILE *file, tree,