diff options
| author | YDBot <[email protected]> | 2026-07-09 01:08:35 +0000 |
|---|---|---|
| committer | YDBot <[email protected]> | 2026-07-09 01:08:35 +0000 |
| commit | 4e76e5312e7d44e930036f0e0184d0ee21067432 (patch) | |
| tree | 375636370d43d6f721984b09684a0b81dcda9a46 /contrib/python/cryptography | |
| parent | 75e0007213d9471b8bea1892aec2c3ad96fc922f (diff) | |
| parent | 0a6ad8975632e0d3260c7e66f6295e5f1ed38eb9 (diff) | |
Sync branches 260709-0106
Diffstat (limited to 'contrib/python/cryptography')
4 files changed, 7 insertions, 121 deletions
diff --git a/contrib/python/cryptography/next/rust/.yandex_meta/build.ym b/contrib/python/cryptography/next/rust/.yandex_meta/build.ym index 1a9f1137767..9500b46cce9 100644 --- a/contrib/python/cryptography/next/rust/.yandex_meta/build.ym +++ b/contrib/python/cryptography/next/rust/.yandex_meta/build.ym @@ -30,6 +30,10 @@ _openssl {% block current_version %}41.0.6{% endblock %} {% block current_url %}https://github.com/pyca/cryptography/archive/refs/tags/{{self.version().strip()}}.tar.gz{% endblock %} +{% block msan_cc_extra_flags %} +-I{{arcadia_root}} -I{{arcadia_root}}/contrib/libs/python/Include -I{{arcadia_root}}/contrib/libs/openssl/include +{% endblock %} + {% block patch_source %} {{super()}} sed -e 's|cdylib|staticlib|' -i Cargo.toml @@ -52,33 +56,6 @@ export RUSTFLAGS="${RUSTFLAGS:-} -Cembed-bitcode=no" rm -rf docs vectors tests cd src/rust {{super()}} -find ${BUILD} -name '*.a' -type f | while read l; do - echo "_rust_eh_personality {{self.mod_name().strip()}}__rust_eh_personality" >> prog - llvm-objcopy --redefine-syms=prog ${l} - rm prog -done - -{% for p in self.msan_platforms().strip().split('\n') %} -export CC_{{p.replace('-', '_')}}=target-cc-msan -{% endfor %} -export RUSTFLAGS="${RUSTFLAGS:-} -Zsanitizer=memory -Zsanitizer-memory-track-origins=2 -Ctarget-feature=-crt-static -Cunsafe-allow-abi-mismatch=sanitizer -Ccodegen-units=1" - -{% for arch in self.msan_platforms().strip().split('\n') %} -LD_PRELOAD=${BIN}/getrandom.so cargo {{self.cargo_flags().strip()}} build {{self.cargo_build_flags().strip()}} --release --target {{arch}} {{self.binary_type().strip()}} --target-dir ${BUILD}-msan \ - {% if self.cargo_target() %} ---package {{self.cargo_target().strip()}} - {% endif %} -{% endfor %} - -find ${BUILD}-msan -name '*.a' -type f | while read l; do - llvm-nm --extern-only --defined-only -A ${l} | sed -e 's|.* ||' | grep -v 'PyInit_' | sort | while read s; do - echo "${s} {{self.mod_name().strip()}}_${s}" >> prog - done - echo "_rust_eh_personality {{self.mod_name().strip()}}__rust_eh_personality" >> prog - llvm-objcopy --redefine-syms=prog ${l} - rm prog -done - rm -r .git # generate _openssl.c @@ -90,50 +67,13 @@ OUT_DIR=${SRC}/autogen_cffi ${BIN}/python3 _cffi_src/build_openssl.py {% block move_to_output %} {{super()}} -pushd ${BUILD}-msan -{% if self.executable().strip() %} - -{% for arch in self.msan_platforms().strip().split('\n') %} - mkdir -p ${OUTPUT}/target/{{arch}}-msan/release - cp {{arch}}/release/{{self.executable().strip()}} ${OUTPUT}/target/{{arch}}-msan/release -{% endfor %} - -{% else %} -(find . -type f -name '*.a'; find . -type f -name '*.lib') | sed -e 's|./||' | grep -v '/deps/' | while read l; do - d=$(dirname ${l}) - d_msan=$(echo "${d}" | sed 's|^\([^/]*\)|\1-msan|') - o=${OUTPUT}/a/${d_msan} - mkdir -p ${o} - cp ${l} ${o}/ -done -{% endif %} -popd - cp ${SRC}/autogen_cffi/_openssl.c ${OUTPUT}/ -cp ${OUTPUT}/patches/msan.cpp ${OUTPUT}/ cat {{arcadia_root}}/contrib/libs/openssl/redef.h | awk '/#define/{print $2" "$3}' > ${OUTPUT}/openssl_redefines.txt cat {{arcadia_root}}/contrib/libs/openssl/redef.h | awk '/#define/{print "_"$2" _"$3}' >> ${OUTPUT}/openssl_redefines.txt find ${OUTPUT} -name '*.a' | xargs -L1 llvm-objcopy --redefine-syms=${OUTPUT}/openssl_redefines.txt rm ${OUTPUT}/openssl_redefines.txt - -find ${OUTPUT} -name '*.a' -path "*msan*" | xargs -L1 llvm-objcopy --redefine-sym=__msan_set_alloca_origin_with_descr=__safe_msan_set_alloca_origin_with_descr -find ${OUTPUT} -name '*.a' -path "*msan*" | xargs -L1 llvm-objcopy --redefine-sym=malloc=__safe_malloc -{% endblock %} - -{% block prepare_yamake %} -{{super()}} - -sed -i '/IF (FALSE)/r'<(cat <<EOF -{% for p in self.msan_platforms().strip().split('\n') %} -ELSEIF ({{p | ya_platform}} AND SANITIZER_TYPE == "memory") - COPY_FILE(a/{{p}}-msan/release/libcryptography_rust.a libcryptography_rust.a) - SRCS(msan.cpp) - CFLAGS(-fsanitize-memory-track-origins=2) -{% endfor %} -EOF -) ya.make {% endblock %} {% block ya_make %} @@ -177,12 +117,7 @@ cat << EOF > ${BIN}/target-cc-aarch exec ${BIN}/target-cc -nostdinc -target aarch64-unknown-linux-gnu -I{{arcadia_root}}/contrib/libs/musl/include -I{{arcadia_root}}/contrib/libs/musl/arch/aarch64 -I{{arcadia_root}}/contrib/libs/musl/arch/generic "\${@}" EOF -cat << EOF > ${BIN}/target-cc-msan -#!/usr/bin/env sh -exec ${CLANG} -DUSE_PYTHON3 -fsanitize=memory -I{{arcadia_root}} -I{{arcadia_root}}/contrib/libs/python/Include -I{{arcadia_root}}/contrib/libs/openssl/include -x c "\${@}" -EOF - -chmod +x ${BIN}/musl-gcc ${BIN}/target-cc ${BIN}/target-cc-aarch ${BIN}/target-cc-msan +chmod +x ${BIN}/musl-gcc ${BIN}/target-cc ${BIN}/target-cc-aarch # macOS diff --git a/contrib/python/cryptography/next/rust/msan.cpp b/contrib/python/cryptography/next/rust/msan.cpp deleted file mode 100644 index c653958f4b0..00000000000 --- a/contrib/python/cryptography/next/rust/msan.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include <stdint.h> -#include <cstddef> - -typedef size_t uptr; -typedef uint32_t u32; - -// defined in clang{XX}-rt/msan -extern "C" void __msan_set_alloca_origin_with_descr(void *a, uptr size, u32 *id_ptr, char *descr); -extern "C" void __msan_unpoison(void *a, uptr size); - - -extern "C" void __safe_msan_set_alloca_origin_with_descr(void *a, uptr size, u32 *id_ptr, char *descr) { - __msan_set_alloca_origin_with_descr(a, size, id_ptr, descr); - __msan_unpoison(a, size); -} - - -extern "C" void* malloc(size_t size); -extern "C" void *__safe_malloc(size_t size) { - void* ret = malloc(size); - __msan_unpoison(ret, size); - return ret; -} diff --git a/contrib/python/cryptography/next/rust/patches/msan.cpp b/contrib/python/cryptography/next/rust/patches/msan.cpp deleted file mode 100644 index c653958f4b0..00000000000 --- a/contrib/python/cryptography/next/rust/patches/msan.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include <stdint.h> -#include <cstddef> - -typedef size_t uptr; -typedef uint32_t u32; - -// defined in clang{XX}-rt/msan -extern "C" void __msan_set_alloca_origin_with_descr(void *a, uptr size, u32 *id_ptr, char *descr); -extern "C" void __msan_unpoison(void *a, uptr size); - - -extern "C" void __safe_msan_set_alloca_origin_with_descr(void *a, uptr size, u32 *id_ptr, char *descr) { - __msan_set_alloca_origin_with_descr(a, size, id_ptr, descr); - __msan_unpoison(a, size); -} - - -extern "C" void* malloc(size_t size); -extern "C" void *__safe_malloc(size_t size) { - void* ret = malloc(size); - __msan_unpoison(ret, size); - return ret; -} diff --git a/contrib/python/cryptography/next/rust/ya.make b/contrib/python/cryptography/next/rust/ya.make index 607916aaab1..4f3d4b559a8 100644 --- a/contrib/python/cryptography/next/rust/ya.make +++ b/contrib/python/cryptography/next/rust/ya.make @@ -16,11 +16,8 @@ ORIGINAL_SOURCE(https://github.com/pyca/cryptography/archive/refs/tags/41.0.6.ta IF (FALSE) ELSEIF (OS_LINUX AND ARCH_X86_64 AND NOT MUSL AND SANITIZER_TYPE == "memory") COPY_FILE(a/x86_64-unknown-linux-gnu-msan/release/libcryptography_rust.a libcryptography_rust.a) - SRCS( - msan.cpp - ) - CFLAGS( - -fsanitize-memory-track-origins=2 + PEERDIR( + contrib/restricted/rust_msan ) ELSEIF (OS_LINUX AND ARCH_X86_64 AND NOT MUSL) COPY_FILE(a/x86_64-unknown-linux-gnu/release/libcryptography_rust.a libcryptography_rust.a) |
