This patch adds support for unordered_map. Specifically it adds support
for libm which is needed by unordered_map as it abuses the ceil
function for integer rounding in it's hash function.
Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
This relocates and renames the memory manager to match the new source
tree structure. The code itself still needs a major overhaul, but the
public APIs should not change much after this patch.
Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
This patch adds support for IntelliSense for VSCode. Specifically, this
provide support for code completion and error checking.
Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
This patch provides some mods to support the extended APIs.
None of these mods were needed, but it does simplify things and keep the
EAPIs build logic easier to follow
Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
This patch adds a redownload on error feature to the dependency macro.
If an error occurs, the macro attempts to redownload the file 5 times
before erroring outRedownload on Error
[ISSUE]: https://github.com/Bareflank/hypervisor/issues/611
Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
This patch converts the hypervisor to use delegates, dramatically
reducing the complexity of the hypervisor, while also providing a
cleaner interface for extensions.
[RFC]: https://github.com/Bareflank/hypervisor/issues/602
Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
This patch renames the BFVMM classes to get rid of the "_x64" and
"_intel_x64" names in facvor of namespaces
[RFC]: https://github.com/Bareflank/hypervisor/issues/583
Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
This patch updates the example config to provide a more complete example
that can actually be used by developers. It also fixes a small bug with
clang tidy and Arch Linux.
Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
This patch makes sure that the ccmake tool only shows variables that in
theory should be able to be changed prior to running make.
[ISSUE]: https://github.com/Bareflank/hypervisor/issues/587
Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
The bfvmm was not installing its headers, but instead was directly
searching for the includes from the source tree, resulting in name
collisions with extensions.
In addition, warnings were never working, and are by default turned off.
Travis however should ensure no warnings occur, which was not working
properly.
[ISSUES]: https://github.com/Bareflank/hypervisor/issues/585
Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
This patch re-enables codecov so that it can calculate our
current code coverage. This will likely result in failed tests
until code coverage is fixed.
Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
This patch fixes two specific issues with extensions:
- The init_project macro was including <path>/../include which it
shouldn't be because we don't know how an extension will be setup, and
this could accidentially include unintended files.
- The add_vmm_exectuable provided to way to link shared and static
libraries at the same time, and as a result, was cumbersome to use.
Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
This patch addresses several bugs with the build system:
- Lack of Windows support
- Clang Tidy was not working properly
- Making modifications to the source code would compile, but would not
re-link resulting in issues
- Removed excess file copying
- Make clean now works
- Removed unused or confusing folders in the build folder as part of the
build process. It is now much easier to traverse the build folder for
dependencies
- The targets didn't work with extensions. This has been fixed.
In addition, the following was also done under this patch
- Intrinsics was moved to the top level and out of the VMM
- Platform files are now in a folder called "platform" instead of
"arch"
- All subprojects have the same include/src/tests files structure
- All intel specific code is properly organized to match intended
namespacing
- Removed dead code
- A small part of the VMCS was converted to use the delegate pattern
- All dependencies are now downloaded at configure time instead of
compile time.
- The cache directory is now cached by Travis CI
- CMake output better matches old build system
- Added make rebuild and separate clean targets to remove various parts
of the build depending on needs.
- Added targets for Clean, Tidy, Rebuild and Format for each subproject
- Re-organized the cmake logic so that macros are not spread out
- New validation removes unneeded complexity
- Removed the need for the compiler wrapper, and in doing so, we now
provide a simpilar set of toolchain files
- Removed the need for Git repos. All external dependencies are
downloaded using a zip or tarball
- Libcxx and Libcxxabi are now in their own files. Much similar logic
- Unit test CMake files have been greatly simplified
- Each subproject is unaware of it's prefix and no long use VMM,
USERSPACE or TEST variables in their cmake files
- Fixed bugs with the flags
- Renamed the varbiables in the default.cmake config to be more
consistent and easier to follow in the rest of the code
Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>
Adding a new feature to cache build dependencies. This commit addresses
bugs #553 and #564
[RFC] #566
Signed-off-by: JaredWright <jared.wright12@gmail.com>
1) New vmm_extension() macro for registering bareflank extensions to the
build system from build configuration file
2) New VMM extension-specific config variables and extension-specific macros
3) Added vmm_ex.cmake to be included by all Bareflank extensions
4) Updated build system documentation
[RFC] #545
Signed-off-by: JaredWright <jared.wright12@gmail.com>
Partial fix for [BUG] #553 Double/Infinite Compile. This commit removes
double compilation for the bfdriver component only.
Signed-off-by: JaredWright <jared.wright12@gmail.com>
Custom commands that require user input (e.g. sudo) will hang waiting
for input when using ninja, unless USES_TERMINAL is passed to
add_custom_command. This patch adds the USES_TERMINAL argument to
prevent such hangs.
newlib on aarch64 uses a few nonstandard features that require special
build flags:
- Instruction formats not supported by LLVM's assembler, requiring
`-no-integrated-as` to force use of binutils as
- Inline assembly via `asm()` instead of `__asm__()`, not available in
clang with `-std=c99` unless `-fasm` is given.
Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>
Added a build configuration that allows for a configurable path to build
the extended apis and the extended apis unit tests.
Signed-off-by: JaredWright <jared.wright12@gmail.com>
1) Removed duplicate naming of vmm exectuables in shared vs. static
builds
2) Added cmake configurations that specify the default path and name for
a vmm to be loaded by bfm as a default
Signed-off-by: JaredWright <jared.wright12@gmail.com>
Added a macro and utility cmake script to allow installing files with
correct dependency tracking during build commands added with
ExternalProject_Add_Step
Signed-off-by: JaredWright <jared.wright12@gmail.com>
Redesigned the cmake build system to support more flexible build
configurations. Major changes include: new and renamed build configuration
parameters, configuration validation and rule checking, more granular
support for choosing which projects/unit tests to build, updated
external dependency management, restructuring of compiler flags, support
for ninja, and support for cmake-gui/ccmake.
Co-author: cpavlina <pavlinac@ainfosec.com>
[RFC] #498
Signed-off-by: JaredWright <jared.wright12@gmail.com>
Signed-off-by: cpavlina <pavlinac@ainfosec.com>
This patch cleans up the headers of each file, and removes the
authors fields as they are not needed and are confusing.
Signed-off-by: rianquinn <“rianquinn@gmail.com”>