diff --git a/libraries/mbed/common/exit.c b/libraries/mbed/common/exit.c deleted file mode 100644 index edf8a710d6..0000000000 --- a/libraries/mbed/common/exit.c +++ /dev/null @@ -1,46 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed 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. - */ -#include "semihost_api.h" -#include "mbed_interface.h" -#if DEVICE_STDIO_MESSAGES -#include -#endif - -#ifdef TOOLCHAIN_GCC_CW -// TODO: Ideally, we would like to define directly "_ExitProcess" -void mbed_exit(int return_code) { -#elif defined TOOLCHAIN_GCC_ARM -void _exit(int return_code) { -#else -void exit(int return_code) { -#endif - -#if DEVICE_STDIO_MESSAGES - fflush(stdout); - fflush(stderr); -#endif - -#if DEVICE_SEMIHOST - if (mbed_interface_connected()) { - semihost_exit(); - } -#endif - if (return_code) { - mbed_die(); - } - - while (1); -} diff --git a/libraries/mbed/common/retarget.cpp b/libraries/mbed/common/retarget.cpp index a2ba7c86ce..a026682c28 100644 --- a/libraries/mbed/common/retarget.cpp +++ b/libraries/mbed/common/retarget.cpp @@ -1,5 +1,5 @@ /* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited + * Copyright (c) 2006-2015 ARM Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,11 @@ #include "FilePath.h" #include "serial_api.h" #include "toolchain.h" +#include "semihost_api.h" +#include "mbed_interface.h" +#if DEVICE_STDIO_MESSAGES +#include +#endif #include #if defined(__ARMCC_VERSION) @@ -482,6 +487,33 @@ extern "C" caddr_t _sbrk(int incr) { #endif +#ifdef TOOLCHAIN_GCC_CW +// TODO: Ideally, we would like to define directly "_ExitProcess" +extern "C" void mbed_exit(int return_code) { +#elif defined TOOLCHAIN_GCC_ARM +extern "C" void _exit(int return_code) { +#else +extern "C" void exit(int return_code) { +#endif + +#if DEVICE_STDIO_MESSAGES + fflush(stdout); + fflush(stderr); +#endif + +#if DEVICE_SEMIHOST + if (mbed_interface_connected()) { + semihost_exit(); + } +#endif + if (return_code) { + mbed_die(); + } + + while (1); +} + + namespace mbed { void mbed_set_unbuffered_stream(FILE *_file) { @@ -524,11 +556,3 @@ char* mbed_gets(char*s, int size, FILE *_file){ } } // namespace mbed - - - - - - - -