# DP: - Remaining multiarch patches, not yet submitted upstream. # DP: - Add MULTIARCH_DIRNAME definitions for multilib configurations, # DP: which are used for the non-multilib builds. 2013-06-12 Matthias Klose * config/i386/t-linux64: Set MULTIARCH_DIRNAME. * config/i386/t-kfreebsd: Set MULTIARCH_DIRNAME. * config.gcc (i[34567]86-*-linux* | x86_64-*-linux*): Prepend i386/t-linux to $tmake_file; set default ABI to N64 for mips64el. * config/mips/t-linux64: Set MULTIARCH_DIRNAME. * config/rs6000/t-linux64: Set MULTIARCH_DIRNAME. * config/s390/t-linux64: Set MULTIARCH_DIRNAME. * config/sparc/t-linux64: Set MULTIARCH_DIRNAME. * src/gcc/config/mips/mips.h: (/usr)/lib as default path. --- a/src/gcc/config/sh/t-linux +++ b/src/gcc/config/sh/t-linux @@ -1,2 +1,10 @@ MULTILIB_DIRNAMES= MULTILIB_MATCHES = + +ifneq (,$(findstring sh4,$(target))) +MULTILIB_OSDIRNAMES = .:sh4-linux-gnu sh4_nofpu-linux-gnu:sh4-linux-gnu +MULTIARCH_DIRNAME = $(call if_multiarch,sh4-linux-gnu) +else +MULTILIB_OSDIRNAMES = .:sh3-linux-gnu sh3_nofpu-linux-gnu:sh3-linux-gnu +MULTIARCH_DIRNAME = $(call if_multiarch,sh3-linux-gnu) +endif --- a/src/gcc/config/sparc/t-linux64 +++ b/src/gcc/config/sparc/t-linux64 @@ -27,3 +27,5 @@ MULTILIB_OPTIONS = m64/m32 MULTILIB_DIRNAMES = 64 32 MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu) MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu) + +MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu) --- a/src/gcc/config/s390/t-linux64 +++ b/src/gcc/config/s390/t-linux64 @@ -9,3 +9,5 @@ MULTILIB_OPTIONS = m64/m31 MULTILIB_DIRNAMES = 64 32 MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu) MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu) + +MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) --- a/src/gcc/config/rs6000/t-linux64 +++ b/src/gcc/config/rs6000/t-linux64 @@ -31,6 +31,8 @@ MULTILIB_EXTRA_OPTS := MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu) MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu) +MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu) + rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.c $(COMPILE) $< $(POSTCOMPILE) --- a/src/gcc/config/i386/t-linux64 +++ b/src/gcc/config/i386/t-linux64 @@ -36,3 +36,13 @@ MULTILIB_DIRNAMES = $(patsubst m%, %, MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu) MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) + +ifneq (,$(findstring x86_64,$(target))) + ifneq (,$(findstring biarchx32.h,$(tm_include_list))) + MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnux32) + else + MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnu) + endif +else + MULTIARCH_DIRNAME = $(call if_multiarch,i386-linux-gnu) +endif --- a/src/gcc/config/i386/t-kfreebsd +++ b/src/gcc/config/i386/t-kfreebsd @@ -1,5 +1,9 @@ -MULTIARCH_DIRNAME = $(call if_multiarch,i386-kfreebsd-gnu) +ifeq (,$(MULTIARCH_DIRNAME)) + MULTIARCH_DIRNAME = $(call if_multiarch,i386-kfreebsd-gnu) +endif # MULTILIB_OSDIRNAMES are set in t-linux64. KFREEBSD_OS = $(filter kfreebsd%, $(word 3, $(subst -, ,$(target)))) MULTILIB_OSDIRNAMES := $(filter-out mx32=%,$(subst linux,$(KFREEBSD_OS),$(MULTILIB_OSDIRNAMES))) + +MULTIARCH_DIRNAME := $(subst linux,$(KFREEBSD_OS),$(MULTIARCH_DIRNAME)) --- a/src/gcc/config/mips/t-linux64 +++ b/src/gcc/config/mips/t-linux64 @@ -18,9 +18,22 @@ MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64 MULTILIB_DIRNAMES = n32 32 64 +MIPS_R6 = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),r6) +MIPS_32 = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),32) +MIPS_ISA = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),isa) MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el) MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft) MULTILIB_OSDIRNAMES = \ ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) + +ifneq (,$(findstring abin32,$(target))) +MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) +else +ifneq (,$(findstring abi64,$(target))) +MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) +else +MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) +endif +endif --- a/src/gcc/config.gcc +++ b/src/gcc/config.gcc @@ -2284,6 +2284,11 @@ mips*-*-linux*) # Linux MIPS, either target_cpu_default=MASK_SOFT_FLOAT_ABI enable_mips_multilibs="yes" ;; + mipsisa64r6*-*-linux-gnuabi64) + default_mips_abi=64 + default_mips_arch=mips64r6 + enable_mips_multilibs="yes" + ;; mipsisa64r6*-*-linux*) default_mips_abi=n32 default_mips_arch=mips64r6 @@ -2294,6 +2299,10 @@ mips*-*-linux*) # Linux MIPS, either default_mips_arch=mips64r2 enable_mips_multilibs="yes" ;; + mips64*-*-linux-gnuabi64 | mipsisa64*-*-linux-gnuabi64) + default_mips_abi=64 + enable_mips_multilibs="yes" + ;; mips64*-*-linux* | mipsisa64*-*-linux*) default_mips_abi=n32 enable_mips_multilibs="yes" @@ -3274,6 +3283,16 @@ case ${target} in ;; esac +# non-glibc systems +case ${target} in +*-linux-musl*) + tmake_file="${tmake_file} t-musl" + ;; +*-linux-uclibc*) + tmake_file="${tmake_file} t-uclibc" + ;; +esac + # Build mkoffload tool case ${target} in *-intelmic-* | *-intelmicemul-*) @@ -4919,7 +4938,7 @@ case ${target} in ;; i[34567]86-*-linux* | x86_64-*-linux*) extra_objs="${extra_objs} cet.o" - tmake_file="$tmake_file i386/t-linux i386/t-cet" + tmake_file="i386/t-linux $tmake_file i386/t-cet" ;; i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu) tmake_file="$tmake_file i386/t-kfreebsd" --- a/src/gcc/config/mips/mips.h +++ b/src/gcc/config/mips/mips.h @@ -3444,16 +3444,6 @@ struct GTY(()) machine_function { #define PMODE_INSN(NAME, ARGS) \ (Pmode == SImode ? NAME ## _si ARGS : NAME ## _di ARGS) -/* If we are *not* using multilibs and the default ABI is not ABI_32 we - need to change these from /lib and /usr/lib. */ -#if MIPS_ABI_DEFAULT == ABI_N32 -#define STANDARD_STARTFILE_PREFIX_1 "/lib32/" -#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib32/" -#elif MIPS_ABI_DEFAULT == ABI_64 -#define STANDARD_STARTFILE_PREFIX_1 "/lib64/" -#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib64/" -#endif - /* Load store bonding is not supported by micromips and fix_24k. The performance can be degraded for those targets. Hence, do not bond for micromips or fix_24k. */ --- a/src/gcc/config/tilegx/t-tilegx +++ b/src/gcc/config/tilegx/t-tilegx @@ -1,6 +1,7 @@ MULTILIB_OPTIONS = m64/m32 MULTILIB_DIRNAMES = 64 32 -MULTILIB_OSDIRNAMES = ../lib ../lib32 +MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:tilegx-linux-gnu) ../lib32$(call if_multiarch,:tilegx32-linux-gnu) +MULTIARCH_DIRNAME = $(call if_multiarch,tilegx-linux-gnu) LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib --- a/src/gcc/config/riscv/t-linux +++ b/src/gcc/config/riscv/t-linux @@ -1,3 +1,5 @@ # Only XLEN and ABI affect Linux multilib dir names, e.g. /lib32/ilp32d/ MULTILIB_DIRNAMES := $(patsubst rv32%,lib32,$(patsubst rv64%,lib64,$(MULTILIB_DIRNAMES))) MULTILIB_OSDIRNAMES := $(patsubst lib%,../lib%,$(MULTILIB_DIRNAMES)) + +MULTIARCH_DIRNAME := $(call if_multiarch,$(firstword $(subst -, ,$(target)))-linux-gnu) --- a/src/gcc/Makefile.in +++ b/src/gcc/Makefile.in @@ -532,7 +532,7 @@ BUILD_SYSTEM_HEADER_DIR = `echo @BUILD_S STMP_FIXINC = @STMP_FIXINC@ # Test to see whether exists in the system header files. -LIMITS_H_TEST = [ -f $(BUILD_SYSTEM_HEADER_DIR)/limits.h ] +LIMITS_H_TEST = [ -f $(BUILD_SYSTEM_HEADER_DIR)/limits.h -o -f $(BUILD_SYSTEM_HEADER_DIR)/$(MULTIARCH_DIRNAME)/limits.h ] # Directory for prefix to system directories, for # each of $(system_prefix)/usr/include, $(system_prefix)/usr/lib, etc. --- a/src/gcc/config/aarch64/t-aarch64-linux +++ b/src/gcc/config/aarch64/t-aarch64-linux @@ -22,7 +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 = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) +MULTILIB_OSDIRNAMES = mabi.lp64=../lib$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu) MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu_ilp32)