blob: 6adecbafaa219c7d36847ee7a11fd9566a8cef4b [file] [log] [blame]
. = @code_start@;
_start = .;
.loader_start :
{
*(.loader_start);
}
.compartment_export_tables : ALIGN(8)
{
# The scheduler and allocator's export tables are at the start.
.scheduler_export_table = .;
*.scheduler.compartment(.compartment_export_table);
.scheduler_export_table_end = .;
.allocator_export_table = ALIGN(8);
*/cheriot.allocator.compartment(.compartment_export_table);
.allocator_export_table_end = .;
@compartment_exports@
}
__compart_pccs = .;
compartment_switcher_code : CAPALIGN
{
.compartment_switcher_start = .;
*/switcher/entry.S.o(.text);
}
.compartment_switcher_end = .;
scheduler_code : CAPALIGN
{
.scheduler_start = .;
*.scheduler.compartment(.compartment_sealing_keys);
.scheduler_import_start = .;
*.scheduler.compartment(.compartment_import_table);
.scheduler_import_end = .;
*.scheduler.compartment(.text .text.* .rodata .rodata.* .data.rel.ro);
}
.scheduler_end = .;
allocator_code : CAPALIGN
{
.allocator_start = .;
*/cheriot.allocator.compartment(.compartment_sealing_keys);
.allocator_import_start = .;
*/cheriot.allocator.compartment(.compartment_import_table);
.allocator_import_end = .;
allocator.compartment(.text .text.* .rodata .rodata.* .data.rel.ro);
*/cheriot.allocator.compartment(.text .text.* .rodata .rodata.* .data.rel.ro);
}
.allocator_end = .;
token_library_code : CAPALIGN
{
.token_library_start = .;
*/cheriot.token_library.library(.compartment_sealing_keys);
.token_library_import_start = .;
*/cheriot.token_library.library(.compartment_import_table);
.token_library_import_end = .;
token_library.library(.text .text.* .rodata .rodata.* .data.rel.ro);
*/cheriot.token_library.library(.text .text.* .rodata .rodata.* .data.rel.ro);
}
.token_library_end = .;
@software_revoker_code@
@pcc_ld@
__compart_pccs_end = .;