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
-    }
-}