HomeFreeBSD

pmcannotate: Don't increment end address passed to objdump -d.

Description

pmcannotate: Don't increment end address passed to objdump -d.

libpmc already returns an end address that is after the end of the
last instruction of a function (on both amd64 and arm64) as the end
address written to the annotate map file is computed as the start
address of the symbol plus the size.

Adding one could result in a curious failure where an entire
function's contents in assembly was reduced instead to only the first
instruction. The reason is that when the end instruction is bumped by
one, objdump -d can append the first instruction of the next function
in its output. However, since pmcannotate concatenates all of the
objdump -d output from various functions into a single file which it
then searches to find the assembly for a given file, if this
additional trailer was earlier in the file than the full function, the
trailer was chosen to represent the entire function resulting in the
truncated listing of the function.

Sponsored by: University of Cambridge, Google, Inc.
Differential Revision: https://reviews.freebsd.org/D35399

Details

Provenance
jhbAuthored on Jun 14 2022, 5:52 PM
Differential Revision
D35399: pmcannotate: Don't increment end address passed to objdump -d.
Parents
rG6ab35c78fb5a: newvers.sh: Don't use return to exit.
Branches
Unknown
Tags
Unknown