1*229ad173SPuranjay Mohan // SPDX-License-Identifier: GPL-2.0 2*229ad173SPuranjay Mohan /* Two functions contribute to one special section; only one is patched. */ 3*229ad173SPuranjay Mohan 4*229ad173SPuranjay Mohan static const char __modinfo[] 5*229ad173SPuranjay Mohan __attribute__((section(".modinfo"), used, aligned(1))) = "\0name=vmlinux"; 6*229ad173SPuranjay Mohan other(int x)7*229ad173SPuranjay Mohanint other(int x) 8*229ad173SPuranjay Mohan { 9*229ad173SPuranjay Mohan asm volatile( 10*229ad173SPuranjay Mohan "2:\n\t" 11*229ad173SPuranjay Mohan ".pushsection .kcfi_traps, \"a\"\n\t" 12*229ad173SPuranjay Mohan ".balign 4\n\t" 13*229ad173SPuranjay Mohan ".long 2b - .\n\t" 14*229ad173SPuranjay Mohan ".popsection\n\t"); 15*229ad173SPuranjay Mohan return x * 5; 16*229ad173SPuranjay Mohan } 17*229ad173SPuranjay Mohan target(int x)18*229ad173SPuranjay Mohanint target(int x) 19*229ad173SPuranjay Mohan { 20*229ad173SPuranjay Mohan asm volatile( 21*229ad173SPuranjay Mohan "1:\n\t" 22*229ad173SPuranjay Mohan ".pushsection .kcfi_traps, \"a\"\n\t" 23*229ad173SPuranjay Mohan ".balign 4\n\t" 24*229ad173SPuranjay Mohan ".long 1b - .\n\t" 25*229ad173SPuranjay Mohan ".popsection\n\t"); 26*229ad173SPuranjay Mohan #ifdef PATCHED 27*229ad173SPuranjay Mohan return x + 2; 28*229ad173SPuranjay Mohan #else 29*229ad173SPuranjay Mohan return x + 1; 30*229ad173SPuranjay Mohan #endif 31*229ad173SPuranjay Mohan } 32