Zephyr Project API 4.1.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
utils.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2022 Intel Corporation
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_LINKER_UTILS_H_
8#define ZEPHYR_INCLUDE_LINKER_UTILS_H_
9
10#include <stdbool.h>
11
24static inline bool linker_is_in_rodata(const void *addr)
25{
26#if defined(CONFIG_LINKER_USE_PINNED_SECTION)
27 extern char lnkr_pinned_rodata_start[];
28 extern char lnkr_pinned_rodata_end[];
29
30 if (((const char *)addr >= (const char *)lnkr_pinned_rodata_start) &&
31 ((const char *)addr < (const char *)lnkr_pinned_rodata_end)) {
32 return true;
33 }
34#endif
35
36#if defined(CONFIG_ARM) || defined(CONFIG_ARC) || defined(CONFIG_X86) || defined(CONFIG_ARM64) || \
37 defined(CONFIG_NIOS2) || defined(CONFIG_RISCV) || defined(CONFIG_SPARC) || \
38 defined(CONFIG_MIPS) || defined(CONFIG_XTENSA) || defined(CONFIG_RX)
39 extern char __rodata_region_start[];
40 extern char __rodata_region_end[];
41#define RO_START __rodata_region_start
42#define RO_END __rodata_region_end
43#else
44#define RO_START 0
45#define RO_END 0
46#endif
47
48 return (((const char *)addr >= (const char *)RO_START) &&
49 ((const char *)addr < (const char *)RO_END));
50
51#undef RO_START
52#undef RO_END
53}
54
55#endif /* ZEPHYR_INCLUDE_LINKER_UTILS_H_ */
#define RO_START
static bool linker_is_in_rodata(const void *addr)
Check if address is in read only section.
Definition utils.h:24
#define RO_END