1import nose
2import angr
3
4import logging
5l = logging.getLogger("angr_tests")
6
7import os
8test_location = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', '..', 'binaries', 'tests')
9
10def test_nx():
11    nx_amd64 = angr.Project(os.path.join(test_location, 'x86_64', 'memmove'))
12    es = nx_amd64.factory.entry_state()
13
14    # .text should be PROT_READ|PROT_EXEC
15    nose.tools.assert_equal(es.solver.eval(es.memory.permissions(nx_amd64.entry)), 5)
16
17    # load stack to initialize page
18    es.memory.load(es.regs.sp, 4)
19
20    # stack should be PROT_READ|PROT_WRITE
21    nose.tools.assert_equal(es.solver.eval(es.memory.permissions(es.regs.sp)), 3)
22
23if __name__ == "__main__":
24    test_nx()
25