LIBC(3LIB) Interface Libraries LIBC(3LIB)

libc - C library

Functions in this library provide various facilities defined by System V, ANSI C, POSIX, and so on. See standards(5). In addition, those facilities previously defined in the internationalization and the wide-character libraries are now defined in this library, as are the facilities previously defined in the multithreading libraries, libthread and libpthread.

The shared object libc.so.1 provides the public interfaces defined below. See Intro(3) for additional information on shared object interfaces.

____loc1 ___errno
__builtin_alloca __ctype
__fbufsize __flbf
__flt_rounds __fpending
__fpurge __freadable
__freading __fsetlocking
__fwritable __fwriting
__huge_val __iob
__loc1 __major
__makedev __mb_cur_max_l
__minor
__nsw_extended_action __nsw_freeconfig
__nsw_getconfig __posix_asctime_r
__posix_ctime_r __posix_getgrgid_r
__posix_getgrnam_r __posix_getlogin_r
__posix_getpwnam_r __posix_getpwuid_r
__posix_sigwait __posix_ttyname_r
__priocntl __priocntlset
__pthread_cleanup_pop __pthread_cleanup_push
__sysconf_xpg5 __unlockpt_xpg4
__xpg4 __xpg4_putmsg
__xpg4_putpmsg _Exit
_altzone _assert
_cleanup _ctype
_daylight _environ
_exit _exithandle
_filbuf _flsbuf
_flushlbf _getdate_err
_getdate_err_addr _iob
_isnan _isnand
_lwp_cond_broadcast _lwp_cond_reltimedwait
_lwp_cond_signal _lwp_cond_timedwait
_lwp_cond_wait _lwp_continue
_lwp_info _lwp_kill
_lwp_mutex_lock _lwp_mutex_trylock
_lwp_mutex_unlock _lwp_self
_lwp_sema_init _lwp_sema_post
_lwp_sema_trywait _lwp_sema_wait
_lwp_suspend _lwp_suspend2
_modf _nextafter
_nsc_trydoorcall _nss_XbyY_buf_alloc
_nss_XbyY_buf_free _nss_netdb_aliases
_numeric _scalb
_sibuf _sobuf
_stack_grow _sys_buslist
_sys_cldlist _sys_fpelist
_sys_illlist _sys_segvlist
_sys_siginfolistp _sys_siglist
_sys_siglistn _sys_siglistp
_sys_traplist _timezone
_tolower _toupper
_tzname _xftw
a64l
abort abs
access acct
acl addrtosymstr
addsev addseverity
adjtime aio_cancel
aio_error aio_fsync
aio_read aio_return
aio_suspend aio_waitn
aio_write aiocancel
aioread aiowait
aiowrite alarm
alphasort altzone
ascftime asctime
asctime_r asprintf
atexit atof
atoi atol
atoll atomic_add_16
atomic_add_16_nv atomic_add_32
atomic_add_32_nv atomic_add_64
atomic_add_64_nv atomic_add_8
atomic_add_8_nv atomic_add_char
atomic_add_char_nv atomic_add_int
atomic_add_int_nv atomic_add_long
atomic_add_long_nv atomic_add_ptr
atomic_add_ptr_nv atomic_add_short
atomic_add_short_nv atomic_and_16
atomic_and_16_nv atomic_and_32
atomic_and_32_nv atomic_and_64
atomic_and_64_nv atomic_and_8
atomic_and_8_nv atomic_and_uchar
atomic_and_uchar_nv atomic_and_uint
atomic_and_uint_nv atomic_and_ulong
atomic_and_ulong_nv atomic_and_ushort
atomic_and_ushort_nv atomic_cas_16
atomic_cas_32 atomic_cas_64
atomic_cas_8 atomic_cas_ptr
atomic_cas_uchar atomic_cas_uint
atomic_cas_ulong atomic_cas_ushort
atomic_clear_long_excl atomic_dec_16
atomic_dec_16_nv atomic_dec_32
atomic_dec_32_nv atomic_dec_64
atomic_dec_64_nv atomic_dec_8
atomic_dec_8_nv atomic_dec_ptr
atomic_dec_ptr_nv atomic_dec_uchar
atomic_dec_uchar_nv atomic_dec_uint
atomic_dec_uint_nv atomic_dec_ulong
atomic_dec_ulong_nv atomic_dec_ushort
atomic_dec_ushort_nv atomic_inc_16
atomic_inc_16_nv atomic_inc_32
atomic_inc_32_nv atomic_inc_64
atomic_inc_64_nv atomic_inc_8
atomic_inc_8_nv atomic_inc_ptr
atomic_inc_ptr_nv atomic_inc_uchar
atomic_inc_uchar_nv atomic_inc_uint
atomic_inc_uint_nv atomic_inc_ulong
atomic_inc_ulong_nv atomic_inc_ushort
atomic_inc_ushort_nv atomic_or_16
atomic_or_16_nv atomic_or_32
atomic_or_32_nv atomic_or_64
atomic_or_64_nv atomic_or_8
atomic_or_8_nv atomic_or_uchar
atomic_or_uchar_nv atomic_or_uint
atomic_or_uint_nv atomic_or_ulong
atomic_or_ulong_nv atomic_or_ushort
atomic_or_ushort_nv atomic_set_long_excl
atomic_swap_16 atomic_swap_32
atomic_swap_64 atomic_swap_8
atomic_swap_ptr atomic_swap_uchar
atomic_swap_uint atomic_swap_ulong
atomic_swap_ushort attropen
backtrace backtrace_symbols
backtrace_symbols_fd basename
bcmp bcopy
bindtextdomain bind_textdomain_codeset
brk bsd_signal
bsearch btowc
btowc_l bzero
calloc canonicalize_file_name
catclose catgets
catopen cfgetispeed
cfgetospeed cfsetispeed
cfsetospeed cftime
chdir chmod
chown chroot
clearerr clearenv
clock clock_getres
clock_gettime clock_nanosleep
clock_settime close
closedir closefrom
closelog cond_broadcast
cond_destroy cond_init
cond_reltimedwait cond_signal
cond_timedwait cond_wait
confstr creat
crypt crypt_genhash_impl
crypt_gensalt crypt_gensalt_impl
csetcol csetlen
ctermid ctermid_r
ctime ctime_r
cuserid daemon
daylight dbm_clearerr
dbm_close dbm_delete
dbm_error dbm_fetch
dbm_firstkey dbm_nextkey
dbm_open dbm_store
dcgettext dcngettext
decimal_to_double decimal_to_extended
decimal_to_quadruple decimal_to_single
dgettext difftime
directio dirfd
dirname div
dladdr dladdr1
dlclose dldump
dlerror dlinfo
dlmopen dlopen
dlsym dngettext
door_bind door_call
door_create door_cred
door_getparam door_info
door_return door_revoke
door_server_create door_setparam
door_ucred door_unbind
double_to_decimal drand48
dup dup2
duplocale econvert
ecvt enable_extended_FILE_stdio
encrypt endgrent
endnetgrent endpwent
endspent endusershell
endutent endutxent
environ erand48
err errno
errx euccol
euclen eucscol
execl execle
execlp execv
execve execvp
exit extended_to_decimal
faccessat facl
fattach fchdir
fchmod fchmodat
fchown fchownat
fchroot fclose
fcloseall fcntl
fconvert fcvt
fdatasync fdetach
fdopen fdopendir
fdwalk feof
ferror fflush
ffs ffsl
ffsll fls
flsl flsll
fgetattr fgetc
fgetgrent fgetgrent_r
fgetpos fgetpwent
fgetpwent_r fgets
fgetspent fgetspent_r
fgetwc fgetwc_l
fgetws file_to_decimal
fileno finite
flockfile fmtmsg
fnmatch fopen
fork fork1
forkall forkallx
forkx fpathconf
fpclass fpgetmask
fpgetround fpgetsticky
fprintf fpsetmask
fpsetround fpsetsticky
fputc fputs
fputwc fputws
fread free
freelocale freopen
frexp fscanf
fseek fseeko
fsetattr fsetpos
fstat fstatat
fstatfs fstatvfs
fsync ftell
ftello ftime
ftok ftruncate
ftrylockfile ftw
func_to_decimal funlockfile
futimens futimesat
fwide fwprintf
fwrite fwscanf
gconvert gcvt
getacct getattrat
getc getc_unlocked
getchar getchar_unlocked
getcontext getcpuid
getcwd getdate
getdate_err getdents
getdtablesize getegid
getenv geteuid
getexecname getextmntent
getgid getgrent
getgrent_r getgrgid
getgrgid_r getgrnam
getgrnam_r getgroups
gethomelgroup gethostid
gethostname gethrtime
gethrvtime getisax
getitimer getloadavg
getlogin getlogin_r
getmntany getmntent
getmsg get_nprocs
get_nprocs_conf getnetgrent
getnetgrent_r getopt
getopt_clip getopt_long
getopt_long_only getpagesize
getpagesizes getpass
getpassphrase getpeerucred
getpflags getpgid
getpgrp getpid
getpmsg getppid
getppriv getpriority
getprogname getprojid
getpw getpwent
getpwent_r getpwnam
getpwnam_r getpwuid
getpwuid_r getrctl
getrlimit getrusage
gets getsid
getspent getspent_r
getspnam getspnam_r
getsubopt gettaskid
gettext gettimeofday
gettxt getuid
getusershell getustack
getutent getutid
getutline getutmp
getutmpx getutxent
getutxid getutxline
getvfsany getvfsent
getvfsfile getvfsspec
getw getwc
getwc_l getwchar
getwchar_l getwd
getwidth getws
getzoneid getzoneidbyname
getzonenamebyid glob
globfree gmtime
gmtime_r grantpt
gsignal hasmntopt
hcreate hdestroy
hsearch iconv
iconv_close iconv_open
imaxabs imaxdiv
index initgroups
initstate innetgr
insque ioctl
is_system_labeled isaexec
isalnum isalnum_l
isalpha isalpha_l
isascii isastream
isatty isblank
isblank_l iscntrl
iscntrl_l isdigit
isdigit_l isenglish
isgraph isgraph_l
isideogram islower
islower_l isnan
isnand isnanf
isnumber isphonogram
isprint isprint_l
ispunct ispunct_l
issetugid isspace
isspace_l isspecial
isupper isupper_l
iswalnum iswalnum_l
iswalpha iswalpha_l
iswblank iswblank_l
iswcntrl iswcntrl_l
iswctype iswctype_l
iswdigit iswdigit_l
iswideogram iswideogram_l
iswgraph iswgraph_l
iswhexnumber iswhexnumber_l
iswlower iswlower_l
iswnumber iswnumber_l
iswphonogram iswphonogram_l
iswprint iswprint_l
iswpunct iswpunct_l
iswspace iswspace_l
iswspecial iswspecial_l
iswupper iswupper_l
iswxdigit iswxdigit_l
isxdigit isxdigit_l
jrand48 kill
killpg l64a
labs ladd
lchown lckpwdf
lcong48 ldexp
ldivide lexp10
lfind lfmt
link linkat
lio_listio llabs
lldiv llog10
llseek lltostr
localeconv localtime
localtime_r lockf
logb lone
longjmp lrand48
lsearch lseek
lshiftl lstat
lsub lten
lzero madvise
makecontext makeutx
malloc mblen
mblen_l mbrlen
mbrlen_l mbrtowc
mbrtowc_l mbsinit
mbsinit_l mbsnrtowcs
mbsnrtowcs_l mbsrtowcs
mbsrtowcs_l mbstowcs
mbstowcs_l mbtowc
mbtowc_l memalign
membar_consumer membar_enter
membar_exit membar_producer
memccpy memchr
memcmp memcntl
memcpy meminfo
memmem memmove
memset mincore
mkdir mkdirat
mkfifo mkfifoat
mknod mknodat
mkstemp mktemp
mktime mlock
mlockall mmap
mmapobj modctl
modf modff
modutx monitor
mount mprotect
mq_close mq_getattr
mq_notify mq_open
mq_receive mq_reltimedreceive_np
mq_reltimedsend_np mq_send
mq_setattr mq_timedreceive
mq_timedsend mq_unlink
mrand48 msgctl
msgget msgids
msgrcv msgsnap
msgsnd msync
munlock munlockall
munmap mutex_consistent
mutex_destroy mutex_init
mutex_lock mutex_trylock
mutex_unlock nanosleep
nextafter newlocale
nfs_getfh nftw
ngettext nice
nl_langinfo nl_langinfo_l
nrand48 nss_default_finders
nss_delete nss_endent
nss_getent nss_search
nss_setent ntp_adjtime
ntp_gettime open
openat opendir
openlog optarg
opterr optind
optopt p_online
pathconf pause
pclose pcsample
perror pfmt
pipe plock
poll popen
port_alert port_associate
port_create port_dissociate
port_get port_getn
port_send port_sendn
posix_fadvise posix_fallocate
posix_madvise posix_memalign
posix_openpt posix_spawn
posix_spawn_file_actions_addclose posix_spawn_file_actions_addclosefrom_np
posix_spawn_file_actions_adddup2 posix_spawn_file_actions_addopen
posix_spawn_file_actions_destroy posix_spawn_file_actions_init
posix_spawn_pipe_np posix_spawnattr_destroy
posix_spawnattr_getflags posix_spawnattr_getpgroup
posix_spawnattr_getschedparam posix_spawnattr_getschedpolicy
posix_spawnattr_getsigdefault posix_spawnattr_getsigignore_np
posix_spawnattr_getsigmask posix_spawnattr_init
posix_spawnattr_setflags posix_spawnattr_setpgroup
posix_spawnattr_setschedparam posix_spawnattr_setschedpolicy
posix_spawnattr_setsigdefault posix_spawnattr_setsigignore_np
posix_spawnattr_setsigmask posix_spawnp
pread preadv
printf printstack
priocntl priocntlset
priv_addset priv_allocset
priv_copyset priv_delset
priv_emptyset priv_fillset
priv_freeset priv_getbyname
priv_getbynum priv_getsetbyname
priv_getsetbynum priv_gettext
priv_ineffect priv_intersect
priv_inverse priv_isemptyset
priv_isequalset priv_isfullset
priv_ismember priv_issubset
priv_set priv_set_to_str
priv_str_to_set priv_union
processor_bind processor_info
profil pselect
pset_assign pset_bind
pset_create pset_destroy
pset_getattr pset_getloadavg
pset_info pset_list
pset_setattr psiginfo
psignal pthread_atfork
pthread_attr_destroy pthread_attr_get_np
pthread_attr_getdetachstate pthread_attr_getguardsize
pthread_attr_getinheritsched pthread_attr_getschedparam
pthread_attr_getschedpolicy pthread_attr_getscope
pthread_attr_getstack pthread_attr_getstackaddr
pthread_attr_getstacksize pthread_attr_init
pthread_attr_setdetachstate pthread_attr_setguardsize
pthread_attr_setinheritsched pthread_attr_setschedparam
pthread_attr_setschedpolicy pthread_attr_setscope
pthread_attr_setstack pthread_attr_setstackaddr
pthread_attr_setstacksize pthread_barrier_destroy
pthread_barrier_init pthread_barrier_wait
pthread_barrierattr_destroy pthread_barrierattr_getpshared
pthread_barrierattr_init pthread_barrierattr_setpshared
pthread_cancel pthread_cond_broadcast
pthread_cond_destroy pthread_cond_init
pthread_cond_reltimedwait_np pthread_cond_signal
pthread_cond_timedwait pthread_cond_wait
pthread_condattr_destroy pthread_condattr_getclock
pthread_condattr_getpshared pthread_condattr_init
pthread_condattr_setclock pthread_condattr_setpshared
pthread_create pthread_detach
pthread_equal pthread_exit
pthread_getconcurrency pthread_getschedparam
pthread_getspecific pthread_join
pthread_key_create pthread_key_create_once_np
pthread_key_delete pthread_kill
pthread_mutex_consistent pthread_mutex_destroy
pthread_mutex_getprioceiling pthread_mutex_init
pthread_mutex_lock pthread_mutex_reltimedlock_np
pthread_mutex_setprioceiling pthread_mutex_timedlock
pthread_mutex_trylock pthread_mutex_unlock
pthread_mutexattr_destroy pthread_mutexattr_getprioceiling
pthread_mutexattr_getprotocol pthread_mutexattr_getpshared
pthread_mutexattr_getrobust pthread_mutexattr_gettype
pthread_mutexattr_init pthread_mutexattr_setprioceiling
pthread_mutexattr_setprotocol pthread_mutexattr_setpshared
pthread_mutexattr_setrobust pthread_mutexattr_settype
pthread_once pthread_rwlock_destroy
pthread_rwlock_init pthread_rwlock_rdlock
pthread_rwlock_reltimedrdlock_np pthread_rwlock_reltimedwrlock_np
pthread_rwlock_timedrdlock pthread_rwlock_timedwrlock
pthread_rwlock_tryrdlock pthread_rwlock_trywrlock
pthread_rwlock_unlock pthread_rwlock_wrlock
pthread_rwlockattr_destroy pthread_rwlockattr_getpshared
pthread_rwlockattr_init pthread_rwlockattr_setpshared
pthread_self pthread_setcancelstate
pthread_setcanceltype pthread_setconcurrency
pthread_setspecific pthread_sigmask
pthread_setschedparam pthread_setschedprio
pthread_spin_destroy pthread_spin_init
pthread_spin_lock pthread_spin_trylock
pthread_spin_unlock pthread_testcancel
ptsname putacct
putc putc_unlocked
putchar putchar_unlocked
putenv putmsg
putpmsg putpwent
puts putspent
pututline pututxline
putw putwc
putwchar putws
pwrite pwritev
qeconvert qecvt
qfconvert qfcvt
qgconvert qgcvt
qsort quadruple_to_decimal
raise rand
rand_r random
rctl_walk rctlblk_get_enforced_value
rctlblk_get_firing_time rctlblk_get_global_action
rctlblk_get_global_flags rctlblk_get_local_action
rctlblk_get_local_flags rctlblk_get_privilege
rctlblk_get_recipient_pid rctlblk_get_value
rctlblk_set_local_action rctlblk_set_local_flags
rctlblk_set_privilege rctlblk_set_recipient_pid
rctlblk_set_value rctlblk_size
re_comp re_exec
read readdir
readdir_r readlink
readlinkat readv
realloc realpath
reboot regcmp
regcomp regerror
regex regexec
regfree remove
remque rename
renameat resetmnttab
resolvepath rewind
rewinddir rindex
rmdir rw_rdlock
rw_read_held rw_tryrdlock
rw_trywrlock rw_unlock
rw_write_held rw_wrlock
rwlock_destroy rwlock_init
sbrk scalb
scandir scanf
sched_get_priority_max sched_get_priority_min
sched_getparam sched_getscheduler
sched_rr_get_interval sched_setparam
sched_setscheduler sched_yield
schedctl_exit schedctl_init
schedctl_lookup schedctl_start
schedctl_stop seconvert
seed48 seekdir
select sem_close
sem_destroy sem_getvalue
sem_init sem_open
sem_post sem_reltimedwait_np
sem_timedwait sem_trywait
sem_unlink sem_wait
sema_destroy sema_held
sema_init sema_post
sema_trywait sema_wait
semctl semget
semids semop
semtimedop setattrat
setbuf setbuffer
setcat setcontext
setegid setenv
seteuid setgid
setgrent setgroups
sethostname setitimer
setjmp setkey
setlabel setlinebuf
setlocale setlogmask
setnetgrent setpflags
setpgid setpgrp
setppriv setpriority
setprogname setpwent
setrctl setregid
setreuid setrlimit
setsid setspent
setstate settaskid
settimeofday setuid
setusershell setustack
setutent setutxent
setvbuf sfconvert
sgconvert shm_open
shm_unlink shmat
shmctl shmdt
shmget shmids
sig2str sigaction
sigaddset sigaltstack
sigdelset sigemptyset
sigfillset sigfpe
sighold sigignore
siginterrupt sigismember
siglongjmp signal
sigpause sigpending
sigprocmask sigqueue
sigrelse sigsend
sigsendset sigset
sigsetjmp sigstack
sigsuspend sigtimedwait
sigwait sigwaitinfo
single_to_decimal sleep
smt_pause snprintf
sprintf srand
srand48 srandom
sscanf ssignal
stack_getbounds stack_inbounds
stack_setbounds stack_violation
stat statfs
statvfs stime
str2sig strcasecmp
strcasecmp_l strcat
strchr strcmp
strcoll strcpy
strcspn strdup
strerror strerror_l
strerror_r strfmon
strfmon_l strftime
strftime_l string_to_decimal
strlcat strlcpy
strlen strncasecmp
strncasecmp_l strncat
strncmp strncpy
strnstr strpbrk
strptime strptime_l
strrchr strsep
strsignal strspn
strstr strtod
strtof strtoimax
strtok strtok_r
strtol strtold
strtoll strtoul
strtoull strtoumax
strtows strxfrm
swab swapcontext
swapctl swprintf
swscanf symlink
symlinkat sync
sync_instruction_memory sysconf
sysfs sysinfo
syslog system
tcdrain tcflow
tcflush tcgetattr
tcgetpgrp tcgetsid
tcsendbreak tcsetattr
tcsetpgrp tdelete
tell telldir
tempnam textdomain
tfind thr_continue
thr_create thr_exit
thr_getconcurrency thr_getprio
thr_getspecific thr_join
thr_keycreate thr_keycreate_once
thr_kill thr_main
thr_min_stack thr_self
thr_setconcurrency thr_setprio
thr_setspecific thr_sigsetmask
thr_stksegment thr_suspend
thr_yield time
timer_create timer_delete
timer_getoverrun timer_gettime
timer_settime times
timezone tmpfile
tmpnam tmpnam_r
toascii tolower
tolower_l toupper
toupper_l towctrans
towctrans_l towlower
towlower_l towupper
towupper_l truncate
tsearch ttyname
ttyname_r ttyslot
twalk tzname
tzset u8_strcmp
u8_textprep_str u8_validate
uadmin ualarm
uconv_u16tou32 uconv_u16tou8
uconv_u32tou16 uconv_u32tou8
uconv_u8tou16 uconv_u8tou32
ucred_free ucred_get
ucred_getegid ucred_geteuid
ucred_getgroups ucred_getpflags
ucred_getpid ucred_getprivset
ucred_getprojid ucred_getrgid
ucred_getruid ucred_getsgid
ucred_getsuid ucred_getzoneid
ucred_size ulckpwdf
ulimit ulltostr
umask umount
umount2 uname
ungetc ungetwc
unlink unlinkat
unlockpt unordered
unsetenv updwtmp
updwtmpx uselocale
usleep ustat
utime utimensat
utimes utmpname
utmpxname uucopy
valloc vasprintf
verr verrx
vfork vforkx
vfprintf vfscanf
vfwprintf vfwscanf
vhangup vlfmt
vpfmt vprintf
vscanf vsnprintf
vsprintf vsscanf
vswprintf vswscanf
vsyslog vwarn
vwarnx vwprintf
vwscanf wait
wait3 wait4
waitid waitpid
walkcontext warn
warnx watoll
wcpcpy wcpncpy
wcrtomb wcrtomb_l
wcscasecmp wcscasecmp_l
wcscat wcschr
wcscmp wcscoll
wcscoll_l wcscpy
wcscspn wcsdup
wcsftime wcslen
wcsncat wcsncasecmp
wcsncasecmp_l wcsncmp
wcsncpy wcsnrtombs
wcsnrtombs_l wcspbrk
wcsrchr wcsrtombs
wcsrtombs_l wcsspn
wcsstr wcstod
wcstof wcstoimax
wcstok wcstol
wcstold wcstoll
wcstombs wctombs_l
wcstoul wcstoull
wcstoumax wcswcs
wcswidth wcswidth_l
wcsxfrm wcsxfrm_l
wctob wctob_l
wctomb wctomb_l
wctrans wctrans_l
wctype wctype_l
wcwidth wcwidth_l
wmemchr wmemcmp
wmemcpy wmemmove
wmemset wordexp
wordfree wprintf
wracct write
writev wscanf
wscasecmp wscat
wschr wscmp
wscol wscoll
wscpy wscspn
wsdup wslen
wsncasecmp wsncat
wsncmp wsncpy
wspbrk wsprintf
wsrchr wsscanf
wsspn wstod
wstok wstol
wstoll wstostr
wsxfrm yield

The following interfaces are unique to the 32-bit version of this library:

__div64 __mul64
__posix_readdir_r __rem64
__udiv64 __urem64
_bufendtab _lastbuf
_s_fcntl _sys_nsig
_xftw64 aio_cancel64
aio_error64 aio_fsync64
aio_read64 aio_return64
aio_suspend64 aio_waitn64
aio_write64 creat64
fgetpos64 fopen64
freopen64 fseeko64
fsetpos64 fstat64
fstatvfs64 ftello64
ftruncate64 ftw64
getdents64 getrlimit64
lio_listio64 lockf64
lseek64 lstat64
mkstemp64 mmap64
nftw64 open64
pread64 preadv64
ptrace pwrite64
pwritev64 readdir64
readdir64_r s_fcntl
s_ioctl select_large_fdset
setrlimit64 stat64
statvfs64 sys_errlist
sys_nerr tell64
tmpfile64 truncate64

The following interfaces are unique to the 32-bit SPARC version of this library:

.div .mul
.rem .stret1
.stret2 .stret4
.stret8 .udiv
.umul .urem
_Q_add _Q_cmp
_Q_cmpe _Q_div
_Q_dtoq _Q_feq
_Q_fge _Q_fgt
_Q_fle _Q_flt
_Q_fne _Q_itoq
_Q_lltoq _Q_mul
_Q_neg _Q_qtod
_Q_qtoi _Q_qtoll
_Q_qtos _Q_qtou
_Q_qtoull _Q_sqrt
_Q_stoq _Q_sub
_Q_ulltoq _Q_utoq
__dtoll __dtou
__dtoull __ftoll
__ftou __ftoull
__umul64

The following interfaces are unique to the 32-bit x86 version of this library:

__fpstart _fp_hw
_fpstart _fxstat
_lxstat _nuname
_thr_errno_addr _xmknod
_xstat nuname

The following interfaces are unique to the 64-bit SPARC version of this library:

_Qp_add _Qp_cmp
_Qp_cmpe _Qp_div
_Qp_dtoq _Qp_feq
_Qp_fge _Qp_fgt
_Qp_fle _Qp_flt
_Qp_fne _Qp_itoq
_Qp_mul _Qp_neg
_Qp_qtod _Qp_qtoi
_Qp_qtos _Qp_qtoui
_Qp_qtoux _Qp_qtox
_Qp_sqrt _Qp_stoq
_Qp_sub _Qp_uitoq
_Qp_uxtoq _Qp_xtoq
__align_cpy_1 __align_cpy_16
__align_cpy_2 __align_cpy_4
__align_cpy_8 __dtoul
__ftoul __sparc_utrap_install

/lib/libc.so.1
shared object

/lib/64/libc.so.1

64-bit shared object

/lib/c_synonyms.so.1

A compatibility library to provide access to obsolete libc synonym symbols

/lib/64/c_synonyms.so.1

A 64-bit compatibility library to provide access to obsolete libc synonym symbols

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
MT-Level Safe

pvs(1), Intro(2), Intro(3), attributes(5), lf64(5), standards(5)

The synonyms compatibility library, c_synonyms.so.1, provides a mechanism to support old applications and libraries that were mistakenly built using now-obsolete synonym symbols from libc.

Before the advent of direct binding (-B direct) libc provided many functions with two names. For example, getpwent() and _getpwent(). These two names referred to exactly the same function in libc. The leading-underscore symbol was intended to be used by system libraries in order to avoid conflicting with an application that might define its own version of getpwent() with completely different semantics. Standard-conforming applications may not define and use function names with leading underscores.

illumos system libraries are now built with direct binding. This means that a system library that calls getpwent() will bind directly to the instance of getpwent() in libc, even if the application to which it is linked defines a different getpwent() for its own use. The application binds to its instance of getpwent() and there is no resulting conflict. The direct binding mechanism is equally available to libraries not delivered with illumos.

As a result of this evolution, most of the leading-underscore synonym symbols have been removed from libc. This means that applications that call these now-obsolete function names will cease to work. They will typically draw the error:


$ ./application
ld.so.1: fatal: relocation error: symbol _getpwent:
referenced symbol not found
Killed

All of the old leading-underscore symbols have been copied to the synonyms compatibility library. This library simply redirects the calls to the non-underscore instances of the corresponding functions in libc. Use it as a pre-loaded object:


$ LD_PRELOAD=c_synonyms.so.1 ./application

The synonyms compatibility library is intended neither to enable the generation of applications that call the obsolete leading-underscore synonym functions, nor to endorse this particular programming practice.

February 14, 2020