@@ -221,40 +221,24 @@ static inline unsigned long ppc_global_function_entry(void *func)
221221 * - For ABIv1, we lookup the dot variant.
222222 * - For ABIv2, we return the local entry point.
223223 */
224- static inline unsigned long ppc_kallsyms_lookup_name (const char * name )
224+ static inline unsigned long __ppc_kallsyms_lookup_name (const char * name )
225225{
226- unsigned long addr ;
227- #ifdef CONFIG_PPC64_ELF_ABI_V1
228- /* check for dot variant */
229- char dot_name [1 + KSYM_NAME_LEN ];
230- bool dot_appended = false;
231-
232- if (strnlen (name , KSYM_NAME_LEN ) >= KSYM_NAME_LEN )
233- return 0 ;
234-
235- if (name [0 ] != '.' ) {
236- dot_name [0 ] = '.' ;
237- dot_name [1 ] = '\0' ;
238- strlcat (dot_name , name , sizeof (dot_name ));
239- dot_appended = true;
240- } else {
241- dot_name [0 ] = '\0' ;
242- strlcat (dot_name , name , sizeof (dot_name ));
243- }
244- addr = kallsyms_lookup_name (dot_name );
245- if (!addr && dot_appended )
246- /* Let's try the original non-dot symbol lookup */
247- addr = kallsyms_lookup_name (name );
248- #elif defined(CONFIG_PPC64_ELF_ABI_V2 )
249- addr = kallsyms_lookup_name (name );
250- if (addr )
226+ unsigned long addr = kallsyms_lookup_name (name );
227+
228+ if (IS_ENABLED (CONFIG_PPC64_ELF_ABI_V1 ) && !addr )
229+ addr = kallsyms_lookup_name (name + 1 );
230+ if (IS_ENABLED (CONFIG_PPC64_ELF_ABI_V2 ) && addr )
251231 addr = ppc_function_entry ((void * )addr );
252- #else
253- addr = kallsyms_lookup_name (name );
254- #endif
232+
255233 return addr ;
256234}
257235
236+ #ifdef CONFIG_PPC64_ELF_ABI_V1
237+ #define ppc_kallsyms_lookup_name (x ) __ppc_kallsyms_lookup_name("." x)
238+ #else
239+ #define ppc_kallsyms_lookup_name (x ) __ppc_kallsyms_lookup_name(x)
240+ #endif
241+
258242/*
259243 * Some instruction encodings commonly used in dynamic ftracing
260244 * and function live patching.
0 commit comments