blob: b8bdcff01821be5c1a89f720486f79a33799595d [file] [log] [blame] [edit]
# 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.*);
}
}