zephyr/kernel/main_weak.c
Keith Packard fc076f5a1d kernel: Switch main return type from void to int
As both C and C++ standards require applications running under an OS to
return 'int', adapt that for Zephyr to align with those standard. This also
eliminates errors when building with clang when not using -ffreestanding,
and reduces the need for compiler flags to silence warnings for both clang
and gcc

Signed-off-by: Keith Packard <keithp@keithp.com>
2023-04-14 07:49:41 +09:00

31 lines
951 B
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>
int __weak main(void)
{
/* NOP default main() if the application does not provide one. */
arch_nop();
return 0;
}