GLIBC25_MEMPCPY(m_ld_so_1, mempcpy) /* ld.so.1 */
-/* getenv. glibc-2.5 steps along the env strings in 2 byte chunks
- which means it sometimes overreads. sigh. */
-#define GLIBC25_GETENV(soname, fnname) \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* name0 ); \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* name0 ) \
- { \
- char** ep; \
- char* cand; \
- char* name; \
- extern char** __environ; \
- if (__environ == NULL || name0 == NULL || name0[0] == '\0') \
- return NULL; \
- for (ep = __environ; *ep; ep++) { \
- cand = *ep; \
- name = (char*)name0; \
- /* advance cand and name until either points at zero or \
- until what they both point at differs. */ \
- while (1) { \
- if (*cand == 0 || *name == 0) \
- break; \
- if (*cand != *name) \
- break; \
- cand++; \
- name++; \
- } \
- if (*name == 0 && *cand == '=') \
- return cand+1; \
- } \
- return NULL; \
- }
-
-GLIBC25_GETENV(m_libc_soname, getenv)
-
-
/*------------------------------------------------------------*/
/*--- AIX stuff only after this point ---*/
/*------------------------------------------------------------*/