Power jump table parsing
authorMadhavi Krishnan <madhavi@cs.wisc.edu>
Tue, 19 Oct 2010 19:24:09 +0000 (14:24 -0500)
committerMadhavi Krishnan <madhavi@cs.wisc.edu>
Tue, 19 Oct 2010 19:24:09 +0000 (14:24 -0500)
commita029338e3640c4a9c7d1fc780691954ad1eddd68
tree39604a46e3e50437f4d520607631f8404420ed8e
parentcf6f26e7331bf6bb8f1c84adb369523eb01dd574
Power jump table parsing

1) Extensions to parseAPI(IA_powerDetails) to
find jump tables in ppc32 code.
The addi-addis combination instructions can
be anywhere in the function before the indirect
jump - not necessarily in the same block as the
indirect jump instruction.
The jump table start address is stored in got
section. For shared libraries, this is filled by
the dynamic loader via a relocation entry. Hence,
we should find the relocation entry corresponding
to the table start address to find the table in
rodata section.
2) symtabAPI: Relocation entries are added to
the corresponding DT_REL sections (rel.dyn and
rel.plt) in addition to the target region of the
relocations (plt section). This enables us to
get a list of relocations in a particular ELF
section.
parseAPI/h/CodeSource.h
parseAPI/src/IA_powerDetails.C
symtabAPI/src/Object-elf.C