The capdl_spec.c file is generated by capDL-tool and is compiled into the capdl-loader-app program to define the system that the loader will load. The file is supposed to only be a C-language representation of the capDL spec for a particular system.
Currently, the header files required to compile this spec file introduces dependencies on a C library, and libraries from seL4/util_libs and seL4/sel4_libs including libsel4utils and libutils (and any libraries they depend on).
The spec itself doesn't inherently require any type definitions other than what's provided by libsel4, and so it shouldn't require these additional dependencies.
The file generated by the capDL-tool only has the following header file dependencies:
capdl_spec.h:
#include <capdl.h>
#include <sel4/sel4.h>
capdl.h:
#include <autoconf.h>
#include <capdl_loader_app/gen_config.h>
#include <sel4/types.h>
// These should all be removed
#include <sel4utils/mapping.h>
#include <limits.h>
#include <stdbool.h>
#include <stdlib.h>
#include <utils/util.h>
These are the following non-libsel4 types in the capDL spec and how they can be replaced:
uint8_t -> seL4_Uint8
bool -> seL4_Bool
uint64_t -> seL4_Uint64
size_t -> seL4_Word (All usages of size_t are for non-negative integers and so unsigned long is safe)
uint32_t -> seL4_Uint32
seL4_ARCH_VMAttributes -> unsigned (The CDL_Cap struct definition uses an unsigned 3 bitfield definition already.)
In addition some constructions the spec uses can be manually defined:
The capdl_spec.c file is generated by capDL-tool and is compiled into the capdl-loader-app program to define the system that the loader will load. The file is supposed to only be a C-language representation of the capDL spec for a particular system. Currently, the header files required to compile this spec file introduces dependencies on a C library, and libraries from seL4/util_libs and seL4/sel4_libs including libsel4utils and libutils (and any libraries they depend on). The spec itself doesn't inherently require any type definitions other than what's provided by libsel4, and so it shouldn't require these additional dependencies.
The file generated by the capDL-tool only has the following header file dependencies:
capdl_spec.h
:capdl.h
:These are the following non-libsel4 types in the capDL spec and how they can be replaced:
uint8_t
->seL4_Uint8
bool
->seL4_Bool
uint64_t
->seL4_Uint64
size_t
->seL4_Word
(All usages of size_t are for non-negative integers and so unsigned long is safe)uint32_t
->seL4_Uint32
seL4_ARCH_VMAttributes
->unsigned
(The CDL_Cap struct definition uses an unsigned 3 bitfield definition already.)In addition some constructions the spec uses can be manually defined:
And a small update to the capDL-tool's C generation: