GOLD(1)

πŸ“¦
version 2.44 Β· 3 versions
, in ubuntu resolute, ubuntu stonking

πŸ’– GOLD πŸ’–

okay bestie, sit DOWN, because we're talking about gold β€” the GNU ELF linker β€” from the User Commands corner of your manual pages. this is <rainbow>the</rainbow> linker for people who like their linking fast and their flags plentiful. there are a LOT of options here. like, a lot a lot. but don't panic, we're going through every single one, no skips, no cap. 🫢


✨ NAME ✨

gold β€” The GNU ELF linker πŸ’…


🌸 SYNOPSIS 🌸

ld.gold [options] file...

πŸ‘‘ OPTIONS πŸ‘‘

bestie, grab a snack. this is the main character section and it is LONG. but every single flag is here, exactly as written, so you can trust it fr fr.

  • --help β€” spill the usage info, please πŸ’–
  • -v, --version β€” tell me the version info
  • -V β€” version and target info, so you know what you're linking for
  • --add-needed β€” not supported. nope. not a thing. πŸ™ˆ
  • --no-add-needed β€” do NOT copy DT_NEEDED tags from shared libraries (this is the default)
  • --allow-multiple-definition β€” let symbols be defined multiple times, chaotic but valid
  • --no-allow-multiple-definition β€” do not allow multiple definitions (default)
  • --allow-shlib-undefined β€” allow unresolved references in shared libraries
  • --no-allow-shlib-undefined β€” do not allow unresolved references in shared libraries (default)
  • --apply-dynamic-relocs β€” apply link-time values for dynamic relocations (default)
  • --no-apply-dynamic-relocs β€” (aarch64 only!) do not apply link-time values for dynamic relocations
  • --as-needed β€” only use DT_NEEDED for shared libraries that are actually used, so no freeloaders
  • --no-as-needed β€” use DT_NEEDED for all shared libraries (default)
  • -assert [ignored] β€” ignored. literally just vibes.
  • -b [elf,binary], --format [elf,binary] β€” set the input format
  • --be8 β€” output a BE8 format image
  • --build-id [=STYLE] β€” generate a build ID note
  • --build-id-chunk-size-for-treehash SIZE β€” chunk size for --build-id=tree
  • --build-id-min-file-size-for-treehash SIZE β€” minimum output file size for --build-id=tree to work differently than --build-id=sha1
  • -Bdynamic β€” -l searches for shared libraries (default)
  • -Bstatic β€” -l does not search for shared libraries
  • -dy β€” alias for -Bdynamic (default)
  • -dn β€” alias for -Bstatic
  • -Bgroup β€” use group name lookup rules for shared library
  • -Bshareable β€” generate a shared library (alias for -G/-shared)
  • -Bno-symbolic β€” don't bind default visibility defined symbols locally for -shared (default)
  • -Bsymbolic-functions β€” bind default visibility defined function symbols locally for -shared
  • -Bsymbolic β€” bind default visibility defined symbols locally for -shared
  • --check-sections β€” check segment addresses for overlaps (default)
  • --no-check-sections β€” do not check segment addresses for overlaps
  • --compress-debug-sections [none,zlib,zlib-gnu,zlib-gabi,zstd] β€” compress .debug_* sections in the output file πŸ—œοΈ
  • --copy-dt-needed-entries β€” not supported. sorry bestie.
  • --no-copy-dt-needed-entries β€” do not copy DT_NEEDED tags from shared libraries (default)
  • --cref β€” output a cross reference table
  • --no-cref β€” do not output a cross reference table (default)
  • --ctors-in-init-array β€” use DT_INIT_ARRAY for all constructors (default)
  • --no-ctors-in-init-array β€” handle constructors as directed by the compiler
  • -d, --define-common β€” define common symbols
  • --no-define-common β€” do not define common symbols in relocatable output (default)
  • -dc β€” alias for -d
  • -dp β€” alias for -d
  • --debug [all,files,script,task][,...] β€” turn on debugging, let it yap
  • --defsym SYMBOL=EXPRESSION β€” define a symbol
  • --demangle [=STYLE] β€” demangle C++ symbols in log messages so they're actually readable
  • --no-demangle β€” do not demangle C++ symbols in log messages
  • --dependency-file FILE β€” write a dependency file listing all files read
  • --detect-odr-violations β€” look for violations of the C++ One Definition Rule πŸ‘€
  • --no-detect-odr-violations β€” do not look for violations of the C++ One Definition Rule (default)
  • --dynamic-list-data β€” add data symbols to dynamic symbols
  • --dynamic-list-cpp-new β€” add C++ operator new/delete to dynamic symbols
  • --dynamic-list-cpp-typeinfo β€” add C++ typeinfo to dynamic symbols
  • --dynamic-list FILE β€” read a list of dynamic symbols
  • --emit-stub-syms β€” (PowerPC only) label linker stubs with a symbol (default)
  • --no-emit-stub-syms β€” (PowerPC only) do not label linker stubs with a symbol
  • -e ADDRESS, --entry ADDRESS β€” set program start address
  • --eh-frame-hdr β€” create exception frame header
  • --no-eh-frame-hdr β€” do not create exception frame header (default)
  • --enable-new-dtags β€” enable use of DT_RUNPATH (default)
  • --disable-new-dtags β€” disable use of DT_RUNPATH
  • --enable-linker-version β€” put the linker version string into the .comment section
  • --disable-linker-version β€” put the linker version string into the .note.gnu.gold-version section (default)
  • --no-enum-size-warning β€” (ARM only) do not warn about objects with incompatible enum sizes
  • --exclude-libs lib,lib ... β€” exclude libraries from automatic export
  • -E, --export-dynamic β€” export all dynamic symbols
  • --no-export-dynamic β€” do not export all dynamic symbols (default)
  • --export-dynamic-symbol SYMBOL β€” export SYMBOL to the dynamic symbol table
  • -EB β€” link big-endian objects.
  • -EL β€” link little-endian objects.
  • -f SHLIB, --auxiliary SHLIB β€” auxiliary filter for shared object symbol table
  • -F SHLIB, --filter SHLIB β€” filter for shared object symbol table
  • --fatal-warnings β€” treat warnings as errors, no more "it's just a warning" energy πŸ’€
  • --no-fatal-warnings β€” do not treat warnings as errors (default)
  • -fini SYMBOL β€” call SYMBOL at unload-time
  • --fix-arm1176 β€” (ARM only) fix binaries for the ARM1176 erratum (default)
  • --no-fix-arm1176 β€” (ARM only) do not fix binaries for the ARM1176 erratum
  • --fix-cortex-a8 β€” (ARM only) fix binaries for the Cortex-A8 erratum
  • --no-fix-cortex-a8 β€” (ARM only) do not fix binaries for the Cortex-A8 erratum (default)
  • --fix-cortex-a53-843419 β€” (AArch64 only) fix Cortex-A53 erratum 843419
  • --no-fix-cortex-a53-843419 β€” (AArch64 only) do not fix Cortex-A53 erratum 843419 (default)
  • --fix-cortex-a53-835769 β€” (AArch64 only) fix Cortex-A53 erratum 835769
  • --no-fix-cortex-a53-835769 β€” (AArch64 only) do not fix Cortex-A53 erratum 835769 (default)
  • --fix-v4bx β€” (ARM only) rewrite BX rn as MOV pc, rn for ARMv4
  • --fix-v4bx-interworking β€” (ARM only) rewrite BX rn branch to ARMv4 interworking veneer
  • -fuse-ld [gold,bfd] β€” ignored, but it's here for GCC linker option compatibility 🫢
  • -g β€” ignored. just chillin'.
  • --gc-sections β€” remove unused sections, declutter your life 🧹
  • --no-gc-sections β€” do not remove unused sections (default)
  • --gdb-index β€” generate a .gdb_index section
  • --no-gdb-index β€” do not generate a .gdb_index section (default)
  • --gnu-unique β€” enable STB_GNU_UNIQUE symbol binding (default)
  • --no-gnu-unique β€” disable STB_GNU_UNIQUE symbol binding
  • -G, -shared β€” generate a shared library
  • -h FILENAME, -soname FILENAME β€” set the shared library name
  • --hash-bucket-empty-fraction FRACTION β€” min fraction of empty buckets in the dynamic hash
  • --hash-style [sysv,gnu,both] β€” dynamic hash style
  • -i β€” alias for -r
  • --icf [none,all,safe] β€” Identical Code Folding. and heads up, because this one matters: --icf=safe folds ctors, dtors and functions whose pointers are definitely not taken
  • --icf-iterations COUNT β€” number of iterations of ICF (default 3)
  • --incremental β€” do an incremental link if possible; otherwise do a full link and prepare output for incremental linking
  • --no-incremental β€” do a full link (default)
  • --incremental-full β€” do a full link and prepare output for incremental linking
  • --incremental-update β€” do an incremental link; exit if not possible
  • --incremental-base FILE β€” set base file for incremental linking (default is the output file)
  • --incremental-changed β€” assume files changed
  • --incremental-unchanged β€” assume files didn't change
  • --incremental-unknown β€” use timestamps to check files (default)
  • --incremental-startup-unchanged β€” assume startup files unchanged (files preceding this option)
  • --incremental-patch PERCENT β€” amount of extra space to allocate for patches (default 10)
  • -init SYMBOL β€” call SYMBOL at load-time
  • -I PROGRAM, --dynamic-linker PROGRAM β€” set the dynamic linker path
  • --just-symbols FILE β€” read only symbol values from FILE
  • --keep-files-mapped β€” keep files mapped across passes (default on 64bit architectures)
  • --no-keep-files-mapped β€” release mapped files after each pass (default on 32bit architectures)
  • --keep-unique SYMBOL β€” do not fold this symbol during ICF
  • -l LIBNAME, --library LIBNAME β€” search for library LIBNAME
  • --ld-generated-unwind-info β€” generate unwind information for PLT (default)
  • --no-ld-generated-unwind-info β€” do not generate unwind information for PLT
  • -L DIR, --library-path DIR β€” add directory to the search path
  • --long-plt β€” (ARM only) generate long PLT entries
  • --no-long-plt β€” (ARM only) do not generate long PLT entries (default)
  • -m EMULATION β€” set GNU linker emulation; obsolete, so, like, retro πŸ‘΅
  • --map-whole-files β€” map whole files to memory (default on 64bit architectures)
  • --no-map-whole-files β€” map relevant file parts to memory (default on 32bit architectures)
  • --merge-exidx-entries β€” (ARM only) merge exidx entries in debuginfo (default)
  • --no-merge-exidx-entries β€” (ARM only) do not merge exidx entries in debuginfo
  • --mmap-output-file β€” map the output file for writing (default)
  • --no-mmap-output-file β€” do not map the output file for writing
  • -M, --print-map β€” write map file on standard output
  • -Map MAPFILENAME β€” write map file
  • -n, --nmagic β€” do not page align data
  • -N, --omagic β€” do not page align data, do not make text readonly
  • --no-omagic β€” page align data, make text readonly (default)
  • --no-keep-memory β€” use less memory and more disk I/O (included only for compatibility with GNU ld)
  • --no-undefined β€” report undefined symbols (even with --shared)
  • --noinhibit-exec β€” create an output file even if errors occur, stubborn queen πŸ’…
  • -nostdlib β€” only search directories specified on the command line
  • -o FILE, --output FILE β€” set output file name
  • --oformat [binary] β€” set output format
  • -O LEVEL, -optimize LEVEL β€” optimize output file size
  • --orphan-handling [place,discard,warn,error] β€” orphan section handling
  • -p β€” ignored for ARM compatibility

okay that's the options list done and honestly?? iconic. but we're NOT done bestie, there's more coming. stay tuned πŸ’–βœ¨

  • --package-metadata [=JSON] β€” ✨ generates a package metadata note. That's it, that's the whole job.
  • -pie β€” makes a position independent executable πŸ’…
  • -no-pie β€” don't make a PIE. This one's the default, bestie.
  • --pic-executable β€” okay same energy as -pie: make a position independent executable.
  • --no-pic-executable β€” and again, no PIE. Also default. It's giving "we have two names for everything and we're not sorry".
  • --pic-veneer β€” forces PIC sequences for ARM/Thumb interworking veneers πŸ”§
  • -no-pipeline-knowledge β€” (ARM only) it's just... ignored, kept around for backward compatibility. default, lowkey a fossil πŸ¦•
  • --plt-align [=P2ALIGN] β€” (PowerPC only) aligns PLT call stubs so they fit cache lines nicely πŸ“
  • --plt-localentry β€” (PowerPC64 only) optimizes calls to ELFv2 localentry:0 functions.
  • --no-plt-localentry β€” (PowerPC64 only) don't do that optimization. default.
  • --plt-static-chain β€” (PowerPC64 only) PLT call stubs should load r11.
  • --no-plt-static-chain β€” (PowerPC64 only) they should not load r11. default.
  • --plt-thread-safe β€” (PowerPC64 only) PLT call stubs get a load-load barrier.
  • --no-plt-thread-safe β€” (PowerPC64 only) no barrier. default.
  • --plugin PLUGIN β€” loads a plugin library πŸ”Œ
  • --plugin-opt OPTION β€” passes an option along to that plugin.
  • --posix-fallocate β€” uses posix_fallocate to reserve space in the output file. default.
  • --no-posix-fallocate β€” uses fallocate or ftruncate to reserve that space instead.
  • --power10-stubs [=auto,no,yes] β€” (PowerPC64 only) stubs use power10 insns ⚑
  • --no-power10-stubs β€” (PowerPC64 only) stubs do not use power10 insns.
  • --preread-archive-symbols β€” prereads archive symbols when multi-threaded πŸƒβ™€οΈ
  • --print-gc-sections β€” lists removed unused sections on stderr πŸ—‘οΈ
  • --no-print-gc-sections β€” doesn't list them. default.
  • --print-icf-sections β€” lists folded identical sections on stderr.
  • --no-print-icf-sections β€” doesn't list them. default.
  • --print-output-format β€” prints the default output format πŸ–¨οΈ
  • --print-symbol-counts FILENAME β€” prints symbols defined and used for each input.
  • --push-state β€” saves the state of flags related to input files πŸ“Œ
  • --pop-state β€” restores the state of flags related to input files. Complementary queens, we love to see it πŸ’–
  • -q, --emit-relocs β€” generates relocations in the output.
  • -Qy β€” ignored, for SVR4 compatibility. Yes it's just vibing there.
  • -r, -relocatable β€” generates relocatable output.
  • --relax β€” relaxes branches on certain targets 😌
  • --no-relax β€” no branch relaxing. default.
  • --retain-symbols-file FILE β€” keeps only the symbols listed in this file.
  • --rosegment β€” puts read-only non-executable sections in their own segment 🌹
  • --no-rosegment β€” doesn't do that. default.
  • --rosegment-gap OFFSET β€” sets the offset between executable and read-only segments.
  • -R DIR β€” adds DIR to the runtime search path.
  • -rpath DIR β€” adds DIR to the runtime search path. (Same energy, different flag, iykyk.)
  • --rpath-link DIR β€” adds DIR to the link time shared library search path.
  • -s, --strip-all β€” strips all symbols. All of them. Gone πŸ’€
  • -S, --strip-debug β€” strips debugging information.
  • --strip-debug-non-line β€” emits only debug line number information.
  • --strip-debug-gdb β€” strips debug symbols that are unused by gdb (at least versions <= 7.4).
  • --strip-lto-sections β€” strips LTO intermediate code sections. default.
  • --section-ordering-file FILENAME β€” lays out sections in the order specified πŸ“‹
  • --section-start SECTION=ADDRESS β€” sets the address of a section.
  • --secure-plt β€” (PowerPC only) uses new-style PLT. default.
  • --sort-common [={ascending,descending}] β€” sorts common symbols by alignment.
  • --sort-section [none,name] β€” sorts sections by name. Heads up bestie: --no-text-reorder will override --sort-section=name for .text ⚠️
  • --spare-dynamic-tags COUNT β€” how many dynamic tag slots to reserve (5 is the default).
  • --stub-group-size SIZE β€” (ARM, PowerPC only) the maximum distance from instructions in a group of sections to their stubs. Negative values mean stubs are always after the group. 1 means use default size.
  • --stub-group-multi β€” (PowerPC only) allows a group of stubs to serve multiple output sections. default.
  • --no-stub-group-multi β€” (PowerPC only) each output section has its own stubs. No sharing πŸ™…β™€οΈ
  • --split-stack-adjust-size SIZE β€” stack size when a -fsplit-stack function calls a non-split one.
  • -static β€” does not link against shared libraries.
  • --start-lib β€” starts a library.
  • --end-lib β€” ends a library. πŸ“š
  • --stats β€” prints resource usage statistics πŸ“Š
  • --sysroot DIR β€” sets the target system root directory.
  • -t, --trace β€” prints the name of each input file πŸ‘€
  • --target1-abs β€” (ARM only) forces R_ARM_TARGET1 type to R_ARM_ABS32.
  • --target1-rel β€” (ARM only) forces R_ARM_TARGET1 type to R_ARM_REL32.
  • --target2 [rel, abs, got-rel β€” (ARM only) sets the R_ARM_TARGET2 relocation type. (Yeah the bracket situation is a little unhinged, we're not fixing it, it's canon πŸ’…)
  • --text-reorder β€” enables text section reordering for GCC section names. default.
  • --no-text-reorder β€” disables text section reordering for GCC section names.
  • --threads β€” runs the linker multi-threaded 🧡
  • --no-threads β€” doesn't run it multi-threaded. default.
  • --thread-count COUNT β€” number of threads to use.
  • --thread-count-initial COUNT β€” number of threads to use in the initial pass.
  • --thread-count-middle COUNT β€” number of threads to use in the middle pass.
  • --thread-count-final COUNT β€” number of threads to use in the final pass. Three passes, three thread counts, main character energy ✨
  • --tls-optimize β€” (PowerPC/64 only) optimizes GD/LD/IE code to IE/LE. default.
  • --no-tls-optimize β€” (PowerPC/64 only) don't try to optimize TLS accesses.
  • --tls-get-addr-optimize β€” (PowerPC/64 only) uses a special __tls_get_addr call. default.
  • --no-tls-get-addr-optimize β€” (PowerPC/64 only) don't use a special __tls_get_addr call.
  • --toc-optimize β€” (PowerPC64 only) optimizes TOC code sequences. default.
  • --no-toc-optimize β€” (PowerPC64 only) don't optimize TOC code sequences.
  • --toc-sort β€” (PowerPC64 only) sorts TOC and GOT sections. default.
  • --no-toc-sort β€” (PowerPC64 only) don't sort TOC and GOT sections.

  • -T FILE, --script FILE β€” reads a linker script πŸ“œ
  • -Tbss ADDRESS β€” sets the address of the bss segment.
  • -Tdata ADDRESS β€” sets the address of the data segment.
  • -Ttext ADDRESS β€” sets the address of the text segment.
  • -Ttext-segment ADDRESS β€” sets the address of the text segment. (Yes, again. They're different flags, don't @ me.)
  • -Trodata-segment ADDRESS β€” sets the address of the rodata segment.
  • -u SYMBOL, --undefined SYMBOL β€” creates an undefined reference to SYMBOL.
  • --unresolved-symbols β€” how to handle unresolved symbols. The values are:
    • ignore-all
    • report-all
    • ignore-in-object-files
    • ignore-in-shared-libs
  • --verbose β€” alias for --debug=files. πŸ—£οΈ
  • --version-script FILE β€” reads a version script.
  • --warn-common β€” warns about duplicate common symbols.
  • --no-warn-common β€” doesn't warn about duplicate common symbols. default.
  • --warn-constructors β€” ignored.
  • --no-warn-constructors β€” also ignored. Both of them. Just out here taking up space πŸ’€
  • --warn-drop-version β€” warns when discarding version information.
  • --no-warn-drop-version β€” doesn't warn when discarding version information. default.
  • --warn-execstack β€” warns if the stack is executable. ⚠️
  • --no-warn-execstack β€” doesn't warn if the stack is executable. default.
  • --no-warn-mismatch β€” don't warn about mismatched input files. 🀐
  • --warn-multiple-gp β€” ignored.
  • --warn-search-mismatch β€” warns when skipping an incompatible library. default.
  • --no-warn-search-mismatch β€” doesn't warn when skipping an incompatible library.
  • --warn-shared-textrel β€” warns if the text segment is not shareable.
  • --no-warn-shared-textrel β€” doesn't warn if the text segment is not shareable. default.
  • --warn-unresolved-symbols β€” reports unresolved symbols as warnings.
  • --error-unresolved-symbols β€” reports unresolved symbols as errors. default. 😀
  • -z buildd β€” dummy z option. It does nothing and it's iconic for it πŸ‘‘
  • --no-wchar-size-warning β€” (ARM only) doesn't warn about objects with incompatible wchar_t sizes.
  • --weak-unresolved-symbols β€” converts unresolved symbols to weak references.
  • --whole-archive β€” includes all archive contents.
  • --no-whole-archive β€” includes only the needed archive contents. default.
  • --wrap SYMBOL β€” uses wrapper functions for SYMBOL.
  • -x, --discard-all β€” deletes all local symbols.
  • -X, --discard-locals β€” deletes all temporary local symbols.
  • --discard-none β€” keeps all local symbols. πŸ™Œ
  • -y SYMBOL, --trace-symbol SYMBOL β€” traces references to a symbol.
  • --undefined-version β€” allows unused versions in a script. default.
  • --no-undefined-version β€” does not allow unused versions in a script.
  • -Y PATH β€” default search path, for Solaris compatibility.
  • -(, --start-group β€” starts a library search group.
  • -), --end-group β€” ends a library search group. (Group hug for your libraries 🫢)

  • -z combreloc β€” sorts dynamic relocs. default.
  • -z nocombreloc β€” does not sort dynamic relocs.
  • -z common-page-size=SIZE β€” sets the common page size to SIZE.
  • -z defs β€” reports undefined symbols (even with --shared).
  • -z execstack β€” marks the output as requiring an executable stack. ⚠️
  • -z global β€” makes symbols in a DSO available for subsequently loaded objects.
  • -z initfirst β€” marks a DSO to be initialized first at runtime. πŸ₯‡
  • -z interpose β€” marks an object to interpose all DSOs but the executable.
  • -z unique β€” marks a DSO to be loaded at most once, and only in the main namespace.
  • -z nounique β€” doesn't mark the DSO as one to be loaded only in the main namespace. default.
  • -z lazy β€” marks the object for lazy runtime binding. default. 😴
  • -z loadfltr β€” marks an object as requiring immediate processing.
  • -z max-page-size=SIZE β€” sets the maximum page size to SIZE.
  • -z muldefs β€” allows multiple definitions of symbols.
  • -z nocopyreloc β€” does not create copy relocs.
  • -z nodefaultlib β€” marks an object as not using the default search paths.
  • -z nodelete β€” marks a DSO as non-deletable at runtime.
  • -z nodlopen β€” marks a DSO as not available to dlopen.
  • -z nodump β€” marks a DSO as not available to dldump.
  • -z noexecstack β€” marks the output as not requiring an executable stack. ✨
  • -z now β€” marks the object for immediate function binding, bestie. no lazy stalling, we bind now ✨
  • -z origin β€” marks the DSO to say "hey, this one needs immediate $ORIGIN processing at runtime" πŸ’«
  • -z relro β€” where possible, marks variables read-only after relocation. this is the default and it's giving immovable object energy πŸ›‘οΈ
  • -z norelro β€” the opposite vibe: don't mark those variables read-only after relocation πŸ™ˆ
  • *-z stack-size=SIZE* β€” sets the PT_GNU_STACK segment p_memsz to SIZE. yes it really is that literal πŸ’…
  • -z start-stop-visibility=[default,internal,hidden,protected] β€” sets the ELF symbol visibility for the synthesized __start_* and __stop_* symbols. pick one of those four values, no freestyling 🌸
  • -z text β€” does not permit relocations in read-only segments. strict queen behavior πŸ‘‘
  • -z notext β€” permits relocations in read-only segments. this is the default πŸ¦‹
  • -z textoff β€” also permits relocations in read-only segments. also the default. two names, same slay πŸ’–
  • -z text-unlikely-segment β€” moves .text.unlikely sections into a separate segment. into their own little apartment fr fr 🏠
  • -z notext-unlikely-segment β€” does not move .text.unlikely sections to a separate segment. default, they stay put πŸŽ€
  • -z keep-text-section-prefix β€” keeps .text.hot, .text.startup, .text.exit and .text.unlikely as separate sections in the final binary. no merging, we respect the individual ✨
  • -z nokeep-text-section-prefix β€” merges all .text.* prefix sections. default, everyone into the group chat 🫢

Run gold --help for a list of supported targets and emulations. like, actually do it, it's a whole menu πŸ’…

πŸ› REPORTING BUGS πŸ›

Found a bug? Not the cute kind, bestie 😭 Report bugs to <https://sourceware.org/bugzilla/> β€” the maintainers will literally thank you.

Copyright Β© 2025 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License version 3 or (at your option) a later version. This program has absolutely no warranty. ngl, zero warranty, none, nada πŸ’€ read the license before you come for anyone 🫢


and that's a wrap on GOLD(1) πŸ’– This gorgeous thing is GNU gold (GNU Binutils for Ub..., the name got a lil truncated in the footer lol), dated February 2026. Go forth and link, icon πŸŒˆπŸ‘‘

πŸ“¦ where this page comes from