1/* SPDX-License-Identifier: Apache-2.0 */ 2 3#ifdef CONFIG_USERSPACE 4 /* We need to reserve room for the gperf generated hash functions. 5 * Fortunately, unlike the data tables, the size of the code is 6 * reasonably predictable. 7 * 8 * The linker will error out complaining that the location pointer 9 * is moving backwards if the reserved room isn't large enough. 10 */ 11 _kobject_text_area_start = .; 12 *(".kobject_data.literal*") 13 *(".kobject_data.text*") 14 _kobject_text_area_end = .; 15 _kobject_text_area_used = _kobject_text_area_end - _kobject_text_area_start; 16#ifndef LINKER_ZEPHYR_FINAL 17#ifdef CONFIG_DYNAMIC_OBJECTS 18 PROVIDE(z_object_gperf_find = .); 19 PROVIDE(z_object_gperf_wordlist_foreach = .); 20#else 21 PROVIDE(z_object_find = .); 22 PROVIDE(z_object_wordlist_foreach = .); 23#endif 24#endif 25 26 /* In a valid build the MAX function will always evaluate to the 27 second argument below, but to give the user a good error message 28 when the area overflows we need to temporarily corrupt the 29 location counter, and then detect the overflow with an assertion 30 later on. */ 31 32 . = MAX(., _kobject_text_area_start + CONFIG_KOBJECT_TEXT_AREA); 33 34 ASSERT( 35 CONFIG_KOBJECT_TEXT_AREA >= _kobject_text_area_used, 36"Reserved space for kobject text area is too small. \ 37Please change CONFIG_KOBJECT_TEXT_AREA to a larger number." 38 ); 39#endif /* CONFIG_USERSPACE */ 40