Download raw body.
binutils: enable ld.bfd ?
On Sat, Dec 13, 2025 at 03:54:19PM +0000, Klemens Nanni wrote:
> 04.12.2025 22:11, Klemens Nanni пишет:
> > 03.12.2025 23:20, Jeremie Courreges-Anglas пишет:
> >> On Mon, Dec 01, 2025 at 10:12:36PM +0000, Klemens Nanni wrote:
> >>> 30.11.2025 19:17, Klemens Nanni пишет:
> >>>> 30.11.2025 18:58, Jeremie Courreges-Anglas пишет:
> >>>>> Nothing depends on binutils at the moment. Indeed this port will need
> >>>>> some tweaks on some architectures (backports from base probably).
> >>>>> Sigh. Maybe restricting this to amd64 and arm64 is more reasonable
> >>>>> indeed...
> >>>>
> >>>> Yes, hence my uncertainty as to what's the best approach here.
> >>>
> >>> I'm starting to prefer a small subset of archs; the Makefile bits are
> >>> not much and so far only two would use ld.bfd, so looking into build
> >>> failures on archs like arm is eating time that I'd like to spend on
> >>> productive stuff instead.
> >>
> >> ack, but...
> >>
> >>>>
> >>>>> I wonder if it would be less effort to provide a stripped down
> >>>>> binutils port for bare x86_64, like arm-none-eabi/binutils. Care to
> >>>>> show your ipxe port and how it is currently using gld from binutils?
> >>>>
> >>>> - "new net/ipxe" https://marc.info/?l=openbsd-ports&m=176381141712670&w=2
> >>>> - https://github.com/jasperla/openbsd-wip/tree/master/net/ipxe
> >>>> (since got updated and gained .iso images, rest is the same)
> >>>>
> >>>> tl;dr: Usual COMPILER* for gcc15 and AS=gas, etc. via MAKE_FLAGS.
> >>>>
> >>>>>> Could someone please give this a try on anything other than:
> >>>>>> arm64 amd64 i386 octeon?
> >>>>>
> >>>>> Builds and packages on sparc64
> >>>>
> >>>> Thanks!
> >>>>
> >>>>> The list of "safe" architectures where we could enable gld without
> >>>>> patches can probably be determined, but gotta head out now.
> >>>>
> >>>> I'll try to cover more architectures.
> >>>
> >>> riscv64 builds fine as-is, arm needs the equivalent to arm64's configure.tgt
> >>> patch, but then further fails with
> >>>
> >>> earmelf_obsd.c:56:5: error: non-void function 'gldarmelf_obsd_get_script' should return a value [-Wreturn-mismatch]
> >>> 56 | return
> >>> | ^
> >>>
> >>> Oddly enough, that file does not exist under WRKDIR.
> >>
> >> That error I can reproduce on arm64, using your diff from
> >> https://marc.info/?l=openbsd-ports&m=176451477006648&w=2
> >>
> >> The build process isn't very helpful since it actively deletes the
> >> source file. It seems retrying with a random number of make jobs
> >> makes it build, but I wouldn't vouch for the quality of the end
> >> result...
> >
> > I see it now as well... it doesn't always fail for me, guess I got (un)lucky.
> >
> > Thanks for testing!
> >
> >>
> >> Do you have a diff that works on amd64 and arm64?
> >
> > Not yet, I'll try to find the culprit on arm64 and come back this weekend.
> Well... haven't found a solution (yet), so my proposal is to build ld.bfd
> only on amd64 until the arm64/gmake/whatever bug is fixed.
>
> Diff is the same and includes the patch needed for arm64, I merely omitted
> it from LD_ARCHS and added a comment.
>
> OK?
Diff isn't the same as it introduces SEPARATE_BUILD and lacks
PFRAG.ld. Updated diff below follows make plist. ok jca@ for that
version.
Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/binutils/Makefile,v
diff -u -p -r1.23 Makefile
--- Makefile 29 Nov 2025 18:11:04 -0000 1.23
+++ Makefile 13 Dec 2025 16:41:58 -0000
@@ -3,7 +3,7 @@ COMMENT = GNU binary utilities
# keep version synchronized with devel/gas
V = 2.45.1
DISTNAME = binutils-${V}
-REVISION = 0
+REVISION = 1
CATEGORIES = devel
@@ -28,13 +28,23 @@ CONFIGURE_STYLE = gnu
CONFIGURE_ARGS += --disable-gas \
--disable-gprof \
- --disable-ld \
--disable-libctf \
--disable-nls \
--disable-install-libbfd \
--program-prefix=g \
--without-msgpack \
--with-system-zlib
+
+SEPARATE_BUILD = Yes
+
+# XXX arm64 sporadically fails, rerunning make eventually builds
+LD_ARCHS = amd64
+SUBST_VARS = LD_ARCHS
+.if ${LD_ARCHS:M${MACHINE_ARCH}}
+PKG_ARGS = -Dld=1
+.else
+CONFIGURE_ARGS += --disable-ld
+.endif
USE_GMAKE = Yes
Index: patches/patch-ld_configure_tgt
===================================================================
RCS file: patches/patch-ld_configure_tgt
diff -N patches/patch-ld_configure_tgt
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-ld_configure_tgt 13 Dec 2025 16:41:58 -0000
@@ -0,0 +1,15 @@
+recognise arm64
+
+Index: ld/configure.tgt
+--- ld/configure.tgt.orig
++++ ld/configure.tgt
+@@ -98,6 +98,9 @@ aarch64-*-freebsd*) targ_emul=aarch64fbsd
+ aarch64-*-fuchsia*) targ_emul=aarch64elf
+ targ_extra_emuls="aarch64elfb armelf armelfb"
+ ;;
++aarch64-*-openbsd*) targ_emul=aarch64obsd
++ targ_extra_emuls="aarch64obsdb aarch64elf"
++ ;;
+ aarch64_be-*-linux-gnu_ilp32)
+ targ_emul=aarch64linux32b
+ targ_extra_libpath="aarch64linuxb aarch64linux aarch64linux32 armelfb_linux_eabi armelf_linux_eabi"
Index: pkg/DESCR
===================================================================
RCS file: /cvs/ports/devel/binutils/pkg/DESCR,v
diff -u -p -r1.1.1.1 DESCR
--- pkg/DESCR 7 Aug 2022 20:44:09 -0000 1.1.1.1
+++ pkg/DESCR 13 Dec 2025 16:41:58 -0000
@@ -4,6 +4,7 @@ This package contains the following GNU
- ar - A utility for creating, modifying and extracting from archives.
- c++filt - Filter to demangle encoded C++ symbols.
- elfedit - Update ELF header and program property of ELF files.
+- ld - Links files. (only on ${LD_ARCHS})
- nm - Lists symbols from object files.
- objcopy - Copies and translates object files.
- objdump - Displays information from object files.
Index: pkg/PFRAG.ld
===================================================================
RCS file: pkg/PFRAG.ld
diff -N pkg/PFRAG.ld
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ pkg/PFRAG.ld 13 Dec 2025 16:41:58 -0000
@@ -0,0 +1,7 @@
+@bin bin/gld
+@bin bin/gld.bfd
+@info info/ld.info
+@info info/ldint.info
+lib/bfd-plugins/
+@so lib/bfd-plugins/libdep.so
+@man man/man1/gld.1
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/devel/binutils/pkg/PLIST,v
diff -u -p -r1.4 PLIST
--- pkg/PLIST 24 Sep 2025 17:03:55 -0000 1.4
+++ pkg/PLIST 13 Dec 2025 16:41:58 -0000
@@ -26,5 +26,6 @@
@man man/man1/gsize.1
@man man/man1/gstrings.1
@man man/man1/gstrip.1
+%%ld%%
@comment @man man/man1/gwindmc.1
@comment @man man/man1/gwindres.1
--
jca
binutils: enable ld.bfd ?