output=$1
+is64bit()
+{
+ readelf -h $handlers_lib | grep "Class:" | grep ELF64 > /dev/null
+ return $?
+}
+
+to_swap_format()
+{
+ addr=$1
+ is64bit && addr=$(echo $addr | sed 's/0x0/0x8/')
+ echo $addr
+}
function print_header()
{
{
filename=$1
- addr=$(cat $linker_info_header | grep "dl_fixup_off" | grep -o "0x[0-9a-f]\{8\}")
+ addr=$(cat $linker_info_header | grep "dl_fixup_off" | grep -o "0x[0-9a-f]*")
+ addr=$(to_swap_format $addr)
echo -e "/bin/echo \"$addr\" > /sys/kernel/debug/swap/got_patcher/linker/dl_fixup_addr" >> $filename
}
{
filename=$1
- addr=$(cat $linker_info_header | grep "dl_reloc_off" | grep -o "0x[0-9a-f]\{8\}")
+ addr=$(cat $linker_info_header | grep "dl_reloc_off" | grep -o "0x[0-9a-f]*")
+ addr=$(to_swap_format $addr)
echo -e "/bin/echo \"$addr\" > /sys/kernel/debug/swap/got_patcher/linker/dl_reloc_addr" >> $filename
}
{
filename=$1
- addr=$(readelf -sW $handlers_lib | grep $fixup_handler | awk '{print "0x" $2}')
+ addr=$(parse_elf -f $handlers_lib --addr_format=swap --syms | grep $fixup_handler | awk '{print "0x" $1}')
echo -e "/bin/echo \"$addr\" > /sys/kernel/debug/swap/got_patcher/handler/fixup_handler_off" >> $filename
}
{
filename=$1
- addr=$(readelf -sW $handlers_lib | grep $reloc_handler | awk '{print "0x" $2}')
+ addr=$(parse_elf -f $handlers_lib --addr_format=swap --syms | grep $reloc_handler | awk '{print "0x" $1}')
echo -e "/bin/echo \"$addr\" > /sys/kernel/debug/swap/got_patcher/handler/reloc_handler_off" >> $filename
}
filename=$1
libpthread_path=$(rpm -ql $libpthread_pkg_name | grep "/${LIB}/libpthread" | head -1)
- addr=$(readelf -sW $libpthread_path | grep $libpthread_init_func | awk '{print "0x" $2}')
+ addr=$(parse_elf -f $libpthread_path --addr_format=swap --syms | grep $libpthread_init_func | awk '{print "0x" $1}')
echo -e "/bin/echo \"$libpthread_path\" > /sys/kernel/debug/swap/got_patcher/pthread/path" >> $filename
echo -e "/bin/echo \"$addr\" > /sys/kernel/debug/swap/got_patcher/pthread/minimal_init_off" >> $filename