diff --git a/coverage_config_x86_64.json b/coverage_config_x86_64.json
index 4ad4557d..648083ff 100644
--- a/coverage_config_x86_64.json
+++ b/coverage_config_x86_64.json
@@ -1,5 +1,5 @@
 {
-  "coverage_score": 75.9,
+  "coverage_score": 76.3,
   "exclude_path": "",
   "crate_features": ""
 }
diff --git a/src/loader/mod.rs b/src/loader/mod.rs
index 1567820c..165276f7 100644
--- a/src/loader/mod.rs
+++ b/src/loader/mod.rs
@@ -543,6 +543,24 @@ mod test {
         v
     }
 
+    #[cfg(feature = "elf")]
+    #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
+    fn make_elfnote() -> Vec<u8> {
+        include_bytes!("test_elfnote.bin").to_vec()
+    }
+
+    #[cfg(feature = "elf")]
+    #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
+    fn make_dummy_elfnote() -> Vec<u8> {
+        include_bytes!("test_dummynote.bin").to_vec()
+    }
+
+    #[cfg(feature = "elf")]
+    #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
+    fn make_bad_elfnote() -> Vec<u8> {
+        include_bytes!("test_badnote.bin").to_vec()
+    }
+
     #[allow(safe_packed_borrows)]
     #[allow(non_snake_case)]
     #[test]
@@ -665,6 +683,42 @@ mod test {
         );
     }
 
+    #[cfg(feature = "elf")]
+    #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
+    #[test]
+    fn load_pvh() {
+        let gm = create_guest_mem();
+        let pvhnote_image = make_elfnote();
+        let loader_result = Elf::load(&gm, None, &mut Cursor::new(&pvhnote_image), None).unwrap();
+        println!(
+            "PVH entry point at address {:8x} \n",
+            loader_result.pvh_entry_addr.unwrap().raw_value()
+        );
+        assert_eq!(loader_result.pvh_entry_addr.unwrap().raw_value(), 0x1e1fe1f);
+    }
+
+    #[test]
+    #[cfg(feature = "elf")]
+    #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
+    fn dumy_elfnote() {
+        let gm = create_guest_mem();
+        let dummynote_image = make_dummy_elfnote();
+        let loader_result = Elf::load(&gm, None, &mut Cursor::new(&dummynote_image), None).unwrap();
+        assert!(loader_result.pvh_entry_addr.is_none());
+    }
+
+    #[test]
+    #[cfg(feature = "elf")]
+    #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
+    fn bad_elfnote() {
+        let gm = create_guest_mem();
+        let badnote_image = make_bad_elfnote();
+        assert_eq!(
+            Err(Error::ReadNoteHeader),
+            Elf::load(&gm, None, &mut Cursor::new(&badnote_image), None)
+        );
+    }
+
     #[test]
     fn cmdline_overflow() {
         let gm = create_guest_mem();
diff --git a/src/loader/test_badnote.bin b/src/loader/test_badnote.bin
new file mode 100755
index 00000000..cbe4cb59
Binary files /dev/null and b/src/loader/test_badnote.bin differ
diff --git a/src/loader/test_dummynote.bin b/src/loader/test_dummynote.bin
new file mode 100755
index 00000000..990e69ed
Binary files /dev/null and b/src/loader/test_dummynote.bin differ
diff --git a/src/loader/test_elfnote.bin b/src/loader/test_elfnote.bin
new file mode 100755
index 00000000..36efd2d3
Binary files /dev/null and b/src/loader/test_elfnote.bin differ