Eliminate spurious `thunk function' detection on x86
authorNathan Rosenblum <nater@aemilia.cs.wisc.edu>
Wed, 17 Nov 2010 21:31:38 +0000 (15:31 -0600)
committerNathan Rosenblum <nater@aemilia.cs.wisc.edu>
Fri, 19 Nov 2010 21:30:15 +0000 (15:30 -0600)
commit4336520d5889add0da2d7d3fed611a2c78f9b48c
treeea044dadd79957c9ef73ec758f21618429f5b5f3
parent89ce51445ad842bf481100f08db62bc6e6d594a3
Eliminate spurious `thunk function' detection on x86

A `thunk function' is one that contains exactly two instructions:

mov (%esp),<a register>
ret

This construct is used in position independent code to retrieve
the program counter---see for example the __i686.get_pc_thunk.*
functions in glibc. Previously, any function that had a mov
instruction that referenced the stack pointer followed by a return
would be treated as a thunk. This commit properly checks for a
zero-offset dereference of the stack pointer.
parseAPI/src/IA_IAPI.C
parseAPI/src/IA_x86.C