LCOV - code coverage report
Current view: top level - zephyr/linker - linker-tool-lld.h Hit Total Coverage
Test: new.info Lines: 3 3 100.0 %
Date: 2024-12-22 00:14:23

          Line data    Source code
       1           1 : /*
       2             :  * Copyright (c) 2023, Google, Inc.
       3             :  *
       4             :  * SPDX-License-Identifier: Apache-2.0
       5             :  */
       6             : 
       7             : /**
       8             :  * @file
       9             :  * @brief LLVM LLD linker defs
      10             :  *
      11             :  * This header file defines the necessary macros used by the linker script for
      12             :  * use with the LLD linker.
      13             :  */
      14             : 
      15             : #ifndef ZEPHYR_INCLUDE_LINKER_LINKER_TOOL_LLD_H_
      16             : #define ZEPHYR_INCLUDE_LINKER_LINKER_TOOL_LLD_H_
      17             : 
      18             : #include <zephyr/linker/linker-tool-gcc.h>
      19             : 
      20             : /**
      21             :  * @def SECTION_PROLOGUE
      22             :  *
      23             :  * The SECTION_PROLOGUE() macro is used to define the beginning of a section.
      24             :  *
      25             :  * When --omagic (-N) option is provided to LLD then only the first output
      26             :  * section of given region has aligned LMA (by default, without --omagic, LLD
      27             :  * aligns LMA and VMA of every section to the same value) and the difference
      28             :  * between VMA addresses (0 is this is the first section) is added.
      29             :  * The difference between LMA and VMA is constant for every section, so this
      30             :  * emulates ALIGN_WITH_INPUT option present in GNU LD (required by XIP systems).
      31             :  *
      32             :  * The --omagic flag is defined in cmake/linker/lld/target_baremetal.cmake
      33             :  *
      34             :  * @param name Name of the output section
      35             :  * @param options Section options, such as (NOLOAD), or left blank
      36             :  * @param align Alignment directives, such as SUBALIGN(). May be blank.
      37             :  */
      38             : #undef SECTION_PROLOGUE
      39           1 : #define SECTION_PROLOGUE(name, options, align) \
      40             :         name options : align
      41             : 
      42             : /**
      43             :  * @def SECTION_DATA_PROLOGUE
      44             :  *
      45             :  * Same as for SECTION_PROLOGUE(), except that this one must be used
      46             :  * for data sections which on XIP platforms will have differing
      47             :  * virtual and load addresses (i.e. they'll be copied into RAM at
      48             :  * program startup).  Such a section must also use
      49             :  * GROUP_DATA_LINK_IN to specify the correct output load address.
      50             :  *
      51             :  * This is equivalent to SECTION_PROLOGUE() when linking using LLD.
      52             :  *
      53             :  * @param name Name of the output section
      54             :  * @param options Section options, or left blank
      55             :  * @param align Alignment directives, such as SUBALIGN(). May be blank.
      56             :  */
      57             : #undef SECTION_DATA_PROLOGUE
      58           1 : #define SECTION_DATA_PROLOGUE(name, options, align) \
      59             :         SECTION_PROLOGUE(name, options, align)
      60             : 
      61             : #endif /* ZEPHYR_INCLUDE_LINKER_LINKER_TOOL_LLD_H_ */

Generated by: LCOV version 1.14