Commit graph

19 commits

Author SHA1 Message Date
Rian Quinn
01842b4c77
Convert Hypervisor to use Delegates (#610)
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”>
2018-02-14 05:25:49 -07:00
Rian Quinn
aab477a590
Build System Bug Fixes (#575)
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”>
2018-01-22 12:45:07 -07:00
Rian Quinn
d88b6c370b Header Updates (#504)
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”>
2017-10-07 13:45:24 -06:00
Rian Quinn
0dbf1d62f9 Windows Support (#489)
This patch provides support for Windows in v1.2

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>
2017-09-20 08:34:47 -07:00
Rian Quinn
dbbfa86e34 BFM cleanup. (#475)
Completes the BFM source code and finishes it's unit tests. This
also addresses issues with the build system.

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>
2017-08-27 14:42:25 -06:00
Rian Quinn
70d594400d msbuild_updates (#473)
Signed-off-by: Rian Quinn <rianquinn@gmail.com>
2017-08-21 11:01:43 -06:00
Rian Quinn
40a448d8fe Merge Repos into the Hypervisor Repo (#470)
This PR mereges all of the repos into a single repo for simplificty. It
also adds static / shared library build types, release / debug builds,
and ensures parallel builds work properly.

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>
2017-08-17 10:49:49 -06:00
Rian Quinn
41d8bb6dd3 initial super build script
Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>
2017-05-04 20:41:03 -06:00
Rian Quinn
b4d0ee20ca VMCall Interface (#281)
This provides the support for 'vmcall'. BFM has been modified
to support the vmcall interface, but custom applications can
use this interface to do whatever they want, including calling
vmcall from user-space if so desired.

This patch also provides new code in the memory manager to
handle mapping memory from the Host OS into the hypervisor.

Finally, this patch fixes a host of bugs including a bug
with TLS, and cleans up the code that was touched in
prep for 1.1

[ISSUE]: https://github.com/Bareflank/hypervisor/issues/182
[ISSUE]: https://github.com/Bareflank/hypervisor/issues/274

Signed-off-by: “Rian <“rianquinn@gmail.com”>
2016-11-08 20:42:12 -05:00
“Rian
f4b641871b Continued Work on #241 #2
This patch provides additional work to cleanup the intriniscs
logic to remove the #defines in favor of a cleaner, more organized
approach

[ISSUE]: #241

Signed-off-by: “Rian <“rianquinn@gmail.com”>
2016-10-07 13:15:26 -06:00
Rico Antonio Felix
ee82adeec8 command_line_parser.h: Corrected various errors in the API documentation
Signed-off-by: “Rico <“ricoantoniofelix@yahoo.com”>
2016-09-09 18:40:28 -04:00
Rian Quinn
5bebbc13da Clang-Tidy Cleanup (#160)
This patch cleans up a lot of issues identified using clang
tidy including C++ Core Guideline support. The only thing
that has not been tested with this patch is the unwinder which
will be addressed in later patches

Signed-off-by: “Rian <“rianquinn@gmail.com”>
2016-08-19 10:48:24 -04:00
“Rian
87b8db5b26 Multi-Core Support
This patch provides basic multi-core support for version 1.1.
Some of this logic will change once we begin the process of
adding basic guest support in 1.2

Signed-off-by: “Rian <“rianquinn@gmail.com”>
2016-06-27 13:44:56 -06:00
Rian Quinn
6183dd0158 Debug Ring Exception Support
This patch provides the debug ring with exception support.
It also fixes an issue with astyle.

Signed-off-by: Rian Quinn <quinnr@ainfosec.com>
2016-02-28 20:40:37 -05:00
Rian Quinn
c9111d8f03 New Bareflank Manager
This patch provides a new bareflank manager that contains a
load / unload command, as well as a new dump and status
command. BFM also has been support for C++14, and leverages
exceptions to provide more useful feedback to the user.

Signed-off-by: Rian Quinn <quinnr@ainfosec.com>
2016-02-06 06:52:09 -08:00
Rian Quinn
a9454e6128 New Build System
The old build system has a lot of problems, as was very
inconsistent from one module to the next. This new one,
cleans up a lot of the issues that we had with the old system
and also addresses several bugs that we had in the past. It
also sets us up for being able to properly unittest all of the
modules.

Signed-off-by: Rian Quinn <quinnr@ainfosec.com>
2016-01-07 04:31:58 -08:00
Rian Quinn
747da59ec0 BFM Dump Support
This patch adds support for dumping the debug ring
from the VMM. While attempting to add support for this code
a lot of mods were made to cleanup the C++ environment as
GCC adds symbols to shared libraries once things like
inheritance are used.

Also added support for static libraries for the unit tests.
This will enable the use of HippoMocks for mocking up C
functions (as shared libraries cannot be used in this case).

Finally sevral unit tests were either added or cleaned up
in this patch, with further changes still to come

Signed-off-by: Rian Quinn <quinnr@ainfosec.com>
2015-12-04 07:14:29 -08:00
Rian Quinn
47a1b870ff Bareflank Manager
This patch provides basic Linux support for the bareflank
manager. It is capable of starting and stopping the
hypervisor given a list of modules to load.

This patch also contains the unit test for the bareflank
manager, as well as needed changes to the unit test
infrastructure to support more complicated unit testing.

Signed-off-by: Rian Quinn <quinnr@ainfosec.com>
2015-11-28 17:36:01 -08:00
Rian Quinn
94d7ba26c6 Scafolding for Bareflank Manager
This patch contains:
- The scafolding for the bareflank manager (the frontend for
  starting and stopping the hypervisor)
- Cleanup for the unit tests
- Cleanup for the ELF Loader
- Upgrades to use C++14
- Addition of Hippo Mocks for unit testing

Signed-off-by: Rian Quinn <quinnr@ainfosec.com>
2015-11-25 12:24:56 -08:00