zephyr/include/linker/kobject-text.ld
Eugeniy Paltsev 243120da0c linker: kobject-text: align multiline string definition syntax
Align multiline string definition syntax in ASSERT in linker
script. This allows to use linker script with ASSERT provided
by linker (i.e GNU toolchain) or dummy ASSERT defined as
preprocessor macros (ARC MWDT toolchain).

Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
2020-09-18 09:49:09 -04:00

43 lines
1.4 KiB
Plaintext

/* SPDX-License-Identifier: Apache-2.0 */
#ifdef CONFIG_USERSPACE
/* We need to reserve room for the gperf generated hash functions.
* Fortunately, unlike the data tables, the size of the code is
* reasonably predictable.
*
* The linker will error out complaining that the location pointer
* is moving backwards if the reserved room isn't large enough.
*/
_kobject_text_area_start = .;
*(".kobject_data.text*")
_kobject_text_area_end = .;
_kobject_text_area_used = _kobject_text_area_end - _kobject_text_area_start;
#ifndef LINKER_PASS2
#ifdef CONFIG_DYNAMIC_OBJECTS
PROVIDE(z_object_gperf_find = .);
PROVIDE(z_object_gperf_wordlist_foreach = .);
#else
PROVIDE(z_object_find = .);
PROVIDE(z_object_wordlist_foreach = .);
#endif
#endif
/* In a valid build the MAX function will always evaluate to the
second argument below, but to give the user a good error message
when the area overflows we need to temporarily corrupt the
location counter, and then detect the overflow with an assertion
later on. */
. = MAX(., _kobject_text_area_start + CONFIG_KOBJECT_TEXT_AREA);
ASSERT(
CONFIG_KOBJECT_TEXT_AREA >= _kobject_text_area_used,
"The configuration system has incorrectly set \
'CONFIG_KOBJECT_TEXT_AREA' to \
CONFIG_KOBJECT_TEXT_AREA, which is not big enough. You must \
through Kconfig either disable 'CONFIG_USERSPACE', or set \
'CONFIG_KOBJECT_TEXT_AREA' to a value larger than \
CONFIG_KOBJECT_TEXT_AREA."
);
#endif /* CONFIG_USERSPACE */