mirror of
https://github.com/dashpay/dash.git
synced 2024-12-24 11:32:46 +01:00
merge bitcoin#25357: drop -z,noexecstack for PPC64
This commit is contained in:
parent
6243a71267
commit
0a7b8bda4f
@ -37,7 +37,7 @@ RUN pip3 install \
|
||||
codespell==1.17.1 \
|
||||
flake8==3.8.3 \
|
||||
jinja2 \
|
||||
lief==0.12.0 \
|
||||
lief==0.12.1 \
|
||||
pyzmq \
|
||||
vulture==2.3 \
|
||||
yq \
|
||||
|
@ -110,7 +110,7 @@ script: |
|
||||
done
|
||||
}
|
||||
|
||||
pip3 install lief==0.12.0
|
||||
pip3 install lief==0.12.1
|
||||
|
||||
# Faketime for depends so intermediate results are comparable
|
||||
export PATH_orig=${PATH}
|
||||
|
@ -96,7 +96,7 @@ script: |
|
||||
done
|
||||
}
|
||||
|
||||
pip3 install lief==0.12.0
|
||||
pip3 install lief==0.12.1
|
||||
|
||||
# Faketime for depends so intermediate results are comparable
|
||||
export PATH_orig=${PATH}
|
||||
|
@ -115,7 +115,7 @@ script: |
|
||||
done
|
||||
}
|
||||
|
||||
pip3 install lief==0.12.0
|
||||
pip3 install lief==0.12.1
|
||||
|
||||
# Faketime for depends so intermediate results are comparable
|
||||
export PATH_orig=${PATH}
|
||||
|
@ -263,10 +263,6 @@ case "$HOST" in
|
||||
*powerpc64*) HOST_LDFLAGS="${HOST_LDFLAGS} -Wl,--no-tls-get-addr-optimize" ;;
|
||||
esac
|
||||
|
||||
case "$HOST" in
|
||||
powerpc64-linux-*) HOST_LDFLAGS="${HOST_LDFLAGS} -Wl,-z,noexecstack" ;;
|
||||
esac
|
||||
|
||||
# Make $HOST-specific native binaries from depends available in $PATH
|
||||
export PATH="${BASEPREFIX}/${HOST}/native/bin:${PATH}"
|
||||
mkdir -p "$DISTSRC"
|
||||
|
@ -548,10 +548,14 @@ inspecting signatures in Mach-O binaries.")
|
||||
"glibc-2.27-dont-redefine-nss-database.patch"
|
||||
"glibc-2.27-guix-prefix.patch"))))))
|
||||
|
||||
(define (fix-ppc64-nx-default lief)
|
||||
(package-with-extra-patches lief
|
||||
(search-our-patches "lief-fix-ppc64-nx-default.patch")))
|
||||
|
||||
(define-public lief
|
||||
(package
|
||||
(name "python-lief")
|
||||
(version "0.12.0")
|
||||
(version "0.12.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@ -561,7 +565,7 @@ inspecting signatures in Mach-O binaries.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"026jchj56q25v6gc0754dj9cj5hz5zaza8ij93y5ga94w20kzm9q"))))
|
||||
"1xzbh3bxy4rw1yamnx68da1v5s56ay4g081cyamv67256g0qy2i1"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
@ -618,7 +622,7 @@ parse, modify and abstract ELF, PE and MachO formats.")
|
||||
;; Git
|
||||
git
|
||||
;; Tests
|
||||
lief)
|
||||
(fix-ppc64-nx-default lief))
|
||||
(let ((target (getenv "HOST")))
|
||||
(cond ((string-suffix? "-mingw32" target)
|
||||
;; Windows
|
||||
|
29
contrib/guix/patches/lief-fix-ppc64-nx-default.patch
Normal file
29
contrib/guix/patches/lief-fix-ppc64-nx-default.patch
Normal file
@ -0,0 +1,29 @@
|
||||
Correct default for Binary::has_nx on ppc64
|
||||
|
||||
From the Linux kernel source:
|
||||
|
||||
* This is the default if a program doesn't have a PT_GNU_STACK
|
||||
* program header entry. The PPC64 ELF ABI has a non executable stack
|
||||
* stack by default, so in the absence of a PT_GNU_STACK program header
|
||||
* we turn execute permission off.
|
||||
|
||||
This patch can be dropped the next time we update LIEF.
|
||||
|
||||
diff --git a/src/ELF/Binary.cpp b/src/ELF/Binary.cpp
|
||||
index a90be1ab..fd2d9764 100644
|
||||
--- a/src/ELF/Binary.cpp
|
||||
+++ b/src/ELF/Binary.cpp
|
||||
@@ -1084,7 +1084,12 @@ bool Binary::has_nx() const {
|
||||
return segment->type() == SEGMENT_TYPES::PT_GNU_STACK;
|
||||
});
|
||||
if (it_stack == std::end(segments_)) {
|
||||
- return false;
|
||||
+ if (header().machine_type() == ARCH::EM_PPC64) {
|
||||
+ // The PPC64 ELF ABI has a non-executable stack by default.
|
||||
+ return true;
|
||||
+ } else {
|
||||
+ return false;
|
||||
+ }
|
||||
}
|
||||
|
||||
return !(*it_stack)->has(ELF_SEGMENT_FLAGS::PF_X);
|
Loading…
Reference in New Issue
Block a user