Hi Logan, Given that there is similar check to MIPS, should we do the opposite thing and return something non-empty for x86 only?
On Sun, Oct 27, 2013 at 1:34 PM, Logan Chien <[email protected]> wrote: > In the cross compilation situation (e.g. x86-64 to arm), > Ubuntu 12.04 puts crt1.o, crti.o, and crtn.o in the > following directory. > > /usr/arm-linux-gnueabi/lib > /usr/arm-linux-gnueabihf/lib > > However, currently Clang can't find these crt*.o because > an additional multilib argument "lib32" has been appended > to the search path. This commit fix this issue by returning > empty string for ARM/Thumb architecture. > > http://llvm-reviews.chandlerc.com/D2030 > > Files: > lib/Driver/ToolChains.cpp > > test/Driver/Inputs/ubuntu_12.04_LTS_cross_tree/usr/arm-linux-gnueabi/lib/crt1.o > > test/Driver/Inputs/ubuntu_12.04_LTS_cross_tree/usr/arm-linux-gnueabi/lib/crti.o > > test/Driver/Inputs/ubuntu_12.04_LTS_cross_tree/usr/arm-linux-gnueabi/lib/crtn.o > > test/Driver/Inputs/ubuntu_12.04_LTS_cross_tree/usr/arm-linux-gnueabihf/lib/crt1.o > > test/Driver/Inputs/ubuntu_12.04_LTS_cross_tree/usr/arm-linux-gnueabihf/lib/crti.o > > test/Driver/Inputs/ubuntu_12.04_LTS_cross_tree/usr/arm-linux-gnueabihf/lib/crtn.o > > test/Driver/Inputs/ubuntu_12.04_LTS_cross_tree/usr/lib/gcc/arm-linux-gnueabi/4.6.3/crtbegin.o > > test/Driver/Inputs/ubuntu_12.04_LTS_cross_tree/usr/lib/gcc/arm-linux-gnueabi/4.6.3/crtend.o > > test/Driver/Inputs/ubuntu_12.04_LTS_cross_tree/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/crtbegin.o > > test/Driver/Inputs/ubuntu_12.04_LTS_cross_tree/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/crtend.o > test/Driver/linux-ld.c > > Index: lib/Driver/ToolChains.cpp > =================================================================== > --- lib/Driver/ToolChains.cpp > +++ lib/Driver/ToolChains.cpp > @@ -2266,6 +2266,10 @@ > > static StringRef getMultilibDir(const llvm::Triple &Triple, > const ArgList &Args) { > + if (Triple.getArch() == llvm::Triple::arm || > + Triple.getArch() == llvm::Triple::thumb) > + return ""; > + > if (!isMipsArch(Triple.getArch())) > return Triple.isArch32Bit() ? "lib32" : "lib64"; > > Index: test/Driver/linux-ld.c > =================================================================== > --- test/Driver/linux-ld.c > +++ test/Driver/linux-ld.c > @@ -245,6 +245,44 @@ > // CHECK-UBUNTU-12-04-ARM-HF: > "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3{{/|\\\\}}crtend.o" > // CHECK-UBUNTU-12-04-ARM-HF: > "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf{{/|\\\\}}crtn.o" > // > +// Check arm-linux-gnueabi cross compilation support on Ubuntu 12.04 LTS. > +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ > +// RUN: --target=arm-unknown-linux-gnueabi \ > +// RUN: --sysroot=%S/Inputs/ubuntu_12.04_LTS_cross_tree \ > +// RUN: | FileCheck --check-prefix=CHECK-UBUNTU-12-04-CROSS-ARM %s > +// CHECK-UBUNTU-12-04-CROSS-ARM: "{{.*}}ld{{(.exe)?}}" > "--sysroot=[[SYSROOT:[^"]+]]" > +// CHECK-UBUNTU-12-04-CROSS-ARM: > "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.3/../../../../arm-linux-gnueabi/lib/crt1.o" > +// CHECK-UBUNTU-12-04-CROSS-ARM: > "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.3/../../../../arm-linux-gnueabi/lib/crti.o" > +// CHECK-UBUNTU-12-04-CROSS-ARM: > "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.3{{/|\\\\}}crtbegin.o" > +// CHECK-UBUNTU-12-04-CROSS-ARM: > "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.3" > +// CHECK-UBUNTU-12-04-CROSS-ARM: > "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.3/../../../../arm-linux-gnueabi/lib/../" > +// CHECK-UBUNTU-12-04-CROSS-ARM: > "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.3/../../../../" > +// CHECK-UBUNTU-12-04-CROSS-ARM: "-L[[SYSROOT]]/usr/lib/../" > +// CHECK-UBUNTU-12-04-CROSS-ARM: > "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.3/../../../../arm-linux-gnueabi/lib" > +// CHECK-UBUNTU-12-04-CROSS-ARM: > "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.3/../../.." > +// CHECK-UBUNTU-12-04-CROSS-ARM: "-L[[SYSROOT]]/usr/lib" > +// CHECK-UBUNTU-12-04-CROSS-ARM: > "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.3{{/|\\\\}}crtend.o" > +// CHECK-UBUNTU-12-04-CROSS-ARM: > "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.3/../../../../arm-linux-gnueabi/lib/crtn.o" > +// > +// Check arm-linux-gnueabihf cross compilation support on Ubuntu 12.04 LTS. > +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ > +// RUN: --target=arm-unknown-linux-gnueabihf \ > +// RUN: --sysroot=%S/Inputs/ubuntu_12.04_LTS_cross_tree \ > +// RUN: | FileCheck --check-prefix=CHECK-UBUNTU-12-04-CROSS-ARM-HF %s > +// CHECK-UBUNTU-12-04-CROSS-ARM-HF: "{{.*}}ld{{(.exe)?}}" > "--sysroot=[[SYSROOT:[^"]+]]" > +// CHECK-UBUNTU-12-04-CROSS-ARM-HF: > "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../../arm-linux-gnueabihf/lib/crt1.o" > +// CHECK-UBUNTU-12-04-CROSS-ARM-HF: > "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../../arm-linux-gnueabihf/lib/crti.o" > +// CHECK-UBUNTU-12-04-CROSS-ARM-HF: > "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3{{/|\\\\}}crtbegin.o" > +// CHECK-UBUNTU-12-04-CROSS-ARM-HF: > "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3" > +// CHECK-UBUNTU-12-04-CROSS-ARM-HF: > "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../../arm-linux-gnueabihf/lib/../" > +// CHECK-UBUNTU-12-04-CROSS-ARM-HF: > "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../../" > +// CHECK-UBUNTU-12-04-CROSS-ARM-HF: "-L[[SYSROOT]]/usr/lib/../" > +// CHECK-UBUNTU-12-04-CROSS-ARM-HF: > "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../../arm-linux-gnueabihf/lib" > +// CHECK-UBUNTU-12-04-CROSS-ARM-HF: > "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../.." > +// CHECK-UBUNTU-12-04-CROSS-ARM-HF: "-L[[SYSROOT]]/usr/lib" > +// CHECK-UBUNTU-12-04-CROSS-ARM-HF: > "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3{{/|\\\\}}crtend.o" > +// CHECK-UBUNTU-12-04-CROSS-ARM-HF: > "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../../arm-linux-gnueabihf/lib/crtn.o" > +// > // Check fedora 18 on arm. > // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ > // RUN: --target=armv7-unknown-linux-gnueabihf \ > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > -- With best regards, Anton Korobeynikov Faculty of Mathematics and Mechanics, Saint Petersburg State University _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
