]> git.pld-linux.org Git - packages/crossavr-gcc.git/blobdiff - 502-gcc-4.5.1-bug-18145-v4.patch
crossavr-gcc: Synchronized with official AVR toolchain 3.4.0.663.
[packages/crossavr-gcc.git] / 502-gcc-4.5.1-bug-18145-v4.patch
diff --git a/502-gcc-4.5.1-bug-18145-v4.patch b/502-gcc-4.5.1-bug-18145-v4.patch
deleted file mode 100644 (file)
index 1115f35..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c
---- gcc/config/avr/avr.c       2011-06-09 15:41:06.000000000 -0500
-+++ gcc/config/avr/avr.c       2011-06-09 15:46:03.000000000 -0500
-@@ -81,6 +81,12 @@ static rtx avr_function_value (const_tre
- static void avr_insert_attributes (tree, tree *);
- static void avr_asm_init_sections (void);
- static unsigned int avr_section_type_flags (tree, const char *, int);
-+static void avr_asm_named_section (const char *name, unsigned int flags, tree decl);
-+/* Track if code will use .bss and/or .data */
-+static int avr_need_clear_bss_p = 0;
-+static int avr_need_copy_data_p = 0;
-+static void avr_output_data_section_asm_op (const void*);
-+static void avr_output_bss_section_asm_op (const void*);
- static void avr_reorg (void);
- static void avr_asm_out_ctor (rtx, int);
-@@ -6102,6 +6108,54 @@ avr_output_progmem_section_asm_op (const
-   fprintf (asm_out_file, "\t.p2align 1\n");
- }
-+/* ASM_OUTPUT_COMMON */
-+/* Track need of __do_clear_bss */
-+
-+void
-+avr_asm_output_common (FILE *stream, const char *name,
-+                       unsigned HOST_WIDE_INT size,
-+                       unsigned HOST_WIDE_INT rounded ATTRIBUTE_UNUSED)
-+{
-+    avr_need_clear_bss_p = 1;
-+    fputs ("\t.comm ", stream);
-+    assemble_name (stream, name);
-+    fprintf (stream, ",%lu,1\n", (unsigned long) size);  
-+}
-+
-+/* ASM_OUTPUT_LOCAL */
-+/* Track need of __do_clear_bss */
-+
-+void
-+avr_asm_output_local (FILE *stream, const char *name,
-+                      unsigned HOST_WIDE_INT size,
-+                      unsigned HOST_WIDE_INT rounded ATTRIBUTE_UNUSED)
-+{                                                    
-+    avr_need_clear_bss_p = 1;                           
-+    fputs ("\t.lcomm ", stream);                      
-+    assemble_name (stream, name);                   
-+    fprintf (stream, ",%d\n", (int) size);           
-+}
-+
-+/* Unnamed section callback to track need of __do_copy_data */
-+
-+static void
-+avr_output_data_section_asm_op (const void *data)
-+{
-+    avr_need_copy_data_p = 1;
-+    /* Dispatch to default */
-+    output_section_asm_op (data);
-+}
-+
-+/* Unnamed section callback to track need of __do_clear_bss */
-+
-+static void
-+avr_output_bss_section_asm_op (const void *data)
-+{
-+    avr_need_clear_bss_p = 1;
-+    /* Dispatch to default */
-+    output_section_asm_op (data);
-+}
-+
- /* Implement TARGET_ASM_INIT_SECTIONS.  */
- static void
-@@ -6111,6 +6165,27 @@ avr_asm_init_sections (void)
-                                        avr_output_progmem_section_asm_op,
-                                        NULL);
-   readonly_data_section = data_section;
-+
-+  data_section->unnamed.callback = avr_output_data_section_asm_op;
-+  bss_section->unnamed.callback = avr_output_bss_section_asm_op;
-+}
-+
-+/* TARGET_ASM_NAMED_SECTION */
-+/* Track need of __do_clear_bss, __do_copy_data for named sections */
-+
-+static void
-+avr_asm_named_section (const char *name, unsigned int flags, tree decl)
-+{
-+    if (!avr_need_copy_data_p)
-+        avr_need_copy_data_p =
-+            (0 == strncmp (name, ".data", 5)
-+             || 0 == strncmp (name, ".rodata", 7)
-+             || 0 == strncmp (name, ".gnu.linkonce.", 14));
-+    
-+    if (!avr_need_clear_bss_p)
-+        avr_need_clear_bss_p = (0 == strncmp (name, ".bss", 4));
-+    
-+    default_elf_asm_named_section (name, flags, decl);
- }
- static unsigned int
-@@ -6152,12 +6227,6 @@ avr_file_start (void)
-   AVR_TINY ? fputs ("__tmp_reg__ = 16\n" 
-                           "__zero_reg__ = 17\n", asm_out_file) : fputs ("__tmp_reg__ = 0\n" 
-          "__zero_reg__ = 1\n", asm_out_file);
--
--  /* FIXME: output these only if there is anything in the .data / .bss
--     sections - some code size could be saved by not linking in the
--     initialization code from libgcc if one or both sections are empty.  */
--  fputs ("\t.global __do_copy_data\n", asm_out_file);
--  fputs ("\t.global __do_clear_bss\n", asm_out_file);
- }
- /* Outputs to the stdio stream FILE some
-@@ -6166,6 +6235,16 @@ avr_file_start (void)
- static void
- avr_file_end (void)
- {
-+    /* Output these only if there is anything in the
-+       .data* / .rodata* / .gnu.linkonce.* resp. .bss*
-+       input section(s) - some code size can be saved by not
-+       linking in the initialization code from libgcc if resp.
-+       sections are empty. */
-+    if (avr_need_copy_data_p)
-+        fputs (".global __do_copy_data\n", asm_out_file);
-+    
-+    if (avr_need_clear_bss_p)
-+        fputs (".global __do_clear_bss\n", asm_out_file);
- }
- /* Choose the order in which to allocate hard registers for
-diff -Naurp gcc/config/avr/avr.h gcc/config/avr/avr.h
---- gcc/config/avr/avr.h       2011-06-09 14:30:33.000000000 -0500
-+++ gcc/config/avr/avr.h       2011-06-09 15:46:03.000000000 -0500
-@@ -562,7 +562,7 @@ do {                                                                           \
- #define ASM_APP_OFF "/* #NOAPP */\n"
- /* Switch into a generic section.  */
--#define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section
-+#define TARGET_ASM_NAMED_SECTION avr_asm_named_section
- #define TARGET_ASM_INIT_SECTIONS avr_asm_init_sections
- #define ASM_OUTPUT_ASCII(FILE, P, SIZE)        gas_output_ascii (FILE,P,SIZE)
-@@ -570,21 +570,13 @@ do {                                                                         \
- #define IS_ASM_LOGICAL_LINE_SEPARATOR(C, STR) ((C) == '\n' || ((C) == '$'))
- #define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED)                           \
--do {                                                                     \
--     fputs ("\t.comm ", (STREAM));                                       \
--     assemble_name ((STREAM), (NAME));                                           \
--     fprintf ((STREAM), ",%lu,1\n", (unsigned long)(SIZE));              \
--} while (0)
-+        avr_asm_output_common (STREAM, NAME, SIZE, ROUNDED)
- #define ASM_OUTPUT_BSS(FILE, DECL, NAME, SIZE, ROUNDED)                       \
-   asm_output_bss ((FILE), (DECL), (NAME), (SIZE), (ROUNDED))
- #define ASM_OUTPUT_LOCAL(STREAM, NAME, SIZE, ROUNDED)                 \
--do {                                                                  \
--     fputs ("\t.lcomm ", (STREAM));                                   \
--     assemble_name ((STREAM), (NAME));                                        \
--     fprintf ((STREAM), ",%d\n", (int)(SIZE));                                \
--} while (0)
-+        avr_asm_output_local (STREAM, NAME, SIZE, ROUNDED)
- #undef TYPE_ASM_OP
- #undef SIZE_ASM_OP
-diff -Naurp gcc/config/avr/avr-protos.h gcc/config/avr/avr-protos.h
---- gcc/config/avr/avr-protos.h        2011-06-09 14:30:33.000000000 -0500
-+++ gcc/config/avr/avr-protos.h        2011-06-09 15:46:03.000000000 -0500
-@@ -35,6 +35,9 @@ extern int avr_simple_epilogue (void);
- extern void gas_output_limited_string (FILE *file, const char *str);
- extern void gas_output_ascii (FILE *file, const char *str, size_t length);
- extern int avr_hard_regno_rename_ok (unsigned int, unsigned int);
-+extern void avr_asm_output_common (FILE *stream, const char *name, unsigned HOST_WIDE_INT size, unsigned HOST_WIDE_INT rounded);
-+extern void avr_asm_output_local (FILE *stream, const char *name, unsigned HOST_WIDE_INT size, unsigned HOST_WIDE_INT rounded);
-+  
- extern rtx avr_return_addr_rtx (int count, const_rtx tem);
- #ifdef TREE_CODE
This page took 0.029422 seconds and 4 git commands to generate.