From: "Michael R. Crusoe" <crusoe@debian.org>
Date: Fri, 6 Sep 2019 14:16:07 +0900
Subject: Use the Debian packages for elfutils

Forwarded: not-needed
Assisted-By: scaleway/deepseek-v4-flash-0731
---
 Makefile | 39 +--------------------------------------
 1 file changed, 1 insertion(+), 38 deletions(-)

--- a/Makefile
+++ b/Makefile
@@ -244,14 +244,8 @@ else
     # Absolutely no help in a static build.
     LD_LIB_FLAGS += -rdynamic
 
-    # We want to link against the elfutils libraries we build ourselves, in
-    # $(LIB_DIR), rather than the system ones. See the libelf.a rule for why the
-    # system libdw cannot be used in a static build.
-    # 0.195 split out two libraries 0.186 did not have, and both have to be here
-    # or the static link fails: libdwfl calls dwflst_* in libdwfl_stacktrace, and
-    # libdw, libelf and libdwfl all call the eu_* tsearch wrappers in libeu.
-    # -leu goes last because libeu calls back into none of them.
-    LD_LIB_FLAGS += -ldwfl -ldwfl_stacktrace -ldw -ldwelf -lelf -lebl -leu
+    # We want to link against the elfutils libraries
+    LD_LIB_FLAGS += -ldw -lelf
 
     # We want to link against libatomic which the GNU C++ standard library needs.
     # See <https://github.com/nodejs/node/issues/30093> and <https://stackoverflow.com/q/30591313>
@@ -410,7 +404,6 @@ UNITTEST_SUPPORT_OBJ = $(UNITTEST_SUPPOR
 UNITTEST_EXE = $(patsubst $(UNITTEST_SRC_DIR)/%.cpp,$(UNITTEST_BIN_DIR)/%,$(UNITTEST_SRC))
 
 
-ELFUTILS_DIR:=deps/elfutils
 RAPTOR_DIR:=deps/raptor
 MIMALLOC_DIR:=deps/mimalloc
 SDSL_DIR:=deps/sdsl-lite
@@ -479,17 +472,6 @@ LIB_DEPS += $(LIB_DIR)/libgfaz_core.a
 LIB_DEPS += $(LIB_DIR)/libgfaz_compress.a
 LIB_DEPS += $(LIB_DIR)/libcairo.a
 LIB_DEPS += $(LIB_DIR)/libpixman-1.a
-ifneq ($(shell uname -s),Darwin)
-    # On non-Mac (i.e. Linux), where ELF binaries are used, pull in libdw which
-    # backward-cpp will use.
-    LIB_DEPS += $(LIB_DIR)/libdw.a
-    LIB_DEPS += $(LIB_DIR)/libdwfl.a
-    LIB_DEPS += $(LIB_DIR)/libdwelf.a
-    LIB_DEPS += $(LIB_DIR)/libebl.a
-    LIB_DEPS += $(LIB_DIR)/libelf.a
-    LIB_DEPS += $(LIB_DIR)/libeu.a
-    LIB_DEPS += $(LIB_DIR)/libdwfl_stacktrace.a
-endif
 
 # Only depend on these files for the final linking stage.	
 # These libraries provide no headers to affect the vg build.	
@@ -915,43 +897,6 @@ $(LIB_DIR)/libstructures.a: $(STRUCTURES
 $(INC_DIR)/sha1.hpp: $(SHA1_DIR)/sha1.hpp
 	cp $(SHA1_DIR)/*.h* $(CWD)/$(INC_DIR)/
 
-# The rest of the elfutils libraries all come out of the one libelf.a rule below.
-$(LIB_DIR)/libebl.a: $(LIB_DIR)/libelf.a
-
-$(LIB_DIR)/libdw.a: $(LIB_DIR)/libelf.a
-
-$(LIB_DIR)/libdwelf.a: $(LIB_DIR)/libelf.a
-
-$(LIB_DIR)/libdwfl.a: $(LIB_DIR)/libelf.a
-
-$(LIB_DIR)/libeu.a: $(LIB_DIR)/libelf.a
-
-$(LIB_DIR)/libdwfl_stacktrace.a: $(LIB_DIR)/libelf.a
-
-# We can't build elfutils from Git without "maintainer mode".
-# There are some release-only headers or something that it complains it can't find otherwise.
-# We also don't do a normal make and make install here because we don't want to build and install all the elfutils binaries and libasm.
-# We need to disable libdebuginfod or the static binary will try and load it at
-# runtime and pull in incompatible libs it depends on on whatever system it's
-# running on. Concretely: elfutils' debuginfod client dlopens libdebuginfod.so.1
-# from a constructor, before main, and in a -static binary that drags the host's
-# libc.so.6 in alongside the one we linked, which dies in __ctype_init. The
-# distro libdw packages are all built with debuginfod enabled, so we cannot use
-# them here however convenient they are.
-$(LIB_DIR)/libelf.a: $(ELFUTILS_DIR)/libebl/*.c $(ELFUTILS_DIR)/libebl/*.h $(ELFUTILS_DIR)/libdw/*.c $(ELFUTILS_DIR)/libdw/*.h $(ELFUTILS_DIR)/libelf/*.c $(ELFUTILS_DIR)/libelf/*.h $(ELFUTILS_DIR)/src/*.c $(ELFUTILS_DIR)/src/*.h $(LIB_DIR)/cleaned_old_elfutils_v004
-	cd $(CWD)/$(INC_DIR)/ && rm -Rf elfutils gelf.h libelf.h dwarf.h libdwflP.h libdwfl.h libebl.h libelf.h
-	cd $(ELFUTILS_DIR) && autoreconf -i -f && CFLAGS="-fPIC $(CFLAGS)" CXXFLAGS="-fPIC $(CXXFLAGS)" ./configure --enable-maintainer-mode --disable-libdebuginfod --disable-debuginfod --prefix=$(CWD) $(FILTER)
-	cd $(ELFUTILS_DIR)/libelf && $(MAKE) $(AUTOMAKE_MAKEFLAGS) clean && CFLAGS="-fPIC $(CFLAGS)" CXXFLAGS="-fPIC $(CXXFLAGS)" $(MAKE) $(AUTOMAKE_MAKEFLAGS) libelf.a $(FILTER)
-	cd $(ELFUTILS_DIR)/libebl && $(MAKE) $(AUTOMAKE_MAKEFLAGS) clean && CFLAGS="-fPIC $(CFLAGS)" CXXFLAGS="-fPIC $(CXXFLAGS)" $(MAKE) $(AUTOMAKE_MAKEFLAGS) libebl.a $(FILTER)
-	cd $(ELFUTILS_DIR)/libdwfl && $(MAKE) $(AUTOMAKE_MAKEFLAGS) clean && CFLAGS="-fPIC $(CFLAGS)" CXXFLAGS="-fPIC $(CXXFLAGS)" $(MAKE) $(AUTOMAKE_MAKEFLAGS) libdwfl.a $(FILTER)
-	cd $(ELFUTILS_DIR)/libdwfl_stacktrace && $(MAKE) $(AUTOMAKE_MAKEFLAGS) clean && CFLAGS="-fPIC $(CFLAGS)" CXXFLAGS="-fPIC $(CXXFLAGS)" $(MAKE) $(AUTOMAKE_MAKEFLAGS) libdwfl_stacktrace.a $(FILTER)
-	cd $(ELFUTILS_DIR)/libdwelf && $(MAKE) $(AUTOMAKE_MAKEFLAGS) clean && CFLAGS="-fPIC $(CFLAGS)" CXXFLAGS="-fPIC $(CXXFLAGS)" $(MAKE) $(AUTOMAKE_MAKEFLAGS) libdwelf.a $(FILTER)
-	cd $(ELFUTILS_DIR)/lib && $(MAKE) $(AUTOMAKE_MAKEFLAGS) clean && CFLAGS="-fPIC $(CFLAGS)" CXXFLAGS="-fPIC $(CXXFLAGS)" $(MAKE) $(AUTOMAKE_MAKEFLAGS) libeu.a $(FILTER)
-	cd $(ELFUTILS_DIR)/libcpu && $(MAKE) $(AUTOMAKE_MAKEFLAGS) clean && CFLAGS="-fPIC $(CFLAGS)" CXXFLAGS="-fPIC $(CXXFLAGS)" $(MAKE) $(AUTOMAKE_MAKEFLAGS) libcpu.a $(FILTER)
-	cd $(ELFUTILS_DIR)/backends && $(MAKE) $(AUTOMAKE_MAKEFLAGS) clean CFLAGS="-fPIC $(CFLAGS)" CXXFLAGS="-fPIC $(CXXFLAGS)" && $(MAKE) $(AUTOMAKE_MAKEFLAGS) libebl_backends.a $(FILTER)
-	cd $(ELFUTILS_DIR)/libdw && $(MAKE) $(AUTOMAKE_MAKEFLAGS) clean CFLAGS="-fPIC $(CFLAGS)" CXXFLAGS="-fPIC $(CXXFLAGS)" && $(MAKE) $(AUTOMAKE_MAKEFLAGS) libdw.a known-dwarf.h $(FILTER)
-	cd $(ELFUTILS_DIR) && mkdir -p $(CWD)/$(INC_DIR)/elfutils && cp libdw/known-dwarf.h libdw/libdw.h libebl/libebl.h libelf/elf-knowledge.h version.h libdwfl/libdwfl.h libdwelf/libdwelf.h $(CWD)/$(INC_DIR)/elfutils && cp libelf/gelf.h libelf/libelf.h libdw/dwarf.h $(CWD)/$(INC_DIR) && cp libebl/libebl.a libdw/libdw.a libdwfl/libdwfl.a libdwelf/libdwelf.a libelf/libelf.a lib/libeu.a libdwfl_stacktrace/libdwfl_stacktrace.a $(CWD)/$(LIB_DIR)/
-
 $(INC_DIR)/simde/x86/sse4.1.h: $(DOZEU_DIR)/simde/*.h $(DOZEU_DIR)/simde/x86/*.h
 	cp -r $(DOZEU_DIR)/simde $(INC_DIR)
 
