keymaster_stl.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. **
  3. ** Copyright 2017, The Android Open Source Project
  4. **
  5. ** Licensed under the Apache License, Version 2.0 (the "License");
  6. ** you may not use this file except in compliance with the License.
  7. ** You may obtain a copy of the License at
  8. **
  9. ** http://www.apache.org/licenses/LICENSE-2.0
  10. **
  11. ** Unless required by applicable law or agreed to in writing, software
  12. ** distributed under the License is distributed on an "AS IS" BASIS,
  13. ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. ** See the License for the specific language governing permissions and
  15. ** limitations under the License.
  16. */
  17. #include <keymaster/new>
  18. #include <stdlib.h>
  19. namespace std {
  20. struct nothrow_t {};
  21. }
  22. extern const std::nothrow_t __attribute__((weak)) std::nothrow = {};
  23. void* __attribute__((weak)) operator new(size_t __sz, const std::nothrow_t&) {
  24. return malloc(__sz);
  25. }
  26. void* __attribute__((weak)) operator new[](size_t __sz, const std::nothrow_t&) {
  27. return malloc(__sz);
  28. }
  29. void __attribute__((weak)) operator delete(void* ptr) {
  30. if (ptr)
  31. free(ptr);
  32. }
  33. void __attribute__((weak)) operator delete[](void* ptr) {
  34. if (ptr)
  35. free(ptr);
  36. }
  37. extern "C" {
  38. void __attribute__((weak)) __cxa_pure_virtual() {
  39. abort();
  40. }
  41. }