PING... Who can help to review this piece of code change? Thanks, -Jiangning
> -----Original Message----- > From: [email protected] [mailto:cfe-commits- > [email protected]] On Behalf Of Jiangning Liu > Sent: Tuesday, July 17, 2012 6:04 PM > To: [email protected] > Subject: [cfe-commits] [PATCH] fix dynamic object linker for ARM > GNUEABIHF > > Hi, > > The command line options passed to GNU ld, that are generated by clang, > should make difference for ARM soft float and hard float. For hard float, > we should use "-dynamic-linker /lib/ld-linux-armhf.so", while for softfp, > we should use "-dynamic-linker /lib/ld-linux.so" instead. This patch is > to fix this problem. > > Thanks, > -Jiangning > > diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index > 7a365c0..2960690 100755 > --- a/lib/Driver/Tools.cpp > +++ b/lib/Driver/Tools.cpp > @@ -5489,8 +5489,12 @@ void linuxtools::Link::ConstructJob(Compilation > &C, const JobAction &JA, > else if (ToolChain.getArch() == llvm::Triple::x86) > CmdArgs.push_back("/lib/ld-linux.so.2"); > else if (ToolChain.getArch() == llvm::Triple::arm || > - ToolChain.getArch() == llvm::Triple::thumb) > - CmdArgs.push_back("/lib/ld-linux.so.3"); > + ToolChain.getArch() == llvm::Triple::thumb) { > + if (ToolChain.getTriple().getEnvironment() == > llvm::Triple::GNUEABIHF) > + CmdArgs.push_back("/lib/ld-linux-armhf.so.3"); > + else > + CmdArgs.push_back("/lib/ld-linux.so.3"); > + } > else if (ToolChain.getArch() == llvm::Triple::mips || > ToolChain.getArch() == llvm::Triple::mipsel) > CmdArgs.push_back("/lib/ld.so.1"); > diff --git a/test/Driver/linux-ld.c b/test/Driver/linux-ld.c index > 89f3bc3..a6831b6 100644 > --- a/test/Driver/linux-ld.c > +++ b/test/Driver/linux-ld.c > @@ -219,6 +219,21 @@ > // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/lib/../lib64" > // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/../lib64" > // > +// Check dynamic-linker for different archs // RUN: %clang %s -### -o > +%t.o 2>&1 \ > +// RUN: -target arm-linux-gnueabi \ > +// RUN: | FileCheck --check-prefix=CHECK-ARM %s > +// CHECK-ARM: "{{.*}}ld{{(.exe)?}}" > +// CHECK-ARM: "-m" "armelf_linux_eabi" > +// CHECK-ARM: "-dynamic-linker" "{{.*}}/lib/ld-linux.so.3" > +// > +// RUN: %clang %s -### -o %t.o 2>&1 \ > +// RUN: -target arm-linux-gnueabihf \ > +// RUN: | FileCheck --check-prefix=CHECK-ARM-HF %s > +// CHECK-ARM-HF: "{{.*}}ld{{(.exe)?}}" > +// CHECK-ARM-HF: "-m" "armelf_linux_eabi" > +// CHECK-ARM-HF: "-dynamic-linker" "{{.*}}/lib/ld-linux-armhf.so.3" > +// > // Check that we do not pass --hash-style=gnu and --hash-style=both to > linker // and provide correct path to the dynamic linker and emulation > mode when build // for MIPS platforms. _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
