mirror of
https://github.com/dashpay/dash.git
synced 2024-12-24 19:42: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 \
|
codespell==1.17.1 \
|
||||||
flake8==3.8.3 \
|
flake8==3.8.3 \
|
||||||
jinja2 \
|
jinja2 \
|
||||||
lief==0.12.0 \
|
lief==0.12.1 \
|
||||||
pyzmq \
|
pyzmq \
|
||||||
vulture==2.3 \
|
vulture==2.3 \
|
||||||
yq \
|
yq \
|
||||||
|
@ -110,7 +110,7 @@ script: |
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
pip3 install lief==0.12.0
|
pip3 install lief==0.12.1
|
||||||
|
|
||||||
# Faketime for depends so intermediate results are comparable
|
# Faketime for depends so intermediate results are comparable
|
||||||
export PATH_orig=${PATH}
|
export PATH_orig=${PATH}
|
||||||
|
@ -96,7 +96,7 @@ script: |
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
pip3 install lief==0.12.0
|
pip3 install lief==0.12.1
|
||||||
|
|
||||||
# Faketime for depends so intermediate results are comparable
|
# Faketime for depends so intermediate results are comparable
|
||||||
export PATH_orig=${PATH}
|
export PATH_orig=${PATH}
|
||||||
|
@ -115,7 +115,7 @@ script: |
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
pip3 install lief==0.12.0
|
pip3 install lief==0.12.1
|
||||||
|
|
||||||
# Faketime for depends so intermediate results are comparable
|
# Faketime for depends so intermediate results are comparable
|
||||||
export PATH_orig=${PATH}
|
export PATH_orig=${PATH}
|
||||||
|
@ -263,10 +263,6 @@ case "$HOST" in
|
|||||||
*powerpc64*) HOST_LDFLAGS="${HOST_LDFLAGS} -Wl,--no-tls-get-addr-optimize" ;;
|
*powerpc64*) HOST_LDFLAGS="${HOST_LDFLAGS} -Wl,--no-tls-get-addr-optimize" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case "$HOST" in
|
|
||||||
powerpc64-linux-*) HOST_LDFLAGS="${HOST_LDFLAGS} -Wl,-z,noexecstack" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Make $HOST-specific native binaries from depends available in $PATH
|
# Make $HOST-specific native binaries from depends available in $PATH
|
||||||
export PATH="${BASEPREFIX}/${HOST}/native/bin:${PATH}"
|
export PATH="${BASEPREFIX}/${HOST}/native/bin:${PATH}"
|
||||||
mkdir -p "$DISTSRC"
|
mkdir -p "$DISTSRC"
|
||||||
|
@ -548,10 +548,14 @@ inspecting signatures in Mach-O binaries.")
|
|||||||
"glibc-2.27-dont-redefine-nss-database.patch"
|
"glibc-2.27-dont-redefine-nss-database.patch"
|
||||||
"glibc-2.27-guix-prefix.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
|
(define-public lief
|
||||||
(package
|
(package
|
||||||
(name "python-lief")
|
(name "python-lief")
|
||||||
(version "0.12.0")
|
(version "0.12.1")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method git-fetch)
|
(method git-fetch)
|
||||||
@ -561,7 +565,7 @@ inspecting signatures in Mach-O binaries.")
|
|||||||
(file-name (git-file-name name version))
|
(file-name (git-file-name name version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"026jchj56q25v6gc0754dj9cj5hz5zaza8ij93y5ga94w20kzm9q"))))
|
"1xzbh3bxy4rw1yamnx68da1v5s56ay4g081cyamv67256g0qy2i1"))))
|
||||||
(build-system python-build-system)
|
(build-system python-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:phases
|
`(#:phases
|
||||||
@ -618,7 +622,7 @@ parse, modify and abstract ELF, PE and MachO formats.")
|
|||||||
;; Git
|
;; Git
|
||||||
git
|
git
|
||||||
;; Tests
|
;; Tests
|
||||||
lief)
|
(fix-ppc64-nx-default lief))
|
||||||
(let ((target (getenv "HOST")))
|
(let ((target (getenv "HOST")))
|
||||||
(cond ((string-suffix? "-mingw32" target)
|
(cond ((string-suffix? "-mingw32" target)
|
||||||
;; Windows
|
;; 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