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; + +}