elfutils: build out of tree on libc++
`elfutils` has a `stack` binary built in `src`. When built in source tree this breaks when `#include <stack>` is transitively included in `libc++` via `<iostream>`. The trigger set of options is `-I $(srcdir)` which turns to `-I .` with `./stack` present. The fix turns the above to `-I ../src` without `./stack` present. The change is conditional on `LLVM` to avoid `stdenv` rebuild. We will turn it into unconditional in `staging` once this gets merged. While at it dropped `CFLAGS` / `CXXFLAGS` overrides.
This commit is contained in:
parent
f89736927e
commit
340cc31a82
@ -1,338 +0,0 @@
|
||||
From: Tristan Ross <tristan.ross@midstall.com>
|
||||
Date: Wed, 31 Jul 2024 04:03:03 +0000 (-0700)
|
||||
Subject: Prevent binaries in src from colliding with libc++ headers
|
||||
X-Git-Url: https://sourceware.org/git/?p=elfutils.git;a=commitdiff_plain;h=232b9ede92cbecabbd61291c2fc9aaf3fc61061f;hp=87a60d22299c4ba7b94cbce04a32c2abf015f98a
|
||||
|
||||
Prevent binaries in src from colliding with libc++ headers
|
||||
|
||||
Discovered with Nix and LLVM 17. Headers inside of libc++ can easily
|
||||
collide with binaries being linked in src. This results in clang trying
|
||||
to include a binary as a header.
|
||||
|
||||
Fix this by removing '-I.' and '-I$(srcdir)' from AM_CPPFLAGS and
|
||||
DEFAULT_INCLUDES in src/Makefile.am.
|
||||
|
||||
To facilitate this config/eu.am has been refactored. New file
|
||||
config/eu-common.am contains all of the old eu.am but with the
|
||||
AM_CPPFLAGS definition removed. eu.am now includes eu-common.am and
|
||||
contains the old AM_CPPFLAGS definition.
|
||||
|
||||
eu.am functionality does not change, but src/Makefile.am can instead
|
||||
include eu-common.am and define its own AM_CPPFLAGS without causing a
|
||||
"multiply defined" warning during autoreconf.
|
||||
|
||||
Signed-off-by: Tristan Ross <tristan.ross@midstall.com>
|
||||
---
|
||||
|
||||
diff --git a/config/eu-common.am b/config/eu-common.am
|
||||
new file mode 100644
|
||||
index 00000000..9cc7f696
|
||||
--- /dev/null
|
||||
+++ b/config/eu-common.am
|
||||
@@ -0,0 +1,148 @@
|
||||
+## Common automake fragments for elfutils subdirectory makefiles.
|
||||
+##
|
||||
+## Copyright (C) 2010, 2014, 2016 Red Hat, Inc.
|
||||
+## Copyright (C) 2023, Mark J. Wielaard <mark@klomp.org>
|
||||
+##
|
||||
+## This file is part of elfutils.
|
||||
+##
|
||||
+## This file is free software; you can redistribute it and/or modify
|
||||
+## it under the terms of either
|
||||
+##
|
||||
+## * the GNU Lesser General Public License as published by the Free
|
||||
+## Software Foundation; either version 3 of the License, or (at
|
||||
+## your option) any later version
|
||||
+##
|
||||
+## or
|
||||
+##
|
||||
+## * the GNU General Public License as published by the Free
|
||||
+## Software Foundation; either version 2 of the License, or (at
|
||||
+## your option) any later version
|
||||
+##
|
||||
+## or both in parallel, as here.
|
||||
+##
|
||||
+## elfutils is distributed in the hope that it will be useful, but
|
||||
+## WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+## General Public License for more details.
|
||||
+##
|
||||
+## You should have received copies of the GNU General Public License and
|
||||
+## the GNU Lesser General Public License along with this program. If
|
||||
+## not, see <http://www.gnu.org/licenses/>.
|
||||
+##
|
||||
+
|
||||
+DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
|
||||
+
|
||||
+# Drop the 'u' flag that automake adds by default. It is incompatible
|
||||
+# with deterministic archives.
|
||||
+ARFLAGS = cr
|
||||
+
|
||||
+# Warn about stack usage of more than 256K = 262144 bytes.
|
||||
+if ADD_STACK_USAGE_WARNING
|
||||
+STACK_USAGE_WARNING=-Wstack-usage=262144
|
||||
+STACK_USAGE_NO_ERROR=-Wno-error=stack-usage=
|
||||
+else
|
||||
+STACK_USAGE_WARNING=
|
||||
+STACK_USAGE_NO_ERROR=
|
||||
+endif
|
||||
+
|
||||
+if SANE_LOGICAL_OP_WARNING
|
||||
+LOGICAL_OP_WARNING=-Wlogical-op
|
||||
+else
|
||||
+LOGICAL_OP_WARNING=
|
||||
+endif
|
||||
+
|
||||
+if HAVE_DUPLICATED_COND_WARNING
|
||||
+DUPLICATED_COND_WARNING=-Wduplicated-cond
|
||||
+else
|
||||
+DUPLICATED_COND_WARNING=
|
||||
+endif
|
||||
+
|
||||
+if HAVE_NULL_DEREFERENCE_WARNING
|
||||
+NULL_DEREFERENCE_WARNING=-Wnull-dereference
|
||||
+else
|
||||
+NULL_DEREFERENCE_WARNING=
|
||||
+endif
|
||||
+
|
||||
+if HAVE_IMPLICIT_FALLTHROUGH_WARNING
|
||||
+# Use strict fallthrough. Only __attribute__((fallthrough)) will prevent the
|
||||
+# warning
|
||||
+if HAVE_IMPLICIT_FALLTHROUGH_5_WARNING
|
||||
+IMPLICIT_FALLTHROUGH_WARNING=-Wimplicit-fallthrough=5
|
||||
+else
|
||||
+IMPLICIT_FALLTHROUGH_WARNING=-Wimplicit-fallthrough
|
||||
+endif
|
||||
+else
|
||||
+IMPLICIT_FALLTHROUGH_WARNING=
|
||||
+endif
|
||||
+
|
||||
+if HAVE_TRAMPOLINES_WARNING
|
||||
+TRAMPOLINES_WARNING=-Wtrampolines
|
||||
+else
|
||||
+TRAMPOLINES_WARNING=
|
||||
+endif
|
||||
+
|
||||
+if HAVE_NO_PACKED_NOT_ALIGNED_WARNING
|
||||
+NO_PACKED_NOT_ALIGNED_WARNING=-Wno-packed-not-aligned
|
||||
+else
|
||||
+NO_PACKED_NOT_ALIGNED_WARNING=
|
||||
+endif
|
||||
+
|
||||
+if HAVE_USE_AFTER_FREE3_WARNING
|
||||
+USE_AFTER_FREE3_WARNING=-Wuse-after-free=3
|
||||
+else
|
||||
+USE_AFTER_FREE3_WARNING=
|
||||
+endif
|
||||
+
|
||||
+AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
|
||||
+ -Wold-style-definition -Wstrict-prototypes $(TRAMPOLINES_WARNING) \
|
||||
+ $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \
|
||||
+ $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \
|
||||
+ $(USE_AFTER_FREE3_WARNING) \
|
||||
+ $(if $($(*F)_no_Werror),,-Werror) \
|
||||
+ $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
|
||||
+ $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \
|
||||
+ $(if $($(*F)_no_Wpacked_not_aligned),$(NO_PACKED_NOT_ALIGNED_WARNING),) \
|
||||
+ $($(*F)_CFLAGS)
|
||||
+
|
||||
+AM_CXXFLAGS = -std=c++11 -Wall -Wshadow \
|
||||
+ $(TRAMPOLINES_WARNING) \
|
||||
+ $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \
|
||||
+ $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \
|
||||
+ $(if $($(*F)_no_Werror),,-Werror) \
|
||||
+ $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
|
||||
+ $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \
|
||||
+ $(if $($(*F)_no_Wpacked_not_aligned),$(NO_PACKED_NOT_ALIGNED_WARNING),) \
|
||||
+ $($(*F)_CXXFLAGS)
|
||||
+
|
||||
+COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
|
||||
+
|
||||
+DEFS.os = -DPIC -DSHARED
|
||||
+if SYMBOL_VERSIONING
|
||||
+DEFS.os += -DSYMBOL_VERSIONING
|
||||
+else
|
||||
+endif
|
||||
+
|
||||
+%.os: %.c %.o
|
||||
+if AMDEP
|
||||
+ $(AM_V_CC)if $(COMPILE.os) -c -o $@ $(fpic_CFLAGS) $(DEFS.os) -MT $@ -MD -MP \
|
||||
+ -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \
|
||||
+ then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \
|
||||
+ rm -f "$(DEPDIR)/$*.Tpo"; \
|
||||
+ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
|
||||
+ fi
|
||||
+else
|
||||
+ $(AM_V_CC)$(COMPILE.os) -c -o $@ $(fpic_CFLAGS) $(DEFS.os) $<
|
||||
+endif
|
||||
+
|
||||
+CLEANFILES = *.gcno *.gcda
|
||||
+
|
||||
+textrel_msg = echo "WARNING: TEXTREL found in '$@'"
|
||||
+if FATAL_TEXTREL
|
||||
+textrel_found = $(textrel_msg); exit 1
|
||||
+else
|
||||
+textrel_found = $(textrel_msg)
|
||||
+endif
|
||||
+textrel_check = if $(READELF) -d $@ | grep -F -q TEXTREL; then $(textrel_found); fi
|
||||
+
|
||||
+print-%:
|
||||
+ @echo $*=$($*)
|
||||
diff --git a/config/eu.am b/config/eu.am
|
||||
index 0b7dab5b..3aa6048a 100644
|
||||
--- a/config/eu.am
|
||||
+++ b/config/eu.am
|
||||
@@ -1,4 +1,5 @@
|
||||
-## Common automake fragments for elfutils subdirectory makefiles.
|
||||
+## Common automake fragments for elfutils subdirectory makefiles
|
||||
+## with AM_CPPFLAGS set.
|
||||
##
|
||||
## Copyright (C) 2010, 2014, 2016 Red Hat, Inc.
|
||||
## Copyright (C) 2023, Mark J. Wielaard <mark@klomp.org>
|
||||
@@ -30,120 +31,5 @@
|
||||
## not, see <http://www.gnu.org/licenses/>.
|
||||
##
|
||||
|
||||
-DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
|
||||
-AM_CPPFLAGS = -iquote . -I$(srcdir) -I$(top_srcdir)/lib -I..
|
||||
-
|
||||
-# Drop the 'u' flag that automake adds by default. It is incompatible
|
||||
-# with deterministic archives.
|
||||
-ARFLAGS = cr
|
||||
-
|
||||
-# Warn about stack usage of more than 256K = 262144 bytes.
|
||||
-if ADD_STACK_USAGE_WARNING
|
||||
-STACK_USAGE_WARNING=-Wstack-usage=262144
|
||||
-STACK_USAGE_NO_ERROR=-Wno-error=stack-usage=
|
||||
-else
|
||||
-STACK_USAGE_WARNING=
|
||||
-STACK_USAGE_NO_ERROR=
|
||||
-endif
|
||||
-
|
||||
-if SANE_LOGICAL_OP_WARNING
|
||||
-LOGICAL_OP_WARNING=-Wlogical-op
|
||||
-else
|
||||
-LOGICAL_OP_WARNING=
|
||||
-endif
|
||||
-
|
||||
-if HAVE_DUPLICATED_COND_WARNING
|
||||
-DUPLICATED_COND_WARNING=-Wduplicated-cond
|
||||
-else
|
||||
-DUPLICATED_COND_WARNING=
|
||||
-endif
|
||||
-
|
||||
-if HAVE_NULL_DEREFERENCE_WARNING
|
||||
-NULL_DEREFERENCE_WARNING=-Wnull-dereference
|
||||
-else
|
||||
-NULL_DEREFERENCE_WARNING=
|
||||
-endif
|
||||
-
|
||||
-if HAVE_IMPLICIT_FALLTHROUGH_WARNING
|
||||
-# Use strict fallthrough. Only __attribute__((fallthrough)) will prevent the
|
||||
-# warning
|
||||
-if HAVE_IMPLICIT_FALLTHROUGH_5_WARNING
|
||||
-IMPLICIT_FALLTHROUGH_WARNING=-Wimplicit-fallthrough=5
|
||||
-else
|
||||
-IMPLICIT_FALLTHROUGH_WARNING=-Wimplicit-fallthrough
|
||||
-endif
|
||||
-else
|
||||
-IMPLICIT_FALLTHROUGH_WARNING=
|
||||
-endif
|
||||
-
|
||||
-if HAVE_TRAMPOLINES_WARNING
|
||||
-TRAMPOLINES_WARNING=-Wtrampolines
|
||||
-else
|
||||
-TRAMPOLINES_WARNING=
|
||||
-endif
|
||||
-
|
||||
-if HAVE_NO_PACKED_NOT_ALIGNED_WARNING
|
||||
-NO_PACKED_NOT_ALIGNED_WARNING=-Wno-packed-not-aligned
|
||||
-else
|
||||
-NO_PACKED_NOT_ALIGNED_WARNING=
|
||||
-endif
|
||||
-
|
||||
-if HAVE_USE_AFTER_FREE3_WARNING
|
||||
-USE_AFTER_FREE3_WARNING=-Wuse-after-free=3
|
||||
-else
|
||||
-USE_AFTER_FREE3_WARNING=
|
||||
-endif
|
||||
-
|
||||
-AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
|
||||
- -Wold-style-definition -Wstrict-prototypes $(TRAMPOLINES_WARNING) \
|
||||
- $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \
|
||||
- $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \
|
||||
- $(USE_AFTER_FREE3_WARNING) \
|
||||
- $(if $($(*F)_no_Werror),,-Werror) \
|
||||
- $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
|
||||
- $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \
|
||||
- $(if $($(*F)_no_Wpacked_not_aligned),$(NO_PACKED_NOT_ALIGNED_WARNING),) \
|
||||
- $($(*F)_CFLAGS)
|
||||
-
|
||||
-AM_CXXFLAGS = -std=c++11 -Wall -Wshadow \
|
||||
- $(TRAMPOLINES_WARNING) \
|
||||
- $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \
|
||||
- $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \
|
||||
- $(if $($(*F)_no_Werror),,-Werror) \
|
||||
- $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
|
||||
- $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \
|
||||
- $(if $($(*F)_no_Wpacked_not_aligned),$(NO_PACKED_NOT_ALIGNED_WARNING),) \
|
||||
- $($(*F)_CXXFLAGS)
|
||||
-
|
||||
-COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
|
||||
-
|
||||
-DEFS.os = -DPIC -DSHARED
|
||||
-if SYMBOL_VERSIONING
|
||||
-DEFS.os += -DSYMBOL_VERSIONING
|
||||
-else
|
||||
-endif
|
||||
-
|
||||
-%.os: %.c %.o
|
||||
-if AMDEP
|
||||
- $(AM_V_CC)if $(COMPILE.os) -c -o $@ $(fpic_CFLAGS) $(DEFS.os) -MT $@ -MD -MP \
|
||||
- -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \
|
||||
- then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \
|
||||
- rm -f "$(DEPDIR)/$*.Tpo"; \
|
||||
- else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
|
||||
- fi
|
||||
-else
|
||||
- $(AM_V_CC)$(COMPILE.os) -c -o $@ $(fpic_CFLAGS) $(DEFS.os) $<
|
||||
-endif
|
||||
-
|
||||
-CLEANFILES = *.gcno *.gcda
|
||||
-
|
||||
-textrel_msg = echo "WARNING: TEXTREL found in '$@'"
|
||||
-if FATAL_TEXTREL
|
||||
-textrel_found = $(textrel_msg); exit 1
|
||||
-else
|
||||
-textrel_found = $(textrel_msg)
|
||||
-endif
|
||||
-textrel_check = if $(READELF) -d $@ | grep -F -q TEXTREL; then $(textrel_found); fi
|
||||
-
|
||||
-print-%:
|
||||
- @echo $*=$($*)
|
||||
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I..
|
||||
+include $(top_srcdir)/config/eu-common.am
|
||||
diff --git a/src/Makefile.am b/src/Makefile.am
|
||||
index 97a0c61a..5bb8c078 100644
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -16,14 +16,15 @@
|
||||
## You should have received a copy of the GNU General Public License
|
||||
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
##
|
||||
-include $(top_srcdir)/config/eu.am
|
||||
+include $(top_srcdir)/config/eu-common.am
|
||||
DEFS += $(YYDEBUG) -DDEBUGPRED=@DEBUGPRED@ \
|
||||
-DSRCDIR=\"$(shell cd $(srcdir);pwd)\" -DOBJDIR=\"$(shell pwd)\"
|
||||
|
||||
-DEFAULT_INCLUDES =
|
||||
-AM_CPPFLAGS += -I$(srcdir)/../libelf -I$(srcdir)/../libebl \
|
||||
- -I$(srcdir)/../libdw -I$(srcdir)/../libdwelf \
|
||||
- -I$(srcdir)/../libdwfl -I$(srcdir)/../libasm -I../debuginfod
|
||||
+DEFAULT_INCLUDES = -I$(top_builddir)
|
||||
+AM_CPPFLAGS = -I$(top_srcdir)/lib -I.. \
|
||||
+ -I$(srcdir)/../libelf -I$(srcdir)/../libebl \
|
||||
+ -I$(srcdir)/../libdw -I$(srcdir)/../libdwelf \
|
||||
+ -I$(srcdir)/../libdwfl -I$(srcdir)/../libasm -I../debuginfod
|
||||
|
||||
AM_LDFLAGS = -Wl,-rpath-link,../libelf:../libdw $(STACK_USAGE_NO_ERROR)
|
@ -23,7 +23,6 @@
|
||||
libmicrohttpd,
|
||||
libarchive,
|
||||
gitUpdater,
|
||||
autoreconfHook,
|
||||
}:
|
||||
|
||||
# TODO: Look at the hardcoded paths to kernel, modules etc.
|
||||
@ -36,34 +35,29 @@ stdenv.mkDerivation rec {
|
||||
hash = "sha256-eFf0S2JPTY1CHfhRqq57FALP5rzdLYBJ8V/AfT3edjU=";
|
||||
};
|
||||
|
||||
patches =
|
||||
[
|
||||
./debug-info-from-env.patch
|
||||
(fetchpatch {
|
||||
name = "fix-aarch64_fregs.patch";
|
||||
url = "https://git.alpinelinux.org/aports/plain/main/elfutils/fix-aarch64_fregs.patch?id=2e3d4976eeffb4704cf83e2cc3306293b7c7b2e9";
|
||||
sha256 = "zvncoRkQx3AwPx52ehjA2vcFroF+yDC2MQR5uS6DATs=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "musl-asm-ptrace-h.patch";
|
||||
url = "https://git.alpinelinux.org/aports/plain/main/elfutils/musl-asm-ptrace-h.patch?id=2e3d4976eeffb4704cf83e2cc3306293b7c7b2e9";
|
||||
sha256 = "8D1wPcdgAkE/TNBOgsHaeTZYhd9l+9TrZg8d5C7kG6k=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "musl-macros.patch";
|
||||
url = "https://git.alpinelinux.org/aports/plain/main/elfutils/musl-macros.patch?id=2e3d4976eeffb4704cf83e2cc3306293b7c7b2e9";
|
||||
sha256 = "tp6O1TRsTAMsFe8vw3LMENT/vAu6OmyA8+pzgThHeA8=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "musl-strndupa.patch";
|
||||
url = "https://git.alpinelinux.org/aports/plain/main/elfutils/musl-strndupa.patch?id=2e3d4976eeffb4704cf83e2cc3306293b7c7b2e9";
|
||||
sha256 = "sha256-7daehJj1t0wPtQzTv+/Rpuqqs5Ng/EYnZzrcf2o/Lb0=";
|
||||
})
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isMusl [ ./musl-error_h.patch ]
|
||||
# Prevent headers and binaries from colliding which results in an error.
|
||||
# https://sourceware.org/pipermail/elfutils-devel/2024q3/007281.html
|
||||
++ lib.optional (stdenv.targetPlatform.useLLVM or false) ./cxx-header-collision.patch;
|
||||
patches = [
|
||||
./debug-info-from-env.patch
|
||||
(fetchpatch {
|
||||
name = "fix-aarch64_fregs.patch";
|
||||
url = "https://git.alpinelinux.org/aports/plain/main/elfutils/fix-aarch64_fregs.patch?id=2e3d4976eeffb4704cf83e2cc3306293b7c7b2e9";
|
||||
sha256 = "zvncoRkQx3AwPx52ehjA2vcFroF+yDC2MQR5uS6DATs=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "musl-asm-ptrace-h.patch";
|
||||
url = "https://git.alpinelinux.org/aports/plain/main/elfutils/musl-asm-ptrace-h.patch?id=2e3d4976eeffb4704cf83e2cc3306293b7c7b2e9";
|
||||
sha256 = "8D1wPcdgAkE/TNBOgsHaeTZYhd9l+9TrZg8d5C7kG6k=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "musl-macros.patch";
|
||||
url = "https://git.alpinelinux.org/aports/plain/main/elfutils/musl-macros.patch?id=2e3d4976eeffb4704cf83e2cc3306293b7c7b2e9";
|
||||
sha256 = "tp6O1TRsTAMsFe8vw3LMENT/vAu6OmyA8+pzgThHeA8=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "musl-strndupa.patch";
|
||||
url = "https://git.alpinelinux.org/aports/plain/main/elfutils/musl-strndupa.patch?id=2e3d4976eeffb4704cf83e2cc3306293b7c7b2e9";
|
||||
sha256 = "sha256-7daehJj1t0wPtQzTv+/Rpuqqs5Ng/EYnZzrcf2o/Lb0=";
|
||||
})
|
||||
] ++ lib.optionals stdenv.hostPlatform.isMusl [ ./musl-error_h.patch ];
|
||||
|
||||
postPatch =
|
||||
''
|
||||
@ -85,16 +79,13 @@ stdenv.mkDerivation rec {
|
||||
|
||||
# We need bzip2 in NativeInputs because otherwise we can't unpack the src,
|
||||
# as the host-bzip2 will be in the path.
|
||||
nativeBuildInputs =
|
||||
[
|
||||
m4
|
||||
bison
|
||||
flex
|
||||
gettext
|
||||
bzip2
|
||||
]
|
||||
++ lib.optional enableDebuginfod pkg-config
|
||||
++ lib.optional (stdenv.targetPlatform.useLLVM or false) autoreconfHook;
|
||||
nativeBuildInputs = [
|
||||
m4
|
||||
bison
|
||||
flex
|
||||
gettext
|
||||
bzip2
|
||||
] ++ lib.optional enableDebuginfod pkg-config;
|
||||
buildInputs =
|
||||
[
|
||||
zlib
|
||||
@ -119,22 +110,28 @@ stdenv.mkDerivation rec {
|
||||
|
||||
hardeningDisable = [ "strictflexarrays3" ];
|
||||
|
||||
configureFlags =
|
||||
[
|
||||
"--program-prefix=eu-" # prevent collisions with binutils
|
||||
"--enable-deterministic-archives"
|
||||
(lib.enableFeature enableDebuginfod "libdebuginfod")
|
||||
(lib.enableFeature enableDebuginfod "debuginfod")
|
||||
# build elfutils out-of-source-tree to avoid ./stack inclusion
|
||||
# as a c++ header on libc++: https://sourceware.org/PR33103
|
||||
preConfigure =
|
||||
if (stdenv.targetPlatform.useLLVM or false) then
|
||||
''
|
||||
mkdir build-tree
|
||||
cd build-tree
|
||||
''
|
||||
else
|
||||
null;
|
||||
configureScript = if (stdenv.targetPlatform.useLLVM or false) then "../configure" else null;
|
||||
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101766
|
||||
# Versioned symbols are nice to have, but we can do without.
|
||||
(lib.enableFeature (!stdenv.hostPlatform.isMicroBlaze) "symbol-versioning")
|
||||
]
|
||||
++ lib.optional (stdenv.targetPlatform.useLLVM or false) "--disable-demangler"
|
||||
++ lib.optionals stdenv.cc.isClang [
|
||||
"CFLAGS=-Wno-unused-private-field"
|
||||
"CXXFLAGS=-Wno-unused-private-field"
|
||||
];
|
||||
configureFlags = [
|
||||
"--program-prefix=eu-" # prevent collisions with binutils
|
||||
"--enable-deterministic-archives"
|
||||
(lib.enableFeature enableDebuginfod "libdebuginfod")
|
||||
(lib.enableFeature enableDebuginfod "debuginfod")
|
||||
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101766
|
||||
# Versioned symbols are nice to have, but we can do without.
|
||||
(lib.enableFeature (!stdenv.hostPlatform.isMicroBlaze) "symbol-versioning")
|
||||
] ++ lib.optional (stdenv.targetPlatform.useLLVM or false) "--disable-demangler";
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user