swap_auxd: modify the smack exec label as User
[platform/core/system/swap-manager.git] / scripts / gen_preload_header.sh
1 #!/bin/bash
2 handlers_lib="$LIBDIR/da_probe_tizen.so"
3 loader_library_pattern="libdl[.-].*"
4 linker_library_pattern="ld-.*"
5 libc_pkg_name="glibc"
6 libpthread_pkg_name="glibc"
7 libsmack_pkg_name="libsmack"
8 libpthread_init_func="__pthread_initialize_minimal"
9
10 output=$1
11
12
13 function print_header()
14 {
15     filename=$1
16     echo "#!/bin/bash
17 #Preload
18 PATH=/bin:/usr/bin:/sbin:/usr/sbin
19 " > $filename
20 }
21
22 function print_loader()
23 {
24     filename=$1
25
26     loader_path=$(rpm -ql $libc_pkg_name | grep "$loader_library_pattern" | head -1)
27     echo -e "/bin/echo \"$loader_path\" > /sys/kernel/debug/swap/preload/ignored_binaries/bins_add" >> $filename
28 }
29
30 function print_linker()
31 {
32     filename=$1
33
34     linker_path=$(rpm -ql $libc_pkg_name | grep "$linker_library_pattern" | head -1)
35     echo -e "/bin/echo \"$linker_path\" > /sys/kernel/debug/swap/preload/ignored_binaries/bins_add" >> $filename
36 }
37
38 function print_probe_lib()
39 {
40     filename=$1
41     echo -e "/bin/echo \"$handlers_lib\" > /sys/kernel/debug/swap/preload/handler" >> $filename
42 }
43
44 function print_libc()
45 {
46     filename=$1
47
48     echo -e "/bin/echo /$LIB/libc.so.6 > /sys/kernel/debug/swap/preload/ignored_binaries/bins_add" >> $filename
49 }
50
51 function print_libpthread()
52 {
53     filename=$1
54
55     libpthread_path=$(rpm -ql $libpthread_pkg_name | grep "libpthread" | head -1)
56     addr=$(parse_elf -f $libpthread_path --addr_format=swap --syms | grep $libpthread_init_func | awk '{print "0x" $1}')
57
58     echo -e "/bin/echo \"$libpthread_path\" > /sys/kernel/debug/swap/preload/ignored_binaries/bins_add" >> $filename
59     echo -e "/bin/echo \"$libpthread_path\" > /sys/kernel/debug/swap/preload/pthread/path" >> $filename
60     echo -e "/bin/echo $addr > /sys/kernel/debug/swap/preload/pthread/minimal_init_off" >> $filename
61 }
62
63 function print_libsmack()
64 {
65     filename=$1
66
67     libsmack_path=$(rpm -ql $libsmack_pkg_name | grep "libsmack" | head -1)
68     echo -e "/bin/echo \"$libsmack_path\" > /sys/kernel/debug/swap/preload/ignored_binaries/bins_add" >> $filename
69 }
70
71 function print_ignored()
72 {
73     filename=$1
74
75     print_libc $filename
76     print_libpthread $filename
77     print_loader $filename
78     print_linker $filename
79     print_libsmack $filename
80 }
81
82 function print_enable()
83 {
84     filename=$1
85
86     echo -e "/bin/echo \"1\" > /sys/kernel/debug/swap/preload/enable" >> $filename
87 }
88
89 ##################################
90 #       Script entry point       #
91 ##################################
92
93
94 print_header $output
95 print_probe_lib $output
96 print_ignored $output
97 print_enable $output
98
99 # check addresses
100 grep 0x0000000000000000 $output && echo "ERROR: generate preload info" >&2 && exit 1
101 echo 0