summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormshawcroft <mshawcroft@138bc75d-0d04-0410-961f-82ee72b054a4>2013-05-31 15:40:09 +0000
committermshawcroft <mshawcroft@138bc75d-0d04-0410-961f-82ee72b054a4>2013-05-31 15:40:09 +0000
commit12a60807e1edc88f54ec43088cc666f7e88e317e (patch)
tree1b0ad790528b925945558ac483547bd2259ab507
parent1777a4732532473abd3b67354cd83da95136dbe1 (diff)
downloadgcc-12a60807e1edc88f54ec43088cc666f7e88e317e.tar.gz
[AArch64] -mcmodel=tiny -fPIC use tiny absolute for non binds local.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@199544 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/aarch64/aarch64.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2e6d853fe4d..d44fcdcc361 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2013-05-31 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * config/aarch64/aarch64.c (aarch64_classify_symbol):
+ Use SYMBOL_TINY_ABSOLUTE for AARCH64_CMODEL_TINY_PIC.
+
2013-05-31 Tobias Burnus <burnus@net-b.de>
PR middle-end/57073
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 9c77888157d..a6859cc2a9a 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -5068,6 +5068,10 @@ aarch64_classify_symbol (rtx x,
return SYMBOL_SMALL_ABSOLUTE;
case AARCH64_CMODEL_TINY_PIC:
+ if (!aarch64_symbol_binds_local_p (x))
+ return SYMBOL_SMALL_GOT;
+ return SYMBOL_TINY_ABSOLUTE;
+
case AARCH64_CMODEL_SMALL_PIC:
if (!aarch64_symbol_binds_local_p (x))
return SYMBOL_SMALL_GOT;