1#ifndef _STRCMP_NAMING_H_
2#define _STRCMP_NAMING_H_
3
4/* Utility macros. */
5#define STRCMP_SUFFIX(x, y) x##y
6#define STRCMP_NAME(x, y) STRCMP_SUFFIX (x, y)
7
8/* Setup base of all definitions. */
9#define STRNCASECMP_BASE __strncasecmp
10#define STRCASECMP_BASE __strcasecmp
11#define WCSCMP_BASE __wcscmp
12
13#if defined USE_MULTIARCH && IS_IN (libc)
14# define WCSNCMP_BASE __wcsncmp
15# define STRNCMP_BASE __strncmp
16# define STRCMP_BASE __strcmp
17
18#else
19/* Covers IS_IN (rtld) or non-multiarch build. */
20# define WCSNCMP_BASE wcsncmp
21# define STRNCMP_BASE strncmp
22# define STRCMP_BASE strcmp
23
24# undef STRCMP_ISA
25# define STRCMP_ISA
26#endif
27
28#if IS_IN (rtld) || defined USE_MULTIARCH
29# define ISA_HIDDEN_JUMPTARGET(...) __VA_ARGS__
30#else
31# define ISA_HIDDEN_JUMPTARGET(...) HIDDEN_JUMPTARGET (__VA_ARGS__)
32#endif
33
34/* Get correct symbol for OVERFLOW_STRCMP, STRCMP, and
35 STRCASECMP. */
36#if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
37
38# if defined USE_AS_WCSCMP || defined USE_AS_WCSNCMP
39# define OVERFLOW_STRCMP_SYM WCSCMP_BASE
40# define STRCMP_SYM WCSNCMP_BASE
41# elif defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
42# define OVERFLOW_STRCMP_SYM STRCMP_NAME (STRCASECMP_BASE, _l)
43# define STRCMP_SYM STRCMP_NAME (STRNCASECMP_BASE, _l)
44# else
45# define OVERFLOW_STRCMP_SYM STRCMP_BASE
46# define STRCMP_SYM STRNCMP_BASE
47# endif
48
49# define STRCASECMP_SYM STRNCASECMP_BASE
50# define OVERFLOW_STRCMP \
51 ISA_HIDDEN_JUMPTARGET (STRCMP_NAME (OVERFLOW_STRCMP_SYM, STRCMP_ISA))
52#else
53# ifdef USE_AS_WCSCMP
54# define STRCMP_SYM WCSCMP_BASE
55# elif defined USE_AS_STRCASECMP_L
56# define STRCMP_SYM STRCMP_NAME (STRCASECMP_BASE, _l)
57# else
58# define STRCMP_SYM STRCMP_BASE
59# endif
60
61# define STRCASECMP_SYM STRCASECMP_BASE
62#endif
63
64#define STRCASECMP_L_NONASCII STRCMP_NAME (STRCASECMP_SYM, _l_nonascii)
65#define STRCASECMP STRCMP_NAME (STRCASECMP_SYM, STRCMP_ISA)
66#define STRCMP STRCMP_NAME (STRCMP_SYM, STRCMP_ISA)
67
68#endif
69

source code of glibc/sysdeps/x86_64/multiarch/strcmp-naming.h