BuildRequires: pkgconfig(callmgr_client)
%endif
BuildRequires: swap-probe-devel
+BuildRequires: swap-probe-elf
%if "%{?tizen_profile_name}" == "tv"
BuildRequires: webkit2-efl-tv
BuildRequires: webkit2-efl-tv-debuginfo
Requires: swap-modules
%endif
Requires: swap-probe
+Requires: swap-probe-elf
Requires: sdbd
%description
# get appcore_efl_main addr
-addr_appcore_efl_main=$(readelf -s ${path_app_core_efl} | grep appcore_efl_main | awk '{print $2}' | head -1)
+addr_appcore_efl_main=$(parse_elf ${path_app_core_efl} -s appcore_efl_main)
check_null_or_exit addr_appcore_efl_main
# get __do_app addr
-addr_do_app=$(readelf -s ${dpath_app_core_efl} | grep __do_app | awk '{print $2}' | head -1)
+addr_do_app=$(parse_elf ${dpath_app_core_efl} -s __do_app)
check_null_or_exit addr_do_app
tmp=$(mktemp)
# launchpad
-su root -c "objdump -d --section=.plt $path_launchpad" | grep ">:" > $tmp
-addr_dlopen_plt=$(cat $tmp | grep " <dlopen@" | cut -f1 -d' ')
-addr_dlsym_plt=$(cat $tmp | grep " <dlsym@" | cut -f1 -d' ')
+addr_dlopen_plt=$(su root -c "parse_elf $path_launchpad -r dlopen")
+addr_dlsym_plt=$(su root -c "parse_elf $path_launchpad -r dlsym")
# libappcore-efl.so
-objdump -d --section=.plt $path_app_core_efl | grep ">:" > $tmp
-addr_appcore_init_plt=$(cat $tmp | grep " <appcore_init@" | cut -f1 -d' ')
-addr_elm_run_plt=$(cat $tmp | grep " <elm_run@" | cut -f1 -d' ')
-rm $tmp
+addr_appcore_init_plt=$(parse_elf $path_app_core_efl -r appcore_init)
+addr_elm_run_plt=$(parse_elf $path_app_core_efl -r elm_run)
# PLT
#!/bin/bash
preload_library_pattern="libdl[.-].*"
preload_library_path="/lib/"
-preload_open_function="dlopen@@GLIBC"
+preload_open_function="dlopen"
handlers_lib="/usr/lib/da_probe_tizen.so"
linker_path="/lib/"
linker_sym="_r_debug"
filename=$1
el=$(find $preload_library_path -regextype posix-extended -regex $preload_library_path$preload_library_pattern | head -n1)
preload_lib=$(readlink -f $el)
- addr=$(readelf -sW $preload_lib | grep $preload_open_function | head -1 | awk '{print $2}')
+ addr=$(parse_elf $preload_lib -s $preload_open_function)
echo -e "/bin/echo \"$preload_lib\" > /sys/kernel/debug/swap/preload/loader/loader_path" >> $filename
echo -e "/bin/echo 0x$addr > /sys/kernel/debug/swap/preload/loader/loader_offset" >> $filename
#!/bin/bash
-get_addr()
+get_addrs()
{
- name=$1
-
- addr=$(cat ${tmp} | grep " $name$" | awk '{print $2}')
- if [ -z "$addr" ]; then
- echo "ERROR: symbol '$name' not found" >&2
- exit 1
- fi
-
- echo 0x$addr
+ names=($@)
+ addrs=($(parse_elf ${lib_file} -sf ${names[@]}))
+
+ len=${#names[@]}
+ for (( i=0; i < ${len}; ++i)); do
+ name=${names[$i]}
+ addr=${addrs[$i]}
+ if [ -z "$addr" -o $((16#$addr)) -eq 0 ]; then
+ addr=0
+ echo "ERROR: symbol '$name' not found" >&2
+ fi
+ echo 0x$addr
+ done
}
script_dir=$(readlink -f $0 | xargs dirname)
lib_file=$(rpm -ql ${webkit_package_name}-debuginfo | grep "/usr/lib/debug/usr/lib/libewebkit2.so.debug$" | head -1)
tmp=$(mktemp)
-readelf -sW ${lib_file} | grep " FUNC " > ${tmp}
+func_names=()
+func_names+=(ewk_\(context\|view\)_inspector_server_start)
+func_names+=(_ZN3JSC16ProfileGenerator11willExecuteEPNS_9ExecStateERKNS_14CallIdentifierE)
+func_names+=(_ZN3JSC16ProfileGenerator10didExecuteEPNS_9ExecStateERKNS_14CallIdentifierE)
+
+addrs=(`get_addrs ${func_names[@]}`)
-inspector_addr=$(get_addr 'ewk_\(context\|view\)_inspector_server_start');
-willexecute_addr=$(get_addr _ZN3JSC16ProfileGenerator11willExecuteEPNS_9ExecStateERKNS_14CallIdentifierE);
-didexecute_addr=$(get_addr _ZN3JSC16ProfileGenerator10didExecuteEPNS_9ExecStateERKNS_14CallIdentifierE);
+inspector_addr=${addrs[0]}
+willexecute_addr=${addrs[1]}
+didexecute_addr=${addrs[2]}
rm ${tmp}
g_names=()
g_nick_names=()
+g_names_plt=()
+g_nick_names_plt=()
-get_addr()
+get_addrs()
{
- name=$1
+ param=$1
+ shift
+ names=($@)
+ len=${#names[@]}
+
+ if [[ "$param" == "-r" ]]; then
+ path_lib=$path_libewebkit2
- if [[ "$name" == *@plt ]]; then
- addr=$(objdump --section=.plt -d $path_libewebkit2 | grep $name | head -1 | cut -f1 -d' ')
+ for (( i=0; i < ${len}; ++i)); do
+ names[$i]=`echo ${names[$i]} | cut -d'@' -f 1`
+ done
else
- addr=$(readelf -sW $path_libewebkit2_debuginfo | grep " ${name}\(\.part\.[0-9]*\)*$" | grep " FUNC " | head -1 |awk '{print $2}')
+ path_lib=$path_libewebkit2_debuginfo
fi
- if [[ -z "$addr" ]]; then
- echo "ERROR: symbol '$name' not found" >&2
- addr=0
- fi
+ addrs=($(parse_elf $path_lib $param ${names[@]}))
- echo 0x$addr
+ for (( i=0; i < ${len}; ++i)); do
+ name=${names[$i]}
+ addr=${addrs[$i]}
+ if [ -z "$addr" -o $((16#$addr)) -eq 0 ]; then
+ addr=0
+ echo "ERROR: symbol '$name' not found" >&2
+ fi
+ echo 0x$addr
+ done
}
-
add_func()
{
name=$1
g_nick_names+=($nick_name)
}
+add_func_plt()
+{
+ name=$1
+ nick_name=$2
+
+ g_names_plt+=($name)
+ g_nick_names_plt+=($nick_name)
+}
gen_array()
{
+ addrs_plt=`get_addrs -r ${g_names_plt[@]}`
+ if [ $? -ne 0 ]; then
+ exit 1;
+ fi
+
+ addrs=`get_addrs -sf ${g_names[@]}`
+ if [ $? -ne 0 ]; then
+ exit 1;
+ fi
+
+ addrs=($addrs_plt $addrs)
+ g_names=(${g_names_plt[@]} ${g_names[@]})
+ g_nick_names=(${g_nick_names_plt[@]} ${g_nick_names[@]})
+
len=${#g_names[@]}
for (( i=0; i < ${len}; ++i)); do
- name=${g_names[$i]}
- addr=`get_addr $name`
- if [ $? -ne 0 ]; then
- exit 1;
- fi
-
- echo -e "\t{ \"$name\", \"${g_nick_names[$i]}\", $addr },"
+ echo -e "\t{ \"${g_names[$i]}\", \"${g_nick_names[$i]}\", ${addrs[$i]} },"
done
}
if [ "$__tizen_profile_name__" == "tv" ]; then
- add_func soup_requester_request_uri@plt soup_request
+ add_func_plt soup_requester_request_uri@plt soup_request
add_func _ZN7WebCore14ResourceLoader15willSendRequestERNS_15ResourceRequestERKNS_16ResourceResponseE main_res_will
add_func _ZN7WebCore11CachedImage7addDataEPKcj main_res_add
add_func _ZN7WebCore14ResourceLoader16didFinishLoadingEd main_res_finish
add_func _ZN7WebCore14ResourceLoader16didFinishLoadingEPNS_14ResourceHandleEd res_finish
add_func _ZN7WebCore22CompositingCoordinator24flushPendingLayerChangesEv redraw
else
- add_func soup_requester_request@plt soup_request
+ add_func_plt soup_requester_request@plt soup_request
add_func _ZN7WebCore18MainResourceLoader15willSendRequestERNS_15ResourceRequestERKNS_16ResourceResponseE main_res_will
add_func _ZN7WebCore18MainResourceLoader7addDataEPKcib main_res_add
add_func _ZN7WebCore18MainResourceLoader16didFinishLoadingEd main_res_finish