/* 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 */