For the linuxu platform we rely on the default linker script and only
add some additional sections on top of that one. That also means that
there aren't any segments defined. This makes the segment specification
opt-in instead of assuming the segments are always defined.
Signed-off-by: Marco Schlumpp <marco@unikraft.io>
Checkpatch-Ignore: SPACING
Checkpatch-Ignore: COMPLEX_MACRO
Reviewed-by: Sergiu Moga <sergiu.moga@protonmail.com>
Reviewed-by: Razvan Deaconescu <razvand@unikraft.io>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
Tested-by: Unikraft CI <monkey@unikraft.io>
GitHub-Closes: #833
#include <uk/arch/limits.h> /* for __PAGE_SIZE */
+#ifdef UK_USE_SECTION_SEGMENTS
+#define UK_SEGMENT_TLS :tls
+#define UK_SEGMENT_TLS_LOAD :tls_load
+#define UK_SEGMENT_DATA :data
+#else
+#define UK_SEGMENT_TLS
+#define UK_SEGMENT_TLS_LOAD
+#define UK_SEGMENT_DATA
+#endif
+
/** Executable */
#define PHDRS_PF_X 0x1
/** Writeable */
*(.tdata) \
*(.tdata.*) \
*(.gnu.linkonce.td.*) \
- } :tls :tls_load \
+ } UK_SEGMENT_TLS UK_SEGMENT_TLS_LOAD \
_etdata = .; \
.tbss : \
{ \
{ \
*(.data) \
*(.data.*) \
- } :data \
+ } UK_SEGMENT_DATA \
_edata = .; \
\
/* \
LIBKVMPLAT_CINCLUDES-y += -I$(UK_PLAT_COMMON_BASE)/include
LIBKVMPLAT_CINCLUDES-y += -I$(UK_PLAT_DRIVERS_BASE)/include
-LIBKVMPLAT_ASFLAGS += -DKVMPLAT
-LIBKVMPLAT_CFLAGS += -DKVMPLAT
-LIBKVMPLAT_CXXFLAGS += -DKVMPLAT
+LIBKVMPLAT_ASFLAGS += -DKVMPLAT -DUK_USE_SECTION_SEGMENTS
+LIBKVMPLAT_CFLAGS += -DKVMPLAT -DUK_USE_SECTION_SEGMENTS
+LIBKVMPLAT_CXXFLAGS += -DKVMPLAT -DUK_USE_SECTION_SEGMENTS
##
## Default Linker script
LIBXENPLAT_CFLAGS-y += -DXENPLAT -D__XEN_INTERFACE_VERSION__=$(XEN_INTERFACE_VERSION)
LIBXENPLAT_CXXFLAGS-y += -DXENPLAT -D__XEN_INTERFACE_VERSION__=$(XEN_INTERFACE_VERSION)
+LIBXENPLAT_ASFLAGS-y += -DUK_USE_SECTION_SEGMENTS
+LIBXENPLAT_CFLAGS-y += -DUK_USE_SECTION_SEGMENTS
+LIBXENPLAT_CXXFLAGS-y += -DUK_USE_SECTION_SEGMENTS
+
##
## Default Linker script
ifeq ($(CONFIG_ARCH_X86_64),y)