[PATCHv2/AARCH64 3/3] Support ILP32 multi-lib
Hi, This is the final patch which adds support for the dynamic linker and multi-lib directories for ILP32. I did not change multi-arch support as I did not know what it should be changed to and internally here at Cavium, we don't use multi-arch. Updated for the new names that were decided on. OK? Build and tested for aarch64-linux-gnu with and without --with-multilib-list=lp64,ilp32. Thanks, Andrew Pinski * config/aarch64/aarch64-linux.h (GLIBC_DYNAMIC_LINKER): /lib/ld-linux-aarch64_ilp32.so.1 is used for ILP32. (LINUX_TARGET_LINK_SPEC): Update linker script for ILP32. file whose name depends on -mabi= and -mbig-endian. * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Handle LP64 better and handle ilp32 too. (MULTILIB_OPTIONS): Delete. (MULTILIB_DIRNAMES): Delete. --- gcc/ChangeLog | 11 +++ gcc/config/aarch64/aarch64-linux.h |4 ++-- gcc/config/aarch64/t-aarch64-linux |7 ++- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 155ce45..a0cdc58 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,16 @@ 2014-02-25 Andrew Pinski + * config/aarch64/aarch64-linux.h (GLIBC_DYNAMIC_LINKER): /lib/ld-linux32-aarch64_ilp32.so.1 + is used for ILP32. + (LINUX_TARGET_LINK_SPEC): Update linker script for ILP32. + file whose name depends on -mabi= and -mbig-endian. + * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Handle LP64 better + and handle ilp32 too. + (MULTILIB_OPTIONS): Delete. + (MULTILIB_DIRNAMES): Delete. + +2014-02-25 Andrew Pinski + * config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Handle TLS for ILP32. * config/aarch64/aarch64.md (tlsie_small): Rename to ... diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h index a8f0771..48beafb 100644 --- a/gcc/config/aarch64/aarch64-linux.h +++ b/gcc/config/aarch64/aarch64-linux.h @@ -21,7 +21,7 @@ #ifndef GCC_AARCH64_LINUX_H #define GCC_AARCH64_LINUX_H -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1" +#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1" #define CPP_SPEC "%{pthread:-D_REENTRANT}" @@ -33,7 +33,7 @@ -dynamic-linker " GNU_USER_DYNAMIC_LINKER " \ -X \ %{mbig-endian:-EB} %{mlittle-endian:-EL} \ - -maarch64linux%{mbig-endian:b}" + -maarch64linux%{mabi=ilp32:32}%{mbig-endian:b}" #define LINK_SPEC LINUX_TARGET_LINK_SPEC diff --git a/gcc/config/aarch64/t-aarch64-linux b/gcc/config/aarch64/t-aarch64-linux index 147452b..d6a678e 100644 --- a/gcc/config/aarch64/t-aarch64-linux +++ b/gcc/config/aarch64/t-aarch64-linux @@ -22,10 +22,7 @@ LIB1ASMSRC = aarch64/lib1funcs.asm LIB1ASMFUNCS = _aarch64_sync_cache_range AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be) -MULTILIB_OSDIRNAMES = .=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) +MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu) -# Disable the multilib for linux-gnu targets for the time being; focus -# on the baremetal targets. -MULTILIB_OPTIONS= -MULTILIB_DIRNAMES = +MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32 -- 1.7.2.5
Re: [PATCHv2/AARCH64 3/3] Support ILP32 multi-lib
On Thu, Feb 27, 2014 at 7:57 AM, Yufeng Zhang wrote: > On 02/26/14 02:25, Andrew Pinski wrote: >> >> Hi, >>This is the final patch which adds support for the dynamic linker and >> multi-lib directories for ILP32. I did not change multi-arch support as >> I did not know what it should be changed to and internally here at Cavium, >> we don't use multi-arch. Updated for the new names that were decided on. >> >> >> OK? Build and tested for aarch64-linux-gnu with and without >> --with-multilib-list=lp64,ilp32. > > > Looks good to me, but I cannot approve. I have a couple of minor comments > on the changelog entry. Ping? This is also required to support the VDSO inside the Linux kernel. Thanks, Andrew > > >> >> Thanks, >> Andrew Pinski >> >> * config/aarch64/aarch64-linux.h (GLIBC_DYNAMIC_LINKER): >> /lib/ld-linux-aarch64_ilp32.so.1 >> is used for ILP32. >> (LINUX_TARGET_LINK_SPEC): Update linker script for ILP32. >> file whose name depends on -mabi= and -mbig-endian. >> * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Handle >> LP64 better >> and handle ilp32 too. >> (MULTILIB_OPTIONS): Delete. >> (MULTILIB_DIRNAMES): Delete. >> --- >> gcc/ChangeLog | 11 +++ >> gcc/config/aarch64/aarch64-linux.h |4 ++-- >> gcc/config/aarch64/t-aarch64-linux |7 ++- >> 3 files changed, 15 insertions(+), 7 deletions(-) >> >> diff --git a/gcc/ChangeLog b/gcc/ChangeLog >> index 155ce45..a0cdc58 100644 >> --- a/gcc/ChangeLog >> +++ b/gcc/ChangeLog >> @@ -1,5 +1,16 @@ >> 2014-02-25 Andrew Pinski >> >> + * config/aarch64/aarch64-linux.h (GLIBC_DYNAMIC_LINKER): >> /lib/ld-linux32-aarch64_ilp32.so.1 > > > s/linux32/linux > > >> + is used for ILP32. >> + (LINUX_TARGET_LINK_SPEC): Update linker script for ILP32. >> + file whose name depends on -mabi= and -mbig-endian. >> + * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Handle >> LP64 better >> + and handle ilp32 too. > > > s/ilp32/ILP32 > > Thanks, > Yufeng > > > > > >> + (MULTILIB_OPTIONS): Delete. >> + (MULTILIB_DIRNAMES): Delete. >> + >> +2014-02-25 Andrew Pinski >> + >> * config/aarch64/aarch64.c (aarch64_load_symref_appropriately): >> Handle TLS for ILP32. >> * config/aarch64/aarch64.md (tlsie_small): Rename to ... >> diff --git a/gcc/config/aarch64/aarch64-linux.h >> b/gcc/config/aarch64/aarch64-linux.h >> index a8f0771..48beafb 100644 >> --- a/gcc/config/aarch64/aarch64-linux.h >> +++ b/gcc/config/aarch64/aarch64-linux.h >> @@ -21,7 +21,7 @@ >> #ifndef GCC_AARCH64_LINUX_H >> #define GCC_AARCH64_LINUX_H >> >> -#define GLIBC_DYNAMIC_LINKER >> "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1" >> +#define GLIBC_DYNAMIC_LINKER >> "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1" >> >> #define CPP_SPEC "%{pthread:-D_REENTRANT}" >> >> @@ -33,7 +33,7 @@ >> -dynamic-linker " GNU_USER_DYNAMIC_LINKER "\ >> -X \ >> %{mbig-endian:-EB} %{mlittle-endian:-EL} \ >> - -maarch64linux%{mbig-endian:b}" >> + -maarch64linux%{mabi=ilp32:32}%{mbig-endian:b}" >> >> #define LINK_SPEC LINUX_TARGET_LINK_SPEC >> >> diff --git a/gcc/config/aarch64/t-aarch64-linux >> b/gcc/config/aarch64/t-aarch64-linux >> index 147452b..d6a678e 100644 >> --- a/gcc/config/aarch64/t-aarch64-linux >> +++ b/gcc/config/aarch64/t-aarch64-linux >> @@ -22,10 +22,7 @@ LIB1ASMSRC = aarch64/lib1funcs.asm >> LIB1ASMFUNCS = _aarch64_sync_cache_range >> >> AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, >> $(tm_defines)),_be) >> -MULTILIB_OSDIRNAMES = .=../lib64$(call >> if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) >> +MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call >> if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) >> MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu) >> >> -# Disable the multilib for linux-gnu targets for the time being; focus >> -# on the baremetal targets. >> -MULTILIB_OPTIONS= >> -MULTILIB_DIRNAMES = >> +MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32 > > >
Re: [PATCHv2/AARCH64 3/3] Support ILP32 multi-lib
On 26 February 2014 02:25, Andrew Pinski wrote: > Hi, > This is the final patch which adds support for the dynamic linker and > multi-lib directories for ILP32. I did not change multi-arch support as > I did not know what it should be changed to and internally here at Cavium, > we don't use multi-arch. Updated for the new names that were decided on. > > > OK? Build and tested for aarch64-linux-gnu with and without > --with-multilib-list=lp64,ilp32. > > Thanks, > Andrew Pinski > > * config/aarch64/aarch64-linux.h (GLIBC_DYNAMIC_LINKER): > /lib/ld-linux-aarch64_ilp32.so.1 > is used for ILP32. > (LINUX_TARGET_LINK_SPEC): Update linker script for ILP32. > file whose name depends on -mabi= and -mbig-endian. > * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Handle LP64 > better > and handle ilp32 too. > (MULTILIB_OPTIONS): Delete. > (MULTILIB_DIRNAMES): Delete. Hi, This is OK, thanks /Marcus
Re: [PATCHv2/AARCH64 3/3] Support ILP32 multi-lib
On 02/26/14 02:25, Andrew Pinski wrote: Hi, This is the final patch which adds support for the dynamic linker and multi-lib directories for ILP32. I did not change multi-arch support as I did not know what it should be changed to and internally here at Cavium, we don't use multi-arch. Updated for the new names that were decided on. OK? Build and tested for aarch64-linux-gnu with and without --with-multilib-list=lp64,ilp32. Looks good to me, but I cannot approve. I have a couple of minor comments on the changelog entry. Thanks, Andrew Pinski * config/aarch64/aarch64-linux.h (GLIBC_DYNAMIC_LINKER): /lib/ld-linux-aarch64_ilp32.so.1 is used for ILP32. (LINUX_TARGET_LINK_SPEC): Update linker script for ILP32. file whose name depends on -mabi= and -mbig-endian. * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Handle LP64 better and handle ilp32 too. (MULTILIB_OPTIONS): Delete. (MULTILIB_DIRNAMES): Delete. --- gcc/ChangeLog | 11 +++ gcc/config/aarch64/aarch64-linux.h |4 ++-- gcc/config/aarch64/t-aarch64-linux |7 ++- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 155ce45..a0cdc58 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,16 @@ 2014-02-25 Andrew Pinski + * config/aarch64/aarch64-linux.h (GLIBC_DYNAMIC_LINKER): /lib/ld-linux32-aarch64_ilp32.so.1 s/linux32/linux + is used for ILP32. + (LINUX_TARGET_LINK_SPEC): Update linker script for ILP32. + file whose name depends on -mabi= and -mbig-endian. + * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Handle LP64 better + and handle ilp32 too. s/ilp32/ILP32 Thanks, Yufeng + (MULTILIB_OPTIONS): Delete. + (MULTILIB_DIRNAMES): Delete. + +2014-02-25 Andrew Pinski + * config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Handle TLS for ILP32. * config/aarch64/aarch64.md (tlsie_small): Rename to ... diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h index a8f0771..48beafb 100644 --- a/gcc/config/aarch64/aarch64-linux.h +++ b/gcc/config/aarch64/aarch64-linux.h @@ -21,7 +21,7 @@ #ifndef GCC_AARCH64_LINUX_H #define GCC_AARCH64_LINUX_H -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1" +#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1" #define CPP_SPEC "%{pthread:-D_REENTRANT}" @@ -33,7 +33,7 @@ -dynamic-linker " GNU_USER_DYNAMIC_LINKER " \ -X \ %{mbig-endian:-EB} %{mlittle-endian:-EL} \ - -maarch64linux%{mbig-endian:b}" + -maarch64linux%{mabi=ilp32:32}%{mbig-endian:b}" #define LINK_SPEC LINUX_TARGET_LINK_SPEC diff --git a/gcc/config/aarch64/t-aarch64-linux b/gcc/config/aarch64/t-aarch64-linux index 147452b..d6a678e 100644 --- a/gcc/config/aarch64/t-aarch64-linux +++ b/gcc/config/aarch64/t-aarch64-linux @@ -22,10 +22,7 @@ LIB1ASMSRC = aarch64/lib1funcs.asm LIB1ASMFUNCS = _aarch64_sync_cache_range AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be) -MULTILIB_OSDIRNAMES = .=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) +MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu) -# Disable the multilib for linux-gnu targets for the time being; focus -# on the baremetal targets. -MULTILIB_OPTIONS= -MULTILIB_DIRNAMES = +MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32