You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by pk...@apache.org on 2022/05/12 21:13:08 UTC
[incubator-nuttx] branch master updated: libs: Move aeabi_atexit from libxx/ to libc/machine/arm/
This is an automated email from the ASF dual-hosted git repository.
pkarashchenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new f7f8a21486 libs: Move aeabi_atexit from libxx/ to libc/machine/arm/
f7f8a21486 is described below
commit f7f8a21486bc78e667fd3b244b997aa999c06942
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Wed May 11 22:21:25 2022 +0800
libs: Move aeabi_atexit from libxx/ to libc/machine/arm/
Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
libs/libc/machine/arm/Make.defs | 4 +++
libs/libc/machine/arm/aeabi_atexit.c | 54 +++++++++++++++++++++++++++++++
libs/libxx/Makefile | 4 ---
libs/libxx/libxx_eabi_atexit.cxx | 62 ------------------------------------
4 files changed, 58 insertions(+), 66 deletions(-)
diff --git a/libs/libc/machine/arm/Make.defs b/libs/libc/machine/arm/Make.defs
index a847f74924..5663cfc7a5 100644
--- a/libs/libc/machine/arm/Make.defs
+++ b/libs/libc/machine/arm/Make.defs
@@ -47,6 +47,10 @@ CSRCS += aeabi_memcpy.c aeabi_memcpy4.c aeabi_memcpy8.c
CSRCS += aeabi_memmove.c aeabi_memmove4.c aeabi_memmove8.c
CSRCS += aeabi_memset.c aeabi_memset4.c aeabi_memset8.c
+ifneq ($(CONFIG_LIBSUPCXX),y)
+CSRCS += aeabi_atexit.c
+endif
+
ifeq ($(CONFIG_CXX_EXCEPTION),y)
CSRCS += gnu_unwind_find_exidx.c
endif
diff --git a/libs/libc/machine/arm/aeabi_atexit.c b/libs/libc/machine/arm/aeabi_atexit.c
new file mode 100644
index 0000000000..4d28606d44
--- /dev/null
+++ b/libs/libc/machine/arm/aeabi_atexit.c
@@ -0,0 +1,54 @@
+/****************************************************************************
+ * libs/libc/machine/arm/aeabi_atexit.c
+ *
+ * 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/compiler.h>
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+int __cxa_atexit(void (*func)(void *), void *object, void *dso_handle);
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: __aeabi_atexit
+ *
+ * Description:
+ * Registers static object destructors. Normally atexit(f) should call
+ * __aeabi_atexit (NULL, f, NULL). But in the usage model here, static
+ * constructors are initialized at power up and are never destroyed
+ * because they have global scope and must persist for as long as the
+ * embedded device is powered on.
+ *
+ ****************************************************************************/
+
+int weak_function __aeabi_atexit(void *object,
+ void (*func)(void *),
+ void *dso_handle)
+{
+ return __cxa_atexit(func, object, dso_handle);
+}
diff --git a/libs/libxx/Makefile b/libs/libxx/Makefile
index 3e0e1c8327..50cf35aaad 100644
--- a/libs/libxx/Makefile
+++ b/libs/libxx/Makefile
@@ -41,10 +41,6 @@ ifeq ($(CONFIG_LIBCXXABI),y)
include libcxxabi.defs
endif
-ifneq ($(CONFIG_LIBSUPCXX),y)
-CXXSRCS += libxx_eabi_atexit.cxx
-endif
-
CXXSRCS += libxx_cxa_atexit.cxx
# Object Files
diff --git a/libs/libxx/libxx_eabi_atexit.cxx b/libs/libxx/libxx_eabi_atexit.cxx
deleted file mode 100644
index cdbc74d34a..0000000000
--- a/libs/libxx/libxx_eabi_atexit.cxx
+++ /dev/null
@@ -1,62 +0,0 @@
-//***************************************************************************
-// libs/libxx/libxx_eabi_atexit.cxx
-//
-// 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
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations
-//
-//***************************************************************************
-
-//***************************************************************************
-// Included Files
-//***************************************************************************
-
-#include <nuttx/config.h>
-#include <cstdlib>
-
-#include "libxx.hxx"
-
-//***************************************************************************
-// Pre-processor Definitions
-//***************************************************************************
-
-//***************************************************************************
-// Private Data
-//***************************************************************************
-
-//***************************************************************************
-// Public Functions
-//***************************************************************************
-
-extern "C"
-{
- //*************************************************************************
- // Name: __aeabi_atexit
- //
- // Description:
- // Registers static object destructors. Normally atexit(f) should call
- // __aeabi_atexit (NULL, f, NULL). But in the usage model here, static
- // constructors are initialized at power up and are never destroyed
- // because they have global scope and must persist for as long as the
- // embedded device is powered on.
- //
- // Reference:
- // http://infocenter.arm.com/help/topic/com.arm.doc.ihi0041c/IHI0041C_cppabi.pdf
- //
- //*************************************************************************
-
- int __aeabi_atexit(FAR void *object, __cxa_exitfunc_t func, FAR void *dso_handle)
- {
- return __cxa_atexit(func, object, dso_handle); // 0 ? OK; non-0 ? failed
- }
-}