diff options
author | Jiong Wang <jiong.wang@arm.com> | 2015-07-01 08:45:08 +0000 |
---|---|---|
committer | Jiong Wang <jiwang@gcc.gnu.org> | 2015-07-01 08:45:08 +0000 |
commit | 34ecdb0f20498d3cdde1a5be9614c2820cc4688f (patch) | |
tree | 88fa7395dc593ad418400dda519802a9345f60bd /gcc | |
parent | 1d628b1536253c8b18d1b800f287722a098a4dfe (diff) | |
download | gcc-34ecdb0f20498d3cdde1a5be9614c2820cc4688f.zip gcc-34ecdb0f20498d3cdde1a5be9614c2820cc4688f.tar.gz gcc-34ecdb0f20498d3cdde1a5be9614c2820cc4688f.tar.bz2 |
[AArch64] Fall back to -fPIC if no support of -fpic in binutils
2015-07-01 Jiong Wang <jiong.wang@arm.com>
* configure.ac: Add check for aarch64 assembler -fpic relocation
modifier support.
* configure: Regenerate.
* config.in: Regenerate.
* config/aarch64/aarch64.c (initialize_aarch64_code_model): Fall back
to -fPIC if not support of -fpic relocation modifier in assembler.
From-SVN: r225231
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config.in | 6 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 4 | ||||
-rwxr-xr-x | gcc/configure | 34 | ||||
-rw-r--r-- | gcc/configure.ac | 7 |
5 files changed, 60 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 40754f1..e9ba35f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2015-07-01 Jiong Wang <jiong.wang@arm.com> + + * configure.ac: Add check for aarch64 assembler -fpic relocation + modifier support. + * configure: Regenerate. + * config.in: Regenerate. + * config/aarch64/aarch64.c (initialize_aarch64_code_model): Fall back + to -fPIC if not support of -fpic relocation modifier in assembler. + 2015-07-01 Richard Sandiford <richard.sandiford@arm.com> PR bootstrap/66685 diff --git a/gcc/config.in b/gcc/config.in index 3aee936..b031a62 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -606,6 +606,12 @@ #endif +/* Define if your assembler supports relocs needed by -fpic. */ +#ifndef USED_FOR_TARGET +#undef HAVE_AS_SMALL_PIC_RELOCS +#endif + + /* Define if your assembler and linker support thread-local storage. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_TLS diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 0079c82..5d4dc83 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -7581,9 +7581,13 @@ initialize_aarch64_code_model (void) aarch64_cmodel = AARCH64_CMODEL_TINY_PIC; break; case AARCH64_CMODEL_SMALL: +#ifdef HAVE_AS_SMALL_PIC_RELOCS aarch64_cmodel = (flag_pic == 2 ? AARCH64_CMODEL_SMALL_PIC : AARCH64_CMODEL_SMALL_SPIC); +#else + aarch64_cmodel = AARCH64_CMODEL_SMALL_PIC; +#endif break; case AARCH64_CMODEL_LARGE: sorry ("code model %qs with -f%s", "large", diff --git a/gcc/configure b/gcc/configure index 50d7037..9561e5c 100755 --- a/gcc/configure +++ b/gcc/configure @@ -24228,6 +24228,40 @@ $as_echo "#define HAVE_AS_MABI_OPTION 1" >>confdefs.h done fi fi + # Check if we have binutils support for relocations types needed by -fpic + { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for -fpic relocs" >&5 +$as_echo_n "checking assembler for -fpic relocs... " >&6; } +if test "${gcc_cv_as_aarch64_picreloc+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gcc_cv_as_aarch64_picreloc=no + if test x$gcc_cv_as != x; then + $as_echo ' + .text + ldr x0, [x2, #:gotpage_lo15:globalsym] + ' > conftest.s + if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } + then + gcc_cv_as_aarch64_picreloc=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_aarch64_picreloc" >&5 +$as_echo "$gcc_cv_as_aarch64_picreloc" >&6; } +if test $gcc_cv_as_aarch64_picreloc = yes; then + +$as_echo "#define HAVE_AS_SMALL_PIC_RELOCS 1" >>confdefs.h + +fi # Enable default workaround for AArch64 Cortex-A53 erratum 835769. # Check whether --enable-fix-cortex-a53-835769 was given. if test "${enable_fix_cortex_a53_835769+set}" = set; then : diff --git a/gcc/configure.ac b/gcc/configure.ac index 88aecdb..cb14639 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -3562,6 +3562,13 @@ case "$target" in done fi fi + # Check if we have binutils support for relocations types needed by -fpic + gcc_GAS_CHECK_FEATURE([-fpic relocs], gcc_cv_as_aarch64_picreloc,,, + [ + .text + ldr x0, [[x2, #:gotpage_lo15:globalsym]] + ],,[AC_DEFINE(HAVE_AS_SMALL_PIC_RELOCS, 1, + [Define if your assembler supports relocs needed by -fpic.])]) # Enable default workaround for AArch64 Cortex-A53 erratum 835769. AC_ARG_ENABLE(fix-cortex-a53-835769, [ |