diff options
author | Edgar E. Iglesias <edgar.iglesias@gmail.com> | 2013-02-16 19:32:15 +0000 |
---|---|---|
committer | Michael Eager <eager@gcc.gnu.org> | 2013-02-16 19:32:15 +0000 |
commit | debd11d9fb6fd90ef7a675b04cad04407d330688 (patch) | |
tree | 1ea2fd27ec0f8390df307eac7f49d3a42dce468b /gcc | |
parent | 8ec77be0fc99e3a1ba0abd990175ca5b3bc7cfe9 (diff) | |
download | gcc-debd11d9fb6fd90ef7a675b04cad04407d330688.zip gcc-debd11d9fb6fd90ef7a675b04cad04407d330688.tar.gz gcc-debd11d9fb6fd90ef7a675b04cad04407d330688.tar.bz2 |
Add TARGET_SUPPORTS_PIC flag and check that the flag_pic = 2
* config/microblaze/linux.h (TARGET_SUPPORTS_PIC): Define as 1.
* config/microblaze/microblaze.h (TARGET_SUPPORTS_PIC): Define as 1.
* config/microblaze/microblaze.c (microblaze_option_override):
Bail out early for PIC modes when target does not support PIC.
* gcc.dg/20020312-2.c: Define MicroBlaze PIC register
From-SVN: r196104
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/microblaze/linux.h | 2 | ||||
-rw-r--r-- | gcc/config/microblaze/microblaze.c | 12 | ||||
-rw-r--r-- | gcc/config/microblaze/microblaze.h | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/20020312-2.c | 2 |
6 files changed, 30 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 555e946..1373e8b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2013-02-16 Edgar E. Iglesias <edgar.iglesias@gmail.com> + * config/microblaze/linux.h (TARGET_SUPPORTS_PIC): Define as 1. + * config/microblaze/microblaze.h (TARGET_SUPPORTS_PIC): Define as 1. + * config/microblaze/microblaze.c (microblaze_option_override): + Bail out early for PIC modes when target does not support PIC. + +2013-02-16 Edgar E. Iglesias <edgar.iglesias@gmail.com> + * config/microblaze/microblaze.c (microblaze_asm_trampoline_template): Replace with a microblaze version. (microblaze_trampoline_init): Adapt for microblaze. diff --git a/gcc/config/microblaze/linux.h b/gcc/config/microblaze/linux.h index 7455ec7..eca7776 100644 --- a/gcc/config/microblaze/linux.h +++ b/gcc/config/microblaze/linux.h @@ -19,6 +19,8 @@ along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>. */ +#undef TARGET_SUPPORTS_PIC +#define TARGET_SUPPORTS_PIC 1 #define DYNAMIC_LINKER "/lib/ld.so.1" #undef SUBTARGET_EXTRA_SPECS diff --git a/gcc/config/microblaze/microblaze.c b/gcc/config/microblaze/microblaze.c index 90c962b..449626b 100644 --- a/gcc/config/microblaze/microblaze.c +++ b/gcc/config/microblaze/microblaze.c @@ -1299,6 +1299,18 @@ microblaze_option_override (void) ? g_switch_value : MICROBLAZE_DEFAULT_GVALUE); + if (flag_pic) + { + /* Make sure it's 2, we only support one kind of PIC. */ + flag_pic = 2; + if (!TARGET_SUPPORTS_PIC) + { + error ("-fPIC/-fpic not supported for this target"); + /* Clear it to avoid further errors. */ + flag_pic = 0; + } + } + /* Check the MicroBlaze CPU version for any special action to be done. */ if (microblaze_select_cpu == NULL) microblaze_select_cpu = MICROBLAZE_DEFAULT_CPU; diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h index 3276145..b552665 100644 --- a/gcc/config/microblaze/microblaze.h +++ b/gcc/config/microblaze/microblaze.h @@ -58,6 +58,9 @@ extern enum pipeline_type microblaze_pipe; #define TARGET_DEFAULT (MASK_SOFT_MUL | MASK_SOFT_DIV | MASK_SOFT_FLOAT \ | TARGET_ENDIAN_DEFAULT) +/* The default is to support PIC. */ +#define TARGET_SUPPORTS_PIC 1 + /* What is the default setting for -mcpu= . We set it to v4.00.a even though we are actually ahead. This is safest version that has generate code compatible for the original ISA */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1508a65..2377db0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-02-16 Edgar E. Iglesias <edgar.iglesias@gmail.com> + + * gcc.dg/20020312-2.c: Define MicroBlaze PIC register + 2013-02-16 Jakub Jelinek <jakub@redhat.com> Dodji Seketeli <dodji@redhat.com> diff --git a/gcc/testsuite/gcc.dg/20020312-2.c b/gcc/testsuite/gcc.dg/20020312-2.c index 47c2d0fc..633da5b 100644 --- a/gcc/testsuite/gcc.dg/20020312-2.c +++ b/gcc/testsuite/gcc.dg/20020312-2.c @@ -42,6 +42,8 @@ extern void abort (void); /* No pic register. */ #elif defined(__mcore__) /* No pic register. */ +#elif defined(__MICROBLAZE__) +# define PIC_REG "r20" #elif defined(__mips__) /* PIC register is $28, but is used even without -fpic. */ #elif defined(__MMIX__) |