| From fcb414abb62223e66dba413d0ca86eab3ea5bbc3 Mon Sep 17 00:00:00 2001 |
| From: Alexander Kanavin <alex.kanavin@gmail.com> |
| Date: Sun, 21 Jun 2020 13:54:47 +0000 |
| Subject: [PATCH] src-gen-lock-obj.sh: add a file |
| |
| This is erroneously missing from the tarball; it will show |
| up in the next release tarball, as upstream has fixed the |
| packaging in master. |
| |
| Upstream-Status: Inappropriate |
| Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> |
| --- |
| src/gen-lock-obj.sh | 112 ++++++++++++++++++++++++++++++++++++++++++++ |
| 1 file changed, 112 insertions(+) |
| create mode 100755 src/gen-lock-obj.sh |
| |
| diff --git a/src/gen-lock-obj.sh b/src/gen-lock-obj.sh |
| new file mode 100755 |
| index 0000000..13858cf |
| --- /dev/null |
| +++ b/src/gen-lock-obj.sh |
| @@ -0,0 +1,112 @@ |
| +#! /bin/sh |
| +# |
| +# gen-lock-obj.sh - Build tool to construct the lock object. |
| +# |
| +# Copyright (C) 2020 g10 Code GmbH |
| +# |
| +# This file is part of libgpg-error. |
| +# |
| +# libgpg-error is free software; you can redistribute it and/or |
| +# modify it under the terms of the GNU Lesser General Public License |
| +# as published by the Free Software Foundation; either version 2.1 of |
| +# the License, or (at your option) any later version. |
| +# |
| +# libgpg-error 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 |
| +# Lesser General Public License for more details. |
| +# |
| +# You should have received a copy of the GNU Lesser General Public |
| +# License along with this program; if not, see <https://www.gnu.org/licenses/>. |
| +# |
| + |
| +# |
| +# Following variables should be defined to invoke this script |
| +# |
| +# CC |
| +# OBJDUMP |
| +# AWK |
| +# ac_ext |
| +# ac_object |
| +# host |
| +# LOCK_ABI_VERSION |
| +# |
| +# An example: |
| +# |
| +# LOCK_ABI_VERSION=1 host=x86_64-pc-linux-gnu host_alias=x86_64-linux-gnu \ |
| +# CC=$host_alias-gcc OBJDUMP=$host_alias-objdump ac_ext=c ac_objext=o \ |
| +# AWK=gawk ./gen-lock-obj.sh |
| +# |
| + |
| +AWK_VERSION_OUTPUT=$($AWK 'BEGIN { print PROCINFO["version"] }') |
| +if test -n "$AWK_VERSION_OUTPUT"; then |
| + # It's GNU awk, which supports PROCINFO. |
| + AWK_OPTION=--non-decimal-data |
| +fi |
| + |
| +cat <<'EOF' >conftest.$ac_ext |
| +#include <pthread.h> |
| +pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER; |
| +EOF |
| + |
| +if $CC -c conftest.$ac_ext; then : |
| + ac_mtx_size=$($OBJDUMP -j .bss -t conftest.$ac_objext \ |
| + | $AWK $AWK_OPTION ' |
| +/mtx$/ { mtx_size = int("0x" $5) } |
| +END { print mtx_size }') |
| +else |
| + echo "Can't determine mutex size" |
| + exit 1 |
| +fi |
| +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
| + |
| +cat <<EOF |
| +## lock-obj-pub.$host.h |
| +## File created by gen-lock-obj.sh - DO NOT EDIT |
| +## To be included by mkheader into gpg-error.h |
| + |
| +typedef struct |
| +{ |
| + long _vers; |
| + union { |
| + volatile char _priv[$ac_mtx_size]; |
| + long _x_align; |
| + long *_xp_align; |
| + } u; |
| +} gpgrt_lock_t; |
| + |
| +EOF |
| + |
| +# FIXME: Support different alignment conditions of: |
| +# |
| +# USE_16BYTE_ALIGNMENT |
| +# USE_DOUBLE_FOR_ALIGNMENT |
| +# USE_LONG_DOUBLE_FOR_ALIGNMENT |
| +# |
| + |
| +echo -n "#define GPGRT_LOCK_INITIALIZER {$LOCK_ABI_VERSION,{{" |
| + |
| +i=0 |
| +while test "$i" -lt $ac_mtx_size; do |
| + if test "$i" -ne 0 -a "$(( $i % 8 ))" -eq 0; then |
| + echo ' \' |
| + echo -n " " |
| + fi |
| + echo -n '0' |
| + if test "$i" -lt $(($ac_mtx_size - 1)); then |
| + echo -n ',' |
| + fi |
| + i=$(( i + 1 )) |
| +done |
| + |
| +cat <<'EOF' |
| +}}} |
| +## |
| +## Local Variables: |
| +## mode: c |
| +## buffer-read-only: t |
| +## End: |
| +## |
| +EOF |
| + |
| +exit 0 |