From: Cupertino Miranda Date: Mon, 5 Dec 2016 11:16:52 +0000 (+0000) Subject: [ARC] Fix PIE. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=62440b4f0e4d6e0dc193d315e79753bb4c5edd99;p=gcc.git [ARC] Fix PIE. gcc/ 2016-12-05 Cupertino Miranda * config/arc/arc.h (STARTFILE_SPEC): Use default linux specs. (ENDFILE_SPEC): Likewise. libgcc/ 2016-12-05 Cupertino Miranda * 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c5095c2599c..ad903f94d83 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-12-05 Cupertino Miranda + + * config/arc/arc.h (STARTFILE_SPEC): Use default linux specs. + (ENDFILE_SPEC): Likewise. + 2016-12-05 Claudiu Zissulescu * config/arc/arc-protos.h (insn_is_tls_gd_dispatch): Remove. diff --git a/gcc/config.gcc b/gcc/config.gcc index 189073ecbb0..e034bc30f3d 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 64bd9e0212c..f9512c46680 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 efadedf850f..d4a1bad2d84 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,10 @@ +2016-12-05 Cupertino Miranda + + * 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 PR fortran/78379 diff --git a/libgcc/config.host b/libgcc/config.host index e7e5413f0d5..b1a2be640a3 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 7f643056c96..6867ca99e83 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