Help older linkers (Ubuntu 18.04, Fedora 31)

Fixes a regression from commit 429e6e6efbfbc65d36452cbf8b3a25740a1dc8bc
("osl::Mutex->std::mutex in OInputStreamHelper"), which results in
failed linking with some older toolchains:

/usr/bin/ld.gold: error: workdir/CxxObject/xmlsecurity/source/helper/UriBindingHelper.o:
  requires dynamic R_X86_64_PC32 reloc against '_ZThn40_N3utl18OInputStreamHelper7acquireEv'
  which may overflow at runtime; recompile with -fPIC
include/com/sun/star/uno/Reference.hxx:240: error: undefined reference to
  'non-virtual thunk to utl::OInputStreamHelper::acquire()'
collect2: error: ld returned 1 exit status
xmlsecurity/Library_xmlsecurity.mk:10: recipe for target
  'symbols/instdir/program/libxmlsecurity.so' failed

Known problematic setups are my Ubuntu 18.04 build schroot and
Caolán's Fedora 31 VM to run Coverity.

Change-Id: I40f0734a0cb9131193abf21ba95dc63816b5c1d8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120426
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/compilerplugins/clang/unnecessaryoverride.cxx b/compilerplugins/clang/unnecessaryoverride.cxx
index 10ab158..5013894 100644
--- a/compilerplugins/clang/unnecessaryoverride.cxx
+++ b/compilerplugins/clang/unnecessaryoverride.cxx
@@ -95,6 +95,8 @@ public:
        // HAVE_ODBC_ADMINISTRATION
        if (loplugin::isSamePathname(fn, SRCDIR "/dbaccess/source/ui/dlg/dsselect.cxx"))
            return false;
        if (loplugin::isSamePathname(fn, SRCDIR "/unotools/source/streaming/streamhelper.cxx"))
            return false;
        return true;
    }

diff --git a/include/unotools/streamhelper.hxx b/include/unotools/streamhelper.hxx
index 26c7aa3..5d0a379 100644
--- a/include/unotools/streamhelper.hxx
+++ b/include/unotools/streamhelper.hxx
@@ -57,6 +57,9 @@ public:
    virtual void SAL_CALL seek( sal_Int64 location ) override;
    virtual sal_Int64 SAL_CALL getPosition(  ) override;
    virtual sal_Int64 SAL_CALL getLength(  ) override;

    // workaround for Ubuntu 18.04 / Fedora 31 (Coverity VM) build with std::mutex; must not be inline!
    virtual void SAL_CALL acquire() SAL_NOEXCEPT override;
};

}   // namespace utl
diff --git a/unotools/source/streaming/streamhelper.cxx b/unotools/source/streaming/streamhelper.cxx
index 6382035..b5f07e6 100644
--- a/unotools/source/streaming/streamhelper.cxx
+++ b/unotools/source/streaming/streamhelper.cxx
@@ -113,6 +113,11 @@ void SAL_CALL OInputStreamHelper::closeInput()
    m_xLockBytes = nullptr;
}

void SAL_CALL OInputStreamHelper::acquire() SAL_NOEXCEPT
{
    cppu::WeakImplHelper<css::io::XInputStream, css::io::XSeekable>::acquire();
}

} // namespace utl

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */