1.\" Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 2.\" See https://llvm.org/LICENSE.txt for license information. 3.\" SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 4.\" 5.\" This man page documents only lld's ELF linking support, obtained originally 6.\" from FreeBSD. 7.Dd May 12, 2019 8.Dt LD.LLD 1 9.Os 10.Sh NAME 11.Nm ld.lld 12.Nd ELF linker from the LLVM project 13.Sh SYNOPSIS 14.Nm ld.lld 15.Op Ar options 16.Ar objfile ... 17.Sh DESCRIPTION 18A linker takes one or more object, archive, and library files, and combines 19them into an output file (an executable, a shared library, or another object 20file). 21It relocates code and data from the input files and resolves symbol 22references between them. 23.Pp 24.Nm 25is a drop-in replacement for the GNU BFD and gold linkers. 26It accepts most of the same command line arguments and linker scripts 27as GNU linkers. 28.Pp 29.Nm 30currently supports i386, x86-64, ARM, AArch64, PowerPC32, PowerPC64, 31MIPS32, MIPS64, RISC-V, AMDGPU, Hexagon and SPARC V9 targets. 32.Nm 33acts as a Microsoft link.exe-compatible linker if invoked as 34.Nm lld-link 35and as macOS's ld if invoked as 36.Nm ld.ld64. 37All these targets are always supported however 38.Nm 39was built, so you can always use 40.Nm 41as a native linker as well as a cross linker. 42.Sh OPTIONS 43Many options have both a single-letter and long form. 44When using the long form options other than those beginning with the 45letter 46.Cm o 47may be specified using either one or two dashes preceding the option name. 48Long options beginning with 49.Cm o 50require two dashes to avoid confusion with the 51.Fl o Ar path 52option. 53.Pp 54.Bl -tag -width indent 55.It Fl -allow-multiple-definition 56Do not error if a symbol is defined multiple times. 57The first definition will be used. 58.It Fl -allow-shlib-undefined 59Allow unresolved references in shared libraries. 60This option is enabled by default when linking a shared library. 61.It Fl -apply-dynamic-relocs 62Apply link-time values for dynamic relocations. 63.It Fl -as-needed 64Only set 65.Dv DT_NEEDED 66for shared libraries if used. 67.It Fl -auxiliary Ns = Ns Ar value 68Set the 69.Dv DT_AUXILIARY 70field to the specified name. 71.It Fl -Bdynamic , Fl -dy 72Link against shared libraries. 73.It Fl -Bstatic , Fl -static , Fl -dn 74Do not link against shared libraries. 75.It Fl -Bsymbolic 76Bind defined symbols locally. 77.It Fl -Bsymbolic-functions 78Bind defined function symbols locally. 79.It Fl -build-id Ns = Ns Ar value 80Generate a build ID note. 81.Ar value 82may be one of 83.Cm fast , 84.Cm md5 , 85.Cm sha1 , 86.Cm tree , 87.Cm uuid , 88.Cm 0x Ns Ar hex-string , 89and 90.Cm none . 91.Cm tree 92is an alias for 93.Cm sha1 . 94Build-IDs of type 95.Cm fast , 96.Cm md5 , 97.Cm sha1 , 98and 99.Cm tree 100are calculated from the object contents. 101.Cm fast 102is not intended to be cryptographically secure. 103.It Fl -build-id 104Synonym for 105.Fl -build-id Ns = Ns Cm fast . 106.It Fl -color-diagnostics Ns = Ns Ar value 107Use colors in diagnostics. 108.Ar value 109may be one of 110.Cm always , 111.Cm auto , 112and 113.Cm never . 114.Cm auto 115enables color if and only if output is to a terminal. 116.It Fl -color-diagnostics 117Alias for 118.Fl -color-diagnostics Ns = Ns Cm auto . 119.It Fl -compress-debug-sections Ns = Ns Ar value 120Compress DWARF debug sections. 121.Ar value 122may be 123.Cm none 124or 125.Cm zlib . 126.It Fl -cref 127Output cross reference table. 128.It Fl -define-common , Fl d 129Assign space to common symbols. 130.It Fl -defsym Ns = Ns Ar symbol Ns = Ns Ar expression 131Define a symbol alias. 132.Ar expression 133may be another symbol or a linker script expression. 134For example, 135.Ql --defsym=foo=bar 136or 137.Ql --defsym=foo=bar+0x100 . 138.It Fl -demangle 139Demangle symbol names. 140.It Fl -disable-new-dtags 141Disable new dynamic tags. 142.It Fl -discard-all , Fl x 143Delete all local symbols. 144.It Fl -discard-locals , Fl X 145Delete temporary local symbols. 146.It Fl -discard-none 147Keep all symbols in the symbol table. 148.It Fl -dynamic-linker Ns = Ns Ar value 149Specify the dynamic linker to be used for a dynamically linked executable. 150This is recorded in an ELF segment of type 151.Dv PT_INTERP . 152.It Fl -dynamic-list Ns = Ns Ar file 153Read a list of dynamic symbols from 154.Ar file . 155.It Fl -eh-frame-hdr 156Request creation of 157.Li .eh_frame_hdr 158section and 159.Dv PT_GNU_EH_FRAME 160segment header. 161.It Fl -emit-relocs , Fl q 162Generate relocations in the output. 163.It Fl -enable-new-dtags 164Enable new dynamic tags. 165.It Fl -end-lib 166End a grouping of objects that should be treated as if they were together 167in an archive. 168.It Fl -entry Ns = Ns Ar entry 169Name of entry point symbol. 170.It Fl -error-limit Ns = Ns Ar value 171Maximum number of errors to emit before stopping. 172A value of zero indicates that there is no limit. 173.It Fl -error-unresolved-symbols 174Report unresolved symbols as errors. 175.It Fl -execute-only 176Mark executable sections unreadable. 177This option is currently only supported on AArch64. 178.It Fl -exclude-libs Ns = Ns Ar value 179Exclude static libraries from automatic export. 180.It Fl -export-dynamic , Fl E 181Put symbols in the dynamic symbol table. 182.It Fl -export-dynamic-symbol Ns = Ns Ar symbol 183Include 184.Ar symbol 185in the dynamic symbol table. 186.It Fl -fatal-warnings 187Treat warnings as errors. 188.It Fl -filter Ns = Ns Ar value , Fl F Ar value 189Set the 190.Dv DT_FILTER 191field to the specified value. 192.It Fl -fini Ns = Ns Ar symbol 193Specify a finalizer function. 194.It Fl -force-bti 195Force enable AArch64 BTI instruction in PLT, warn if Input ELF file does not have GNU_PROPERTY_AARCH64_FEATURE_1_BTI property. 196.It Fl -format Ns = Ns Ar input-format , Fl b Ar input-format 197Specify the format of the inputs following this option. 198.Ar input-format 199may be one of 200.Cm binary , 201.Cm elf , 202and 203.Cm default . 204.Cm default 205is a synonym for 206.Cm elf . 207.It Fl -gc-sections 208Enable garbage collection of unused sections. 209.It Fl -gdb-index 210Generate 211.Li .gdb_index 212section. 213.It Fl -hash-style Ns = Ns Ar value 214Specify hash style. 215.Ar value 216may be 217.Cm sysv , 218.Cm gnu , 219or 220.Cm both . 221.Cm both 222is the default. 223.It Fl -help 224Print a help message. 225.It Fl -icf Ns = Ns Cm all 226Enable identical code folding. 227.It Fl -icf Ns = Ns Cm safe 228Enable safe identical code folding. 229.It Fl -icf Ns = Ns Cm none 230Disable identical code folding. 231.It Fl -ignore-data-address-equality 232Ignore address equality of data. C/C++ requires each data to have a unique 233address. 234This option allows lld to do unsafe optimization that breaks the 235requirement: create copies of read-only data or merge two or more read-only data 236that happen to have the same value. 237.It Fl -ignore-function-address-equality 238Ignore address equality of functions. 239This option allows non-PIC calls to a function with non-default visibility in 240a shared object. 241The function may have different addresses within the executable and within the 242shared object. 243.It Fl -image-base Ns = Ns Ar value 244Set the base address to 245.Ar value . 246.It Fl -init Ns = Ns Ar symbol 247Specify an initializer function. 248.It Fl -keep-unique Ns = Ns Ar symbol 249Do not fold 250.Ar symbol 251during ICF. 252.It Fl l Ar libName, Fl -library Ns = Ns Ar libName 253Root name of library to use. 254.It Fl L Ar dir , Fl -library-path Ns = Ns Ar dir 255Add a directory to the library search path. 256.It Fl -lto-aa-pipeline Ns = Ns Ar value 257AA pipeline to run during LTO. 258Used in conjunction with 259.Fl -lto-newpm-passes . 260.It Fl -lto-newpm-passes Ns = Ns Ar value 261Passes to run during LTO. 262.It Fl -lto-O Ns Ar opt-level 263Optimization level for LTO. 264.It Fl -lto-partitions Ns = Ns Ar value 265Number of LTO codegen partitions. 266.It Fl m Ar value 267Set target emulation. 268.It Fl -Map Ns = Ns Ar file , Fl M Ar file 269Print a link map to 270.Ar file . 271.It Fl -nmagic , Fl n 272Do not page align sections, link against static libraries. 273.It Fl -no-allow-shlib-undefined 274Do not allow unresolved references in shared libraries. 275This option is enabled by default when linking an executable. 276.It Fl -no-as-needed 277Always set 278.Dv DT_NEEDED 279for shared libraries. 280.It Fl -no-color-diagnostics 281Do not use colors in diagnostics. 282.It Fl -no-define-common 283Do not assign space to common symbols. 284.It Fl -no-demangle 285Do not demangle symbol names. 286.It Fl -no-dynamic-linker 287Inhibit output of an 288.Li .interp 289section. 290.It Fl -no-gc-sections 291Disable garbage collection of unused sections. 292.It Fl -no-gnu-unique 293Disable STB_GNU_UNIQUE symbol binding. 294.It Fl -no-merge-exidx-entries 295Disable merging .ARM.exidx entries. 296.It Fl -no-nmagic 297Page align sections. 298.It Fl -no-omagic 299Do not set the text data sections to be writable, page align sections. 300.It Fl -no-rosegment 301Do not put read-only non-executable sections in their own segment. 302.It Fl -no-threads 303Do not run the linker multi-threaded. 304.It Fl -no-undefined-version 305Report version scripts that refer undefined symbols. 306.It Fl -no-undefined 307Report unresolved symbols even if the linker is creating a shared library. 308.It Fl -no-warn-symbol-ordering 309Do not warn about problems with the symbol ordering file or call graph profile. 310.It Fl -no-whole-archive 311Restores the default behavior of loading archive members. 312.It Fl -no-pie , Fl -no-pic-executable 313Do not create a position independent executable. 314.It Fl -noinhibit-exec 315Retain the executable output file whenever it is still usable. 316.It Fl -nostdlib 317Only search directories specified on the command line. 318.It Fl o Ar path 319Write the output executable, library, or object to 320.Ar path . 321If not specified, 322.Dv a.out 323is used as a default. 324.It Fl O Ns Ar value 325Optimize output file size. 326.Ar value 327may be: 328.Pp 329.Bl -tag -width 2n -compact 330.It Cm 0 331Disable string merging. 332.It Cm 1 333Enable string merging. 334.It Cm 2 335Enable string tail merging. 336.El 337.Pp 338.Fl O Ns Cm 1 339is the default. 340.It Fl -oformat Ns = Ns Ar format 341Specify the format for the output object file. 342The only supported 343.Ar format 344is 345.Cm binary , 346which produces output with no ELF header. 347.It Fl -omagic , Fl N 348Set the text and data sections to be readable and writable, do not page align 349sections, link against static libraries. 350.It Fl -opt-remarks-filename Ar file 351Write optimization remarks in YAML format to 352.Ar file . 353.It Fl -opt-remarks-passes Ar pass-regex 354Filter optimization remarks by only allowing the passes matching 355.Ar pass-regex . 356.It Fl -opt-remarks-with-hotness 357Include hotness information in the optimization remarks file. 358.It Fl -orphan-handling Ns = Ns Ar mode 359Control how orphan sections are handled. 360An orphan section is one not specifically mentioned in a linker script. 361.Ar mode 362may be: 363.Pp 364.Bl -tag -width 2n -compact 365.It Cm place 366Place orphan sections in suitable output sections. 367.It Cm warn 368Place orphan sections as for 369.Cm place 370and also report a warning. 371.It Cm error 372Place orphan sections as for 373.Cm place 374and also report an error. 375.El 376.Pp 377.Cm place 378is the default. 379.It Fl -pack-dyn-relocs Ns = Ns Ar format 380Pack dynamic relocations in the given format. 381.Ar format 382may be: 383.Pp 384.Bl -tag -width 2n -compact 385.It Cm none 386Do not pack. 387Dynamic relocations are encoded in SHT_REL(A). 388.It Cm android 389Pack dynamic relocations in SHT_ANDROID_REL(A). 390.It Cm relr 391Pack relative relocations in SHT_RELR, and the rest of dynamic relocations in 392SHT_REL(A). 393.It Cm android+relr 394Pack relative relocations in SHT_RELR, and the rest of dynamic relocations in 395SHT_ANDROID_REL(A). 396.El 397.Pp 398.Cm none 399is the default. 400If 401.Fl -use-android-relr-tags 402is specified, use SHT_ANDROID_RELR instead of SHT_RELR. 403.Pp 404.It Fl -pac-plt 405AArch64 only, use pointer authentication in PLT. 406.It Fl -pic-veneer 407Always generate position independent thunks. 408.It Fl -pie , Fl -pic-executable 409Create a position independent executable. 410.It Fl -print-gc-sections 411List removed unused sections. 412.It Fl -print-icf-sections 413List identical folded sections. 414.It Fl -print-map 415Print a link map to the standard output. 416.It Fl -push-state 417Save the current state of 418.Fl -as-needed , 419.Fl -static , 420and 421.Fl -whole-archive. 422.It Fl -pop-state 423Undo the effect of 424.Fl -push-state. 425.It Fl -relocatable , Fl r 426Create relocatable object file. 427.It Fl -reproduce Ns = Ns Ar path 428Write a tar file to 429.Ar path, 430containing all the input files needed to reproduce the link, a text file called 431response.txt containing the command line options and a text file called 432version.txt containing the output of ld.lld --version. 433The archive when 434unpacked can be used to re-run the linker with the same options and input files. 435.It Fl -retain-symbols-file Ns = Ns Ar file 436Retain only the symbols listed in the file. 437.It Fl -rpath Ns = Ns Ar value , Fl R Ar value 438Add a 439.Dv DT_RUNPATH 440to the output. 441.It Fl -rsp-quoting Ns = Ns Ar value 442Quoting style for response files. 443The supported values are 444.Cm windows 445and 446.Cm posix . 447.It Fl -script Ns = Ns Ar file , Fl T Ar file 448Read linker script from 449.Ar file . 450If multiple linker scripts are given, they are processed as if they 451were concatenated in the order they appeared on the command line. 452.It Fl -section-start Ns = Ns Ar section Ns = Ns Ar address 453Set address of section. 454.It Fl -shared , Fl -Bsharable 455Build a shared object. 456.It Fl -soname Ns = Ns Ar value , Fl h Ar value 457Set 458.Dv DT_SONAME 459to 460.Ar value . 461.It Fl -sort-common 462This option is ignored for GNU compatibility. 463.It Fl -sort-section Ns = Ns Ar value 464Specifies sections sorting rule when linkerscript is used. 465.It Fl -start-lib 466Start a grouping of objects that should be treated as if they were together 467in an archive. 468.It Fl -strip-all , Fl s 469Strip all symbols. 470.It Fl -strip-debug , Fl S 471Strip debugging information. 472.It Fl -symbol-ordering-file Ns = Ns Ar file 473Lay out sections in the order specified by 474.Ar file . 475.It Fl -sysroot Ns = Ns Ar value 476Set the system root. 477.It Fl -target1-abs 478Interpret 479.Dv R_ARM_TARGET1 480as 481.Dv R_ARM_ABS32 . 482.It Fl -target1-rel 483Interpret 484.Dv R_ARM_TARGET1 485as 486.Dv R_ARM_REL32 . 487.It Fl -target2 Ns = Ns Ar type 488Interpret 489.Dv R_ARM_TARGET2 490as 491.Ar type , 492where 493.Ar type 494is one of 495.Cm rel , 496.Cm abs , 497or 498.Cm got-rel . 499.It Fl -Tbss Ns = Ns Ar value 500Same as 501.Fl -section-start 502with 503.Li .bss 504as the sectionname. 505.It Fl -Tdata Ns = Ns Ar value 506Same as 507.Fl -section-start 508with 509.Li .data 510as the sectionname. 511.It Fl -Ttext Ns = Ns Ar value 512Same as 513.Fl -section-start 514with 515.Li .text 516as the sectionname. 517.It Fl -thinlto-cache-dir Ns = Ns Ar value 518Path to ThinLTO cached object file directory. 519.It Fl -thinlto-cache-policy Ns = Ns Ar value 520Pruning policy for the ThinLTO cache. 521.It Fl -thinlto-jobs Ns = Ns Ar value 522Number of ThinLTO jobs. 523.It Fl -threads 524Run the linker multi-threaded. 525This option is enabled by default. 526.It Fl -trace 527Print the names of the input files. 528.It Fl -trace-symbol Ns = Ns Ar symbol , Fl y Ar symbol 529Trace references to 530.Ar symbol . 531.It Fl -undefined Ns = Ns Ar symbol , Fl u Ar symbol 532If 533.Ar symbol 534is not defined after symbol resolution, and there's a static library 535that contains an object file defining the symbol, load the member 536to include the object file in the output file. 537.It Fl -undefined-glob Ns = Ns Ar pattern 538Synonym for 539.Fl -undefined , 540except that it takes a glob pattern. 541In a glob pattern, 542.Cm * 543matches zero or more characters, 544.Cm ? 545matches any single character, and 546.Cm [...] 547matches the characters within brackets. 548All symbols that match 549a given pattern are handled as if they were given as arguments of 550.Fl -undefined . 551.It Fl -unresolved-symbols Ns = Ns Ar value 552Determine how to handle unresolved symbols. 553.It Fl -use-android-relr-tags 554Use SHT_ANDROID_RELR / DT_ANDROID_RELR* tags instead of SHT_RELR / DT_RELR*. 555.It Fl v 556Display the version number and proceed with linking if object files are 557specified. 558.It Fl V , Fl -version 559Display the version number and exit. 560.It Fl -verbose 561Verbose mode. 562.It Fl -version-script Ns = Ns Ar file 563Read version script from 564.Ar file . 565.It Fl -warn-backrefs 566Warn about reverse or cyclic dependencies to or between static archives. 567This can be used to ensure linker invocation remains compatible with 568traditional Unix-like linkers. 569.It Fl -warn-common 570Warn about duplicate common symbols. 571.It Fl -warn-ifunc-textrel 572Warn about using ifunc symbols in conjunction with text relocations. 573Older versions of glibc library (2.28 and earlier) has a bug that causes 574the segment that includes ifunc symbols to be marked as not executable when 575they are relocated. 576As a result, although the program compiles and links 577successfully, it gives segmentation fault when the instruction pointer reaches 578an ifunc symbol. 579Use -warn-ifunc-textrel to let lld give a warning, if the 580code may include ifunc symbols, may do text relocations and be linked with 581an older glibc version. 582Otherwise, there is no need to use it, as the default value does not give a 583warning. 584This flag has been introduced in late 2018, has no counter part in ld and gold 585linkers, and may be removed in the future. 586.It Fl -warn-unresolved-symbols 587Report unresolved symbols as warnings. 588.It Fl -whole-archive 589Force load of all members in a static library. 590.It Fl -wrap Ns = Ns Ar symbol 591Use wrapper functions for symbol. 592.It Fl z Ar option 593Linker option extensions. 594.Bl -tag -width indent -compact 595.Pp 596.It Cm execstack 597Make the main stack executable. 598Stack permissions are recorded in the 599.Dv PT_GNU_STACK 600segment. 601.Pp 602.It Cm global 603Sets the 604.Dv DF_1_GLOBAL flag in the 605.Dv DYNAMIC 606section. 607Different loaders can decide how to handle this flag on their own. 608.Pp 609.It Cm ifunc-noplt 610Do not emit PLT entries for ifunc symbols. 611Instead, emit text relocations referencing the resolver. 612This is an experimental optimization and only suitable for standalone 613environments where text relocations do not have the usual drawbacks. 614This option must be combined with the 615.Fl z Li notext 616option. 617.Pp 618.It Cm initfirst 619Sets the 620.Dv DF_1_INITFIRST 621flag to indicate the module should be initialized first. 622.Pp 623.It Cm interpose 624Set the 625.Dv DF_1_INTERPOSE 626flag to indicate to the runtime linker that the object is an interposer. 627During symbol resolution interposers are searched after the application 628but before other dependencies. 629.Pp 630.It Cm muldefs 631Do not error if a symbol is defined multiple times. 632The first definition will be used. 633This is a synonym for 634.Fl -allow-multiple-definition. 635.Pp 636.It Cm nocombreloc 637Disable combining and sorting multiple relocation sections. 638.Pp 639.It Cm nocopyreloc 640Disable the creation of copy relocations. 641.Pp 642.It Cm nodefaultlib 643Set the 644.Dv DF_1_NODEFLIB 645flag to indicate that default library search paths should be ignored. 646.Pp 647.It Cm nodelete 648Set the 649.Dv DF_1_NODELETE 650flag to indicate that the object cannot be unloaded from a process. 651.Pp 652.It Cm nodlopen 653Set the 654.Dv DF_1_NOOPEN 655flag to indicate that the object may not be opened by 656.Xr dlopen 3 . 657.Pp 658.It Cm nognustack 659Do not emit the 660.Dv PT_GNU_STACK 661segment. 662.Pp 663.It Cm norelro 664Do not indicate that portions of the object shold be mapped read-only 665after initial relocation processing. 666The object will omit the 667.Dv PT_GNU_RELRO 668segment. 669.Pp 670.It Cm notext 671Allow relocations against read-only segments. 672Sets the 673.Dv DT_TEXTREL flag in the 674.Dv DYNAMIC 675section. 676.Pp 677.It Cm now 678Set the 679.Dv DF_BIND_NOW 680flag to indicate that the run-time loader should perform all relocation 681processing as part of object initialization. 682By default relocations may be performed on demand. 683.Pp 684.It Cm origin 685Set the 686.Dv DF_ORIGIN 687flag to indicate that the object requires 688$ORIGIN 689processing. 690.Pp 691.It Cm retpolineplt 692Emit retpoline format PLT entries as a mitigation for CVE-2017-5715. 693.Pp 694.It Cm rodynamic 695Make the 696.Li .dynamic 697section read-only. 698The 699.Dv DT_DEBUG 700tag will not be emitted. 701.Pp 702.It Cm separate-loadable-segments 703.It Cm separate-code 704.It Cm noseparate-code 705Specify whether two adjacent PT_LOAD segments are allowed to overlap in pages. 706.Cm noseparate-code 707(default) allows overlap. 708.Cm separate-code 709allows overlap between two executable segments, or two non-executable segments. 710.Cm separate-loadable-segments 711disallows overlap. 712.Pp 713.It Cm stack-size Ns = Ns Ar size 714Set the main thread's stack size to 715.Ar size . 716The stack size is recorded as the size of the 717.Ar size . 718.Dv PT_GNU_STACK 719program segment. 720.Pp 721.It Cm text 722Do not allow relocations against read-only segments. 723This is the default. 724.Pp 725.It Cm wxneeded 726Create a 727.Dv PT_OPENBSD_WXNEEDED 728segment. 729.El 730.El 731.Sh IMPLEMENTATION NOTES 732.Nm Ap s 733handing of archive files (those with a 734.Pa .a 735file extension) is different from traditional linkers used on Unix-like 736systems. 737.Pp 738Traditional linkers maintain a set of undefined symbols during linking. 739The linker processes each file in the order in which it appears on the 740command line, until the set of undefined symbols becomes empty. 741An object file is linked into the output object when it is encountered, 742with its undefined symbols added to the set. 743Upon encountering an archive file a traditional linker searches the objects 744contained therein, and processes those that satisfy symbols in the unresolved 745set. 746.Pp 747Handling mutually dependent archives may be awkward when using a traditional 748linker. 749Archive files may have to be specified multiple times, or the special command 750line options 751.Fl -start-group 752and 753.Fl -end-group 754may be used to have the linker loop over the files in the group until no new 755symbols are added to the set. 756.Pp 757.Nm 758records all symbols found in objects and archives as it iterates over 759command line arguments. 760When 761.Nm 762encounters an undefined symbol that can be resolved by an object file 763contained in a previously processed archive file, it immediately extracts 764and links it into the output object. 765.Pp 766With certain archive inputs 767.Nm 768may produce different results compared to traditional linkers. 769In practice, large bodies of third party software have been linked with 770.Nm 771without material issues. 772.Pp 773The 774.Fl -warn-backrefs 775option may be used to identify a linker invocation that may be incompatible 776with traditional Unix-like linker behavior. 777