summaryrefslogtreecommitdiff
path: root/sal
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2016-12-09 21:42:04 +0100
committerStephan Bergmann <sbergman@redhat.com>2016-12-12 09:16:34 +0000
commitcfd2691e5bf398304d7816227b933e53907b6204 (patch)
treebad8841e992dddc11a318cfa0b0d574570e739d9 /sal
parentd6f2dd831a37ce214c05ed558c4fef2b76b9b121 (diff)
[API CHANGE] Remove salcpprt static library
...containing replacements for global operator new/delete (that can be linked into executables), but which is no longer used. The mail thread starting at <https://lists.freedesktop.org/archives/libreoffice/2012-March/028690.html> "operator new no longer routes through rtl_AllocMemory in libsalcpprt under gbuild link rules" has the details of how this was used on some platforms (but not on others) before the switch to gbuild, and has been "lost" ever since---but apparently a loss not mourned much over the years. For the SDK, c5f974287fd04bb529de145113133b9e35687702 "INTEGRATION: CWS jsc3: #i62434# copy libsalcpprt.a" added the library (under Linux) and 6db9c5af960f9787e33e4addc56bddbb1695a402 "INTEGRATION: CWS jsc3: #i62434# extend link options for executbales to link libsalcpprt.a, LINUX only" added its use to odk/settings/settings.mk, but fc0ca57f2cd649c6330171445a06b80e2143a0e9 "INTEGRATION: CWS jsc21" removed that use again (for no documented reason). So this is an incompatible change, but unlikely to actually affect any users of the SDK. Change-Id: Ia38b4c439f21fca3f5d9af7d1a34054e992054e9 Reviewed-on: https://gerrit.libreoffice.org/31810 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'sal')
-rw-r--r--sal/Module_sal.mk1
-rw-r--r--sal/StaticLibrary_salcpprt.mk17
-rw-r--r--sal/cpprt/operators_new_delete.cxx232
3 files changed, 0 insertions, 250 deletions
diff --git a/sal/Module_sal.mk b/sal/Module_sal.mk
index cea7f8950baa..46ca260b6c5f 100644
--- a/sal/Module_sal.mk
+++ b/sal/Module_sal.mk
@@ -18,7 +18,6 @@ $(eval $(call gb_Module_add_targets,sal,\
Library_sal_textenc) \
$(if $(filter $(OS),WNT), \
Library_uwinapi) \
- StaticLibrary_salcpprt \
))
ifneq (,$(filter DESKTOP,$(BUILD_TYPE)))
diff --git a/sal/StaticLibrary_salcpprt.mk b/sal/StaticLibrary_salcpprt.mk
deleted file mode 100644
index 9127a8a72e28..000000000000
--- a/sal/StaticLibrary_salcpprt.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-
-$(eval $(call gb_StaticLibrary_StaticLibrary,salcpprt))
-
-$(eval $(call gb_StaticLibrary_add_exception_objects,salcpprt, \
- sal/cpprt/operators_new_delete \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/sal/cpprt/operators_new_delete.cxx b/sal/cpprt/operators_new_delete.cxx
deleted file mode 100644
index a8d77eb6f19d..000000000000
--- a/sal/cpprt/operators_new_delete.cxx
+++ /dev/null
@@ -1,232 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include <algorithm>
-#include <cstddef>
-#include <new>
-#include <string.h>
-
-#include <config_global.h>
-#include <osl/diagnose.h>
-#include <rtl/alloc.h>
-
-// AllocatorTraits
-
-namespace
-{
-
-struct AllocatorTraits
-{
- typedef char const signature_type[8];
- const signature_type & m_signature;
-
- explicit AllocatorTraits (signature_type const & s)
- : m_signature (s)
- {}
-
- static std::size_t size (std::size_t n)
- {
- n = std::max(n, std::size_t(1));
-#if OSL_DEBUG_LEVEL > 0
- n += sizeof(signature_type);
-#endif /* OSL_DEBUG_LEVEL */
- return n;
- }
-
- void* init (void * p) const
- {
-#if OSL_DEBUG_LEVEL > 0
- memcpy (p, m_signature, sizeof(signature_type));
- p = static_cast<char*>(p) + sizeof(signature_type);
-#else
- (void) this; // silence loplugin:staticmethods
-#endif /* OSL_DEBUG_LEVEL */
- return p;
- }
-
- void* fini (void * p) const
- {
-#if OSL_DEBUG_LEVEL > 0
- p = static_cast<char*>(p) - sizeof(signature_type);
- if (memcmp (p, m_signature, sizeof(signature_type)) != 0)
- {
- OSL_FAIL("operator delete mismatch");
- }
-#else
- (void) this; // silence loplugin:staticmethods
-#endif /* OSL_DEBUG_LEVEL */
- return p;
- }
-};
-
-struct VectorTraits : public AllocatorTraits
-{
- static const signature_type g_signature;
-
- VectorTraits()
- : AllocatorTraits (g_signature)
- {}
-};
-
-struct ScalarTraits : public AllocatorTraits
-{
- static const signature_type g_signature;
-
- ScalarTraits()
- : AllocatorTraits (g_signature)
- {}
-};
-
-const AllocatorTraits::signature_type VectorTraits::g_signature = "new[]()";
-const AllocatorTraits::signature_type ScalarTraits::g_signature = "new() ";
-
-} // anonymous namespace
-
-// Allocator
-
-static void default_handler()
-{
- // Multithreading race in 'std::set_new_handler()' call sequence below.
- throw std::bad_alloc();
-}
-
-static void* allocate (
- std::size_t n, AllocatorTraits const & rTraits)
-{
- n = AllocatorTraits::size (n);
- for (;;)
- {
- void * p = rtl_allocateMemory (sal_Size(n));
- if (p != nullptr)
- return rTraits.init (p);
-
- std::new_handler d = default_handler, f = std::set_new_handler (d);
- if (f != d)
- std::set_new_handler (f);
-
- if (f == nullptr)
- throw std::bad_alloc();
- (*f)();
- }
-}
-
-static void* allocate_nothrow (
- std::size_t n, AllocatorTraits const & rTraits)
-{
- try
- {
- return allocate (n, rTraits);
- }
- catch (std::bad_alloc const &)
- {
- return nullptr;
- }
-}
-
-static void deallocate (void * p, AllocatorTraits const & rTraits)
-{
- if (p)
- {
- rtl_freeMemory (rTraits.fini(p));
- }
-}
-
-// T * p = new T; delete p;
-
-void* SAL_CALL operator new (std::size_t n)
-#if !defined _MSC_VER
- throw (std::bad_alloc)
-#endif
-{
- return allocate (n, ScalarTraits());
-}
-
-void SAL_CALL operator delete (void * p) throw ()
-{
- deallocate (p, ScalarTraits());
-}
-
-#if HAVE_CXX14_SIZED_DEALLOCATION
-#if defined __clang__
-#pragma GCC diagnostic push // as happens on Mac OS X:
-#pragma GCC diagnostic ignored "-Wimplicit-exception-spec-mismatch"
-#endif
-void SAL_CALL operator delete (void * p, std::size_t) noexcept
-{
- deallocate (p, ScalarTraits());
-}
-#if defined __clang__
-#pragma GCC diagnostic pop
-#endif
-#endif
-
-// T * p = new(nothrow) T; delete(nothrow) p;
-
-void* SAL_CALL operator new (std::size_t n, std::nothrow_t const &) throw ()
-{
- return allocate_nothrow (n, ScalarTraits());
-}
-
-void SAL_CALL operator delete (void * p, std::nothrow_t const &) throw ()
-{
- deallocate (p, ScalarTraits());
-}
-
-// T * p = new T[n]; delete[] p;
-
-void* SAL_CALL operator new[] (std::size_t n) throw (std::bad_alloc)
-{
- return allocate (n, VectorTraits());
-}
-
-void SAL_CALL operator delete[] (void * p)
-#if !defined _MSC_VER || _MSC_VER >= 1900
- throw ()
-#endif
-{
- deallocate (p, VectorTraits());
-}
-
-#if HAVE_CXX14_SIZED_DEALLOCATION
-#if defined __clang__
-#pragma GCC diagnostic push // as happens on Mac OS X:
-#pragma GCC diagnostic ignored "-Wimplicit-exception-spec-mismatch"
-#endif
-void SAL_CALL operator delete[] (void * p, std::size_t) noexcept
-{
- deallocate (p, VectorTraits());
-}
-#if defined __clang__
-#pragma GCC diagnostic pop
-#endif
-#endif
-
-// T * p = new(nothrow) T[n]; delete(nothrow)[] p;
-
-void* SAL_CALL operator new[] (std::size_t n, std::nothrow_t const &) throw ()
-{
- return allocate_nothrow (n, VectorTraits());
-}
-
-void SAL_CALL operator delete[] (void * p, std::nothrow_t const &) throw ()
-{
- deallocate (p, VectorTraits());
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */