| //===- 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">; |