clang 20.0.0git
|
#include "Darwin.h"
#include "Arch/AArch64.h"
#include "Arch/ARM.h"
#include "CommonArgs.h"
#include "clang/Basic/AlignedAllocation.h"
#include "clang/Basic/ObjCRuntime.h"
#include "clang/Config/config.h"
#include "clang/Driver/Compilation.h"
#include "clang/Driver/Driver.h"
#include "clang/Driver/DriverDiagnostic.h"
#include "clang/Driver/Options.h"
#include "clang/Driver/SanitizerArgs.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/Option/ArgList.h"
#include "llvm/ProfileData/InstrProf.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/ScopedPrinter.h"
#include "llvm/Support/Threading.h"
#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/TargetParser/TargetParser.h"
#include "llvm/TargetParser/Triple.h"
#include <cstdlib>
Go to the source code of this file.
Functions | |
static VersionTuple | minimumMacCatalystDeploymentTarget () |
static bool | shouldLinkerNotDedup (bool IsLinkerOnlyAction, const ArgList &Args) |
Pass -no_deduplicate to ld64 under certain conditions: | |
static bool | isObjCRuntimeLinked (const ArgList &Args) |
Determine whether we are linking the ObjC runtime. | |
static bool | checkRemarksOptions (const Driver &D, const ArgList &Args, const llvm::Triple &Triple) |
static void | renderRemarksOptions (const ArgList &Args, ArgStringList &CmdArgs, const llvm::Triple &Triple, const InputInfo &Output, const JobAction &JA) |
static void | AppendPlatformPrefix (SmallString< 128 > &Path, const llvm::Triple &T) |
static const char * | ArmMachOArchName (StringRef Arch) |
static const char * | ArmMachOArchNameCPU (StringRef CPU) |
static StringRef | getXcodeDeveloperPath (StringRef PathIntoXcode) |
Take a path that speculatively points into Xcode and return the XCODE/Contents/Developer path if it is an Xcode path, or an empty path otherwise. | |
static bool | hasExportSymbolDirective (const ArgList &Args) |
Check if the link command contains a symbol export directive. | |
static void | addExportedSymbol (ArgStringList &CmdArgs, const char *Symbol) |
Add an export directive for Symbol to the link command. | |
static void | addSectalignToPage (const ArgList &Args, ArgStringList &CmdArgs, StringRef Segment, StringRef Section) |
Add a sectalign directive for Segment and Section to the maximum expected page size for Darwin. | |
static std::string | getSystemOrSDKMacOSVersion (StringRef MacOSSDKVersion) |
Returns the most appropriate macOS target version for the current process. | |
static bool | sdkSupportsBuiltinModules (const Darwin::DarwinPlatformKind &TargetPlatform, const Darwin::DarwinEnvironmentKind &TargetEnvironment, const std::optional< DarwinSDKInfo > &SDKInfo) |
static llvm::VersionTuple | sizedDeallocMinVersion (llvm::Triple::OSType OS) |
static const char * | getPlatformName (Darwin::DarwinPlatformKind Platform, Darwin::DarwinEnvironmentKind Environment) |
static void | addDynamicLibLinkArgs (const Darwin &D, const ArgList &Args, ArgStringList &CmdArgs) |
static void | addBundleLinkArgs (const Darwin &D, const ArgList &Args, ArgStringList &CmdArgs) |
static void | addPgProfilingLinkArgs (const Darwin &D, const ArgList &Args, ArgStringList &CmdArgs) |
static void | addDefaultCRTLinkArgs (const Darwin &D, const ArgList &Args, ArgStringList &CmdArgs) |
|
static |
Definition at line 3512 of file Darwin.cpp.
References D.
Referenced by clang::driver::toolchains::Darwin::addStartObjectFileArgs().
|
static |
Definition at line 3547 of file Darwin.cpp.
References D.
Referenced by clang::driver::toolchains::Darwin::addStartObjectFileArgs().
|
static |
Definition at line 3494 of file Darwin.cpp.
References D.
Referenced by clang::driver::toolchains::Darwin::addStartObjectFileArgs().
|
static |
Add an export directive for Symbol
to the link command.
Definition at line 1466 of file Darwin.cpp.
Referenced by clang::driver::toolchains::Darwin::addProfileRTLibs().
|
static |
Definition at line 3523 of file Darwin.cpp.
References D.
Referenced by clang::driver::toolchains::Darwin::addStartObjectFileArgs().
|
static |
Add a sectalign directive for Segment
and Section
to the maximum expected page size for Darwin.
On iPhone 6+ the max supported page size is 16K. On macOS, the max is 4K. Use a common alignment constant (16K) for now, and reduce the alignment on macOS if it proves important.
Definition at line 1477 of file Darwin.cpp.
Referenced by clang::driver::toolchains::Darwin::addProfileRTLibs().
|
static |
Definition at line 2488 of file Darwin.cpp.
References Path, and clang::T.
Referenced by clang::driver::tools::darwin::Linker::ConstructJob(), and clang::driver::toolchains::AppleMachO::GetEffectiveSysroot().
|
static |
Definition at line 1046 of file Darwin.cpp.
Referenced by clang::driver::toolchains::MachO::getMachOArchName().
|
static |
Definition at line 1063 of file Darwin.cpp.
Referenced by clang::driver::toolchains::MachO::getMachOArchName().
|
static |
Definition at line 502 of file Darwin.cpp.
References D, and hasMultipleInvocations().
|
static |
Definition at line 3384 of file Darwin.cpp.
References clang::driver::toolchains::Darwin::DriverKit, clang::driver::toolchains::Darwin::IPhoneOS, clang::driver::toolchains::Darwin::MacCatalyst, clang::driver::toolchains::Darwin::MacOS, clang::driver::toolchains::Darwin::TvOS, clang::driver::toolchains::Darwin::WatchOS, and clang::driver::toolchains::Darwin::XROS.
Referenced by clang::driver::toolchains::Darwin::addPlatformVersionArgs(), clang::Sema::diagnoseUnavailableAlignedAllocation(), and llvm::MachO::operator<<().
|
static |
Returns the most appropriate macOS target version for the current process.
If the macOS SDK version is the same or earlier than the system version, then the SDK version is returned. Otherwise the system version is returned.
Definition at line 1663 of file Darwin.cpp.
References clang::driver::Driver::GetReleaseVersion().
|
static |
Take a path that speculatively points into Xcode and return the XCODE/Contents/Developer
path if it is an Xcode path, or an empty path otherwise.
Definition at line 1220 of file Darwin.cpp.
Referenced by clang::driver::toolchains::DarwinClang::AddLinkARCArgs().
|
static |
Check if the link command contains a symbol export directive.
Definition at line 1451 of file Darwin.cpp.
Referenced by clang::driver::toolchains::Darwin::addProfileRTLibs().
|
static |
Determine whether we are linking the ObjC runtime.
Definition at line 494 of file Darwin.cpp.
References clang::driver::tools::isObjCAutoRefCount().
Referenced by clang::driver::tools::darwin::Linker::ConstructJob().
|
static |
Definition at line 38 of file Darwin.cpp.
Referenced by clang::driver::toolchains::Darwin::addClangCC1ASTargetOptions(), and clang::driver::toolchains::Darwin::addPlatformVersionArgs().
|
static |
Definition at line 519 of file Darwin.cpp.
References clang::driver::InputInfo::getFilename(), clang::driver::tools::getLastProfileUseArg(), and clang::driver::InputInfo::isFilename().
|
static |
Definition at line 2992 of file Darwin.cpp.
References clang::driver::toolchains::Darwin::IPhoneOS, clang::driver::toolchains::Darwin::MacCatalyst, clang::driver::toolchains::Darwin::MacOS, clang::driver::toolchains::Darwin::NativeEnvironment, clang::driver::toolchains::Darwin::Simulator, clang::driver::toolchains::Darwin::TvOS, clang::driver::toolchains::Darwin::WatchOS, and clang::driver::toolchains::Darwin::XROS.
Referenced by clang::driver::toolchains::Darwin::addClangTargetOptions().
Pass -no_deduplicate to ld64 under certain conditions:
Also do not add -no_deduplicate when no -O option is specified and this is just a link (we can't imply -O0)
Definition at line 203 of file Darwin.cpp.
|
inlinestatic |
Definition at line 3045 of file Darwin.cpp.
Referenced by clang::driver::toolchains::Darwin::isSizedDeallocationUnavailable().