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