re PR target/71151 ([avr] -fmerge-constants and -fdata-sections/-ffunction-sections...
authorGeorg-Johann Lay <avr@gjlay.de>
Fri, 1 Jul 2016 12:09:53 +0000 (12:09 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Fri, 1 Jul 2016 12:09:53 +0000 (12:09 +0000)
gcc/testsuite/
PR target/71151
* gcc.target/avr/pr71151-common.h (foo): Use macro SECTION_NAME
instead of ".foo" for its section name.
* gcc.target/avr/pr71151-2.c (SECTION_NAME): Define appropriately
depending on MCU's flash size.
* gcc.target/avr/pr71151-3.c (SECTION_NAME): Dito.
* gcc.target/avr/pr71151-4.c (SECTION_NAME): Dito.
* gcc.target/avr/pr71151-5.c (SECTION_NAME): Dito.
* gcc.target/avr/pr71151-6.c (SECTION_NAME): Dito.
* gcc.target/avr/pr71151-7.c (SECTION_NAME): Dito.
* gcc.target/avr/pr71151-8.c (SECTION_NAME): Dito.

From-SVN: r237910

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/avr/pr71151-2.c
gcc/testsuite/gcc.target/avr/pr71151-3.c
gcc/testsuite/gcc.target/avr/pr71151-4.c
gcc/testsuite/gcc.target/avr/pr71151-5.c
gcc/testsuite/gcc.target/avr/pr71151-6.c
gcc/testsuite/gcc.target/avr/pr71151-7.c
gcc/testsuite/gcc.target/avr/pr71151-8.c
gcc/testsuite/gcc.target/avr/pr71151-common.h

index 86d596cad266fd532d8a07cf6309dc74792df5ae..c23836cd8a2ac787266b1af03590618491899ce7 100644 (file)
@@ -1,3 +1,17 @@
+2016-07-01  Georg-Johann Lay  <avr@gjlay.de>
+
+       PR target/71151
+       * gcc.target/avr/pr71151-common.h (foo): Use macro SECTION_NAME
+       instead of ".foo" for its section name.
+       * gcc.target/avr/pr71151-2.c (SECTION_NAME): Define appropriately
+       depending on MCU's flash size.
+       * gcc.target/avr/pr71151-3.c (SECTION_NAME): Dito.
+       * gcc.target/avr/pr71151-4.c (SECTION_NAME): Dito.
+       * gcc.target/avr/pr71151-5.c (SECTION_NAME): Dito.
+       * gcc.target/avr/pr71151-6.c (SECTION_NAME): Dito.
+       * gcc.target/avr/pr71151-7.c (SECTION_NAME): Dito.
+       * gcc.target/avr/pr71151-8.c (SECTION_NAME): Dito.
+
 2016-07-01  Jan Beulich  <jbeulich@suse.com>
 
        * gcc.target/i386/pr65105-2.c: Add -msse2.
index e523ce09c7a5a8e891cbbaa5ef5d13d226f425fe..f745841df8a66fba27cab29160770545d3d54d0b 100644 (file)
@@ -5,6 +5,8 @@
    flash address for loading jump table entry, 2 byte entry, after
    removing the special section placement hook. */
 
+#define SECTION_NAME ".foo"
+
 #include "exit-abort.h"
 #include "pr71151-common.h"
 
index ce0ba5972e409707eba66c24a53b14333f42c00f..a8fa6b63e0b2316fe47fc87a9a4948cfa130b47e 100644 (file)
@@ -1,10 +1,17 @@
 /* { dg-do run } */
 /* { dg-options "-Os -fno-tree-switch-conversion -ffunction-sections -mno-relax -fdata-sections -Wl,--section-start=.foo=0x10000" } */
 
+#ifdef __AVR_HAVE_ELPM__
 /* Make sure jumptables work properly if placed above 64 KB and below 128 KB,
    i.e. 3 byte flash address for loading jump table entry and 2 byte jump table
    entry, with relaxation disabled, after removing the special section
    placement hook. */
+#define SECTION_NAME ".foo"
+#else
+/* No special jump table placement so that avrtest won't abort
+   for, e.g. ATmega64.  */
+#define SECTION_NAME ".text.foo"
+#endif
 
 #include "exit-abort.h"
 #include "pr71151-common.h"
index 51250b06133ae6b189b3aca7f5e2640b91a5f643..659aff07510425a387b534c082222e4862be8b22 100644 (file)
@@ -1,10 +1,17 @@
 /* { dg-do run } */
 /* { dg-options "-Os -fno-tree-switch-conversion -ffunction-sections -fdata-sections -mrelax -Wl,--section-start=.foo=0x10000" } */
 
+#ifdef __AVR_HAVE_ELPM__
 /* Make sure jumptables work properly if placed above 64 KB and below 128 KB,
    i.e. 3 byte flash address for loading jump table entry and 2 byte jump
    table entry, with relaxation enabled, after removing the special section
    placement hook. */
+#define SECTION_NAME ".foo"
+#else
+/* No special jump table placement so that avrtest won't abort
+   for, e.g. ATmega64.  */
+#define SECTION_NAME ".text.foo"
+#endif
 
 #include "exit-abort.h"
 #include "pr71151-common.h"
index 47030dca5ee60bb59465e6c8b2c8d93ef9ac86b9..f9b09e8208301610ea28dd03e25ff898fb3f458e 100644 (file)
@@ -1,20 +1,23 @@
 /* { dg-do run } */
 /* { dg-options "-Os -fno-tree-switch-conversion -ffunction-sections -fdata-sections -mno-relax -Wl,--section-start=.foo=0x20000" } */
 
+#ifdef __AVR_3_BYTE_PC__
 /* Make sure jumptables work properly if placed above 128 KB, i.e. 3 byte
    flash address for loading jump table entry and a jump table entry
    that is a stub, with relaxation disabled, after removing the special
    section placement hook. */
+#define SECTION_NAME ".foo"
+#else
+/* No special jump table placement so that avrtest won't abort
+   for, e.g. ATmega128.  */
+#define SECTION_NAME ".text.foo"
+#endif
 
 #include "exit-abort.h"
 #include "pr71151-common.h"
 
 int main()
 {
-       /* Not meant for devices with flash <= 128K */
-#if defined (__AVR_2_BYTE_PC__)
-       exit(0);
-#else
        foo(5);
        if (y != 37)
                abort();
@@ -26,5 +29,4 @@ int main()
        foo(7);
        if (y != 98)
                abort();
-#endif
 }
index 815aa13425c6b65e8ad7e700dfa8181a62899aa2..dedeffaa425bd3451614ec88f23254a4916df55c 100644 (file)
@@ -1,20 +1,23 @@
 /* { dg-do run } */
 /* { dg-options "-Os -fno-tree-switch-conversion -ffunction-sections -fdata-sections -mrelax -Wl,--section-start=.foo=0x20000" } */
 
+#ifdef __AVR_3_BYTE_PC__
 /* Make sure jumptables work properly if placed above 128 KB, i.e. 3 byte
    flash address for loading jump table entry and a jump table entry
    that is a stub, with relaxation enabled, after removing the special
    section placement hook. */
+#define SECTION_NAME ".foo"
+#else
+/* No special jump table placement so that avrtest won't abort
+   for, e.g. ATmega128.  */
+#define SECTION_NAME ".text.foo"
+#endif
 
 #include "exit-abort.h"
 #include "pr71151-common.h"
 
 int main()
 {
-       /* Not meant for devices with flash <= 128K */
-#if defined (__AVR_2_BYTE_PC__)
-       exit(0);
-#else
        foo(5);
        if (y != 37)
                abort();
@@ -26,5 +29,4 @@ int main()
        foo(7);
        if (y != 98)
                abort();
-#endif
 }
index cdc7ea9f65c059c508fd19d4d49a8f361ceae2a1..2a440960301c8662eaf0e2163e5388b873ceb067 100644 (file)
@@ -1,18 +1,21 @@
 /* { dg-do run } */
 /* { dg-options "-Os -fno-tree-switch-conversion -ffunction-sections -fdata-sections -mno-relax -Wl,--section-start=.foo=0x1fffa" } */
 
+#ifdef __AVR_3_BYTE_PC__
 /* Make sure jumptables work properly if placed straddling 128 KB i.e
    some entries below 128 KB and some above it, with relaxation disabled. */
+#define SECTION_NAME ".foo"
+#else
+/* No special jump table placement so that avrtest won't abort
+   for, e.g. ATmega128.  */
+#define SECTION_NAME ".text.foo"
+#endif
 
 #include "exit-abort.h"
 #include "pr71151-common.h"
 
 int main()
 {
-       /* Not meant for devices with flash <= 128K */
-#if defined (__AVR_2_BYTE_PC__)
-       exit(0);
-#else
        foo(5);
        if (y != 37)
                abort();
@@ -24,5 +27,4 @@ int main()
        foo(7);
        if (y != 98)
                abort();
-#endif
 }
index 0b7bf6a0e73934704706087515aa9739c51196c2..aa3015b0455b5debb90ae6fe3c5672be831c083e 100644 (file)
@@ -1,18 +1,20 @@
 /* { dg-do run } */
 /* { dg-options "-Os -fno-tree-switch-conversion -ffunction-sections -fdata-sections -mrelax -Wl,--section-start=.foo=0x1fffa" } */
 
+#ifdef __AVR_3_BYTE_PC__
 /* Make sure jumptables work properly if placed straddling 128 KB i.e
    some entries below 128 KB and some above it, with relaxation disabled. */
+#define SECTION_NAME ".foo"
+#else
+/* No special jump table placement so that avrtest won't abort.  */
+#define SECTION_NAME ".text.foo"
+#endif
 
 #include "exit-abort.h"
 #include "pr71151-common.h"
 
 int main()
 {
-       /* Not meant for devices with flash <= 128K */
-#if defined (__AVR_2_BYTE_PC__)
-       exit(0);
-#else
        foo(5);
        if (y != 37)
                abort();
@@ -24,5 +26,4 @@ int main()
        foo(7);
        if (y != 98)
                abort();
-#endif
 }
index 0df17836b99cf43ba5bd41693cc64aa937b73245..43379be5d2c65ded551d72bed004cd1f80526014 100644 (file)
@@ -1,7 +1,7 @@
 volatile char y;
 volatile char g;
 
-__attribute__((section(".foo")))
+__attribute__((section(SECTION_NAME)))
 void foo(char x) 
 {
        switch (x)