From bcfd76f328f839f71e78a5961858c54ad3b07060 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Tue, 4 Dec 2018 18:46:16 +0100 Subject: [PATCH] Sync -fno-plt patch with upstream commit --- libxcrypt-4.4.0-buildflags_-fno-plt.patch | 253 +++++++++++++++++++++- libxcrypt.spec | 7 +- 2 files changed, 251 insertions(+), 9 deletions(-) diff --git a/libxcrypt-4.4.0-buildflags_-fno-plt.patch b/libxcrypt-4.4.0-buildflags_-fno-plt.patch index 841b431..32f3890 100644 --- a/libxcrypt-4.4.0-buildflags_-fno-plt.patch +++ b/libxcrypt-4.4.0-buildflags_-fno-plt.patch @@ -1,4 +1,4 @@ -From 2fb3cb0a974fc2911a49477765a99209e842b853 Mon Sep 17 00:00:00 2001 +From 4b4aaa2241aa8b8d52e78cbf486acb0d8cb1e67d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Sun, 2 Dec 2018 13:37:03 +0100 Subject: [PATCH] Add -fno-plt to the compiler flags, if supported. (#71) @@ -14,23 +14,36 @@ functions are now six bytes each, instead of five bytes. Closes: #71 --- - LICENSING | 3 +++ + LICENSING | 9 ++++++ Makefile.am | 2 +- - configure.ac | 7 ++++++ - m4/ax_append_compile_flags.m4 | 46 +++++++++++++++++++++++++++++++++++ - 4 files changed, 57 insertions(+), 1 deletion(-) + configure.ac | 7 +++++ + m4/ax_append_compile_flags.m4 | 46 ++++++++++++++++++++++++++++++ + m4/ax_append_flag.m4 | 50 +++++++++++++++++++++++++++++++++ + m4/ax_check_compile_flag.m4 | 53 +++++++++++++++++++++++++++++++++++ + m4/ax_require_defined.m4 | 37 ++++++++++++++++++++++++ + m4/zw_simple_warnings.m4 | 44 ++--------------------------- + 8 files changed, 205 insertions(+), 43 deletions(-) create mode 100644 m4/ax_append_compile_flags.m4 + create mode 100644 m4/ax_append_flag.m4 + create mode 100644 m4/ax_check_compile_flag.m4 + create mode 100644 m4/ax_require_defined.m4 diff --git a/LICENSING b/LICENSING -index 152ed4c..7184f6d 100644 +index 152ed4c..51155ee 100644 --- a/LICENSING +++ b/LICENSING -@@ -88,6 +88,9 @@ source tree. For specific licensing terms consult the files themselves. +@@ -88,6 +88,15 @@ source tree. For specific licensing terms consult the files themselves. * Copyright Kevin Cernekee; BSD alike: m4/ax_check_vscript.m4 + * Copyright Maarten Bosmans; BSD alike: + m4/ax_append_compile_flags.m4 ++ ++ * Copyright Guido U. Draheim, Maarten Bosmans; BSD alike: ++ m4/ax_append_flag.m4, m4/ax_check_compile_flag.m4 ++ ++ * Copyright Mike Frysinger; BSD alike: ++ m4/ax_require_defined.m4 + * Copyright Scott James Remnant, Dan Nicholson; GPL (v2 or later), with Autoconf exception: @@ -118,3 +131,229 @@ index 0000000..9c85635 + AX_CHECK_COMPILE_FLAG([$flag], [AX_APPEND_FLAG([$flag], [$2])], [], [$3], [$4]) +done +])dnl AX_APPEND_COMPILE_FLAGS +diff --git a/m4/ax_append_flag.m4 b/m4/ax_append_flag.m4 +new file mode 100644 +index 0000000..dd6d8b6 +--- /dev/null ++++ b/m4/ax_append_flag.m4 +@@ -0,0 +1,50 @@ ++# =========================================================================== ++# https://www.gnu.org/software/autoconf-archive/ax_append_flag.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE]) ++# ++# DESCRIPTION ++# ++# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space ++# added in between. ++# ++# If FLAGS-VARIABLE is not specified, the current language's flags (e.g. ++# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains ++# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly ++# FLAG. ++# ++# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. ++# ++# LICENSE ++# ++# Copyright (c) 2008 Guido U. Draheim ++# Copyright (c) 2011 Maarten Bosmans ++# ++# Copying and distribution of this file, with or without modification, are ++# permitted in any medium without royalty provided the copyright notice ++# and this notice are preserved. This file is offered as-is, without any ++# warranty. ++ ++#serial 8 ++ ++AC_DEFUN([AX_APPEND_FLAG], ++[dnl ++AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF ++AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])]) ++AS_VAR_SET_IF(FLAGS,[ ++ AS_CASE([" AS_VAR_GET(FLAGS) "], ++ [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])], ++ [ ++ AS_VAR_APPEND(FLAGS,[" $1"]) ++ AC_RUN_LOG([: FLAGS="$FLAGS"]) ++ ]) ++ ], ++ [ ++ AS_VAR_SET(FLAGS,[$1]) ++ AC_RUN_LOG([: FLAGS="$FLAGS"]) ++ ]) ++AS_VAR_POPDEF([FLAGS])dnl ++])dnl AX_APPEND_FLAG +diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4 +new file mode 100644 +index 0000000..bd753b3 +--- /dev/null ++++ b/m4/ax_check_compile_flag.m4 +@@ -0,0 +1,53 @@ ++# =========================================================================== ++# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) ++# ++# DESCRIPTION ++# ++# Check whether the given FLAG works with the current language's compiler ++# or gives an error. (Warnings, however, are ignored) ++# ++# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on ++# success/failure. ++# ++# If EXTRA-FLAGS is defined, it is added to the current language's default ++# flags (e.g. CFLAGS) when the check is done. The check is thus made with ++# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to ++# force the compiler to issue an error when a bad flag is given. ++# ++# INPUT gives an alternative input source to AC_COMPILE_IFELSE. ++# ++# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this ++# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. ++# ++# LICENSE ++# ++# Copyright (c) 2008 Guido U. Draheim ++# Copyright (c) 2011 Maarten Bosmans ++# ++# Copying and distribution of this file, with or without modification, are ++# permitted in any medium without royalty provided the copyright notice ++# and this notice are preserved. This file is offered as-is, without any ++# warranty. ++ ++#serial 6 ++ ++AC_DEFUN([AX_CHECK_COMPILE_FLAG], ++[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF ++AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl ++AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ ++ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS ++ _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" ++ AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], ++ [AS_VAR_SET(CACHEVAR,[yes])], ++ [AS_VAR_SET(CACHEVAR,[no])]) ++ _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) ++AS_VAR_IF(CACHEVAR,yes, ++ [m4_default([$2], :)], ++ [m4_default([$3], :)]) ++AS_VAR_POPDEF([CACHEVAR])dnl ++])dnl AX_CHECK_COMPILE_FLAGS +diff --git a/m4/ax_require_defined.m4 b/m4/ax_require_defined.m4 +new file mode 100644 +index 0000000..17c3eab +--- /dev/null ++++ b/m4/ax_require_defined.m4 +@@ -0,0 +1,37 @@ ++# =========================================================================== ++# https://www.gnu.org/software/autoconf-archive/ax_require_defined.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_REQUIRE_DEFINED(MACRO) ++# ++# DESCRIPTION ++# ++# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have ++# been defined and thus are available for use. This avoids random issues ++# where a macro isn't expanded. Instead the configure script emits a ++# non-fatal: ++# ++# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found ++# ++# It's like AC_REQUIRE except it doesn't expand the required macro. ++# ++# Here's an example: ++# ++# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) ++# ++# LICENSE ++# ++# Copyright (c) 2014 Mike Frysinger ++# ++# Copying and distribution of this file, with or without modification, are ++# permitted in any medium without royalty provided the copyright notice ++# and this notice are preserved. This file is offered as-is, without any ++# warranty. ++ ++#serial 2 ++ ++AC_DEFUN([AX_REQUIRE_DEFINED], [dnl ++ m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])]) ++])dnl AX_REQUIRE_DEFINED +diff --git a/m4/zw_simple_warnings.m4 b/m4/zw_simple_warnings.m4 +index 75ca300..cfdf9e9 100644 +--- a/m4/zw_simple_warnings.m4 ++++ b/m4/zw_simple_warnings.m4 +@@ -26,51 +26,10 @@ dnl This is a cut-down version of the elaborate thing in the extras + dnl archive, which we do not need nearly all of. + dnl + dnl Partly based on: +-dnl https://www.gnu.org/software/autoconf-archive/ax_append_flag.html +-dnl https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html +-dnl https://www.gnu.org/software/autoconf-archive/ax_append_compile_flags.html + dnl https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_cflags.html + + AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF + +-AC_DEFUN([AX_CHECK_COMPILE_FLAG], +-[AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_[]_AC_LANG_ABBREV[]_flags_$4_$1])dnl +-AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ +- ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS +- _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" +- AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], +- [AS_VAR_SET(CACHEVAR,[yes])], +- [AS_VAR_SET(CACHEVAR,[no])]) +- _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) +-AS_VAR_IF(CACHEVAR,yes, +- [m4_default([$2], :)], +- [m4_default([$3], :)]) +-AS_VAR_POPDEF([CACHEVAR])]) +- +-AC_DEFUN([AX_APPEND_FLAG], +-[AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])]) +-AS_VAR_SET_IF(FLAGS,[ +- AS_CASE([" AS_VAR_GET(FLAGS) "], +- [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])], +- [ +- AS_VAR_APPEND(FLAGS,[" $1"]) +- AC_RUN_LOG([: FLAGS="$FLAGS"]) +- ]) +- ], +- [ +- AS_VAR_SET(FLAGS,[$1]) +- AC_RUN_LOG([: FLAGS="$FLAGS"]) +- ]) +-AS_VAR_POPDEF([FLAGS])dnl +-])dnl AX_APPEND_FLAG +- +-AC_DEFUN([AX_APPEND_COMPILE_FLAGS], +-[for flag in $1; do +- AX_CHECK_COMPILE_FLAG([$flag], +- [AX_APPEND_FLAG([$flag], [$2])], [], [$3], [$4]) +-done +-]) +- + AC_DEFUN([zw_SIMPLE_ENABLE_WARNINGS], + [ + AC_ARG_ENABLE( +@@ -170,9 +129,10 @@ AC_ARG_ENABLE( + [$ax_candidate_warnings], [WARN_CFLAGS_FOR_BUILD], + [$ax_compiler_flags_test]) + +- + popdef([_AC_LANG_ABBREV]) + ++ AC_SUBST(WARN_CFLAGS_FOR_BUILD) ++ + cross_compiling=$save_cross_compiling + ac_tool_prefix=$save_ac_tool_prefix + CC="$save_CC" diff --git a/libxcrypt.spec b/libxcrypt.spec index 7867aca..f74ec61 100644 --- a/libxcrypt.spec +++ b/libxcrypt.spec @@ -89,7 +89,7 @@ fi \ Name: libxcrypt Version: 4.4.0 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Extended crypt library for DES, MD5, Blowfish and others # For explicit license breakdown, see the @@ -105,9 +105,9 @@ Patch0002: %{url}/commit/fdeddd908b6c659b281bbef7e535f9060b5b6186.patch#/%{ Patch0003: %{url}/commit/f6fe5e6faf4a681984e5bb9d830c8006bba8dab7.patch#/%{name}-4.4.0-set_minimum_rbytes_for_NT_to_2.patch Patch0004: %{url}/commit/580a15e118ee86676ddc1b4456ae6a3f14d86296.patch#/%{name}-4.4.0-test_hmac-sha256_incremental_computation.patch Patch0005: %{url}/commit/176151db6c456c41be12f7d3a6338559d767cf9b.patch#/%{name}-4.4.0-test-crypt-gost-yescrypt_fix_static_pointer_memory_leak.patch +Patch0006: %{url}/commit/4b4aaa2241aa8b8d52e78cbf486acb0d8cb1e67d.patch#/%{name}-4.4.0-buildflags_-fno-plt.patch # Patch 3000 - 5999: Backported patches from pull requests. -Patch3000: %{url}/pull/72.patch#/%{name}-4.4.0-buildflags_-fno-plt.patch # Patch 6000 - 9999: Downstream patches. @@ -336,6 +336,9 @@ done %changelog +* Tue Dec 04 2018 Björn Esser - 4.4.0-5 +- Sync -fno-plt patch with upstream commit + * Tue Dec 04 2018 Björn Esser - 4.4.0-4 - Backport upstream commit to fix a memory leak from a static pointer