1*996edd14SPuranjay Mohan // SPDX-License-Identifier: GPL-2.0 2*996edd14SPuranjay Mohan /* 3*996edd14SPuranjay Mohan * Special section entry with no ANNOTATE_DATA_SPECIAL annotation and a local 4*996edd14SPuranjay Mohan * label at offset 0, the shape Clang produces for .kcfi_traps. 5*996edd14SPuranjay Mohan */ 6*996edd14SPuranjay Mohan 7*996edd14SPuranjay Mohan static const char __modinfo[] 8*996edd14SPuranjay Mohan __attribute__((section(".modinfo"), used, aligned(1))) = "\0name=vmlinux"; 9*996edd14SPuranjay Mohan target(int x)10*996edd14SPuranjay Mohanint target(int x) 11*996edd14SPuranjay Mohan { 12*996edd14SPuranjay Mohan asm volatile( 13*996edd14SPuranjay Mohan "1:\n\t" 14*996edd14SPuranjay Mohan ".pushsection .kcfi_traps, \"a\"\n\t" 15*996edd14SPuranjay Mohan ".balign 4\n\t" 16*996edd14SPuranjay Mohan "trap_marker:\n\t" 17*996edd14SPuranjay Mohan ".long 1b - .\n\t" 18*996edd14SPuranjay Mohan ".popsection\n\t"); 19*996edd14SPuranjay Mohan #ifdef PATCHED 20*996edd14SPuranjay Mohan return x + 2; 21*996edd14SPuranjay Mohan #else 22*996edd14SPuranjay Mohan return x + 1; 23*996edd14SPuranjay Mohan #endif 24*996edd14SPuranjay Mohan } 25