Skip to content
Snippets Groups Projects
Commit 6c373345 authored by Roberto Vargas's avatar Roberto Vargas
Browse files

Add atexit function to libc


We had exit but we didn't have atexit, and we were calling panic and
tf_printf from exit, which generated a dependency from exit to them.
Having atexit allows to set a different function pointer in every image.

Change-Id: I95b9556d680d96249ed3b14da159b6f417da7661
Signed-off-by: default avatarRoberto Vargas <roberto.vargas@arm.com>
parent ea7a57a3
No related branches found
No related tags found
No related merge requests found
......@@ -17,6 +17,7 @@
#include <platform_def.h>
#include <stdint.h>
/*******************************************************************************
* This function is responsible to:
* Load SCP_BL2U if platform has defined SCP_BL2U_BASE
......
......@@ -5,6 +5,7 @@
*/
#include <debug.h>
#include <stdlib.h>
/* mbed TLS headers */
#include <mbedtls/memory_buffer_alloc.h>
......@@ -23,6 +24,12 @@
#endif
static unsigned char heap[MBEDTLS_HEAP_SIZE];
static void cleanup(void)
{
ERROR("EXIT from BL2\n");
panic();
}
/*
* mbed TLS initialization function
*/
......@@ -31,6 +38,9 @@ void mbedtls_init(void)
static int ready;
if (!ready) {
if (atexit(cleanup))
panic();
/* Initialize the mbed TLS heap */
mbedtls_memory_buffer_alloc_init(heap, MBEDTLS_HEAP_SIZE);
......
......@@ -4,11 +4,23 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <debug.h>
#include <stdlib.h>
void exit(int v)
static void (*exitfun)(void);
void exit(int status)
{
ERROR("EXIT\n");
panic();
if (exitfun)
(*exitfun)();
for (;;)
;
}
int atexit(void (*fun)(void))
{
if (exitfun)
return -1;
exitfun = fun;
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment