Binary rewriter on FreeBSD passes some initial tests.
authorDan McNulty <mcnulty@cs.wisc.edu>
Mon, 22 Mar 2010 14:41:01 +0000 (09:41 -0500)
committerDan McNulty <mcnulty@cs.wisc.edu>
Mon, 22 Mar 2010 14:41:01 +0000 (09:41 -0500)
commit58f48408e29e03ea81b0bcc36988346bde2d25fd
tree4686818cd59a121a36091450f26fe10303e94521
parent4587f5cef4bbc0afe1c07d555a7933e0c6631d08
Binary rewriter on FreeBSD passes some initial tests.
=====================================================
-- dyninstAPI --
Removed some code that handled executables without rel[a]?.dyn sections.
The code wasn't working correctly, and this case is now handled elsewhere.

-- dyninstAPI_RT --
Added platform-specific files for FreeBSD -- updated Makefile

-- build system --
Capabilities updated for FreeBSD

-- SymtabAPI --
It is now possible to determine the type of a REL Region from the machine
type instead of searching for the existence of a REL section.

Fixed some bugs in the ELF emitter that ocurred on FreeBSD:
    * The FREEBSD kernel requires that the INTERP program segment be in
      the first page of the executable's address space. When adding
      program headers to a rewritten binary, we were shifting all program
      segments except the first to the next page in memory. The fix was
      to keep the INTERP segment in the first page.
    * FreeBSD libc uses the _end symbol to locate the heap. This symbol
      was not being updated when adding another LOAD segment.
    * Executables without .rel.dyn were not being created correctly when
      added symbol references relied on placing relocations in this section.

-- testsuite --
Implemented some platform specific functions for FreeBSD
dyninstAPI/src/binaryEdit.C
dyninstAPI_RT/i386-unknown-freebsd8.0/Makefile
dyninstAPI_RT/src/RTfreebsd.c [new file with mode: 0644]
dyninstAPI_RT/src/RTheap-freebsd.c [new file with mode: 0644]
make.config
symtabAPI/src/Object-elf.C
symtabAPI/src/Object-elf.h
symtabAPI/src/Symtab.C
symtabAPI/src/emitElf.C
symtabAPI/src/emitElf.h
testsuite/src/dyninst/test_lib_mutateeStart.C