xref: /linux/tools/objtool/tests/generic/fixtures/init_reference.c (revision d6f2548ec3508fac9ad0f2a7d6f4783f9f9cd119)
1*d6f2548eSPuranjay Mohan // SPDX-License-Identifier: GPL-2.0
2*d6f2548eSPuranjay Mohan /* Patched function referencing data in an .init section. */
3*d6f2548eSPuranjay Mohan 
4*d6f2548eSPuranjay Mohan static const char __modinfo[]
5*d6f2548eSPuranjay Mohan 	__attribute__((section(".modinfo"), used, aligned(1))) = "\0name=vmlinux";
6*d6f2548eSPuranjay Mohan 
7*d6f2548eSPuranjay Mohan /* volatile so the read cannot be folded into a constant, leaving no reference */
8*d6f2548eSPuranjay Mohan static volatile int init_only __attribute__((section(".init.data"), used)) = 5;
9*d6f2548eSPuranjay Mohan 
10*d6f2548eSPuranjay Mohan int target(int x)
11*d6f2548eSPuranjay Mohan {
12*d6f2548eSPuranjay Mohan #ifdef PATCHED
13*d6f2548eSPuranjay Mohan 	return x + init_only + 1;
14*d6f2548eSPuranjay Mohan #else
15*d6f2548eSPuranjay Mohan 	return x + init_only;
16*d6f2548eSPuranjay Mohan #endif
17*d6f2548eSPuranjay Mohan }
18