Week 1

Arrived in at University by 9 am, checked email and to see if Brad was in yet, which he did not come in until just after 10. At this stage the only knowledge about the project I had was the description from the page, and7 what was mentioned in the email correspondence, as well as the thesis paper, Andrew had published, about it. I had read parts of the paper, a couple of weeks prior, but did not have access to the source for the project, so parts of it did not make a whole lot of sense, due to my limited understanding of prior knowledge and lack of in depth reading, on the subject matter. I met with Brad, who went over what would be happening, and forwarded on the appropriate information about access the source for the project.

Source Acquisition

Spend quite some time getting the source, since it was hosted using git, and the lab machines do not have git tools installed, since subversion is used for AutoMark system. However I had previously compiled git for the lab machines, however could not use since the project was hosted over http, which git requires libcurl which I did not compile in, and attempted to recompile but learned the reason it did not just do it to begin with was the lab machines lack the libcurl development headers and libraries. Instead, I checked out the source onto my laptop, had a slight problem getting git to work with the proxy but eventually had the tree. Ran into a minor problem, I checked out the tree on Windows and git was configured to auto replace line ending with CRLF, which when I copied the tree to the lab machines, made the shell scripts break, since they do not like the CRs, so checked it out again this time in a virtualized Linux and copied across. Next came the compiling.


The project required LLVM and udis86. After finally seeing the configure, actually starting with out an error due to the CR, thought this was it, but was stopped short, qemu required zlib development packages and a few others, such as SDL, I will try to document all the other dependencies at a later time, and elsewhere. I was using LLVM 2.6 so I had to change the declarations of a function that Andrew found was missing from the 2.5 API but actually existed. Next was the linking I changed over so it used the 2.6 libraries.