From 9bc1f9851a559f7d917cb1f85a621a9c77aaf491 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 13 Feb 2023 22:18:40 +0000 Subject: [PATCH] Adding freestanding stubs for MPS library and VM so that C library can be excluded. --- code/mps.c | 3 +- code/mpslibfs.c | 20 +++-------- code/vmfs.c | 93 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+), 17 deletions(-) create mode 100644 code/vmfs.c diff --git a/code/mps.c b/code/mps.c index 41c8d076af..97599737e5 100644 --- a/code/mps.c +++ b/code/mps.c @@ -96,6 +96,8 @@ #if defined(PLINTH) /* see CONFIG_PLINTH_NONE in config.h */ #include "mpsliban.c" #include "mpsioan.c" +/* FIXME: Is vman part of the plinth? Not really. Explain this. */ +#include "vman.c" /* malloc-based pseudo memory mapping */ #endif /* Generic ("ANSI") platform */ @@ -104,7 +106,6 @@ #include "lockan.c" /* generic locks */ #include "than.c" /* generic threads manager */ -#include "vman.c" /* malloc-based pseudo memory mapping */ #include "protan.c" /* generic memory protection */ #include "prmcan.c" /* generic operating system mutator context */ #include "prmcanan.c" /* generic architecture mutator context */ diff --git a/code/mpslibfs.c b/code/mpslibfs.c index a5066f5ed4..c5a3acfed1 100644 --- a/code/mpslibfs.c +++ b/code/mpslibfs.c @@ -6,6 +6,10 @@ * * .purpose: The purpose of this code is to test at compile time * whether the code MPS can be compiled as freestanding [FIXME: ref?] + * with a command like:: + * + * gcc -nostdlib -DCONFIG_PLINTH_NONE -DCONFIG_PF_ANSI \ + * --entry mps_lib_assert_fail mps.c mpslibfs.c vmfs.c * * .readership: For MPS client application developers and MPS developers. * .sources: @@ -112,22 +116,6 @@ mps_res_t mps_io_flush(mps_io_t mps_io) } -/* main -- dummy entry point - * - * Main is included here so that a command like:: - * - * gcc -nostdlib -DCONFIG_PLINTH_NONE -DCONFIG_PF_ANSI mps.c mpslibfs.c - * - * can run to completion of the linker and reveal external - * dependencies. - */ - -int main(void) -{ - return 0; -} - - /* C. COPYRIGHT AND LICENSE * * Copyright (C) 2001-2023 Ravenbrook Limited . diff --git a/code/vmfs.c b/code/vmfs.c new file mode 100644 index 0000000000..c9f658c4cb --- /dev/null +++ b/code/vmfs.c @@ -0,0 +1,93 @@ +/* vmfs.c: FREESTANDING VM: VIRTUAL MEMORY MAPPING STUB + * + * $Id$ + * Copyright (c) 2001-2023 Ravenbrook Limited. See end of file for license. + * + * .purpose: The purpose of this code is to test at compile time + * whether the code MPS can be compiled as freestanding [FIXME: ref?] + * with a command like:: + * + * gcc -nostdlib -DCONFIG_PLINTH_NONE -DCONFIG_PF_ANSI \ + * --entry mps_lib_assert_fail mps.c mpslibfs.c vmfs.c + * + * .sources: design.mps.lib + */ + +#include "mpm.h" +#include "vm.h" + +SRCID(vmfs, "$Id$"); + + +Size PageSize(void) +{ + NOTREACHED; +} + + +Res VMParamFromArgs(void *params, size_t paramSize, ArgList args) +{ + NOTREACHED; +} + + +/* VMInit -- reserve some virtual address space, and create a VM structure */ + +Res VMInit(VM vm, Size size, Size grainSize, void *params) +{ + NOTREACHED; +} + + +/* VMFinish -- release all address space and finish VM structure */ + +void VMFinish(VM vm) +{ + NOTREACHED; +} + + +/* VMMap -- map the given range of memory */ + +Res VMMap(VM vm, Addr base, Addr limit) +{ + NOTREACHED; +} + + +/* VMUnmap -- unmap the given range of memory */ + +void VMUnmap(VM vm, Addr base, Addr limit) +{ + NOTREACHED; +} + + +/* C. COPYRIGHT AND LICENSE + * + * Copyright (C) 2001-2023 Ravenbrook Limited . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */