LCOV - code coverage report
Current view: top level - zephyr/linker - utils.h Coverage Total Hit
Test: new.info Lines: 25.0 % 4 1
Test Date: 2025-03-11 06:50:38

            Line data    Source code
       1            0 : /*
       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              : 
      12              : /**
      13              :  * @brief Check if address is in read only section.
      14              :  *
      15              :  * Note that this may return false if the address lies outside
      16              :  * the compiler's default read only sections (e.g. .rodata
      17              :  * section), depending on the linker script used. This also
      18              :  * applies to constants with explicit section attributes.
      19              :  *
      20              :  * @param addr Address.
      21              :  *
      22              :  * @return True if address identified within read only section.
      23              :  */
      24            1 : static 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) || \
      37              :         defined(CONFIG_ARM64) || defined(CONFIG_NIOS2) || \
      38              :         defined(CONFIG_RISCV) || defined(CONFIG_SPARC) || \
      39              :         defined(CONFIG_MIPS) || defined(CONFIG_XTENSA)
      40              :         extern char __rodata_region_start[];
      41              :         extern char __rodata_region_end[];
      42              :         #define RO_START __rodata_region_start
      43              :         #define RO_END __rodata_region_end
      44              : #else
      45            0 :         #define RO_START 0
      46            0 :         #define RO_END 0
      47              : #endif
      48              : 
      49              :         return (((const char *)addr >= (const char *)RO_START) &&
      50              :                 ((const char *)addr < (const char *)RO_END));
      51              : 
      52              :         #undef RO_START
      53              :         #undef RO_END
      54              : }
      55              : 
      56              : #endif /* ZEPHYR_INCLUDE_LINKER_UTILS_H_ */
        

Generated by: LCOV version 2.0-1