0003-64-bit-multilib-hack.patch 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. From 34b861e7a4cfd7b1f0d2c0f8cf9bb0b0b81eb61a Mon Sep 17 00:00:00 2001
  2. From: Khem Raj <raj.khem@gmail.com>
  3. Date: Fri, 29 Mar 2013 09:10:06 +0400
  4. Subject: [PATCH] 64-bit multilib hack.
  5. GCC has internal multilib handling code but it assumes a very specific rigid directory
  6. layout. The build system implementation of multilib layout is very generic and allows
  7. complete customisation of the library directories.
  8. This patch is a partial solution to allow any custom directories to be passed into gcc
  9. and handled correctly. It forces gcc to use the base_libdir (which is the current
  10. directory, "."). We need to do this for each multilib that is configured as we don't
  11. know which compiler options may be being passed into the compiler. Since we have a compiler
  12. per mulitlib at this point that isn't an issue.
  13. The one problem is the target compiler is only going to work for the default multlilib at
  14. this point. Ideally we'd figure out which multilibs were being enabled with which paths
  15. and be able to patch these entries with a complete set of correct paths but this we
  16. don't have such code at this point. This is something the target gcc recipe should do
  17. and override these platform defaults in its build config.
  18. Do same for riscv64, aarch64 & arc
  19. RP 15/8/11
  20. Upstream-Status: Inappropriate [OE-Specific]
  21. Signed-off-by: Khem Raj <raj.khem@gmail.com>
  22. Signed-off-by: Elvis Dowson <elvis.dowson@gmail.com>
  23. Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
  24. Signed-off-by: Khem Raj <raj.khem@gmail.com>
  25. ---
  26. gcc/config/aarch64/t-aarch64-linux | 8 ++++----
  27. gcc/config/arc/t-multilib-linux | 4 ++--
  28. gcc/config/i386/t-linux64 | 6 ++----
  29. gcc/config/mips/t-linux64 | 10 +++-------
  30. gcc/config/riscv/t-linux | 6 ++++--
  31. gcc/config/rs6000/t-linux64 | 5 ++---
  32. 6 files changed, 17 insertions(+), 22 deletions(-)
  33. diff --git a/gcc/config/aarch64/t-aarch64-linux b/gcc/config/aarch64/t-aarch64-linux
  34. index d0cd546002a..f4056d68372 100644
  35. --- a/gcc/config/aarch64/t-aarch64-linux
  36. +++ b/gcc/config/aarch64/t-aarch64-linux
  37. @@ -21,8 +21,8 @@
  38. LIB1ASMSRC = aarch64/lib1funcs.asm
  39. LIB1ASMFUNCS = _aarch64_sync_cache_range
  40. -AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be)
  41. -MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
  42. -MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu)
  43. +#AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be)
  44. +#MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
  45. +#MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu)
  46. -MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu_ilp32)
  47. +#MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu_ilp32)
  48. diff --git a/gcc/config/arc/t-multilib-linux b/gcc/config/arc/t-multilib-linux
  49. index ecb9ae6859f..12a164028d4 100644
  50. --- a/gcc/config/arc/t-multilib-linux
  51. +++ b/gcc/config/arc/t-multilib-linux
  52. @@ -16,9 +16,9 @@
  53. # along with GCC; see the file COPYING3. If not see
  54. # <http://www.gnu.org/licenses/>.
  55. -MULTILIB_OPTIONS = mcpu=hs/mcpu=archs/mcpu=hs38/mcpu=hs38_linux/mcpu=arc700/mcpu=nps400
  56. +#MULTILIB_OPTIONS = mcpu=hs/mcpu=archs/mcpu=hs38/mcpu=hs38_linux/mcpu=arc700/mcpu=nps400
  57. -MULTILIB_DIRNAMES = hs archs hs38 hs38_linux arc700 nps400
  58. +#MULTILIB_DIRNAMES = hs archs hs38 hs38_linux arc700 nps400
  59. # Aliases:
  60. MULTILIB_MATCHES += mcpu?arc700=mA7
  61. diff --git a/gcc/config/i386/t-linux64 b/gcc/config/i386/t-linux64
  62. index 5526ad0e6cc..fa51c88912b 100644
  63. --- a/gcc/config/i386/t-linux64
  64. +++ b/gcc/config/i386/t-linux64
  65. @@ -32,7 +32,5 @@
  66. #
  67. comma=,
  68. MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG))
  69. -MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS)))
  70. -MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu)
  71. -MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu)
  72. -MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32)
  73. +MULTILIB_DIRNAMES = . .
  74. +MULTILIB_OSDIRNAMES = ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
  75. diff --git a/gcc/config/mips/t-linux64 b/gcc/config/mips/t-linux64
  76. index 2fdd8e00407..04f2099250f 100644
  77. --- a/gcc/config/mips/t-linux64
  78. +++ b/gcc/config/mips/t-linux64
  79. @@ -17,10 +17,6 @@
  80. # <http://www.gnu.org/licenses/>.
  81. MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64
  82. -MULTILIB_DIRNAMES = n32 32 64
  83. -MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el)
  84. -MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft)
  85. -MULTILIB_OSDIRNAMES = \
  86. - ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
  87. - ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
  88. - ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
  89. +MULTILIB_DIRNAMES = . . .
  90. +MULTILIB_OSDIRNAMES = ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
  91. +
  92. diff --git a/gcc/config/riscv/t-linux b/gcc/config/riscv/t-linux
  93. index 216d2776a18..e4d817621fc 100644
  94. --- a/gcc/config/riscv/t-linux
  95. +++ b/gcc/config/riscv/t-linux
  96. @@ -1,3 +1,5 @@
  97. # Only XLEN and ABI affect Linux multilib dir names, e.g. /lib32/ilp32d/
  98. -MULTILIB_DIRNAMES := $(patsubst rv32%,lib32,$(patsubst rv64%,lib64,$(MULTILIB_DIRNAMES)))
  99. -MULTILIB_OSDIRNAMES := $(patsubst lib%,../lib%,$(MULTILIB_DIRNAMES))
  100. +#MULTILIB_DIRNAMES := $(patsubst rv32%,lib32,$(patsubst rv64%,lib64,$(MULTILIB_DIRNAMES)))
  101. +MULTILIB_DIRNAMES := . .
  102. +#MULTILIB_OSDIRNAMES := $(patsubst lib%,../lib%,$(MULTILIB_DIRNAMES))
  103. +MULTILIB_OSDIRNAMES := ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
  104. diff --git a/gcc/config/rs6000/t-linux64 b/gcc/config/rs6000/t-linux64
  105. index 47e0efd5764..05f5a3f188e 100644
  106. --- a/gcc/config/rs6000/t-linux64
  107. +++ b/gcc/config/rs6000/t-linux64
  108. @@ -26,10 +26,9 @@
  109. # MULTILIB_OSDIRNAMES according to what is found on the target.
  110. MULTILIB_OPTIONS := m64/m32
  111. -MULTILIB_DIRNAMES := 64 32
  112. +MULTILIB_DIRNAMES := . .
  113. MULTILIB_EXTRA_OPTS :=
  114. -MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu)
  115. -MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu)
  116. +MULTILIB_OSDIRNAMES := ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
  117. rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.cc
  118. $(COMPILE) $<