xref: /linux/tools/objtool/tests/generic/fixtures/new_data.c (revision f4b8bfb1285992a6ab6f3d7cd25186d64f0773ee)
1*f4b8bfb1SPuranjay Mohan // SPDX-License-Identifier: GPL-2.0
2*f4b8bfb1SPuranjay Mohan /* Data introduced by the patch. */
3*f4b8bfb1SPuranjay Mohan 
4*f4b8bfb1SPuranjay Mohan static const char __modinfo[]
5*f4b8bfb1SPuranjay Mohan 	__attribute__((section(".modinfo"), used, aligned(1))) = "\0name=vmlinux";
6*f4b8bfb1SPuranjay Mohan 
7*f4b8bfb1SPuranjay Mohan #ifdef PATCHED
8*f4b8bfb1SPuranjay Mohan /*
9*f4b8bfb1SPuranjay Mohan  * Not an arithmetic progression: { 1, 2, 3, 4 } indexed by x & 3 is something
10*f4b8bfb1SPuranjay Mohan  * a compiler can compute instead of load, and then target() has no reference
11*f4b8bfb1SPuranjay Mohan  * to the array and there is nothing for klp diff to carry.
12*f4b8bfb1SPuranjay Mohan  */
13*f4b8bfb1SPuranjay Mohan static const int klp_new_data[4] __attribute__((used)) = { 7, 3, 11, 5 };
14*f4b8bfb1SPuranjay Mohan #endif
15*f4b8bfb1SPuranjay Mohan 
16*f4b8bfb1SPuranjay Mohan int target(int x)
17*f4b8bfb1SPuranjay Mohan {
18*f4b8bfb1SPuranjay Mohan #ifdef PATCHED
19*f4b8bfb1SPuranjay Mohan 	return x + klp_new_data[x & 3];
20*f4b8bfb1SPuranjay Mohan #else
21*f4b8bfb1SPuranjay Mohan 	return x;
22*f4b8bfb1SPuranjay Mohan #endif
23*f4b8bfb1SPuranjay Mohan }
24