aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEdgar E. Iglesias <edgar.iglesias@gmail.com>2013-02-16 19:32:15 +0000
committerMichael Eager <eager@gcc.gnu.org>2013-02-16 19:32:15 +0000
commitdebd11d9fb6fd90ef7a675b04cad04407d330688 (patch)
tree1ea2fd27ec0f8390df307eac7f49d3a42dce468b /gcc
parent8ec77be0fc99e3a1ba0abd990175ca5b3bc7cfe9 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/config/microblaze/linux.h2
-rw-r--r--gcc/config/microblaze/microblaze.c12
-rw-r--r--gcc/config/microblaze/microblaze.h3
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/20020312-2.c2
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__)