xref: /linux/tools/objtool/tests/generic/test-static-local.sh (revision fbb79ff9a6638aeb5b7a5f7db25afd033e6edd96)
1*fbb79ff9SPuranjay Mohan#!/bin/bash
2*fbb79ff9SPuranjay Mohan# SPDX-License-Identifier: GPL-2.0
3*fbb79ff9SPuranjay Mohan#
4*fbb79ff9SPuranjay Mohan# A static local must be correlated with the original, not duplicated: a second
5*fbb79ff9SPuranjay Mohan# copy would discard the state the running kernel accumulated.
6*fbb79ff9SPuranjay Mohan
7*fbb79ff9SPuranjay Mohan. "$(dirname "$0")/../lib.sh"
8*fbb79ff9SPuranjay Mohan
9*fbb79ff9SPuranjay Mohansetup
10*fbb79ff9SPuranjay Mohanbuild_pair static_local.c
11*fbb79ff9SPuranjay Mohan
12*fbb79ff9SPuranjay Mohanin_symbols orig.o | grep -q 'counter' ||
13*fbb79ff9SPuranjay Mohan	probe_skip "compiler emitted no distinct static local symbol"
14*fbb79ff9SPuranjay Mohan
15*fbb79ff9SPuranjay Mohanrun_diff
16*fbb79ff9SPuranjay Mohanassert_patched target
17*fbb79ff9SPuranjay Mohan
18*fbb79ff9SPuranjay Mohanout_symbols | grep -q '\.klp\.sym\..*\.counter' ||
19*fbb79ff9SPuranjay Mohan	fail "static local not referenced through a klp relocation"
20*fbb79ff9SPuranjay Mohan
21*fbb79ff9SPuranjay Mohanout_symbols | grep 'counter' | grep -qvE 'UND|\.klp\.(sym|tombstone)' &&
22*fbb79ff9SPuranjay Mohan	fail "static local was given a fresh definition"
23*fbb79ff9SPuranjay Mohan
24*fbb79ff9SPuranjay Mohanpass "static local correlated rather than duplicated"
25