#!/bin/bash

if [ "$#" -ne 2 ]; then
	echo "Usage: ${0} /path/to/pdf /path/to/libhammer.so"
	echo "WARNING: For now, parameters are passed unchecked to perf probe"
	exit 1
fi

PDFPATH=$1
HAMMERPATH=$2

perf probe -x $HAMMERPATH --del probe_libhammer:h_arena_malloc_raw
perf probe -x $HAMMERPATH --del probe_libhammer:h_do_parse
perf probe -x $HAMMERPATH --del probe_libhammer:perform_lowlevel_parse
#perf probe -x $HAMMERPATH --del probe_libhammer:recall
perf probe -x $HAMMERPATH --del probe_libhammer:h_packrat_parse
perf probe -x $HAMMERPATH --del probe_libhammer:parse_action
perf probe -x $HAMMERPATH --del probe_libhammer:parse_choice
perf probe -x $HAMMERPATH --del probe_libhammer:parse_sequence
perf probe -x $HAMMERPATH --del probe_libhammer:parse_difference
perf probe -x $HAMMERPATH --del probe_libhammer:parse_many
perf probe -x $HAMMERPATH --del probe_libhammer:parse_and
perf probe -x $HAMMERPATH --del probe_libhammer:parse_attr_bool
perf probe -x $HAMMERPATH --del probe_libhammer:parse_bind
perf probe -x $HAMMERPATH --del probe_libhammer:parse_bits
perf probe -x $HAMMERPATH --del probe_libhammer:parse_butnot
perf probe -x $HAMMERPATH --del probe_libhammer:parse_charset
perf probe -x $HAMMERPATH --del probe_libhammer:parse_ch
perf probe -x $HAMMERPATH --del probe_libhammer:parse_end
perf probe -x $HAMMERPATH --del probe_libhammer:parse_endianness
perf probe -x $HAMMERPATH --del probe_libhammer:parse_epsilon
perf probe -x $HAMMERPATH --del probe_libhammer:parse_ignore
perf probe -x $HAMMERPATH --del probe_libhammer:parse_ignoreseq
perf probe -x $HAMMERPATH --del probe_libhammer:parse_indirect
perf probe -x $HAMMERPATH --del probe_libhammer:parse_int_range
perf probe -x $HAMMERPATH --del probe_libhammer:parse_not
perf probe -x $HAMMERPATH --del probe_libhammer:parse_nothing
perf probe -x $HAMMERPATH --del probe_libhammer:parse_optional
perf probe -x $HAMMERPATH --del probe_libhammer:parse_permutation
perf probe -x $HAMMERPATH --del probe_libhammer:parse_skip
perf probe -x $HAMMERPATH --del probe_libhammer:parse_seek
perf probe -x $HAMMERPATH --del probe_libhammer:parse_tell
perf probe -x $HAMMERPATH --del probe_libhammer:parse_token
perf probe -x $HAMMERPATH --del probe_libhammer:parse_unimplemented
perf probe -x $HAMMERPATH --del probe_libhammer:parse_put
perf probe -x $HAMMERPATH --del probe_libhammer:parse_get
perf probe -x $HAMMERPATH --del probe_libhammer:parse_whitespace
perf probe -x $HAMMERPATH --del probe_libhammer:parse_xor

#perf probe -x $HAMMERPATH --del probe_libhammer:parse_action__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_choice__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_sequence__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_difference__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_many__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_and__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_attr_bool__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_bind__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_bits__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_butnot__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_charset__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_ch__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_end__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_endianness__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_epsilon__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_ignore__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_ignoreseq__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_indirect__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_int_range__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_not__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_nothing__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_optional__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_permutation__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_skip__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_seek__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_tell__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_token__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_unimplemented__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_put__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_get__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_whitespace__return
#perf probe -x $HAMMERPATH --del probe_libhammer:parse_xor__return

perf probe -x $PDFPATH --del probe_pdf:ASCII85Decode
perf probe -x $PDFPATH --del probe_pdf:ASCIIHexDecode
perf probe -x $PDFPATH --del probe_pdf:FlateDecode
perf probe -x $PDFPATH --del probe_pdf:LZWDecode
perf probe -x $PDFPATH --del probe_pdf:RunLengthDecode
perf probe -x $PDFPATH --del probe_pdf:init_parser
perf probe -x $PDFPATH --del probe_pdf:init_runlengthdecode_parser
perf probe -x $PDFPATH --del probe_pdf:kstream
perf probe -x $PDFPATH --del probe_pdf:kxstream
#perf probe -x $HAMMERPATH --del probe_libhammer:h_do_parse__return
perf probe -x $HAMMERPATH --del probe_libhammer:perform_lowlevel_parse__return
#perf probe -x $HAMMERPATH --del probe_libhammer:recall__return
perf probe -x $HAMMERPATH --del probe_libhammer:h_packrat_parse__return
