diff --git a/irdb-libs/libMEDSannotation/test/do-test.sh b/irdb-libs/libMEDSannotation/test/do-test.sh
new file mode 100755
index 0000000000000000000000000000000000000000..91ebebfa0176c06a1037ad09a1e6c033787b1f9b
--- /dev/null
+++ b/irdb-libs/libMEDSannotation/test/do-test.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+g++ test.cpp -I ../include -fmax-errors=2 -L../../lib -lMEDSannotation -g
+
+./a.out ls.annot
+./a.out ls.infoannot
+./a.out ls.STARSxrefs
diff --git a/irdb-libs/libMEDSannotation/test/ls.STARSxrefs b/irdb-libs/libMEDSannotation/test/ls.STARSxrefs
new file mode 100644
index 0000000000000000000000000000000000000000..3ab2073390dfaf314205efa4881beeacbc72f5ad
--- /dev/null
+++ b/irdb-libs/libMEDSannotation/test/ls.STARSxrefs
@@ -0,0 +1,19 @@
+             154f0      0 INSTR XREF IBT FROMDATA               1138 
+             155e0      0 INSTR XREF IBT FROMDATA               10d8 
+             15620      0 INSTR XREF IBT FROMDATA               10a8 
+             15690      0 INSTR XREF IBT FROMDATA               1030 
+             162c0      0 INSTR XREF IBT FROMDATA               5866 
+             16330      0 INSTR XREF IBT FROMDATA               585f 
+             1636c      0 INSTR XREF IBT FROMDATA                ee0 
+             162f1      1 INSTR XREF IBT FROMIB               376e RETURNTARGET
+              40d7      7 INSTR XREF TAKES_ADDRESS_OF DATA              16598
+              40f8      7 INSTR XREF TAKES_ADDRESS_OF DATA             21f2e0
+              40ff      7 INSTR XREF TAKES_ADDRESS_OF DATA              1a148
+              4134      5 INSTR XREF TAKES_ADDRESS_OF DATA              16598
+              413e      2 INSTR XREF IBT FROMIB               413c SWITCHTABLE
+              483c      2 INSTR XREF IBT FROMIB               413c SWITCHTABLE
+              484b      2 INSTR XREF IBT FROMIB               413c SWITCHTABLE
+              55ff      2 INSTR XREF IBT FROMIB               413c SWITCHTABLE
+              5699      2 INSTR XREF IBT FROMIB               413c SWITCHTABLE
+              413c      2 INSTR XREF FROMIB COMPLETE     60 SWITCHTABLE
+              413e      7 INSTR XREF TAKES_ADDRESS_OF DATA             22132d
diff --git a/irdb-libs/libMEDSannotation/test/ls.annot b/irdb-libs/libMEDSannotation/test/ls.annot
new file mode 100644
index 0000000000000000000000000000000000000000..0a104b13284d3efd92328693a32b796df6802948
--- /dev/null
+++ b/irdb-libs/libMEDSannotation/test/ls.annot
@@ -0,0 +1,91 @@
+                 0      1 DATAREF GLOBAL     1223 221311 PARENT byte_221311  VOID RW
+                 0     10 DATAREF GLOBAL     1251 221366 PARENT SMP_dummy414  VOID RW
+                 0     16 DATAREF GLOBAL     1252 221370 PARENT tp  VOID RW AGGREGATE
+                 0      8 DATAREF GLOBAL     1253 221370 CHILDOF 1252 OFFSET 0 tp + 0 FIELD DIRECT
+                 0      8 DATAREF GLOBAL     1254 221370 CHILDOF 1252 OFFSET 8 tp + 8 FIELD DIRECT
+                 0      8 DATAREF GLOBAL     1255 221380 PARENT ptr  VOID RW
+                 0      8 DATAREF GLOBAL     1256 221388 PARENT qword_221388  VOID RW
+                 0      1 DATAREF GLOBAL     1257 221390 PARENT byte_221390  VOID RW
+                 0      8 DATAREF GLOBAL     1282 221558 PARENT s  VOID RW
+              3758     23 FUNC GLOBAL .init_proc FUNC_SAFE NOFP RET               376e 
+              3758      0 FUNC FRAMERESTORE 0 0 2 1 0 0 2 0 0 3 0 0 4 0 8 5 0 1 6 0 0 7 0 0 8 0 0 9 0 0 10 0 0 11 0 0 12 0 16 13 0 0 14 0 0 15 0 0 ZZ
+              3758      0 FUNC MMSAFENESS SAFE
+              3758      4 INSTR BELONGTO 3758 
+              3758     -1 INSTR LOCAL SafeFrameAlloc sub     rsp, 8; _init 
+              3758      8 MEMORYHOLE STACK esp + 8 ReturnAddress 
+              3758      8 DATAREF STACK 1283 esp + 0 PARENT LocalFrame LOCALFRAME
+              3758      4 INSTR DEADREGS  EFLAGS RAX ZZ sub     rsp, 8; _init 
+              375c      7 INSTR BELONGTO 3758 
+              375c     -2 INSTR LOCAL n RAX ZZ  NumericDEFs mov     rax, cs:__gmon_start___ptr 
+              375c      7 INSTR DEADREGS  EFLAGS RAX ZZ mov     rax, cs:__gmon_start___ptr 
+              3763      3 INSTR BELONGTO 3758 
+              3763     -1 INSTR LOCAL NoMetaUpdate test    rax, rax 
+              3763      3 INSTR DEADREGS  EFLAGS ZZ test    rax, rax 
+              3766      2 INSTR BELONGTO 3758 
+              3766     -1 INSTR LOCAL NoMetaUpdate jz      short loc_376A 
+              3768      2 INSTR BELONGTO 3758 
+              3768     -1 INSTR LOCAL NoMetaUpdate call    rax ; __gmon_start__ 
+              3768      2 INSTR DEADREGS  EFLAGS ZZ call    rax ; __gmon_start__ 
+              376a      4 INSTR BELONGTO 3758 
+              376a      4 INSTR DEADREGS  EFLAGS ZZ add     rsp, 8 
+              376e      1 INSTR BELONGTO 3758 
+              376e      8 DEALLOC STACK esp - 8 retn
+              376e      1 INSTR DEADREGS  EFLAGS ZZ retn 
+              376e     -4 INSTR LOCAL SafeReturn retn
+              3770     12 FUNC GLOBAL sub_3770 FUNC_UNSAFE NOFP RET               377b 
+              3770      0 FUNC FRAMERESTORE 0 0 0 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 0 0 8 0 0 9 0 0 10 0 0 11 0 0 12 0 0 13 0 0 14 0 0 15 0 0 ZZ
+              3770      0 FUNC MMSAFENESS UNSAFE
+              3770      6 INSTR BELONGTO 3770 
+              3770      8 MEMORYHOLE STACK esp + 8 ReturnAddress 
+              3770      8 DATAREF STACK 1284 esp + 0 PARENT LocalFrame LOCALFRAME
+              3770      8 DATAREF STACK 1285 esp + 0 CHILDOF 1284 OFFSET 0 OutArgsRegion OUTARGS
+              3776      6 INSTR BELONGTO 3770 
+              3776     -1 INSTR LOCAL NoMetaUpdate jmp     cs:qword_21FC48 
+              59c0    650 FUNC GLOBAL sub_59C0 FUNC_UNSAFE NOFP RET FUNC_LEAF               5c49 
+              59c0      0 FUNC FRAMERESTORE 0 0 2 1 0 1 2 0 2 3 -48 4 4 0 8 5 -40 8 6 0 4 7 0 4 8 0 4 9 0 4 10 0 0 11 0 16 12 -32 4 13 -24 1 14 -16 4 15 -8 16 ZZ
+              59c0      0 FUNC MMSAFENESS SAFE
+              59c0      3 INSTR BELONGTO 59c0 
+              59c0      3 INSTR DEADREGS  EFLAGS RAX R8 R9 R10 R11 ZZ mov     r8, [rsi] 
+              59c3      3 INSTR BELONGTO 59c0 
+              59c3      3 INSTR DEADREGS  EFLAGS RAX R9 R10 R11 ZZ mov     r9, [rdi] 
+              59c6      7 INSTR BELONGTO 59c0 
+              59c6      7 INSTR DEADREGS  EFLAGS RAX R10 R11 ZZ lea     r11, jpt_5A81 
+              59cd      2 INSTR BELONGTO 59c0 
+              59cd     -3 INSTR LOCAL NoWarn push    r15 
+              59cd      2 INSTR DEADREGS  EFLAGS RAX R10 ZZ push    r15 
+              59cf      3 INSTR BELONGTO 59c0 
+              59cf     -2 INSTR LOCAL n R10 ZZ  AlwaysNUM xor     r10d, r10d 
+              59cf      3 INSTR DEADREGS  EFLAGS RAX R10 R15 ZZ xor     r10d, r10d 
+              59d2      2 INSTR BELONGTO 59c0 
+              59d2     -3 INSTR LOCAL NoWarn push    r14 
+              59d2      2 INSTR DEADREGS  EFLAGS RAX R15 ZZ push    r14 
+              59d4      5 INSTR BELONGTO 59c0 
+              59d4     -1 INSTR LOCAL MetadataUnused mov     eax, 1 
+              59d4      5 INSTR DEADREGS  EFLAGS RAX R14 R15 ZZ mov     eax, 1 
+              59d9      2 INSTR BELONGTO 59c0 
+              59d9     -3 INSTR LOCAL NoWarn push    r13 
+              59d9      2 INSTR DEADREGS  EFLAGS R14 R15 ZZ push    r13 
+              59db      2 INSTR BELONGTO 59c0 
+              59db     -3 INSTR LOCAL NoWarn push    r12 
+              59db      2 INSTR DEADREGS  EFLAGS R13 R14 R15 ZZ push    r12 
+              59dd      3 INSTR BELONGTO 59c0 
+              59dd     -1 INSTR LOCAL MetadataUnused mov     r12d, edx 
+              59dd      3 INSTR DEADREGS  EFLAGS R12 R13 R14 R15 ZZ mov     r12d, edx 
+              59e0      1 INSTR BELONGTO 59c0 
+              5c28      5 INSTR BELONGTO 59c0 
+              5c28     -1 INSTR LOCAL MetadataRedundant lea     r14d, [r13+r14-37h] 
+              5c28      5 INSTR DEADREGS  EFLAGS RCX R15 ZZ lea     r14d, [r13+r14-37h] 
+              5c2d      5 INSTR BELONGTO 59c0 
+              5c2d     -1 INSTR LOCAL NoMetaUpdate jmp     loc_5B28 
+              5c2d      5 INSTR DEADREGS  EFLAGS RCX R13 R15 ZZ jmp     loc_5B28 
+              5c38      4 INSTR BELONGTO 59c0 
+              5c38     -2 INSTR LOCAL n R14 ZZ  AlwaysNUM shl     r14d, 4 
+              5c38      4 INSTR DEADREGS  EFLAGS RCX R15 ZZ shl     r14d, 4 
+              5c3c      4 INSTR BELONGTO 59c0 
+              5c3c      4 INSTR DEADREGS  EFLAGS RCX R15 ZZ add     r8, 1 
+              5c40      5 INSTR BELONGTO 59c0 
+              5c40     -1 INSTR LOCAL MetadataRedundant lea     r14d, [r13+r14-57h] 
+              5c40      5 INSTR DEADREGS  EFLAGS RCX R15 ZZ lea     r14d, [r13+r14-57h] 
+              5c45      5 INSTR BELONGTO 59c0 
+              5c45     -1 INSTR LOCAL NoMetaUpdate jmp     loc_5B28 
+              5c45      5 INSTR DEADREGS  EFLAGS RCX R13 R15 ZZ jmp     loc_5B28 
diff --git a/irdb-libs/libMEDSannotation/test/ls.infoannot b/irdb-libs/libMEDSannotation/test/ls.infoannot
new file mode 100644
index 0000000000000000000000000000000000000000..35fb9f733dc22d34f182cf67065ed8be79e72dae
--- /dev/null
+++ b/irdb-libs/libMEDSannotation/test/ls.infoannot
@@ -0,0 +1,50 @@
+              3758     23 FUNC RETURNTYPE RAX 2
+              3758     23 FUNC INARGS    6  ARG0 0 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 
+              3770     12 FUNC RETURNTYPE RAX 0
+              3770     12 FUNC PROBLEM sub_3770 JUMPUNRESOLVED 
+              3780      6 FUNC RETURNTYPE RAX 0
+              3780      6 FUNC PROBLEM .__ctype_toupper_loc JUMPUNRESOLVED 
+              3790      6 FUNC RETURNTYPE RAX 0
+              37b0      6 FUNC PROBLEM .sigprocmask JUMPUNRESOLVED 
+              3e78      6 FUNC RETURNTYPE RAX 0
+              3e78      6 FUNC PROBLEM malloc JUMPUNRESOLVED 
+              3e80      6 FUNC RETURNTYPE RAX 0
+              3e80      6 FUNC PROBLEM __cxa_finalize JUMPUNRESOLVED 
+              3e90   6587 FUNC RETURNTYPE RAX 0
+              3e90   6587 FUNC INARGS    6  ARG0 0 ARG1 4 ARG2 0 ARG3 0 ARG4 0 ARG5 0 
+              40eb      6 INSTR CODEPTR 1 mov     r15d, 1
+              4124      5 INSTR CHECK OVERFLOW UNSIGNED 32  RAX ZZ add     eax, 83h; switch 276 cases 
+              4151      5 INSTR CODEPTR 1 mov     byte ptr [rsp+88h+var_78], 1; jumptable 000000000000413C case 107
+              a9b8      5 INSTR CODEPTR 5 mov     edx, 5; category
+              a9dd     1         15edf      5 INSTR CODEPTR 73 mov     eax, 73h ; 's'
+             1604f      4 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 RAX+2 ZZ lea     rcx, [rax+2] 
+             16053      4 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 RAX+3 ZZ lea     rdi, [rax+3]; size 
+             16081      3 INSTR CHECK UNDERFLOW UNSIGNED 64  RDI ZZ sub     rdi, rdx 
+             16084      4 INSTR CHECK OVERFLOW UNSIGNED 64  RDX ZZ add     rdx, 1; n 
+             1608b      3 INSTR CHECK OVERFLOW UNSIGNED 64  RDI ZZ IDIOM 18 MEMORYSINK add     rdi, r15 
+             1608e      3 INSTR CHECK OVERFLOW UNSIGNED 64  RDI ZZ IDIOM 18 MEMORYSINK add     rdi, r12; dest 
+             1609b      5 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 R12+R15 ZZ IDIOM 18 MEMORYSINK lea     rdi, [r12+r15-1]; dest 
+             1609b      5 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 R12+R15+-1 ZZ IDIOM 18 MEMORYSINK lea     rdi, [r12+r15-1]; dest 
+             160a0      4 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 R13+1 ZZ IDIOM 18 MEMORYSINK lea     rdx, [r13+1]; n 
+             160fb      5 INSTR CODEPTR 1 mov     edx, 1
+             16141      4 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 RAX+2 ZZ lea     rcx, [rax+2] 
+             16145      4 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 RAX+3 ZZ lea     rsi, [rax+3]; size 
+             161a0    123 FUNC RETURNTYPE RAX 1
+             161a0    123 FUNC INARGS    6  ARG0 4 ARG1 0 ARG2 1 ARG3 0 ARG4 0 ARG5 0 
+             161f2      5 INSTR CODEPTR 1 mov     edx, 1; whence
+             16220     64 FUNC RETURNTYPE RAX 0
+             16220     64 FUNC INARGS    6  ARG0 4 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 
+             1624b      5 INSTR CODEPTR 1 mov     edx, 1
+             16260     87 FUNC RETURNTYPE RAX 0
+             16260     87 FUNC INARGS    6  ARG0 4 ARG1 1 ARG2 2 ARG3 0 ARG4 0 ARG5 0 
+             162c0    101 FUNC RETURNTYPE RAX 2
+             162c0    101 FUNC INARGS    6  ARG0 0 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 
+             162c0    101 FUNC PROBLEM init CALLUNRESOLVED 
+             1630d      4 INSTR CHECK OVERFLOW UNSIGNED 64  RBX ZZ add     rbx, 1 
+             16330      2 FUNC RETURNTYPE RAX 0
+             16330      2 FUNC INARGS    6  ARG0 0 ARG1 0 ARG2 0 ARG3 1 ARG4 0 ARG5 0 
+             16340     41 FUNC RETURNTYPE RAX 16
+             16340     41 FUNC INARGS    6  ARG0 2 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 
+             1636c      9 FUNC RETURNTYPE RAX 0
+             1636c      9 FUNC INARGS    6  ARG0 0 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 
+   8000000      2 SUCCESS ANALYSISCOMPLETED
diff --git a/irdb-libs/libMEDSannotation/test/test.cpp b/irdb-libs/libMEDSannotation/test/test.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..83ed7c0ba72b499bbb9491db80e88f723a9778a8
--- /dev/null
+++ b/irdb-libs/libMEDSannotation/test/test.cpp
@@ -0,0 +1,32 @@
+#include <iostream>
+#include <fstream>
+#include <MEDS_AnnotationParser.hpp>
+#include <MEDS_SafeFuncAnnotation.hpp>
+
+using namespace std;
+
+int main(int argc, char *argv[] )
+{
+
+	if(argc!=2)
+	{
+		cout << "Usage: " << argv[0] << " <infile> " << endl;
+		return 2;
+	}
+
+	ifstream fin(argv[1]);
+
+	if(!fin)
+	{
+		cout << "Usage: " << argv[0] << " <infile> " << endl;
+		return 2;
+	}
+
+	using namespace MEDS_Annotation;
+	MEDS_AnnotationParser meds_ap(fin);
+
+        cout << dec << meds_ap.getAnnotations().size()     <<  " instruction annotations "  << endl;
+        cout << dec << meds_ap.getFuncAnnotations().size() <<  " function annotations "  << endl;
+        return 0;
+
+}