Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ELF loader cleanup / missing unit tests #478

Merged
merged 1 commit into from Aug 29, 2017
Merged

Conversation

rianquinn
Copy link
Member

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

@codecov
Copy link

codecov bot commented Aug 29, 2017

Codecov Report

Merging #478 into dev will increase coverage by 3.36%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##              dev     #478      +/-   ##
==========================================
+ Coverage   84.75%   88.11%   +3.36%     
==========================================
  Files         181      182       +1     
  Lines       16597    16696      +99     
  Branches      947      932      -15     
==========================================
+ Hits        14067    14712     +645     
+ Misses       2027     1984      -43     
+ Partials      503        0     -503
Impacted Files Coverage Δ
bfelf_loader/tests/test_loader_relocate.cpp 100% <ø> (ø) ⬆️
bfelf_loader/tests/test_fake_elf.cpp 100% <100%> (ø) ⬆️
bfelf_loader/tests/test_load.cpp 100% <100%> (ø)
...der/tests/test_read_binary_and_get_needed_list.cpp 100% <100%> (ø)
bfelf_loader/tests/test_loader_add.cpp 100% <100%> (ø) ⬆️
bfelf_loader/include/bfelf_loader.h 99.81% <100%> (+22.05%) ⬆️
bfelf_loader/tests/test_loader_resolve_symbol.cpp 100% <100%> (ø) ⬆️
bfelf_loader/tests/test_set_integer_args.cpp 100% <100%> (ø)
bfelf_loader/tests/test_set_args.cpp 100% <100%> (ø)
bfelf_loader/tests/test_real_elf.cpp 100% <100%> (ø) ⬆️
... and 34 more

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>
@rianquinn rianquinn merged commit f3b3b98 into Bareflank:dev Aug 29, 2017
rianquinn pushed a commit that referenced this pull request Mar 2, 2018
* initial super build script

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* build working

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* cleanup double compile of sdk

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* Bug fixes and cleanup

This patch provides a make super-clean to prevent the need to
re-download the entire build system, and thus wipe out all
of the modifications to a sub repo. It also cleans up a
couple of bugs

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* cleanup

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* README update

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* README update

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* small fixes to the super build, enables travis

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* fix bug with travis

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* Add support for using local repositories when building Bareflank.

CMake options are -DBFXXX_PATH:PATH=/path/to/repo. Setting this option
will cause the build system to not set BFXXX_URL and BFXXX_TAG, which
*should* cause ExternalProject_Add to do the correct behavior.

* Update README.md

Added documentation for BFXXX_PATH as well as properly underscoring text
while not in a code block

* Fix UPDATE_DISCONNECTED

This patch not only fixes a bunch of small bugs, it fixes an
issue with UPDATE_DISCONNECTED as it was not working the
_PATH logic that was added.

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* Fix issue with rebuilds

Right now, if you set the _PATH variables, rebuilds don't work
because ExternalProject_Add doesn't think anything changed as
there is no defined UPDATE_COMMAND. It just needs to execute
something so that it attempts to reduild, which will trigger
the build system to properly recompile based on what has actually
changed. So, all this patch does is provide an UPDATE_COMMAND that
echos to the screen which fixes the problem

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* add extended apis support

* 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”>

* map_with_cr3: fixed pml4 mapping when cr3 control bits are set (#471)

pml4_map was using the entirety of cr3 for it's mapping. if
the control bits were set, pml4_map would be mapped to the
wrong offset.

* cygwin updates (#472)

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* msbuild_updates (#473)

Signed-off-by: Rian Quinn <rianquinn@gmail.com>

* 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”>

* Update .codecov.yml

* BFSDK missing unit tests (#477)

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* ELF loader cleanup / missing unit tests (#478)

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* Dev (#479)

* ELF loader cleanup / missing unit tests

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* bug fixes

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* bug fixes (#480)

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* missing VMCS unit tests (#481)

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* missing CRT unit tests (#482)

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* missing bfdriver unit tests (#484)

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* Map guest GDT read-write before promotion (#486)

This patch maps the guest's GDT into the hypervisor read/write
in exit_handler_intel_x64::handle_vmxoff.  This allows the
processor to set the TSS busy bit without it causing
a page fault if the guest has mapped in the GDT read-only
(Linux now exposes a read-only GDT, see 69218e4 and 45fc875
in the linux tree for more details).

* Windows Support (#489)

This patch provides support for Windows in v1.2

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* Codacy Update (#491)

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* Update CMakeFlags_Native_VS.txt

* Windows 7 Support (#492)

Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>

* Update README.md

* Updated intrinsics unit tests (#487)

* Simple bugfixes in env.sh (#494)

* Simple bugfixes in env.sh

1) Remove shebang line as it is useless in a script meant to be sourced

2) Add error checking to prevent creation of garbage build directory
(~/build) if finding BAREFLANK_SOURCE_DIR fails (I discovered this by
accidentally sourcing from zsh instead of bash; permission errors could
also cause this)

3) Add quotes around variables that can contain spaces

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* env.sh: add one more missing set of quotes

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Build System Support for Aarch64 #498 (#499)

Added Vagrant support for the latest version of Ubuntu

1) Added a Vagrantfile

2) Added provisioning scripts for Ubuntu 17.04

* 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”>

* Contributing Update (#505)

* Contributing Update

Includes link to CLA

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* windows bug fixes

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* Rename serial_port_intel_x64 to serial_port_ns16550a.h (#510)

Related to (but not a complete solution to) #507 - prepares for the
inclusion of ARM support in the serial driver.

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* astyle/clang_tidy: ignore deleted files

Fixes #509

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Fix issue with EAPIs unit testing (#515)

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* Add bfarch.h to detect architecture and set flags (#513)

This header tests for predefined macros on both supported compilers to
determine the architecture being compiled for. Once detected, it defines
two macros:

    - BF_ARCH       string containing architecture name
    - BF_{archname} empty macro for #ifdef tests

Currently supported combinations are:

    - x64 on MSVC (via _MSC_VER and _X64)
    - x64 on GCC and clang (via __GNUC__, __clang__, and __x86_64__)
    - aarch64 on GCC and clang (via __GNUC__, __clang__, and __aarch64__)

Additionally, this header allows the user or the build system to modify
the architecture externally: defining BF_ARCH with -D disables the
checks and allows you to force an architecture flag.

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Update README.md

* Modify "make format" to check for extra blank lines (#514)

This adds a script `bareflank_blank_lines.sh` which scans source files
for consecutive blank lines and deletes extras, and modifies the
`format` and `format-all` targets to call that script.

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Add PL011 serial driver, genericize portio interface

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* arch cleanup (#519)

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* remove env.sh (#520)

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* make format: don't attempt to format deleted files (#521)

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Fix README.md (#523)

Somehow invalid bytes were added to the end of README.md, causing GitHub
to render as plaintext.

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Expanded x2apic msrs

* Minor language/typo fixes in README.md (#524)

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Move portio back into x64 (#522)

Rather than a generic portio interface for all architectures, with
aarch64 implementing a MMIO-based fake portio, the one item that used
portio generically (serial drivers) has been refactored to provide a
generic implementation of its own IO which is conditionally compiled in
whichever way is sensible for each architecture.

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Fix cast type in aarch64 serial MMIO methods (#526)

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Add method set_port() to serial drivers

This allows changing the port at runtime, and will be used on aarch64 to
support memory-mapped serial. Related: #527

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Delegate Implementation (#531)

This patch cleans up some issues with formatting, and adds support
for C++ delegates. This implementation doesn't need malloc/free
and is as fast as a regular vtable lookup. Before the release
of v1.2, a lot of the inheritance currently being used with be
converted to delegates to increase modularity.

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* New cmake build system (#532)

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>

* Restructure bfvmm source and test files

This commit implements a basic restructuring of src and test files
within the bfvmm subtree, both to clean up build scripts for unit tests
and to prepare for multi-architecture support. The following is
implemented:

- src/foo/src/*.cpp (x64-related) -> src/foo/arch/intel_x64/*.cpp
- src/foo/src/*.cpp (non-specific) -> src/foo/*.cpp
- src/foo/test/*.cpp -> test/foo/*.cpp

No restructure of include files has been done yet - this is pending
discussion on related code restructure (namespacing, etc). A similar
split between architecture-specific and non-specific test code will be
done in the near future similar to the organization of the src files. A
similar restructuring of other subprojects is also planned for the near
future.

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Add files created by Vagrant to .gitignore

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* [BUG] build system - unnecessary re-compilation

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>

* [BUG] build system - duplicate vmm main exectuables #537

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>

* Extended APIs configurable path

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>

* compiler_wrapper.sh: remove hard-coded target architecture (#542)

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Removed hard-coded path to extended apis for format and tidy targets (#543)

Signed-off-by: JaredWright <jared.wright12@gmail.com>

* Add _start for aarch64

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Fix build of newlib on aarch64

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>

* Fix sysroot install name of compiler_wrapper.sh

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Updated bfdriver to build under WDK10 and VS 2017

* bfelf_loader: implement relocations for aarch64

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Pack struct registers_intel_x64_t (#554)

This is required for reliable access via assembly.

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* [BUILD] Add USES_TERMINAL to targets

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.

* bfdriver double-compile bug (#562)

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>

* New VMM extension integration mechanism (#560)

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>

* Add more aarch64 relocations (#559)

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Fix incorrect types in serial_port_ns16550a (#555)

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* Build system dependency caching (#567)

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>

* 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”>

* Fix Protected Delegate Issue

Accidentially, the pre and post delegates for the VMCS are protected
when they should be public. This patch fixes this issue.

[ISSUE]: #577

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* Fix crash with Windows (#578)

The latest versions of Windows do not like having aligned memory freed
using "free", resulting in a segfault. Alighed memory is no longer
needed so this can be removed.

[ISSUE]: #576

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* Enable More Unit Tests (#580)

This is a small patch that enables more unit tests

[ISSUE]: #576

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* Include Path / Library Fix (#581)

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”>

* Re-enable Codecov (#582)

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”>

* x64/vmcs: Temporarily clear CR3[11:0] on promote (#584)

As part of the PTI patches, Linux now uses PCIDs to reduce the
cost of context switches. The current PCID is given by CR3[11:0],
and if this is not zero when CR4.PCIDE is set on a write to CR4,
a #GP is raised.

The promotion bug described in #573 was due to Bareflank
restoring the guest CR3 (in which CR3[11:0] was nonzero), and
then restoring the guest CR4, which was setting CR4.PCIDE. The
resulting #GP was raised with nothing to handle it, leading to a
triple fault.

Now Bareflank writes a copy of the guest CR3 with bits 11-0
clear, then writes the guest's CR4. Once the CR4 is
written, the guest's original CR3 is restored.

* Fix Include Issue / Enable Warnings (#586)

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]: #585

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* Remove CMake variables that cannot be changed in CCMake (#588)

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]: #587

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* tests: Fix build errors (#589)

bfm: Add include header for test support
bfvmm: Add narrow cast for pl011 tests

* Update README.md

* Change to relative paths (#594)

This patch addresses an issue were attempting to include headers from
bfvmm in extensions results in invalid paths.

[ISSUE]: #590

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* Add BFVMM Namespace

This patch adds the bfvmm namesapce to the check logic in the bfvmm.
This is the first of many PRs to add the bfvmm namespace and reduce the
need for hardcoding namespace logic into filenames / variable names

[ISSUE]: #583

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* Fix Small Ninja Issue

Cleanup some verbosity for ninja

[ISSUE]: #596

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* Add changes required for clean eapis build (#598)

- Add an isr_type in the idt class to avoid compiler cast errors
- Use relative paths with memory_manager/object_allocator.h and user_data.h
- Add trailing slash on the source install path in bfvmm/src/CMakeLists.txt.
  Without the slash, the headers were being installed as
  <prefix>/include/bfvmm/include/...

* Move Debug Intrinsics (#599)

The debug intrinsics are intel specific and should be located in the
intel specific folder with the proper naming.

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* Update Example Config (#600)

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”>

* Rename BFVMM Classes (#601)

This patch renames the BFVMM classes to get rid of the "_x64" and
"_intel_x64" names in facvor of namespaces

[RFC]: #583

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* docs: Update Arch Linux setup instructions (#603)

- Add commands for downloading and installing yaourt
  on a vanilla Arch system.
- Remove the 'yaourt' from the initial 'pacman -S' command
  since it is not an official Arch package.
- Add symlink for run-clang-tidy-4.0.py.

* 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]: #602

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* Redownload on Error (#612)

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]: #611

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* Mods for EAPIs

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”>

* Missing Header Guard

The Intel VCPU was missing it's header guard. Credit:
https://github.com/boddumanohar

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* Move Check to Cpp (#615)

The check logic is currently in header files, which causes a lot of
uneeded comilation and complexity. This patch moves the check logic to
source files.

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* Add IntelliSense Support

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”>

* Relocate / Rename Memory Manager (#618)

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”>

* Change order of execution of delegates from FILO to FIFO (#623)

Signed-off-by: "Manohar Reddy" <"201451024@iiitvadodara.ac.in">

* README.md: Update Arch instructions (#624)

- Change 'sync-deps' to 'syncdeps'
- Add clang-tidy-4.0 symlink

* Add support for unordered_map (#625)

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”>

* Changes to support EAPIs (#627)

The following changes support the EAPIs, as well as provide consistency
across the projects.

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* Disable Cygwin (#628)

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* Additional Changes to support EAPIs (#629)

Signed-off-by: “rianquinn” <“rianquinn@gmail.com”>

* change name in the include header from memory_manager_x64 to
memory_manager.h

Signed-off-by: "Manohar Reddy" <"201451024@iiitvadodara.ac.in">

* Add platform_info_t, support runtime serial port address (#632)

platform_info_t is used to pass platform-specific information from the
kernel into the vmm. On aarch64, this is used to map the serial
peripheral and pass the resulting virtual address.

Closes #527

Signed-off-by: Chris Pavlina <pavlinac@ainfosec.com>

* VMX Bug Fix (#633)

Signed-off-by: Rian Quinn <rianquinn@gmail.com>
connojd pushed a commit to connojd/hypervisor that referenced this pull request Mar 2, 2018
AlexLanzano (1):
      map_with_cr3: fixed pml4 mapping when cr3 control bits are set (Bareflank#471)

Chris Pavlina (23):
      Simple bugfixes in env.sh (Bareflank#494)
      Rename serial_port_intel_x64 to serial_port_ns16550a.h (Bareflank#510)
      astyle/clang_tidy: ignore deleted files
      Add bfarch.h to detect architecture and set flags (Bareflank#513)
      Modify "make format" to check for extra blank lines (Bareflank#514)
      Add PL011 serial driver, genericize portio interface
      make format: don't attempt to format deleted files (Bareflank#521)
      Fix README.md (Bareflank#523)
      Minor language/typo fixes in README.md (Bareflank#524)
      Move portio back into x64 (Bareflank#522)
      Fix cast type in aarch64 serial MMIO methods (Bareflank#526)
      Add method set_port() to serial drivers
      Restructure bfvmm source and test files
      Add files created by Vagrant to .gitignore
      compiler_wrapper.sh: remove hard-coded target architecture (Bareflank#542)
      Add _start for aarch64
      Fix build of newlib on aarch64
      Fix sysroot install name of compiler_wrapper.sh
      bfelf_loader: implement relocations for aarch64
      Pack struct registers_intel_x64_t (Bareflank#554)
      Add more aarch64 relocations (Bareflank#559)
      Fix incorrect types in serial_port_ns16550a (Bareflank#555)
      Add platform_info_t, support runtime serial port address (Bareflank#632)

Connor Davis (27):
      Map guest GDT read-write before promotion (Bareflank#486)
      Merge pull request Bareflank#511 from cpavlina/ls-files-fix
      Merge pull request Bareflank#512 from cpavlina/pl011
      Merge pull request Bareflank#525 from JWZepf/x2apic_msrs
      Merge pull request Bareflank#530 from cpavlina/serial-set-port
      Merge pull request Bareflank#539 from JaredWright/bug_534
      Merge pull request Bareflank#538 from cpavlina/gitignore-vagrant-build
      Merge pull request Bareflank#536 from cpavlina/bfvmm_restructure
      Merge pull request Bareflank#540 from JaredWright/bug_537
      Merge pull request Bareflank#541 from JaredWright/eapis_configurable_path
      Merge pull request Bareflank#544 from cpavlina/aarch64_start
      Merge pull request Bareflank#546 from cpavlina/newlib-fix
      Merge pull request Bareflank#547 from JaredWright/windows_support
      Merge pull request Bareflank#548 from cpavlina/compiler-wrapper-fix
      Merge pull request Bareflank#549 from cpavlina/aarch64_reloc
      [BUILD] Add USES_TERMINAL to targets
      Merge pull request Bareflank#551 from connojd/ninja
      Merge pull request Bareflank#579 from rianquinn/fix_protected_delegate
      x64/vmcs: Temporarily clear CR3[11:0] on promote (Bareflank#584)
      tests: Fix build errors (Bareflank#589)
      Merge pull request Bareflank#595 from rianquinn/rfc_583_1
      Merge pull request Bareflank#597 from rianquinn/issue_596
      Add changes required for clean eapis build (Bareflank#598)
      docs: Update Arch Linux setup instructions (Bareflank#603)
      Merge pull request Bareflank#614 from rianquinn/dev
      README.md: Update Arch instructions (Bareflank#624)
      Merge pull request Bareflank#630 from boddumanohar/rename

Jared Wright (8):
      Build System Support for Aarch64 Bareflank#498 (Bareflank#499)
      New cmake build system (Bareflank#532)
      Removed hard-coded path to extended apis for format and tidy targets (Bareflank#543)
      bfdriver double-compile bug (Bareflank#562)
      New VMM extension integration mechanism (Bareflank#560)
      Build system dependency caching (Bareflank#567)
      Merge pull request Bareflank#616 from rianquinn/announcement_613_2
      Merge pull request Bareflank#617 from rianquinn/announcement_613_3

JaredWright (4):
      [BUG] build system - unnecessary re-compilation
      [BUG] build system - duplicate vmm main exectuables Bareflank#537
      Extended APIs configurable path
      Updated bfdriver to build under WDK10 and VS 2017

Joshua Zepf (2):
      Updated intrinsics unit tests (Bareflank#487)
      Expanded x2apic msrs

Manohar Reddy (2):
      Change order of execution of delegates from FILO to FIFO (Bareflank#623)
      change name in the include header from memory_manager_x64 to memory_manager.h

Rian Quinn (62):
      initial super build script
      build working
      cleanup double compile of sdk
      Bug fixes and cleanup
      cleanup
      merge
      README update
      README update
      small fixes to the super build, enables travis
      fix bug with travis
      Merge pull request Bareflank#455 from incertia/dev
      Fix UPDATE_DISCONNECTED
      Merge pull request Bareflank#457 from rianquinn/fix_update_disconnected
      Fix issue with rebuilds
      Merge pull request Bareflank#458 from rianquinn/fix_update_command
      add extended apis support
      Merge pull request Bareflank#460 from rianquinn/add_extended_apis
      Merge Repos into the Hypervisor Repo (Bareflank#470)
      cygwin updates (Bareflank#472)
      msbuild_updates (Bareflank#473)
      BFM cleanup. (Bareflank#475)
      Update .codecov.yml
      BFSDK missing unit tests (Bareflank#477)
      ELF loader cleanup / missing unit tests (Bareflank#478)
      Dev (Bareflank#479)
      bug fixes (Bareflank#480)
      missing VMCS unit tests (Bareflank#481)
      missing CRT unit tests (Bareflank#482)
      missing bfdriver unit tests (Bareflank#484)
      Windows Support (Bareflank#489)
      Codacy Update (Bareflank#491)
      Update CMakeFlags_Native_VS.txt
      Windows 7 Support (Bareflank#492)
      Update README.md
      Header Updates (Bareflank#504)
      Contributing Update (Bareflank#505)
      Fix issue with EAPIs unit testing (Bareflank#515)
      Update README.md
      arch cleanup (Bareflank#519)
      remove env.sh (Bareflank#520)
      Delegate Implementation (Bareflank#531)
      Build System Bug Fixes (Bareflank#575)
      Fix crash with Windows (Bareflank#578)
      Enable More Unit Tests (Bareflank#580)
      Include Path / Library Fix (Bareflank#581)
      Re-enable Codecov (Bareflank#582)
      Fix Include Issue / Enable Warnings (Bareflank#586)
      Remove CMake variables that cannot be changed in CCMake (Bareflank#588)
      Update README.md
      Change to relative paths (Bareflank#594)
      Move Debug Intrinsics (Bareflank#599)
      Update Example Config (Bareflank#600)
      Rename BFVMM Classes (Bareflank#601)
      Convert Hypervisor to use Delegates (Bareflank#610)
      Redownload on Error (Bareflank#612)
      Move Check to Cpp (Bareflank#615)
      Relocate / Rename Memory Manager (Bareflank#618)
      Add support for unordered_map (Bareflank#625)
      Changes to support EAPIs (Bareflank#627)
      Disable Cygwin (Bareflank#628)
      Additional Changes to support EAPIs (Bareflank#629)
      VMX Bug Fix (Bareflank#633)

Will Song (2):
      Add support for using local repositories when building Bareflank.
      Update README.md

“rianquinn” (6):
      Fix Protected Delegate Issue
      Add BFVMM Namespace
      Fix Small Ninja Issue
      Mods for EAPIs
      Missing Header Guard
      Add IntelliSense Support
JaredWright pushed a commit to JaredWright/hypervisor that referenced this pull request Mar 2, 2018
Signed-off-by: Rian Quinn <“rianquinn@gmail.com”>
connojd pushed a commit to connojd/hypervisor that referenced this pull request Mar 2, 2018
AlexLanzano (1):
      map_with_cr3: fixed pml4 mapping when cr3 control bits are set (Bareflank#471)

Chris Pavlina (23):
      Simple bugfixes in env.sh (Bareflank#494)
      Rename serial_port_intel_x64 to serial_port_ns16550a.h (Bareflank#510)
      astyle/clang_tidy: ignore deleted files
      Add bfarch.h to detect architecture and set flags (Bareflank#513)
      Modify "make format" to check for extra blank lines (Bareflank#514)
      Add PL011 serial driver, genericize portio interface
      make format: don't attempt to format deleted files (Bareflank#521)
      Fix README.md (Bareflank#523)
      Minor language/typo fixes in README.md (Bareflank#524)
      Move portio back into x64 (Bareflank#522)
      Fix cast type in aarch64 serial MMIO methods (Bareflank#526)
      Add method set_port() to serial drivers
      Restructure bfvmm source and test files
      Add files created by Vagrant to .gitignore
      compiler_wrapper.sh: remove hard-coded target architecture (Bareflank#542)
      Add _start for aarch64
      Fix build of newlib on aarch64
      Fix sysroot install name of compiler_wrapper.sh
      bfelf_loader: implement relocations for aarch64
      Pack struct registers_intel_x64_t (Bareflank#554)
      Add more aarch64 relocations (Bareflank#559)
      Fix incorrect types in serial_port_ns16550a (Bareflank#555)
      Add platform_info_t, support runtime serial port address (Bareflank#632)

Connor Davis (27):
      Map guest GDT read-write before promotion (Bareflank#486)
      Merge pull request Bareflank#511 from cpavlina/ls-files-fix
      Merge pull request Bareflank#512 from cpavlina/pl011
      Merge pull request Bareflank#525 from JWZepf/x2apic_msrs
      Merge pull request Bareflank#530 from cpavlina/serial-set-port
      Merge pull request Bareflank#539 from JaredWright/bug_534
      Merge pull request Bareflank#538 from cpavlina/gitignore-vagrant-build
      Merge pull request Bareflank#536 from cpavlina/bfvmm_restructure
      Merge pull request Bareflank#540 from JaredWright/bug_537
      Merge pull request Bareflank#541 from JaredWright/eapis_configurable_path
      Merge pull request Bareflank#544 from cpavlina/aarch64_start
      Merge pull request Bareflank#546 from cpavlina/newlib-fix
      Merge pull request Bareflank#547 from JaredWright/windows_support
      Merge pull request Bareflank#548 from cpavlina/compiler-wrapper-fix
      Merge pull request Bareflank#549 from cpavlina/aarch64_reloc
      [BUILD] Add USES_TERMINAL to targets
      Merge pull request Bareflank#551 from connojd/ninja
      Merge pull request Bareflank#579 from rianquinn/fix_protected_delegate
      x64/vmcs: Temporarily clear CR3[11:0] on promote (Bareflank#584)
      tests: Fix build errors (Bareflank#589)
      Merge pull request Bareflank#595 from rianquinn/rfc_583_1
      Merge pull request Bareflank#597 from rianquinn/issue_596
      Add changes required for clean eapis build (Bareflank#598)
      docs: Update Arch Linux setup instructions (Bareflank#603)
      Merge pull request Bareflank#614 from rianquinn/dev
      README.md: Update Arch instructions (Bareflank#624)
      Merge pull request Bareflank#630 from boddumanohar/rename

Jared Wright (8):
      Build System Support for Aarch64 Bareflank#498 (Bareflank#499)
      New cmake build system (Bareflank#532)
      Removed hard-coded path to extended apis for format and tidy targets (Bareflank#543)
      bfdriver double-compile bug (Bareflank#562)
      New VMM extension integration mechanism (Bareflank#560)
      Build system dependency caching (Bareflank#567)
      Merge pull request Bareflank#616 from rianquinn/announcement_613_2
      Merge pull request Bareflank#617 from rianquinn/announcement_613_3

JaredWright (4):
      [BUG] build system - unnecessary re-compilation
      [BUG] build system - duplicate vmm main exectuables Bareflank#537
      Extended APIs configurable path
      Updated bfdriver to build under WDK10 and VS 2017

Joshua Zepf (2):
      Updated intrinsics unit tests (Bareflank#487)
      Expanded x2apic msrs

Manohar Reddy (2):
      Change order of execution of delegates from FILO to FIFO (Bareflank#623)
      change name in the include header from memory_manager_x64 to memory_manager.h

Rian Quinn (62):
      initial super build script
      build working
      cleanup double compile of sdk
      Bug fixes and cleanup
      cleanup
      merge
      README update
      README update
      small fixes to the super build, enables travis
      fix bug with travis
      Merge pull request Bareflank#455 from incertia/dev
      Fix UPDATE_DISCONNECTED
      Merge pull request Bareflank#457 from rianquinn/fix_update_disconnected
      Fix issue with rebuilds
      Merge pull request Bareflank#458 from rianquinn/fix_update_command
      add extended apis support
      Merge pull request Bareflank#460 from rianquinn/add_extended_apis
      Merge Repos into the Hypervisor Repo (Bareflank#470)
      cygwin updates (Bareflank#472)
      msbuild_updates (Bareflank#473)
      BFM cleanup. (Bareflank#475)
      Update .codecov.yml
      BFSDK missing unit tests (Bareflank#477)
      ELF loader cleanup / missing unit tests (Bareflank#478)
      Dev (Bareflank#479)
      bug fixes (Bareflank#480)
      missing VMCS unit tests (Bareflank#481)
      missing CRT unit tests (Bareflank#482)
      missing bfdriver unit tests (Bareflank#484)
      Windows Support (Bareflank#489)
      Codacy Update (Bareflank#491)
      Update CMakeFlags_Native_VS.txt
      Windows 7 Support (Bareflank#492)
      Update README.md
      Header Updates (Bareflank#504)
      Contributing Update (Bareflank#505)
      Fix issue with EAPIs unit testing (Bareflank#515)
      Update README.md
      arch cleanup (Bareflank#519)
      remove env.sh (Bareflank#520)
      Delegate Implementation (Bareflank#531)
      Build System Bug Fixes (Bareflank#575)
      Fix crash with Windows (Bareflank#578)
      Enable More Unit Tests (Bareflank#580)
      Include Path / Library Fix (Bareflank#581)
      Re-enable Codecov (Bareflank#582)
      Fix Include Issue / Enable Warnings (Bareflank#586)
      Remove CMake variables that cannot be changed in CCMake (Bareflank#588)
      Update README.md
      Change to relative paths (Bareflank#594)
      Move Debug Intrinsics (Bareflank#599)
      Update Example Config (Bareflank#600)
      Rename BFVMM Classes (Bareflank#601)
      Convert Hypervisor to use Delegates (Bareflank#610)
      Redownload on Error (Bareflank#612)
      Move Check to Cpp (Bareflank#615)
      Relocate / Rename Memory Manager (Bareflank#618)
      Add support for unordered_map (Bareflank#625)
      Changes to support EAPIs (Bareflank#627)
      Disable Cygwin (Bareflank#628)
      Additional Changes to support EAPIs (Bareflank#629)
      VMX Bug Fix (Bareflank#633)

Will Song (2):
      Add support for using local repositories when building Bareflank.
      Update README.md

“rianquinn” (6):
      Fix Protected Delegate Issue
      Add BFVMM Namespace
      Fix Small Ninja Issue
      Mods for EAPIs
      Missing Header Guard
      Add IntelliSense Support
connojd pushed a commit to connojd/hypervisor that referenced this pull request Mar 2, 2018
AlexLanzano (1):
      map_with_cr3: fixed pml4 mapping when cr3 control bits are set (Bareflank#471)

Chris Pavlina (23):
      Simple bugfixes in env.sh (Bareflank#494)
      Rename serial_port_intel_x64 to serial_port_ns16550a.h (Bareflank#510)
      astyle/clang_tidy: ignore deleted files
      Add bfarch.h to detect architecture and set flags (Bareflank#513)
      Modify "make format" to check for extra blank lines (Bareflank#514)
      Add PL011 serial driver, genericize portio interface
      make format: don't attempt to format deleted files (Bareflank#521)
      Fix README.md (Bareflank#523)
      Minor language/typo fixes in README.md (Bareflank#524)
      Move portio back into x64 (Bareflank#522)
      Fix cast type in aarch64 serial MMIO methods (Bareflank#526)
      Add method set_port() to serial drivers
      Restructure bfvmm source and test files
      Add files created by Vagrant to .gitignore
      compiler_wrapper.sh: remove hard-coded target architecture (Bareflank#542)
      Add _start for aarch64
      Fix build of newlib on aarch64
      Fix sysroot install name of compiler_wrapper.sh
      bfelf_loader: implement relocations for aarch64
      Pack struct registers_intel_x64_t (Bareflank#554)
      Add more aarch64 relocations (Bareflank#559)
      Fix incorrect types in serial_port_ns16550a (Bareflank#555)
      Add platform_info_t, support runtime serial port address (Bareflank#632)

Connor Davis (27):
      Map guest GDT read-write before promotion (Bareflank#486)
      Merge pull request Bareflank#511 from cpavlina/ls-files-fix
      Merge pull request Bareflank#512 from cpavlina/pl011
      Merge pull request Bareflank#525 from JWZepf/x2apic_msrs
      Merge pull request Bareflank#530 from cpavlina/serial-set-port
      Merge pull request Bareflank#539 from JaredWright/bug_534
      Merge pull request Bareflank#538 from cpavlina/gitignore-vagrant-build
      Merge pull request Bareflank#536 from cpavlina/bfvmm_restructure
      Merge pull request Bareflank#540 from JaredWright/bug_537
      Merge pull request Bareflank#541 from JaredWright/eapis_configurable_path
      Merge pull request Bareflank#544 from cpavlina/aarch64_start
      Merge pull request Bareflank#546 from cpavlina/newlib-fix
      Merge pull request Bareflank#547 from JaredWright/windows_support
      Merge pull request Bareflank#548 from cpavlina/compiler-wrapper-fix
      Merge pull request Bareflank#549 from cpavlina/aarch64_reloc
      [BUILD] Add USES_TERMINAL to targets
      Merge pull request Bareflank#551 from connojd/ninja
      Merge pull request Bareflank#579 from rianquinn/fix_protected_delegate
      x64/vmcs: Temporarily clear CR3[11:0] on promote (Bareflank#584)
      tests: Fix build errors (Bareflank#589)
      Merge pull request Bareflank#595 from rianquinn/rfc_583_1
      Merge pull request Bareflank#597 from rianquinn/issue_596
      Add changes required for clean eapis build (Bareflank#598)
      docs: Update Arch Linux setup instructions (Bareflank#603)
      Merge pull request Bareflank#614 from rianquinn/dev
      README.md: Update Arch instructions (Bareflank#624)
      Merge pull request Bareflank#630 from boddumanohar/rename

Jared Wright (8):
      Build System Support for Aarch64 Bareflank#498 (Bareflank#499)
      New cmake build system (Bareflank#532)
      Removed hard-coded path to extended apis for format and tidy targets (Bareflank#543)
      bfdriver double-compile bug (Bareflank#562)
      New VMM extension integration mechanism (Bareflank#560)
      Build system dependency caching (Bareflank#567)
      Merge pull request Bareflank#616 from rianquinn/announcement_613_2
      Merge pull request Bareflank#617 from rianquinn/announcement_613_3

JaredWright (4):
      [BUG] build system - unnecessary re-compilation
      [BUG] build system - duplicate vmm main exectuables Bareflank#537
      Extended APIs configurable path
      Updated bfdriver to build under WDK10 and VS 2017

Joshua Zepf (2):
      Updated intrinsics unit tests (Bareflank#487)
      Expanded x2apic msrs

Manohar Reddy (2):
      Change order of execution of delegates from FILO to FIFO (Bareflank#623)
      change name in the include header from memory_manager_x64 to memory_manager.h

Rian Quinn (62):
      initial super build script
      build working
      cleanup double compile of sdk
      Bug fixes and cleanup
      cleanup
      merge
      README update
      README update
      small fixes to the super build, enables travis
      fix bug with travis
      Merge pull request Bareflank#455 from incertia/dev
      Fix UPDATE_DISCONNECTED
      Merge pull request Bareflank#457 from rianquinn/fix_update_disconnected
      Fix issue with rebuilds
      Merge pull request Bareflank#458 from rianquinn/fix_update_command
      add extended apis support
      Merge pull request Bareflank#460 from rianquinn/add_extended_apis
      Merge Repos into the Hypervisor Repo (Bareflank#470)
      cygwin updates (Bareflank#472)
      msbuild_updates (Bareflank#473)
      BFM cleanup. (Bareflank#475)
      Update .codecov.yml
      BFSDK missing unit tests (Bareflank#477)
      ELF loader cleanup / missing unit tests (Bareflank#478)
      Dev (Bareflank#479)
      bug fixes (Bareflank#480)
      missing VMCS unit tests (Bareflank#481)
      missing CRT unit tests (Bareflank#482)
      missing bfdriver unit tests (Bareflank#484)
      Windows Support (Bareflank#489)
      Codacy Update (Bareflank#491)
      Update CMakeFlags_Native_VS.txt
      Windows 7 Support (Bareflank#492)
      Update README.md
      Header Updates (Bareflank#504)
      Contributing Update (Bareflank#505)
      Fix issue with EAPIs unit testing (Bareflank#515)
      Update README.md
      arch cleanup (Bareflank#519)
      remove env.sh (Bareflank#520)
      Delegate Implementation (Bareflank#531)
      Build System Bug Fixes (Bareflank#575)
      Fix crash with Windows (Bareflank#578)
      Enable More Unit Tests (Bareflank#580)
      Include Path / Library Fix (Bareflank#581)
      Re-enable Codecov (Bareflank#582)
      Fix Include Issue / Enable Warnings (Bareflank#586)
      Remove CMake variables that cannot be changed in CCMake (Bareflank#588)
      Update README.md
      Change to relative paths (Bareflank#594)
      Move Debug Intrinsics (Bareflank#599)
      Update Example Config (Bareflank#600)
      Rename BFVMM Classes (Bareflank#601)
      Convert Hypervisor to use Delegates (Bareflank#610)
      Redownload on Error (Bareflank#612)
      Move Check to Cpp (Bareflank#615)
      Relocate / Rename Memory Manager (Bareflank#618)
      Add support for unordered_map (Bareflank#625)
      Changes to support EAPIs (Bareflank#627)
      Disable Cygwin (Bareflank#628)
      Additional Changes to support EAPIs (Bareflank#629)
      VMX Bug Fix (Bareflank#633)

Will Song (2):
      Add support for using local repositories when building Bareflank.
      Update README.md

“rianquinn” (6):
      Fix Protected Delegate Issue
      Add BFVMM Namespace
      Fix Small Ninja Issue
      Mods for EAPIs
      Missing Header Guard
      Add IntelliSense Support
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant