The branch main has been updated by emaste:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=1cae7121c667d9caf205832cf45fd02af3157e6f

commit 1cae7121c667d9caf205832cf45fd02af3157e6f
Author:     Ed Maste <ema...@freebsd.org>
AuthorDate: 2021-07-12 19:32:00 +0000
Commit:     Ed Maste <ema...@freebsd.org>
CommitDate: 2025-03-14 17:29:06 +0000

    Enable LLVM_BINUTILS by default
    
    Starting in 2014 FreeBSD migrated from GNU binutils to ELF Tool Chain
    tools.  At that time there were no usable LLVM versions of those tools,
    but they have been developing rapidly since then.  Migrate to LLVML's
    tools for both functionality and maintainability reasons.
    
    This will eventually support the use of link-time optimization (LTO) in
    the FreeBSD base system.  LTO runs optimization passes over the entire
    executable (or library) at link time and thus allows for more effective
    optimization than when performed on individual compilation units.
    
    When using LTO object files (.o) including those contained in static
    library archives (.a) contain LLVM IR bitcode rather than target
    object code.  This means that utilities that operate on object files
    need to support LLVM IR.
    
    As with ELF Tool Chain the LLVM tools aim for command line and output
    format compatibility with GNU binutils, although there are a few minor
    differences.  Where these cause a material issue (breaking a port or
    eliminating required functionality) we can submit LLVM bugs and work
    on patches.
    
    PR:             258872 (exp-run)
    Reviewed by:    bapt
    Sponsored by:   The FreeBSD Foundation
    Differential Revision: https://reviews.freebsd.org/D49361
---
 UPDATING                  |  5 +++++
 share/man/man5/src.conf.5 | 16 ++++++++++++----
 share/mk/src.opts.mk      |  2 +-
 3 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/UPDATING b/UPDATING
index 15941028c5bb..6989bb7c7f99 100644
--- a/UPDATING
+++ b/UPDATING
@@ -27,6 +27,11 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 15.x IS SLOW:
        world, or to merely disable the most expensive debugging functionality
        at runtime, run "ln -s 'abort:false,junk:false' /etc/malloc.conf".)
 
+20250314:
+       We now use LLVM's binary utilities (nm, objcopy, etc.) by default.
+       The WITHOUT_LLVM_BINUTILS src.conf(5) knob can be used to revert to
+       ELF Tool Chain tools if desired.
+
 20250303:
        Commit 4a77657cbc01 changed the ABI between ipfw(8) and ipfw(4).
        Please note that the old ipfw(8) binary will not work with the new
diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5
index 30b5d308724a..321eea708d04 100644
--- a/share/man/man5/src.conf.5
+++ b/share/man/man5/src.conf.5
@@ -1,5 +1,5 @@
 .\" DO NOT EDIT-- this file is @generated by tools/build/options/makeman.
-.Dd January 31, 2025
+.Dd March 14, 2025
 .Dt SRC.CONF 5
 .Os
 .Sh NAME
@@ -933,9 +933,8 @@ the build.
 To be able to build the system an alternate linker must be provided via XLD.
 .It Va WITHOUT_LLVM_ASSERTIONS
 Disable debugging assertions in LLVM.
-.It Va WITH_LLVM_BINUTILS
-Install LLVM's binutils (without an llvm- prefix),
-instead of ELF Tool Chain's tools.
+.It Va WITHOUT_LLVM_BINUTILS
+Install ELF Tool Chain's binary utilities instead of LLVM's.
 This includes
 .Xr addr2line 1 ,
 .Xr ar 1 ,
@@ -1762,6 +1761,15 @@ When set, it enforces these options:
 .It
 .Va WITHOUT_LLVM_COV
 .El
+.Pp
+When set, these options are also in effect:
+.Pp
+.Bl -inset -compact
+.It Va WITHOUT_LLVM_BINUTILS
+(unless
+.Va WITH_LLVM_BINUTILS
+is set explicitly)
+.El
 .It Va WITH_UBSAN
 Build the base system with Undefined Behavior Sanitizer (UBSan) to detect
 various kinds of undefined behavior at runtime.
diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk
index f3141884cd00..ef8711db713f 100644
--- a/share/mk/src.opts.mk
+++ b/share/mk/src.opts.mk
@@ -124,6 +124,7 @@ __DEFAULT_YES_OPTIONS = \
     LLD \
     LLD_BOOTSTRAP \
     LLVM_ASSERTIONS \
+    LLVM_BINUTILS \
     LLVM_COV \
     LLVM_CXXFILT \
     LOADER_BIOS_TEXTONLY \
@@ -208,7 +209,6 @@ __DEFAULT_NO_OPTIONS = \
     HESIOD \
     LOADER_VERBOSE \
     LOADER_VERIEXEC_PASS_MANIFEST \
-    LLVM_BINUTILS \
     LLVM_FULL_DEBUGINFO \
     MALLOC_PRODUCTION \
     OFED_EXTRA \

Reply via email to