aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCupertino Miranda <cmiranda@synopsys.com>2016-12-05 11:16:52 +0000
committerClaudiu Zissulescu <claziss@gcc.gnu.org>2016-12-05 12:16:52 +0100
commit62440b4f0e4d6e0dc193d315e79753bb4c5edd99 (patch)
tree51ad367dfbacc610ccfd16d534390397b8fd5860
parent5a5c5784d89008664ab42c17efcab7198b132456 (diff)
downloadgcc-62440b4f0e4d6e0dc193d315e79753bb4c5edd99.zip
gcc-62440b4f0e4d6e0dc193d315e79753bb4c5edd99.tar.gz
gcc-62440b4f0e4d6e0dc193d315e79753bb4c5edd99.tar.bz2
[ARC] Fix PIE.
gcc/ 2016-12-05 Cupertino Miranda <cmiranda@synopsys.com> * config/arc/arc.h (STARTFILE_SPEC): Use default linux specs. (ENDFILE_SPEC): Likewise. libgcc/ 2016-12-05 Cupertino Miranda <cmiranda@synopsys.com> * config.host (arc*-*-linux-uclibc*): Use default extra objects. Include linux-android header. * config/arc/crti.S (_init): Declare symbol as function. (_fini): Likewise. From-SVN: r243245
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config.gcc2
-rw-r--r--gcc/config/arc/arc.h10
-rw-r--r--libgcc/ChangeLog7
-rw-r--r--libgcc/config.host4
-rw-r--r--libgcc/config/arc/crti.S2
6 files changed, 21 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c5095c2..ad903f9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-12-05 Cupertino Miranda <cmiranda@synopsys.com>
+
+ * config/arc/arc.h (STARTFILE_SPEC): Use default linux specs.
+ (ENDFILE_SPEC): Likewise.
+
2016-12-05 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc-protos.h (insn_is_tls_gd_dispatch): Remove.
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 189073e..e034bc3 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1023,7 +1023,7 @@ arc*-*-elf*)
;;
arc*-*-linux-uclibc*)
extra_headers="arc-simd.h"
- tm_file="arc/arc-arch.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file}"
+ tm_file="arc/arc-arch.h dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file}"
tmake_file="${tmake_file} arc/t-uClibc arc/t-arc"
tm_defines="${tm_defines} TARGET_SDATA_DEFAULT=0"
tm_defines="${tm_defines} TARGET_MMEDIUM_CALLS_DEFAULT=1"
diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h
index 64bd9e0..f9512c4 100644
--- a/gcc/config/arc/arc.h
+++ b/gcc/config/arc/arc.h
@@ -138,17 +138,15 @@ extern const char *arc_cpu_to_as (int argc, const char **argv);
#define STARTFILE_SPEC "%{!shared:crt0.o%s} crti%O%s %{pg|p:crtg.o%s} " \
"%(arc_tls_extra_start_spec) crtbegin.o%s"
#else
-#define STARTFILE_SPEC "%{!shared:%{!mkernel:crt1.o%s}} crti.o%s \
- %{!shared:%{pg|p|profile:crtg.o%s} crtbegin.o%s} %{shared:crtbeginS.o%s}"
-
+#define STARTFILE_SPEC \
+ LINUX_OR_ANDROID_LD (GNU_USER_TARGET_STARTFILE_SPEC, ANDROID_STARTFILE_SPEC)
#endif
#if DEFAULT_LIBC != LIBC_UCLIBC
#define ENDFILE_SPEC "%{pg|p:crtgend.o%s} crtend.o%s crtn%O%s"
#else
-#define ENDFILE_SPEC "%{!shared:%{pg|p|profile:crtgend.o%s} crtend.o%s} \
- %{shared:crtendS.o%s} crtn.o%s"
-
+#define ENDFILE_SPEC \
+ LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
#endif
#if DEFAULT_LIBC == LIBC_UCLIBC
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index efadedf..d4a1bad 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,10 @@
+2016-12-05 Cupertino Miranda <cmiranda@synopsys.com>
+
+ * config.host (arc*-*-linux-uclibc*): Use default extra
+ objects. Include linux-android header.
+ * config/arc/crti.S (_init): Declare symbol as function.
+ (_fini): Likewise.
+
2016-12-03 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/78379
diff --git a/libgcc/config.host b/libgcc/config.host
index e7e5413..b1a2be6 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -374,8 +374,8 @@ arc*-*-elf*)
;;
arc*-*-linux-uclibc*)
tmake_file="${tmake_file} t-slibgcc-libgcc t-slibgcc-nolc-override arc/t-arc700-uClibc arc/t-arc"
- extra_parts="crti.o crtn.o crtend.o crtbegin.o crtendS.o crtbeginS.o libgmon.a crtg.o crtgend.o"
- extra_parts="${extra_parts} crttls.o"
+ extra_parts="$extra_parts crti.o crtn.o libgmon.a crtg.o crtgend.o"
+ extra_parts="$extra_parts crttls.o"
;;
arm-wrs-vxworks)
tmake_file="$tmake_file arm/t-arm arm/t-elf t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
diff --git a/libgcc/config/arc/crti.S b/libgcc/config/arc/crti.S
index 7f64305..6867ca9 100644
--- a/libgcc/config/arc/crti.S
+++ b/libgcc/config/arc/crti.S
@@ -31,11 +31,13 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
.section .init
.global _init
.word 0
+ .type _init,@function
_init:
push_s blink
.section .fini
.global _fini
.word 0
+ .type _fini,@function
_fini:
push_s blink