Change of vterm handling logic on backend chardev input event (#40)
[lunaix-os.git] / lunaix-os / scripts / gen_ksymtable.sh
1 #!/usr/bin/env bash
2
3 sym_types=$1
4 bin=$2
5
6 nm_out=$(nm -nfbsd "$bin")
7 # class_info=$(readelf -h "$bin" | grep 'Class:' | awk '{print $2}')
8
9 allsyms=($nm_out)
10 allsyms_len=${#allsyms[@]}
11
12 dtype="4byte"
13 if [ "$ARCH" == 'x86_64' ]; then
14     dtype="8byte"
15 fi
16
17 syms_idx=()
18
19 for (( i=0; i<allsyms_len; i+=3));
20 do
21     type=${allsyms[$i + 1]}
22
23     if [[ "$sym_types" == *"$type"* ]]; then
24         syms_idx+=($i)
25     fi
26 done
27
28 syms_len=${#syms_idx[@]}
29 declare -A assoc_array
30
31 echo '.section .ksymtable, "a", @progbits'
32 echo "    .global __lunaix_ksymtable"
33 echo "    __lunaix_ksymtable:"
34 echo "        .$dtype $syms_len"
35 echo "        .align 8"
36
37 for i in "${syms_idx[@]}"
38 do
39     addr=${allsyms[$i]}
40     type=${allsyms[$i + 1]}
41     sym=${allsyms[$i + 2]}
42
43     cat <<EOF
44         .$dtype 0x$addr
45         .$dtype __S$sym
46         .align 8
47
48 EOF
49     assoc_array["$sym"]=1
50 done
51
52 for sym_str in "${!assoc_array[@]}"
53 do
54     cat <<EOF
55     __S$sym_str:
56         .asciz "$sym_str"
57         .align 8
58 EOF
59 done