|  | # Copyright Microsoft and CHERIoT Contributors. | 
|  | # SPDX-License-Identifier: MIT | 
|  |  | 
|  | SECTIONS | 
|  | { | 
|  | . = 0; | 
|  | .compartment_export_table : ALIGN(8) | 
|  | { | 
|  | # Space for the compartment's PCC and GDC. | 
|  | . = . + 16; | 
|  | # Space for the error handler. | 
|  | . = . + 4; | 
|  | # Array of compartment exports | 
|  | *(.compartment_exports); | 
|  | } | 
|  | # Lay out the compartment imports section.  This will end up on PCC. | 
|  | .compartment_import_table : ALIGN(8) | 
|  | { | 
|  | # Array of compartment imports. | 
|  | HIDDEN(__compartment_pcc_start = .); | 
|  | # The first import table entry is the compartment switcher. | 
|  | HIDDEN(.compartment_switcher = .); | 
|  | . = . + 8; | 
|  | *(.compartment_imports .compartment_imports.*); | 
|  | } | 
|  | # Lay out the code | 
|  | .text : | 
|  | { | 
|  | # HIDDEN(__compartment_code_start = .); | 
|  | *(.text .text.*); | 
|  | } | 
|  | # Read-only data that will end up in the compartment's PCC. | 
|  | .rodata : | 
|  | { | 
|  | *(.rodata .rodata.*); | 
|  | *(.data.rel.ro .data.rel.ro.*); | 
|  | } | 
|  | # BSS remains in a separate section so that we can find it later. | 
|  | .bss : | 
|  | { | 
|  | *(.sbss .sbss.*); | 
|  | *(.bss .bss.*); | 
|  | } | 
|  | # Statically allocated sealed objects | 
|  | .sealed_objects : | 
|  | { | 
|  | *(.sealed_objects .sealed_objects.*); | 
|  | } | 
|  | # Throw some stuff away that we don't need. | 
|  | /DISCARD/ : | 
|  | { | 
|  | *(.comment); | 
|  | # Libraries may not have data sections. | 
|  | *(.data .data.*); | 
|  | *(.sdata .sdata.*); | 
|  | } | 
|  | } |