Relocation

Relocation Entries

Relocating Symbol References

foreach section s{
	foreach relocation entry r{
		refptr = s + r.offset;	
		if(r.type = R_X86_64_PC32){
			refaddr = ADDR(s) + r.offset;
			*refptr = (unsigned) (ADDR(r.symbol) + r.addend - refaddr);
		}
		
		if(r.type == R_X86_64_32){
			*refptr =(unsigned)(ADDR(r.symbol) + r.addend);	
		}
	}
}
Powered by Forestry.md