1*7fd24723SPuranjay Mohan // SPDX-License-Identifier: GPL-2.0 2*7fd24723SPuranjay Mohan /* 3*7fd24723SPuranjay Mohan * Two translation units (TU_B selects the second) linked with ThinLTO. 4*7fd24723SPuranjay Mohan * Importing bump() promotes the file-local counter, renaming it 5*7fd24723SPuranjay Mohan * counter.llvm.<hash>. The hash is content derived, so it differs between the 6*7fd24723SPuranjay Mohan * original and patched builds. 7*7fd24723SPuranjay Mohan */ 8*7fd24723SPuranjay Mohan 9*7fd24723SPuranjay Mohan #ifdef TU_B 10*7fd24723SPuranjay Mohan 11*7fd24723SPuranjay Mohan extern int bump(void); 12*7fd24723SPuranjay Mohan other_entry(void)13*7fd24723SPuranjay Mohanint other_entry(void) 14*7fd24723SPuranjay Mohan { 15*7fd24723SPuranjay Mohan return bump() + bump(); 16*7fd24723SPuranjay Mohan } 17*7fd24723SPuranjay Mohan 18*7fd24723SPuranjay Mohan #else 19*7fd24723SPuranjay Mohan 20*7fd24723SPuranjay Mohan static const char __modinfo[] 21*7fd24723SPuranjay Mohan __attribute__((section(".modinfo"), used, aligned(1))) = "\0name=vmlinux"; 22*7fd24723SPuranjay Mohan 23*7fd24723SPuranjay Mohan static int counter; 24*7fd24723SPuranjay Mohan bump(void)25*7fd24723SPuranjay Mohanint bump(void) 26*7fd24723SPuranjay Mohan { 27*7fd24723SPuranjay Mohan return ++counter; 28*7fd24723SPuranjay Mohan } 29*7fd24723SPuranjay Mohan target(void)30*7fd24723SPuranjay Mohanint target(void) 31*7fd24723SPuranjay Mohan { 32*7fd24723SPuranjay Mohan #ifdef PATCHED 33*7fd24723SPuranjay Mohan return counter + 1; 34*7fd24723SPuranjay Mohan #else 35*7fd24723SPuranjay Mohan return counter; 36*7fd24723SPuranjay Mohan #endif 37*7fd24723SPuranjay Mohan } 38*7fd24723SPuranjay Mohan 39*7fd24723SPuranjay Mohan #endif 40