]> Zhao Yanbai Git Server - minix.git/commitdiff
libc, libutil: remove compat hacks
authorBen Gras <ben@minix3.org>
Mon, 7 Jan 2013 19:10:08 +0000 (19:10 +0000)
committerBen Gras <ben@minix3.org>
Tue, 8 Jan 2013 15:47:37 +0000 (15:47 +0000)
40 files changed:
lib/generateasm.mk [deleted file]
lib/libc/Makefile
lib/libc/arch/i386/gen/setjmp.S
lib/libc/arch/i386/gen/sigsetjmp.S
lib/libc/compat-minix/Makefile.inc [deleted file]
lib/libc/db/hash/ndbmdatum.c
lib/libc/gen/alphasort.c
lib/libc/gen/fts.c
lib/libc/gen/getpwent.c
lib/libc/gen/glob.c
lib/libc/gen/minix/utime.c
lib/libc/gen/pwcache.c
lib/libc/gen/readdir.c
lib/libc/gen/scandir.c
lib/libc/gen/sigsetops.c
lib/libc/gen/time.c
lib/libc/gen/utmp.c
lib/libc/gen/utmpx.c
lib/libc/locale/setlocale.c
lib/libc/stdlib/unsetenv.c
lib/libc/sys-minix/getdents.c
lib/libc/sys-minix/getitimer.c
lib/libc/sys-minix/mknod.c
lib/libc/sys-minix/nanosleep.c
lib/libc/sys-minix/select.c
lib/libc/sys-minix/setitimer.c
lib/libc/sys-minix/settimeofday.c
lib/libc/sys-minix/shmctl.c
lib/libc/sys-minix/sigaction.c
lib/libc/sys-minix/sigpending.c
lib/libc/sys-minix/sigprocmask.c
lib/libc/sys-minix/sigsuspend.c
lib/libc/time/difftime.c
lib/libc/time/localtime.c
lib/libutil/Makefile
lib/libutil/compat-minix/Makefile.inc [deleted file]
lib/libutil/login.c
lib/libutil/login_cap.c
lib/libutil/loginx.c
lib/libutil/passwd.c

diff --git a/lib/generateasm.mk b/lib/generateasm.mk
deleted file mode 100644 (file)
index 0b22063..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-ORIGFUNC= ${.PREFIX:S/^compat//}
-RENAMEDFUNC=${.PREFIX:S/^compat__//:C/([0-9]{2})$//}
-.if (${MACHINE_ARCH} == "i386")
-FUNCTYPE= @function
-PICJMP= jmpl *PIC_PLT(${ORIGFUNC})
-JMP= jmp ${ORIGFUNC}
-.elif (${MACHINE_ARCH} == "arm")
-FUNCTYPE= %%function
-PICJMP= bl PIC_SYM(${ORIGFUNC}, PLT)
-JMP= b ${ORIGFUNC}
-.endif
-
-${ASM}:
-       ${_MKTARGET_CREATE}
-       printf '/* MINIX3 */                                                    \n\
-/*                                                                             \n\
-* Compatibility jump table for renamed symbols.                                \n\
-*                                                                              \n\
-* DO NOT EDIT: this file is automatically generated.                           \n\
-*/                                                                             \n\
-#include <machine/asm.h>                                                       \n\
-.global ${RENAMEDFUNC};                                                                \n\
-.global ${ORIGFUNC};                                                           \n\
-.type ${RENAMEDFUNC},${FUNCTYPE}                                               \n\
-${RENAMEDFUNC}:                                                                        \n\
-#ifdef PIC                                                                     \n\
-${PICJMP}                                                                      \n\
-#else                                                                          \n\
-${JMP}                                                                         \n\
-#endif                                                                         \n\
-\n ' >${.TARGET}
-
index 83559c1c91c793e8b6065dc30ad7a4d92be89b51..125b66bfa157a2573a574d56af7660e65de7f24b 100644 (file)
@@ -55,8 +55,6 @@ COMPATDIR=${.CURDIR}/compat
 .else
 SUBDIR+= pkgconfig
 .include <bsd.subdir.mk>
-COMPATDIR= ${.CURDIR}/compat-minix
-.include "${.CURDIR}/compat-minix/Makefile.inc"
 .endif
 .endif
 
index 4c528fbefb0d4bef4c0ec2b1d620b727b1e84eee..5c271212a57be6e72bfd046de5a4ad1b61c8bcad 100644 (file)
@@ -111,3 +111,8 @@ ENTRY(__longjmp14)
        incl    %eax
 1:     movl    %ecx,0(%esp)
        ret
+
+#ifdef __minix
+.weak longjmp; sigsetjmp = __longjmp14
+.weak setjmp; sigsetjmp = __setjmp14
+#endif
index 133d41b86a2dda4bb4135e1e13fa23b0da7b2d44..12769d16cc61fb4dd65c148ecd94a759db418c8d 100644 (file)
@@ -111,3 +111,8 @@ ENTRY(__siglongjmp14)
        incl    %eax
 3:     movl    %ecx,0(%esp)
        ret
+
+#ifdef __minix
+.weak sigsetjmp; sigsetjmp = __sigsetjmp14
+.weak siglongjmp; siglongjmp = __siglongjmp14
+#endif
diff --git a/lib/libc/compat-minix/Makefile.inc b/lib/libc/compat-minix/Makefile.inc
deleted file mode 100644 (file)
index b5083f9..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-
-ASM=   compat__opendir230.S compat__alphasort30.S compat__ctime50.S \
-       compat__ctime_r50.S compat__ctime_rz50.S compat__dbm_delete13.S \
-       compat__dbm_fetch13.S compat__dbm_firstkey13.S \
-       compat__dbm_nextkey13.S compat__dbm_store13.S compat__difftime50.S \
-       compat__fts_children60.S compat__fts_close60.S compat__fts_open60.S \
-       compat__fts_read60.S compat__fts_set60.S compat__getdents30.S \
-       compat__getitimer50.S compat__getlastlogx50.S compat__getpwent50.S \
-       compat__getpwent_r50.S compat__getpwnam50.S compat__getpwnam_r50.S \
-       compat__getpwuid50.S compat__getpwuid_r50.S compat__getutent50.S \
-       compat__getutmp50.S compat__getutmpx50.S compat__getutxent50.S \
-       compat__getutxid50.S compat__getutxline50.S compat__glob30.S \
-       compat__globfree30.S compat__gmtime50.S compat__gmtime_r50.S \
-       compat__localtime_r50.S compat__localtime_rz50.S \
-       compat__longjmp14.S compat__mknod50.S compat__mktime50.S \
-       compat__mktime_z50.S compat__nanosleep50.S compat__offtime50.S \
-       compat__offtime_r50.S compat__opendir30.S compat__posix2time50.S \
-       compat__posix2time_z50.S compat__pututxline50.S \
-       compat__pwcache_userdb50.S compat__readdir30.S compat__readdir_r30.S \
-       compat___readdir_unlocked50.S compat__scandir30.S compat__select50.S \
-       compat__setitimer50.S compat__setjmp14.S compat__setlocale50.S \
-       compat__settimeofday50.S compat__shmctl50.S compat__sigaction14.S \
-       compat__sigaddset14.S compat__sigdelset14.S compat__sigemptyset14.S \
-       compat__sigfillset14.S compat__sigismember14.S compat__siglongjmp14.S \
-       compat__sigpending14.S compat__sigprocmask14.S compat__sigsetjmp14.S \
-       compat__sigsuspend14.S compat__time50.S compat__time2posix50.S \
-       compat__stat50.S compat__fstat50.S compat__lstat50.S \
-       compat__time2posix_z50.S compat__timegm50.S compat__timelocal50.S \
-       compat__timelocal_z50.S compat__timeoff50.S compat__tzalloc50.S \
-       compat__tzfree50.S compat__tzgetname50.S compat__tzset50.S \
-       compat__tzsetwall50.S compat__unsetenv13.S compat__unvis13.S \
-       compat__updlastlogx50.S compat__updwtmpx50.S compat__utime50.S \
-       compat__vfork14.S
-SRCS+= ${ASM}
-CLEANFILES+=   ${ASM}
-
-.include "../generateasm.mk"
-
index 75c6ab87c440dbc46257089be2473f836e538ab4..904120e6d0ae6b9b4611731855251e1a96ca9c1d 100644 (file)
@@ -156,3 +156,11 @@ dbm_store(DBM *db, datum key, datum data, int flags)
        return ((db->put)(db, &dbtkey, &dbtdata,
            (u_int)((flags == DBM_INSERT) ? R_NOOVERWRITE : 0)));
 }
+
+#ifdef __minix
+__weak_alias(dbm_delete, __dbm_delete13)
+__weak_alias(dbm_fetch, __dbm_fetch13)
+__weak_alias(dbm_firstkey, __dbm_firstkey13)
+__weak_alias(dbm_nextkey, __dbm_nextkey13)
+__weak_alias(dbm_store, __dbm_store13)
+#endif
index c8310d4252b46876ef1e146cd960fa91ff4e334a..4ea5dba4e99f28d5959aae0a04e44c41bd0720cc 100644 (file)
@@ -57,3 +57,7 @@ alphasort(const void *d1, const void *d2)
        return (strcmp((*(const struct dirent *const *)d1)->d_name,
            (*(const struct dirent *const *)d2)->d_name));
 }
+
+#ifdef __minix
+__weak_alias(alphasort, __alphasort30)
+#endif
index a6e2cb1e08b5ddc856be9da36d4c0278546f7cfd..dadc9c2e473fc3bb75187213e5040e82ca1d7fbf 100644 (file)
@@ -1225,3 +1225,11 @@ bail:
        }
        return ret;
 }
+
+#ifdef __minix
+__weak_alias(fts_children, __fts_children60)
+__weak_alias(fts_close, __fts_close60)
+__weak_alias(fts_open, __fts_open60)
+__weak_alias(fts_read, __fts_read60)
+__weak_alias(fts_set, __fts_set60)
+#endif
index 44abb45fdfd6af756646498eec9fbfd917343a2d..64de868c24c2c372ac07649bcdd11ed725f212a6 100644 (file)
@@ -2578,3 +2578,12 @@ setpwent(void)
            __nsdefaultcompat_forceall);
        mutex_unlock(&_pwmutex);
 }
+
+#ifdef __minix
+__weak_alias(getpwent, __getpwent50)
+__weak_alias(getpwent_r, __getpwent_r50)
+__weak_alias(getpwnam, __getpwnam50)
+__weak_alias(getpwnam_r, __getpwnam_r50)
+__weak_alias(getpwuid, __getpwuid50)
+__weak_alias(getpwuid_r, __getpwuid_r50)
+#endif
index c1083f90b2f825fc9351f16bacf442d4866e1903..71631b7df71daa7d626990a0bfcaab8609efe676 100644 (file)
@@ -1168,3 +1168,8 @@ qprintf(const char *str, Char *s)
        (void)printf("\n");
 }
 #endif
+
+#ifdef __minix
+__weak_alias(glob, __glob30)
+__weak_alias(globfree, __globfree30)
+#endif
index 9991744962bb91aee8776ae4ae900c8f9bc486fb..df212b90d16672ed3f04a7de8c9fa6a4df721aac 100644 (file)
@@ -22,3 +22,7 @@ int utime(const char *name, const struct utimbuf *timp)
   m.m2_p1 = (char *) __UNCONST(name);
   return(_syscall(VFS_PROC_NR, UTIME, &m));
 }
+
+#ifdef __minix
+__weak_alias(utime, __utime50)
+#endif
index 2caf96a515a78dafddd6c04d9ac85387b9cbdb9b..bda04a8e48ae39e0f6cbc76719e3b4e762346a88 100644 (file)
@@ -641,3 +641,7 @@ main(int argc, char *argv[])
 }
 #endif /* TEST_PWCACHE */
 #endif /* !HAVE_PWCACHE_USERDB */
+
+#ifdef __minix
+__weak_alias(pwcache_userdb, __pwcache_userdb50)
+#endif
index 368a963675cba5e379d49eebdf442ae141436eb6..277b709388ace079af3bd3703a0077f5749ba139 100644 (file)
@@ -149,3 +149,9 @@ readdir_r(dirp, entry, result)
 
        return (0);
 }
+
+#ifdef __minix
+__weak_alias(readdir, __readdir30)
+__weak_alias(readdir_r, __readdir_r30)
+__weak_alias(readdir_unlocked, ___readdir_unlocked50)
+#endif
index 74af88f7724753cffebfc0f25a7e9143ce6e8c5f..614b02338b19ff66a91b984609e58281bb56d64b 100644 (file)
@@ -153,3 +153,7 @@ bad:
        (void)closedir(dirp);
        return -1;
 }
+
+#ifdef __minix
+__weak_alias(scandir, __scandir30)
+#endif
index 5b227355ac71fb8b4922792467b11a870b43f9d0..5dfa50a8552b86228ce6feecff5655b62a8146f3 100644 (file)
@@ -44,3 +44,11 @@ __RCSID("$NetBSD: sigsetops.c,v 1.16 2010/07/31 00:04:43 joerg Exp $");
 
 #include <errno.h>
 #include <signal.h>
+
+#ifdef __minix
+__weak_alias(sigaddset, __sigaddset14)
+__weak_alias(sigdelset, __sigdelset14)
+__weak_alias(sigemptyset, __sigemptyset14)
+__weak_alias(sigfillset, __sigfillset14)
+__weak_alias(sigismember, __sigismember14)
+#endif
index e0df22f8591d010fd5b4b0df3ecfb82c815bf05d..f3122240844c7edfbb702284d03c4f4093b58594 100644 (file)
@@ -55,3 +55,7 @@ time(time_t *t)
                *t = tt.tv_sec;
        return tt.tv_sec;
 }
+
+#ifdef __minix
+__weak_alias(time, __time50)
+#endif
index b83a3c0c70827117834043cad43d67da493371d7..2bd00eff9ff2b1b3158ab1113a2e54ca0b4103c6 100644 (file)
@@ -104,3 +104,7 @@ utmpname(const char *fname)
        endutent();
        return 1;
 }
+
+#ifdef __minix
+__weak_alias(getutent, __getutent50)
+#endif
index 63c0e1f0796d1faca27fd6f38ec93555053c380d..2ba5bd63daab630d724751149da140acd40a8533 100644 (file)
@@ -511,3 +511,15 @@ updlastlogx(const char *fname, uid_t uid, struct lastlogx *ll)
        (db->close)(db);
        return error;
 }
+
+#ifdef __minix
+__weak_alias(getlastlogx, __getlastlogx50)
+__weak_alias(getutmp, __getutmp50)
+__weak_alias(getutmpx, __getutmpx50)
+__weak_alias(getutxent, __getutxent50)
+__weak_alias(getutxid, __getutxid50)
+__weak_alias(getutxline, __getutxline50)
+__weak_alias(pututxline, __pututxline50)
+__weak_alias(updlastlogx, __updlastlogx50)
+__weak_alias(updwtmpx, __updwtmpx50)
+#endif
index b8d4129f2c17316973426cd11d1d5a0001736638..b755dba365fb7debf1c51048f54beab9fec6b73c 100644 (file)
@@ -171,3 +171,7 @@ setlocale(int category, const char *locale)
        __mb_len_max_runtime = MB_LEN_MAX;
        return __setlocale(category, locale);
 }
+
+#ifdef __minix
+__weak_alias(setlocale, __setlocale50)
+#endif
index 5796f3861c58f146a14192ef8d90ebeae734bb27..eb1c21ff94c3cdb2904edb7dfd65ce503b97c4e5 100644 (file)
@@ -104,3 +104,7 @@ unsetenv(const char *name)
        (void)__unlockenv();
        return 0;
 }
+
+#ifdef __minix
+__weak_alias(unsetenv, __unsetenv13)
+#endif
index 6e258e9f5dd6a2b8f3c220e1ef5372d9632548ca..58a696b2e62e1c9ca8d34f21e9cae8671600b71a 100644 (file)
@@ -13,3 +13,7 @@ ssize_t getdents(int fd, char *buffer, size_t nbytes)
   m.m1_p1 = (char *) buffer;
   return _syscall(VFS_PROC_NR, GETDENTS, &m);
 }
+
+#ifdef __minix
+__weak_alias(getdents, __getdents30)
+#endif
index bb8921027b7302916fd0d5c0023c32a87eb0593e..7407ce70206353d7316a0b199e2923eff3016ce9 100644 (file)
@@ -18,3 +18,7 @@ int getitimer(int which, struct itimerval *value)
 
   return _syscall(PM_PROC_NR, ITIMER, &m);
 }
+
+#ifdef __minix
+__weak_alias(getitimer, __getitimer50)
+#endif
index 70c7b8705f2fefc26f2409fdafe73bc536a5ba84..885e3a2454c4624044e8abd6a1d428b11de4c308 100644 (file)
@@ -18,3 +18,7 @@ int mknod(const char *name, mode_t mode, dev_t dev)
   m.m1_p2 = (char *) ((int) 0);                /* obsolete size field */
   return(_syscall(VFS_PROC_NR, MKNOD, &m));
 }
+
+#ifdef __minix
+__weak_alias(mknod, __mknod50)
+#endif
index a8cc514064499ba3c0ca8918432426b13b904a59..5e1f4e3d5feec879fb1ce5658004b451525dd3d9 100644 (file)
@@ -90,3 +90,7 @@ int nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
        return r;
 }
 
+
+#ifdef __minix
+__weak_alias(nanosleep, __nanosleep50)
+#endif
index cc84b427df9d23688c257dd60d1b2092d31b2de6..c543339921296456bfc572c851f1f75916cd93e6 100644 (file)
@@ -20,3 +20,7 @@ int select(int nfds,
   return (_syscall(VFS_PROC_NR, SELECT, &m));
 }
 
+
+#ifdef __minix
+__weak_alias(select, __select50)
+#endif
index dfe86703f59d7e667d41d415dda22489d0310fde..f85a2292e25b760332d767ea2c5a66548feb842b 100644 (file)
@@ -24,3 +24,7 @@ int setitimer(int which, const struct itimerval *__restrict value,
 
   return _syscall(PM_PROC_NR, ITIMER, &m);
 }
+
+#ifdef __minix
+__weak_alias(setitimer, __setitimer50)
+#endif
index 2e47e9eedf4b82b7c95f4e6055944bf04ee236a0..602c952c525e0c261340f63c539295fbe58ac33b 100644 (file)
@@ -13,3 +13,7 @@ int settimeofday(const struct timeval *tp, const void *tzp)
        /* Ignore time zones */
        return stime(&sec);
 }
+
+#ifdef __minix
+__weak_alias(settimeofday, __settimeofday50)
+#endif
index 9ae6a5c9750f1d1619dc12468fb7a9e13c29892a..656d19236bc06a776a89ac46bb64b35636bbd274 100644 (file)
@@ -40,3 +40,7 @@ int shmctl(int shmid, int cmd, struct shmid_ds *buf)
                return m.SHMCTL_RET;
        return r;
 }
+
+#ifdef __minix
+__weak_alias(shmctl, __shmctl50)
+#endif
index 8999f5911b75a230543988edf9ef14d63c30fd37..50501465acd1b6c95407b84aa944f8336696bd9a 100644 (file)
@@ -18,3 +18,7 @@ int sigaction(int sig, const struct sigaction *act, struct sigaction *oact)
 
   return(_syscall(PM_PROC_NR, SIGACTION, &m));
 }
+
+#ifdef __minix
+__weak_alias(sigaction, __sigaction14)
+#endif
index 817505f6a43d023b25218f742809da730dd4dd4b..f701cfce75b22b3360ad023ff6dfdd1873c7e76a 100644 (file)
@@ -13,3 +13,7 @@ sigset_t *set;
   *set = (sigset_t) m.m2_l1;
   return(m.m_type);
 }
+
+#ifdef __minix
+__weak_alias(sigpending, __sigpending14)
+#endif
index e742ac620333e790bcb373189321842d11fe0ece..f4462a9482d9dcba11995787f5fc645452c12478 100644 (file)
@@ -22,3 +22,7 @@ sigset_t *oset;
   if (oset != (sigset_t *) NULL) *oset = (sigset_t) (m.m2_l1);
   return(m.m_type);
 }
+
+#ifdef __minix
+__weak_alias(sigprocmask, __sigprocmask14)
+#endif
index a9425eef9d9f2324cffa557f5c15ab6ff3a8d485..c7948ca2633a5e2df181252886c60a21a3710fc1 100644 (file)
@@ -12,3 +12,7 @@ const sigset_t *set;
   m.m2_l1 = (long) *set;
   return(_syscall(PM_PROC_NR, SIGSUSPEND, &m));
 }
+
+#ifdef __minix
+__weak_alias(sigsuspend, __sigsuspend14)
+#endif
index 648f8fc795ba928482133b5cd722dabe38cb9d1d..75cb18e5185e8deec3c551bd73662546515c9ffe 100644 (file)
@@ -72,3 +72,7 @@ const time_t  time0;
        return -(double) ((unsigned long) time0 +
                (unsigned long) (-(time1 + 1)) + 1);
 }
+
+#ifdef __minix
+__weak_alias(difftime, __difftime50)
+#endif
index f1be999a7e0e123008978ff8bb8ebb0893c9dd99..9323a78fd6b4abe7782c17030edba06a59f987d6 100644 (file)
@@ -2207,3 +2207,21 @@ posix2time(time_t t)
 }
 
 #endif /* defined STD_INSPIRED */
+
+#ifdef __minix
+__weak_alias(gmtime, __gmtime50)
+__weak_alias(gmtime_r, __gmtime_r50)
+__weak_alias(offtime, __offtime50)
+__weak_alias(offtime_r, __offtime_r50)
+__weak_alias(time2posix, __time2posix50)
+__weak_alias(time2posix_z, __time2posix_z50)
+__weak_alias(timegm, __timegm50)
+__weak_alias(timelocal, __timelocal50)
+__weak_alias(timelocal_z, __timelocal_z50)
+__weak_alias(timeoff, __timeoff50)
+__weak_alias(tzalloc, __tzalloc50)
+__weak_alias(tzfree, __tzfree50)
+__weak_alias(tzgetname, __tzgetname50)
+__weak_alias(tzset, __tzset50)
+__weak_alias(tzsetwall, __tzsetwall50)
+#endif
index 8c178b38d10a3a14317dd76e13b702790e9f3799..87092b565318498e7070bbdb577140666fa04981 100644 (file)
@@ -59,9 +59,7 @@ MAN=  efun.3 getbootfile.3 \
 YPREFIX=__pd
 .PATH: ${NETBSDSRCDIR}/lib/libc/gen
 
-.if defined(__MINIX)
-.include "compat-minix/Makefile.inc"
-.else
+.if !defined(__MINIX)
 .include "compat/Makefile.inc"
 .endif
 
diff --git a/lib/libutil/compat-minix/Makefile.inc b/lib/libutil/compat-minix/Makefile.inc
deleted file mode 100644 (file)
index ceb427b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-ASM=   compat__login_getpwclass50.S compat__login50.S compat__loginx50.S \
-       compat__pw_copy50.S compat__pw_copyx50.S \
-       compat__pw_getpwconf50.S compat__setusercontext50.S
-SRCS+= ${ASM}
-CLEANFILES+= ${ASM}
-
-.include "../generateasm.mk"
index 5068a808f3a658b7277803f921ac9d94eff5a79e..38d0ca9ac85c0ac16180548eccb66d0569d92a07 100644 (file)
@@ -68,3 +68,5 @@ login(const struct utmp *ut)
                (void)close(fd);
        }
 }
+
+__weak_alias(login, __login50)
index 0daab2c3e7bcae3a31e098f72c40811250aeae58..27d07fe503ef36a742351beb1275dacb89ab1c9d 100644 (file)
@@ -994,3 +994,6 @@ multiply(u_quad_t n1, u_quad_t n2)
 
        return (m);
 }
+
+__weak_alias(login_getpwclass, __login_getpwclass50)
+__weak_alias(setusercontext, __setusercontext50)
index 3e1cc12b13b0349eb92e7e9eac84d136e83c9538..ee2c6b3ae27f27f39ab7b0c443e38a33c1bb33a1 100644 (file)
@@ -52,3 +52,5 @@ loginx(const struct utmpx *ut)
        (void)pututxline(ut);
        (void)updwtmpx(_PATH_WTMPX, ut);
 }
+
+__weak_alias(loginx, __loginx50)
index 02c589533943d7c06113b95df076d7d6dfb88d81..5c20555960fea3b5a2421d2dc6841b3c06d32876 100644 (file)
@@ -661,3 +661,7 @@ pw_getpwconf(char *data, size_t max, const struct passwd *pwd,
                        pw_getconf(data, max, "default", option);
        }
 }
+
+__weak_alias(pw_copy, __pw_copy50)
+__weak_alias(pw_copyx, __pw_copyx50)
+__weak_alias(pw_getpwconf, __pw_getpwconf50)