aboutsummaryrefslogtreecommitdiffstats
path: root/configure.ac
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2018-01-14 02:56:28 +0100
committerJay Berkenbilt <ejb@ql.org>2018-01-15 02:09:20 +0100
commitfc74d67fab3c88cbd51efb0bca76004b70c7e8bc (patch)
treeba3fdadded225116e2a432fb2c70dd30130a8e9f /configure.ac
parentae854950b939a9208998e823b41a31ea1ff10fd7 (diff)
downloadqpdf-fc74d67fab3c88cbd51efb0bca76004b70c7e8bc.tar.zst
Correct handling of elf symbol versioning
We were putting the value of LT_CURRENT in the versioned symbol map instead of the soname major version, which was creating binary incompatibility where none was present. Unfortunately, this bug is already out there for qpdf 7.0.0, so we'll have to work around it for now.
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac14
1 files changed, 14 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index cd395d91..c28fedc6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -35,6 +35,20 @@ LT_REVISION=0
AC_SUBST(LT_CURRENT)
AC_SUBST(LT_REVISION)
AC_SUBST(LT_AGE)
+LT_SONAME=$(expr $LT_CURRENT - $LT_AGE)
+# BEGIN LT_SONAME WORKAROUND
+# For elf versioned symbols, get the soname version. Unfortunately,
+# there was a mistake at one point where we had 19 when we should have
+# had 18, so make this a special case until the next ABI change. At
+# that point, just remove the code deliminated by the LT_SONAME
+# WORKAROUND comments.
+if test $LT_SONAME = 18; then
+ LT_SONAME=19
+elif test $LT_SONAME -gt 18; then
+ AC_MSG_ERROR(Remove LT_SONAME workaround in configure.ac)
+fi
+# END LT_SONAME WORKAROUND
+AC_SUBST(LT_SONAME)
AC_ARG_ENABLE(insecure-random,
AS_HELP_STRING([--enable-insecure-random],