//===- Options.td ---------------------------------------------------------===// // // The MCLinker Project // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// include "llvm/Option/OptParser.td" //===----------------------------------------------------------------------===// // Dynamic //===----------------------------------------------------------------------===// def DynamicGroup : OptionGroup<"dynamic">, HelpText<"DYNAMIC OPTIONS">; def Entry : Joined<["--"], "entry=">, Group<DynamicGroup>, HelpText<"Use the explicit symbol as the entrance of your program">; def EntryAlias : Separate<["-"], "e">, Alias<Entry>; def Bsymbolic : Flag<["-"], "Bsymbolic">, Group<DynamicGroup>, HelpText<"Bind references within the shared library">; def Bgroup : Flag<["-"], "Bgroup">, Group<DynamicGroup>, HelpText<"Info the dynamic linker to lookup only inside the group">; def SOName : Joined<["-"], "soname=">, Group<DynamicGroup>, HelpText<"Set internal name of shared library">; def SONameAlias : Separate<["-"], "soname">, Group<DynamicGroup>, Alias<SOName>; def NoUndef : Flag<["--"], "no-undefined">, Group<DynamicGroup>, HelpText<"Do not allow unresolved references">; def AllowMulDefs : Flag<["--"], "allow-multiple-definition">, Group<DynamicGroup>, HelpText<"Allow multiple definitions">; def Z : Separate<["-"], "z">, Group<DynamicGroup>, HelpText<"Extensions for GNU ld compatibility">; def Dyld : Joined<["--"], "dynamic-linker=">, Group<DynamicGroup>, HelpText<"Set the name of the dynamic linker">; def DyldAlias : Separate<["-"], "dynamic-linker">, Group<DynamicGroup>, Alias<Dyld>; def EnableNewDTags : Flag<["--"], "enable-new-dtags">, Group<DynamicGroup>, HelpText<"Enable use of DT_RUNPATH and DT_FLAGS">; def SpareDTags: Separate<["--"], "spare-dynamic-tags">, Group<DynamicGroup>, HelpText<"Set the number of spare dyanmic tags (DT_NULL)">; //===----------------------------------------------------------------------===// // Optimization //===----------------------------------------------------------------------===// def OptimizationGroup : OptionGroup<"optimization">, HelpText<"OPTIMIZATION OPTIONS">; def GCSections : Flag<["--"], "gc-sections">, Group<OptimizationGroup>, HelpText<"Enable garbage collection of unused input sections">; def NoGCSections : Flag<["--"], "no-gc-sections">, Group<OptimizationGroup>, HelpText<"Disable garbage collection of unused input sections">; def PrintGCSections : Flag<["--"], "print-gc-sections">, Group<OptimizationGroup>, HelpText<"List all sections removed by garbage collection">; def NoPrintGCSections : Flag<["--"], "no-print-gc-sections">, Group<OptimizationGroup>, HelpText<"Do not list sections removed by garbage collection">; def LDGeneratedUnwindInfo : Flag<["--"], "ld-generated-unwind-info">, Group<OptimizationGroup>, HelpText<"Request creation of unwind info for linker generated code sections like PLT">; def NoLDGeneratedUnwindInfo : Flag<["--"], "no-ld-generated-unwind-info">, Group<OptimizationGroup>, HelpText<"Don't create unwind info for linker generated sections to save size">; def ICF : Joined<["--"], "icf=">, Group<OptimizationGroup>, HelpText<"Identical Code Folding">; def ICFIters : Separate<["--"], "icf-iterations">, Group<OptimizationGroup>, HelpText<"Set number of iterations to do ICF">; def PrintICFSections : Flag<["--"], "print-icf-sections">, Group<OptimizationGroup>, HelpText<"List all sections folded by ICF">; def NoPrintICFSections : Flag<["--"], "no-print-icf-sections">, Group<OptimizationGroup>, HelpText<"Do not list sections folded by ICF">; //===----------------------------------------------------------------------===// // Output //===----------------------------------------------------------------------===// def OutputGroup : OptionGroup<"output">, HelpText<"OUTPUT OPTIONS">; def Output : Separate<["-"], "o">, Group<OutputGroup>, HelpText<"Output filename">; def OutputAlias : Joined<["--"], "output=">, Group<OutputGroup>, Alias<Output>; def OutputFormat: Joined<["--"], "oformat=">, Group<OutputGroup>, HelpText<"Output format">; def Shared : Flag<["-"], "shared">, Group<OutputGroup>, HelpText<"Create a shared library">; def Bshareable : Flag<["-"], "Bshareable">, Group<OutputGroup>, Alias<Shared>; def Bdynamic : Flag<["-"], "Bdynamic">, Group<OutputGroup>, HelpText<"Link against dynamic library">; def BdynamicAlias1 : Flag<["-"], "dy">, Group<OutputGroup>, Alias<Bdynamic>; def BdynamicAlias2 : Flag<["-"], "call_shared">, Group<OutputGroup>, Alias<Bdynamic>; def Bstatic : Flag<["-"], "Bstatic">, Group<OutputGroup>, HelpText<"Link against static library">; def BstaticAlias1 : Flag<["-"], "dn">, Group<OutputGroup>, Alias<Bstatic>; def BstaticAlias2 : Flag<["-"], "non_shared">, Group<OutputGroup>, Alias<Bstatic>; def BstaticAlias3 : Flag<["-"], "static">, Group<OutputGroup>, Alias<Bstatic>; def PIE : Flag<["-"], "pie">, Group<OutputGroup>, HelpText<"Emit a position-independent executable file">; def PICExec : Flag<["--"], "pic-executable">, Group<OutputGroup>, Alias<PIE>; def Relocatable : Flag<["--"], "relocatable">, Group<OutputGroup>, HelpText<"Generate relocatable output">; def RelocatableAlias : Flag<["-"], "r">, Group<OutputGroup>, Alias<Relocatable>; def InputFormat : Joined<["--"], "format=">, Group<OutputGroup>, HelpText<"Specify the binary format for input object files that follow this option on the command line">; def InputFormatAlias : Separate<["-"], "b">, Group<OutputGroup>, Alias<InputFormat>; def StripDebug : Flag<["--"], "strip-debug">, Group<OutputGroup>, HelpText<"Omit debugger symbol information from the output file">; def StripDebugAlias : Flag<["-"], "S">, Group<OutputGroup>, Alias<StripDebug>; def StripAll : Flag<["--"], "strip-all">, Group<OutputGroup>, HelpText<"Omit all symbol information from the output file">; def StripAllAlias : Flag<["-"], "s">, Group<OutputGroup>, Alias<StripAll>; def DiscardLocals : Flag<["--"], "discard-debug">, Group<OutputGroup>, HelpText<"Discard all temporary local symbols">; def DiscardLocalsAlias : Flag<["-"], "X">, Group<OutputGroup>, Alias<DiscardLocals>; def DiscardAll : Flag<["--"], "discard-all">, Group<OutputGroup>, HelpText<"Discard all local symbols">; def DiscardAllAlias : Flag<["-"], "x">, Group<OutputGroup>, Alias<DiscardAll>; def EHFrameHdr : Flag<["--"], "eh-frame-hdr">, Group<OutputGroup>, HelpText<"Request creation of .eh_frame_hdr section and PT_GNU_EH_FRAME segment">; def NMagic : Flag<["--"], "nmagic">, Group<OutputGroup>, HelpText<"Do not page align data">; def NMagicAlias : Flag<["-"], "n">, Group<OutputGroup>, Alias<NMagic>; def OMagic : Flag<["--"], "omagic">, Group<OutputGroup>, HelpText<"Do not page align data, do not make text readonly">; def OMagicAlias : Flag<["-"], "N">, Group<OutputGroup>, Alias<OMagic>; def HashStyle : Joined<["--"], "hash-style=">, Group<OutputGroup>, HelpText<"Set the type of linker's hash table(s)">; def ExportDynamic : Flag<["--"], "export-dynamic">, Group<OutputGroup>, HelpText<"Export all dynamic symbols">; def ExportDynamicAlias : Flag<["-"], "E">, Group<OutputGroup>, Alias<ExportDynamic>; def NoExportDynamic : Flag<["--"], "no-export-dynamic">, Group<OutputGroup>, HelpText<"Not export all dynamic symbols">; def NoWarnMismatch : Flag<["--"], "no-warn-mismatch">, Group<OutputGroup>, HelpText<"Allow linking together mismatched input files">; def ExcludeLibs : Separate<["--"], "exclude-libs">, Group<OutputGroup>, HelpText<"Allow linking together mismatched input files">; //===----------------------------------------------------------------------===// // Positional //===----------------------------------------------------------------------===// def PositionalGroup : OptionGroup<"positional">, HelpText<"POSITIONAL OPTIONS">; def Script : Joined<["--"], "script=">, Group<PositionalGroup>, HelpText<"Use the given file as the linker script">; def ScriptAlias : Separate<["-"], "T">, Group<PositionalGroup>, Alias<Script>; def Namespec : Joined<["--"], "library=">, Group<PositionalGroup>, HelpText<"Add the archive or object file specified by namespec to the list of files to link">; def NamespecAlias : Joined<["-"], "l">, Group<PositionalGroup>, Alias<Namespec>; def WholeArchive : Flag<["--"], "whole-archive">, Group<PositionalGroup>, HelpText<"Include every object file in the archive in the link">; def NoWholeArchive : Flag<["--"], "no-whole-archive">, Group<PositionalGroup>, HelpText<"Turn off the effect of the --whole-archive option">; def AsNeeded : Flag<["--"], "as-needed">, Group<PositionalGroup>, HelpText<"Add the dynamic libraries mentioned to DT_NEEDED where there is " "a non-weak undefined symbol reference from">; def NoAsNeeded : Flag<["--"], "no-as-needed">, Group<PositionalGroup>, HelpText<"Turn off the effect of the --as-needed">; def AddNeeded : Flag<["--"], "add-needed">, Group<PositionalGroup>, HelpText<"Deprecated">; def NoAddNeeded : Flag<["--"], "no-add-needed">, Group<PositionalGroup>, HelpText<"Deprecated">; def CopyDTNeeded : Flag<["--"], "copy-dt-needed-entries">, Group<PositionalGroup>, HelpText<"Add the dynamic libraries mentioned to DT_NEEDED">; def NoCopyDTNeeded : Flag<["--"], "no-copy-dt-needed-entries">, Group<PositionalGroup>, HelpText<"Turn off the effect of the --copy-dt-needed-entries">; def StartGroup : Flag<["--"], "start-group">, Group<PositionalGroup>, HelpText<"Start to record a group of archives">; def StartGroupAlias : Flag<["-"], "(">, Group<PositionalGroup>, Alias<StartGroup>; def EndGroup : Flag<["--"], "end-group">, Group<PositionalGroup>, HelpText<"Stop recording a group of archives">; def EndGroupAlias : Flag<["-"], ")">, Group<PositionalGroup>, Alias<EndGroup>; //===----------------------------------------------------------------------===// // Preference //===----------------------------------------------------------------------===// def PreferenceGroup : OptionGroup<"preference">, HelpText<"PREFERENCE OPTIONS">; def Color : Joined<["--"], "color=">, Group<PreferenceGroup>, HelpText<"Surround the result strings with the marker">; def Trace : Flag<["--"], "trace">, Group<PreferenceGroup>, HelpText<"Print the names of the input files as ld processes them">; def TraceAlias : Flag<["-"], "t">, Group<PreferenceGroup>, Alias<Trace>; def Help : Flag<["-", "--"], "help">, Group<PreferenceGroup>, HelpText<"Display available options (to standard output)">; def HelpAlias : Flag<["-"], "h">, Group<PreferenceGroup>, Alias<Help>; def Verbose : Joined<["--"], "verbose=">, Group<PreferenceGroup>, HelpText<"Set linker diagnostic output level">; def Version : Flag<["--"], "version">, Group<PreferenceGroup>, HelpText<"Display MCLinker version">; def VersionAlias1 : Flag<["-"], "v">, Group<PreferenceGroup>, Alias<Version>; def VersionAlias2 : Flag<["-"], "V">, Group<PreferenceGroup>, Alias<Version>; def ErrorLimit : Joined<["--"], "error-limit=">, Group<PreferenceGroup>, HelpText<"Set the maximum limit of errors">; def WarningLimit : Joined<["--"], "warning-limit=">, Group<PreferenceGroup>, HelpText<"Set the maximum limit of warnings">; def FatalWarnings : Flag<["--"], "fatal-warnings">, Group<PreferenceGroup>, HelpText<"Turn all warnings into errors">; def NoFatalWarnings : Flag<["--"], "no-fatal-warnings">, Group<PreferenceGroup>, HelpText<"Do not turn all warnings into errors">; def WarnSharedTextrel : Flag<["--"], "warn-shared-textrel">, Group<PreferenceGroup>, HelpText<"Warn if there is a text relocation in the output shared object">; //===----------------------------------------------------------------------===// // Script //===----------------------------------------------------------------------===// def ScriptGroup : OptionGroup<"script">, HelpText<"SCRIPT OPTIONS">; def DefSym : Joined<["--"], "defsym=">, Group<ScriptGroup>, HelpText<"Define a symbol">; def Wrap : Joined<["--"], "wrap=">, Group<ScriptGroup>, HelpText<"Use a wrap function for the symbol">; def Portable : Joined<["--"], "portable=">, Group<ScriptGroup>, HelpText<"Use a portable function for the symbol">; def SectionStart : Joined<["--"], "section-start=">, Group<ScriptGroup>, HelpText<"Locate a output section at the given absolute address">; def Tbss : Joined<["-"], "Tbss=">, Group<ScriptGroup>, HelpText<"Set the address of the bss segment">; def Tdata : Joined<["-"], "Tdata=">, Group<ScriptGroup>, HelpText<"Set the address of the data segment">; def Ttext : Joined<["-"], "Ttext=">, Group<ScriptGroup>, HelpText<"Set the address of the text segment">; //===----------------------------------------------------------------------===// // Search Path //===----------------------------------------------------------------------===// def SearchpathGroup : OptionGroup<"searchpath">, HelpText<"SEARCHPATH OPTIONS">; def Sysroot : Joined<["--"], "sysroot=">, Group<SearchpathGroup>, HelpText<"Use the given directory as the location of the sysroot">; def LibraryPath : Joined<["--"], "library-path=">, Group<SearchpathGroup>, HelpText<"Add the given directory to the list of search paths">; def LibraryPathAlias : Joined<["-"], "L">, Group<SearchpathGroup>, Alias<LibraryPath>; def NoStdlib : Flag<["-"], "nostdlib">, Group<SearchpathGroup>, HelpText<"Only search lib dirs explicitly specified on cmdline">; def RPath : Joined<["-"], "rpath=">, Group<SearchpathGroup>, HelpText<"Add a directory to the runtime library search path">; //===----------------------------------------------------------------------===// // Symbol //===----------------------------------------------------------------------===// def SymbolGroup : OptionGroup<"symbol">, HelpText<"SYMBOL OPTIONS">; def Undefined : Joined<["--"], "undefined=">, Group<SymbolGroup>, HelpText<"Force symbol to be undefined in the output file">; def UndefinedAlias : Separate<["-"], "u">, Group<SymbolGroup>, Alias<Undefined>; def DefineCommon : Flag<["-"], "d">, Group<SymbolGroup>, HelpText<"Define common symbol">; def DefineCommonAlias1 : Flag<["-"], "dc">, Group<SymbolGroup>, Alias<DefineCommon>; def DefineCommonAlias2 : Flag<["-"], "dp">, Group<SymbolGroup>, Alias<DefineCommon>; //===----------------------------------------------------------------------===// // Target //===----------------------------------------------------------------------===// def TargetGroup : OptionGroup<"target">, HelpText<"TARGET OPTIONS">; def GPSize : Joined<["--"], "gpsize=">, Group<TargetGroup>, HelpText<"Set the maximum size of objects to be optimized using GP">; def GPSizeAlias : Separate<["-"], "G">, Group<TargetGroup>, Alias<GPSize>; def Triple : Joined<["-"], "mtriple=">, Group<TargetGroup>, HelpText<"Override target triple for module">; def Arch : Joined<["-"], "march=">, Group<TargetGroup>, HelpText<"Architecture to generate code for">; def CPU : Joined<["-"], "mcpu=">, Group<TargetGroup>, HelpText<"Set a specific cpu type">; def Emulation : Separate<["-"], "m">, Group<TargetGroup>, HelpText<"Set GNU linker emulation">; def StubGroupSize : Joined<["--"], "stub-group-size=">, Group<TargetGroup>, HelpText<"Set the group size to place stubs between sections">; def FixCA53Erratum835769 : Flag<["--"], "fix-cortex-a53-835769">, Group<TargetGroup>, HelpText<"Enable fix for cortex a53 erratum 835769">; def FixCA53Erratum843419 : Flag<["--"], "fix-cortex-a53-843419">, Group<TargetGroup>, HelpText<"Enable fix for cortex a53 erratum 843419">;