[llvm-branch-commits] [cfe-branch] r278605 - Merge r278393 and r278395.
Author: ed Date: Sat Aug 13 15:43:56 2016 New Revision: 278605 URL: http://llvm.org/viewvc/llvm-project?rev=278605&view=rev Log: Merge r278393 and r278395. LLVM/Clang 3.8 is directly usable as a cross compiler for CloudABI/i686. In 3.9rc1 there are a couple of regressions in the driver that cause it to be less usable: - PIE was enabled unconditionally, even though it's only available for x86-64 and aarch64. - Some inline assembly fails to build, due to a shortage of registers, as frame pointers are not omitted. Both these changes are fairly low risk (read: they don't affect other targets), so go ahead and merge them into 3.9, so we can use an unmodified compiler on all architectures. Modified: cfe/branches/release_39/ (props changed) cfe/branches/release_39/lib/Driver/ToolChains.cpp cfe/branches/release_39/lib/Driver/ToolChains.h cfe/branches/release_39/lib/Driver/Tools.cpp cfe/branches/release_39/test/Driver/cloudabi.c cfe/branches/release_39/test/Driver/cloudabi.cpp cfe/branches/release_39/test/Driver/frame-pointer-elim.c Propchange: cfe/branches/release_39/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Sat Aug 13 15:43:56 2016 @@ -1,4 +1,4 @@ /cfe/branches/type-system-rewrite:134693-134817 -/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276900,276979,276983,277095,277138,277141,277221,277307,277522,277743,277796-277797,277866,277889,277900,278139,278234-278235 +/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276900,276979,276983,277095,277138,277141,277221,277307,277522,277743,277796-277797,277866,277889,277900,278139,278234-278235,278393,278395 /cfe/trunk/test:170344 /cfe/trunk/test/SemaTemplate:126920 Modified: cfe/branches/release_39/lib/Driver/ToolChains.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/lib/Driver/ToolChains.cpp?rev=278605&r1=278604&r2=278605&view=diff == --- cfe/branches/release_39/lib/Driver/ToolChains.cpp (original) +++ cfe/branches/release_39/lib/Driver/ToolChains.cpp Sat Aug 13 15:43:56 2016 @@ -3281,6 +3281,19 @@ Tool *CloudABI::buildLinker() const { return new tools::cloudabi::Linker(*this); } +bool CloudABI::isPIEDefault() const { + // Only enable PIE on architectures that support PC-relative + // addressing. PC-relative addressing is required, as the process + // startup code must be able to relocate itself. + switch (getTriple().getArch()) { + case llvm::Triple::aarch64: + case llvm::Triple::x86_64: +return true; + default: +return false; + } +} + SanitizerMask CloudABI::getSupportedSanitizers() const { SanitizerMask Res = ToolChain::getSupportedSanitizers(); Res |= SanitizerKind::SafeStack; Modified: cfe/branches/release_39/lib/Driver/ToolChains.h URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/lib/Driver/ToolChains.h?rev=278605&r1=278604&r2=278605&view=diff == --- cfe/branches/release_39/lib/Driver/ToolChains.h (original) +++ cfe/branches/release_39/lib/Driver/ToolChains.h Sat Aug 13 15:43:56 2016 @@ -634,8 +634,7 @@ public: void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const override; - bool isPIEDefault() const override { return true; } - + bool isPIEDefault() const override; SanitizerMask getSupportedSanitizers() const override; SanitizerMask getDefaultSanitizers() const override; Modified: cfe/branches/release_39/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/lib/Driver/Tools.cpp?rev=278605&r1=278604&r2=278605&view=diff == --- cfe/branches/release_39/lib/Driver/Tools.cpp (original) +++ cfe/branches/release_39/lib/Driver/Tools.cpp Sat Aug 13 15:43:56 2016 @@ -3258,7 +3258,7 @@ static bool shouldUseFramePointerForTarg break; } - if (Triple.isOSLinux()) { + if (Triple.isOSLinux() || Triple.getOS() == llvm::Triple::CloudABI) { switch (Triple.getArch()) { // Don't use a frame pointer on linux if optimizing for certain targets. case llvm::Triple::mips64: @@ -7458,11 +7458,13 @@ void cloudabi::Linker::ConstructJob(Comp // CloudABI only supports static linkage. CmdArgs.push_back("-Bstatic"); - - // CloudABI uses Position Independent Executables exclusively. - CmdArgs.push_back("-pie"); CmdArgs.push_back("--no-dynamic-linker"); - CmdArgs.push_back("-zrelro"); + + // Provide PIE linker flags in case PIE is default for the architecture. + if (ToolChain.isPIEDefault()) { +CmdArgs.push_back("-pie"); +CmdArgs.push_back("-zrelro"); + } CmdArgs.push_back("--eh-frame-hdr"); CmdArgs.push_back("--gc-sections"); Modified
[llvm-branch-commits] [cfe-branch] r287093 - Merge r280672, per bug 30839:
Author: ed Date: Wed Nov 16 04:18:17 2016 New Revision: 287093 URL: http://llvm.org/viewvc/llvm-project?rev=287093&view=rev Log: Merge r280672, per bug 30839: Add support for targeting armv6-unknown-cloudabi-eabihf. I'm in the progress of adding ARMv6 support to CloudABI. On the compiler side, everything seems to work properly with this tiny change applied. Modified: cfe/branches/release_39/ (props changed) cfe/branches/release_39/lib/Basic/Targets.cpp cfe/branches/release_39/test/Preprocessor/init.c Propchange: cfe/branches/release_39/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Nov 16 04:18:17 2016 @@ -1,4 +1,4 @@ /cfe/branches/type-system-rewrite:134693-134817 -/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276900,276979,276983,277095,277138,277141,277221,277307,277522,277743,277783,277796-277797,277852,277866,277889,277900,278139,278156,278234-278235,278393,278395,278763,278786,278988,284110,284229,286103,286106,286129,286584,286944,286953,287025 +/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276900,276979,276983,277095,277138,277141,277221,277307,277522,277743,277783,277796-277797,277852,277866,277889,277900,278139,278156,278234-278235,278393,278395,278763,278786,278988,280672,284110,284229,286103,286106,286129,286584,286944,286953,287025 /cfe/trunk/test:170344 /cfe/trunk/test/SemaTemplate:126920 Modified: cfe/branches/release_39/lib/Basic/Targets.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/lib/Basic/Targets.cpp?rev=287093&r1=287092&r2=287093&view=diff == --- cfe/branches/release_39/lib/Basic/Targets.cpp (original) +++ cfe/branches/release_39/lib/Basic/Targets.cpp Wed Nov 16 04:18:17 2016 @@ -8170,6 +8170,8 @@ static TargetInfo *AllocateTarget(const return new DarwinARMTargetInfo(Triple, Opts); switch (os) { +case llvm::Triple::CloudABI: + return new CloudABITargetInfo(Triple, Opts); case llvm::Triple::Linux: return new LinuxTargetInfo(Triple, Opts); case llvm::Triple::FreeBSD: Modified: cfe/branches/release_39/test/Preprocessor/init.c URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/test/Preprocessor/init.c?rev=287093&r1=287092&r2=287093&view=diff == --- cfe/branches/release_39/test/Preprocessor/init.c (original) +++ cfe/branches/release_39/test/Preprocessor/init.c Wed Nov 16 04:18:17 2016 @@ -1975,6 +1975,11 @@ // ARMEABIHARDFP:#define __arm 1 // ARMEABIHARDFP:#define __arm__ 1 +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=armv6-unknown-cloudabi-eabihf < /dev/null | FileCheck -match-full-lines -check-prefix ARMV6-CLOUDABI %s +// +// ARMV6-CLOUDABI:#define __CloudABI__ 1 +// ARMV6-CLOUDABI:#define __arm__ 1 + // RUN: %clang_cc1 -E -dM -ffreestanding -triple=arm-netbsd-eabi < /dev/null | FileCheck -match-full-lines -check-prefix ARM-NETBSD %s // // ARM-NETBSD-NOT:#define _LP64 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits