| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
| 9 | |
| 10 | |
| 11 | |
| 12 | |
| 13 | |
| 14 | |
| 15 |
|
| 16 | . "$(dirname "$0")/../lib.sh"
|
| 17 |
|
| 18 | setup
|
| 19 |
|
| 20 | |
| 21 | build_one sympos_dup.c orig.o -DFUNC_NAME=use_a
|
| 22 | build_one sympos_dup.c patched.o -DFUNC_NAME=use_a -DPATCHED
|
| 23 | run_diff
|
| 24 |
|
| 25 | assert_klp_sympos dup_counter 0
|
| 26 |
|
| 27 | |
| 28 | for p in "" "-DPATCHED"; do
|
| 29 | |
| 30 | build_one sympos_dup.c "a$p.o" -DFUNC_NAME=use_a $p
|
| 31 | |
| 32 | build_one sympos_dup.c "b$p.o" -DFUNC_NAME=use_b -DNO_MODINFO $p
|
| 33 | done
|
| 34 | partial_link "$workdir/orig.o" "$workdir/a.o" "$workdir/b.o" ||
|
| 35 | probe_skip "partial link unavailable"
|
| 36 | partial_link "$workdir/patched.o" "$workdir/a-DPATCHED.o" "$workdir/b-DPATCHED.o" ||
|
| 37 | probe_skip "partial link unavailable"
|
| 38 |
|
| 39 | |
| 40 | [ "$(count_input_symbols orig.o dup_counter)" = 2 ] ||
|
| 41 | fail "fixture did not produce two dup_counter symbols"
|
| 42 |
|
| 43 | run_diff
|
| 44 |
|
| 45 | assert_klp_sympos dup_counter 1
|
| 46 | assert_klp_sympos dup_counter 2
|
| 47 | |
| 48 | out_symbols | grep -qE '\.klp\.sym\.[^.]+\.dup_counter,0([[:space:]]|$)' &&
|
| 49 | fail "sympos 0 emitted for a duplicated symbol"
|
| 50 |
|
| 51 | pass "sympos numbers duplicate symbols and stays 0 for unique ones"
|