37 lines
1.0 KiB
C
37 lines
1.0 KiB
C
/*
|
|
* Copyright (c) 2010-2014 Wind River Systems, Inc.
|
|
* Copyright (c) 2021 Nordic Semiconductor ASA
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/* Linkers may treat weak functions differently if they are located within
|
|
* the same object that calls the symbol or not.
|
|
*
|
|
* For example, when using armlink, then if the weak symbol is inside the object
|
|
* referring to it the weak symbol will be used. This will result in the symbol
|
|
* being multiply defined because both the weak and strong symbols are used.
|
|
*
|
|
* To GNU ld, it doesn't matter if the weak symbol is placed in the same object
|
|
* which uses the weak symbol. GNU ld will always link to the strong version.
|
|
*
|
|
* Having the weak main symbol in an independent file ensures that it will be
|
|
* correctly treated by multiple linkers.
|
|
*/
|
|
|
|
#include <kernel_internal.h>
|
|
|
|
#ifdef CONFIG_CPP_MAIN
|
|
int __weak main(void)
|
|
#else
|
|
void __weak main(void)
|
|
#endif
|
|
{
|
|
/* NOP default main() if the application does not provide one. */
|
|
arch_nop();
|
|
|
|
#ifdef CONFIG_CPP_MAIN
|
|
return 0;
|
|
#endif
|
|
}
|