blob: 0c25f764d3f7f6f41c2f5844e272e5f85ec6282d [file] [log] [blame]
Torsten Rasmussen25e1b122021-05-31 14:59:23 +02001/*
2 * Copyright (c) 2010-2014 Wind River Systems, Inc.
3 * Copyright (c) 2021 Nordic Semiconductor ASA
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8/* Linkers may treat weak functions differently if they are located within
9 * the same object that calls the symbol or not.
10 *
11 * For example, when using armlink, then if the weak symbol is inside the object
12 * referring to it the weak symbol will be used. This will result in the symbol
13 * being multiply defined because both the weak and strong symbols are used.
14 *
15 * To GNU ld, it doesn't matter if the weak symbol is placed in the same object
16 * which uses the weak symbol. GNU ld will always link to the strong version.
17 *
18 * Having the weak main symbol in an independent file ensures that it will be
19 * correctly treated by multiple linkers.
20 */
21
22#include <kernel_internal.h>
23
Stephanos Ioannidisfa5fd412022-11-05 00:22:25 +090024int __weak main(void)
Torsten Rasmussen25e1b122021-05-31 14:59:23 +020025{
26 /* NOP default main() if the application does not provide one. */
27 arch_nop();
Stephanos Ioannidisfa5fd412022-11-05 00:22:25 +090028
Stephanos Ioannidisfa5fd412022-11-05 00:22:25 +090029 return 0;
Torsten Rasmussen25e1b122021-05-31 14:59:23 +020030}