This patch does several things, most notably it changes the semantics
of CONFIG_DEBUG. CONFIG_DEBUG continues to behave as a vaguely defined
"debug mode" that enables printf's, -Og, etc. but now the user may
choose to be in "debug mode" while using a different optimization
level than -Og.
Tp support this a new config is defined to enable -Og;
CONFIG_DEBUG_OPTIMIZATIONS.
Additionally CONFIG_SIZE_OPTIMIZATIONS is introduced to allow the user
to explicitly request optimizing for size instead of relying on
defaulting to it.
The three config's {NO,SIZE,DEBUG}_OPTIMIZATIONS are now organized in
a Kconfig choice to ensure that at most one can be enabled at a time.
Finally, selected users of CONFIG_DEBUG have been ported to use one of
the optimizations configs when it was clear from usage that the
intention was to behave differently when using a different
optimization level and not when in "debug mode".
Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
27 lines
805 B
Plaintext
27 lines
805 B
Plaintext
#ifndef KOBJECT_TEXT_AREA
|
|
#if ! defined(CONFIG_SIZE_OPTIMIZATIONS) || defined(CONFIG_STACK_CANARIES)
|
|
#define KOBJECT_TEXT_AREA 256
|
|
#else
|
|
#define KOBJECT_TEXT_AREA 128
|
|
#endif
|
|
#endif
|
|
|
|
#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 = .;
|
|
#ifndef LINKER_PASS2
|
|
PROVIDE(_k_object_find = .);
|
|
PROVIDE(_k_object_wordlist_foreach = .);
|
|
#endif
|
|
. += KOBJECT_TEXT_AREA - (_kobject_text_area_end - _kobject_text_area_start);
|
|
#endif /* CONFIG_USERSPACE */
|
|
|