Print this page
1235 Use symbol capabilities to eliminate libc_hwcap*
@@ -17,29 +17,1336 @@
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright 2016 Joyent, Inc.
+# Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved.
+# Copyright 2013 Garrett D'Amore <garrett@damore.org>
+#
+# Copyright 2011 Nexenta Systems, Inc. All rights reserved.
# Use is subject to license terms.
#
-# ident "%Z%%M% %I% %E% SMI"
+
+LIBCBASE= .
+LIBRARY= libc.a
+LIBCDIR= $(SRC)/lib/libc
+LIB_PIC= libc_pic.a
+VERS= .1
+CPP= /usr/lib/cpp
+TARGET_ARCH= i386
+
+# include comm page definitions
+include $(SRC)/lib/commpage/Makefile.shared.com
+include $(SRC)/lib/commpage/Makefile.shared.targ
+
+VALUES= values-Xa.o
+
+# objects are grouped by source directory
+
+# Symbol capabilities objects.
+EXTPICS= \
+ $(LIBCDIR)/capabilities/i386-hwcap1/pics/symcap.o \
+ $(LIBCDIR)/capabilities/i386-hwcap2/pics/symcap.o \
+ $(LIBCDIR)/capabilities/i386-hwcap3/pics/symcap.o
+
+# local objects
+STRETS=
+
+CRTOBJS= \
+ cerror.o \
+ cerror64.o
+
+DYNOBJS= \
+ _rtbootld.o
+
+FPOBJS= \
+ _D_cplx_div.o \
+ _D_cplx_div_ix.o \
+ _D_cplx_div_rx.o \
+ _D_cplx_lr_div.o \
+ _D_cplx_lr_div_ix.o \
+ _D_cplx_lr_div_rx.o \
+ _D_cplx_mul.o \
+ _F_cplx_div.o \
+ _F_cplx_div_ix.o \
+ _F_cplx_div_rx.o \
+ _F_cplx_lr_div.o \
+ _F_cplx_lr_div_ix.o \
+ _F_cplx_lr_div_rx.o \
+ _F_cplx_mul.o \
+ _X_cplx_div.o \
+ _X_cplx_div_ix.o \
+ _X_cplx_div_rx.o \
+ _X_cplx_lr_div.o \
+ _X_cplx_lr_div_ix.o \
+ _X_cplx_lr_div_rx.o \
+ _X_cplx_mul.o \
+ fpgetmask.o \
+ fpgetround.o \
+ fpgetsticky.o \
+ fpsetmask.o \
+ fpsetround.o \
+ fpsetsticky.o \
+ fpstart.o \
+ ieee.o
+
+FPASMOBJS= \
+ __xgetRD.o \
+ _base_il.o \
+ _xtoll.o \
+ _xtoull.o \
+ fpcw.o
+
+ATOMICOBJS= \
+ atomic.o
+
+CHACHAOBJS= \
+ chacha.o
+
+XATTROBJS= \
+ xattr_common.o
+
+COMOBJS= \
+ bcmp.o \
+ bcopy.o \
+ bsearch.o \
+ bzero.o \
+ qsort.o \
+ strtol.o \
+ strtoul.o \
+ strtoll.o \
+ strtoull.o
+
+DTRACEOBJS= \
+ dtrace_data.o
+
+SECFLAGSOBJS= \
+ secflags.o
+
+GENOBJS= \
+ $(COMMPAGE_OBJS) \
+ _div64.o \
+ _divdi3.o \
+ _getsp.o \
+ _mul64.o \
+ abs.o \
+ alloca.o \
+ arc4random.o \
+ arc4random_uniform.o \
+ byteorder.o \
+ byteorder64.o \
+ cuexit.o \
+ ecvt.o \
+ endian.o \
+ errlst.o \
+ i386_data.o \
+ ladd.o \
+ ldivide.o \
+ lmul.o \
+ lock.o \
+ lshiftl.o \
+ lsign.o \
+ lsub.o \
+ makectxt.o \
+ memccpy.o \
+ memchr.o \
+ memcmp.o \
+ memcpy.o \
+ memset.o \
+ new_list.o \
+ setjmp.o \
+ siginfolst.o \
+ siglongjmp.o \
+ strcat.o \
+ strchr.o \
+ strcmp.o \
+ strcpy.o \
+ strlen.o \
+ strncat.o \
+ strncmp.o \
+ strncpy.o \
+ strnlen.o \
+ strrchr.o \
+ sync_instruction_memory.o
+
+# sysobjs that contain large-file interfaces
+COMSYSOBJS64= \
+ fstatvfs64.o \
+ getdents64.o \
+ getrlimit64.o \
+ lseek64.o \
+ mmap64.o \
+ pread64.o \
+ preadv64.o \
+ pwrite64.o \
+ pwritev64.o \
+ setrlimit64.o \
+ statvfs64.o
+
+SYSOBJS64=
+
+COMSYSOBJS= \
+ __clock_timer.o \
+ __getloadavg.o \
+ __rusagesys.o \
+ __signotify.o \
+ __sigrt.o \
+ __time.o \
+ _lgrp_home_fast.o \
+ _lgrpsys.o \
+ _nfssys.o \
+ _portfs.o \
+ _pset.o \
+ _rpcsys.o \
+ _sigaction.o \
+ _so_accept.o \
+ _so_bind.o \
+ _so_connect.o \
+ _so_getpeername.o \
+ _so_getsockname.o \
+ _so_getsockopt.o \
+ _so_listen.o \
+ _so_recv.o \
+ _so_recvfrom.o \
+ _so_recvmsg.o \
+ _so_send.o \
+ _so_sendmsg.o \
+ _so_sendto.o \
+ _so_setsockopt.o \
+ _so_shutdown.o \
+ _so_socket.o \
+ _so_socketpair.o \
+ _sockconfig.o \
+ acct.o \
+ acl.o \
+ adjtime.o \
+ alarm.o \
+ brk.o \
+ chdir.o \
+ chroot.o \
+ cladm.o \
+ close.o \
+ execve.o \
+ exit.o \
+ facl.o \
+ fchdir.o \
+ fchroot.o \
+ fdsync.o \
+ fpathconf.o \
+ fstatfs.o \
+ fstatvfs.o \
+ getcpuid.o \
+ getdents.o \
+ getegid.o \
+ geteuid.o \
+ getgid.o \
+ getgroups.o \
+ gethrtime.o \
+ getitimer.o \
+ getmsg.o \
+ getpid.o \
+ getpmsg.o \
+ getppid.o \
+ getrandom.o \
+ getrlimit.o \
+ getuid.o \
+ gtty.o \
+ install_utrap.o \
+ ioctl.o \
+ kaio.o \
+ kill.o \
+ llseek.o \
+ lseek.o \
+ mmapobjsys.o \
+ memcntl.o \
+ mincore.o \
+ mmap.o \
+ modctl.o \
+ mount.o \
+ mprotect.o \
+ munmap.o \
+ nice.o \
+ ntp_adjtime.o \
+ ntp_gettime.o \
+ p_online.o \
+ pathconf.o \
+ pause.o \
+ pcsample.o \
+ pipe2.o \
+ pollsys.o \
+ pread.o \
+ preadv.o \
+ priocntlset.o \
+ processor_bind.o \
+ processor_info.o \
+ profil.o \
+ psecflagsset.o \
+ putmsg.o \
+ putpmsg.o \
+ pwrite.o \
+ pwritev.o \
+ read.o \
+ readv.o \
+ resolvepath.o \
+ seteguid.o \
+ setgid.o \
+ setgroups.o \
+ setitimer.o \
+ setreid.o \
+ setrlimit.o \
+ setuid.o \
+ sigaltstk.o \
+ sigprocmsk.o \
+ sigsendset.o \
+ sigsuspend.o \
+ statfs.o \
+ statvfs.o \
+ stty.o \
+ sync.o \
+ sysconfig.o \
+ sysfs.o \
+ sysinfo.o \
+ syslwp.o \
+ times.o \
+ ulimit.o \
+ umask.o \
+ umount2.o \
+ utssys.o \
+ uucopy.o \
+ vhangup.o \
+ waitid.o \
+ write.o \
+ writev.o \
+ yield.o
+
+SYSOBJS= \
+ __clock_gettime.o \
+ __clock_gettime_sys.o \
+ __getcontext.o \
+ __uadmin.o \
+ _lwp_mutex_unlock.o \
+ _stack_grow.o \
+ door.o \
+ forkx.o \
+ forkallx.o \
+ getcontext.o \
+ gettimeofday.o \
+ lwp_private.o \
+ nuname.o \
+ ptrace.o \
+ syscall.o \
+ sysi86.o \
+ tls_get_addr.o \
+ uadmin.o \
+ umount.o \
+ uname.o \
+ vforkx.o \
+ xstat.o
+
+# objects under $(LIBCDIR)/port which contain transitional large file interfaces
+PORTGEN64= \
+ _xftw64.o \
+ attropen64.o \
+ ftw64.o \
+ mkstemp64.o \
+ nftw64.o \
+ tell64.o \
+ truncate64.o
+
+# objects from source under $(LIBCDIR)/port
+PORTFP= \
+ __flt_decim.o \
+ __flt_rounds.o \
+ __tbl_10_b.o \
+ __tbl_10_h.o \
+ __tbl_10_s.o \
+ __tbl_2_b.o \
+ __tbl_2_h.o \
+ __tbl_2_s.o \
+ __tbl_fdq.o \
+ __tbl_tens.o \
+ __x_power.o \
+ _base_sup.o \
+ aconvert.o \
+ decimal_bin.o \
+ double_decim.o \
+ econvert.o \
+ fconvert.o \
+ file_decim.o \
+ finite.o \
+ fp_data.o \
+ func_decim.o \
+ gconvert.o \
+ hex_bin.o \
+ ieee_globals.o \
+ pack_float.o \
+ sigfpe.o \
+ string_decim.o
+
+PORTGEN= \
+ _env_data.o \
+ _xftw.o \
+ a64l.o \
+ abort.o \
+ addsev.o \
+ ascii_strcasecmp.o \
+ ascii_strncasecmp.o \
+ assert.o \
+ atof.o \
+ atoi.o \
+ atol.o \
+ atoll.o \
+ attrat.o \
+ attropen.o \
+ atexit.o \
+ atfork.o \
+ basename.o \
+ calloc.o \
+ catgets.o \
+ catopen.o \
+ cfgetispeed.o \
+ cfgetospeed.o \
+ cfree.o \
+ cfsetispeed.o \
+ cfsetospeed.o \
+ cftime.o \
+ clock.o \
+ closedir.o \
+ closefrom.o \
+ confstr.o \
+ crypt.o \
+ csetlen.o \
+ ctime.o \
+ ctime_r.o \
+ daemon.o \
+ deflt.o \
+ directio.o \
+ dirname.o \
+ div.o \
+ drand48.o \
+ dup.o \
+ env_data.o \
+ err.o \
+ errno.o \
+ euclen.o \
+ event_port.o \
+ execvp.o \
+ explicit_bzero.o \
+ fattach.o \
+ fdetach.o \
+ fdopendir.o \
+ ffs.o \
+ flock.o \
+ fls.o \
+ fmtmsg.o \
+ ftime.o \
+ ftok.o \
+ ftw.o \
+ gcvt.o \
+ getauxv.o \
+ getcwd.o \
+ getdate_err.o \
+ getdtblsize.o \
+ getentropy.o \
+ getenv.o \
+ getexecname.o \
+ getgrnam.o \
+ getgrnam_r.o \
+ gethostid.o \
+ gethostname.o \
+ gethz.o \
+ getisax.o \
+ getloadavg.o \
+ getlogin.o \
+ getmntent.o \
+ getnetgrent.o \
+ get_nprocs.o \
+ getopt.o \
+ getopt_long.o \
+ getpagesize.o \
+ getpw.o \
+ getpwnam.o \
+ getpwnam_r.o \
+ getrusage.o \
+ getspent.o \
+ getspent_r.o \
+ getsubopt.o \
+ gettxt.o \
+ getusershell.o \
+ getut.o \
+ getutx.o \
+ getvfsent.o \
+ getwd.o \
+ getwidth.o \
+ getxby_door.o \
+ gtxt.o \
+ hsearch.o \
+ iconv.o \
+ imaxabs.o \
+ imaxdiv.o \
+ index.o \
+ initgroups.o \
+ insque.o \
+ isaexec.o \
+ isastream.o \
+ isatty.o \
+ killpg.o \
+ klpdlib.o \
+ l64a.o \
+ lckpwdf.o \
+ lconstants.o \
+ lexp10.o \
+ lfind.o \
+ lfmt.o \
+ lfmt_log.o \
+ llabs.o \
+ lldiv.o \
+ llog10.o \
+ lltostr.o \
+ localtime.o \
+ lsearch.o \
+ madvise.o \
+ malloc.o \
+ memalign.o \
+ memmem.o \
+ mkdev.o \
+ mkdtemp.o \
+ mkfifo.o \
+ mkstemp.o \
+ mktemp.o \
+ mlock.o \
+ mlockall.o \
+ mon.o \
+ msync.o \
+ munlock.o \
+ munlockall.o \
+ ndbm.o \
+ nftw.o \
+ nlspath_checks.o \
+ nsparse.o \
+ nss_common.o \
+ nss_dbdefs.o \
+ nss_deffinder.o \
+ opendir.o \
+ opt_data.o \
+ perror.o \
+ pfmt.o \
+ pfmt_data.o \
+ pfmt_print.o \
+ pipe.o \
+ plock.o \
+ poll.o \
+ posix_fadvise.o \
+ posix_fallocate.o \
+ posix_madvise.o \
+ posix_memalign.o \
+ priocntl.o \
+ privlib.o \
+ priv_str_xlate.o \
+ psecflags.o \
+ psiginfo.o \
+ psignal.o \
+ pt.o \
+ putpwent.o \
+ putspent.o \
+ raise.o \
+ rand.o \
+ random.o \
+ rctlops.o \
+ readdir.o \
+ readdir_r.o \
+ realpath.o \
+ reboot.o \
+ regexpr.o \
+ remove.o \
+ rewinddir.o \
+ rindex.o \
+ scandir.o \
+ seekdir.o \
+ select.o \
+ setlabel.o \
+ setpriority.o \
+ settimeofday.o \
+ sh_locks.o \
+ sigflag.o \
+ siglist.o \
+ sigsend.o \
+ sigsetops.o \
+ ssignal.o \
+ stack.o \
+ stpcpy.o \
+ stpncpy.o \
+ str2sig.o \
+ strcase_charmap.o \
+ strchrnul.o \
+ strcspn.o \
+ strdup.o \
+ strerror.o \
+ strlcat.o \
+ strlcpy.o \
+ strndup.o \
+ strpbrk.o \
+ strsep.o \
+ strsignal.o \
+ strspn.o \
+ strstr.o \
+ strtod.o \
+ strtoimax.o \
+ strtok.o \
+ strtok_r.o \
+ strtoumax.o \
+ swab.o \
+ swapctl.o \
+ sysconf.o \
+ syslog.o \
+ tcdrain.o \
+ tcflow.o \
+ tcflush.o \
+ tcgetattr.o \
+ tcgetpgrp.o \
+ tcgetsid.o \
+ tcsendbreak.o \
+ tcsetattr.o \
+ tcsetpgrp.o \
+ tell.o \
+ telldir.o \
+ tfind.o \
+ time_data.o \
+ time_gdata.o \
+ timespec_get.o \
+ tls_data.o \
+ truncate.o \
+ tsdalloc.o \
+ tsearch.o \
+ ttyname.o \
+ ttyslot.o \
+ ualarm.o \
+ ucred.o \
+ valloc.o \
+ vlfmt.o \
+ vpfmt.o \
+ waitpid.o \
+ walkstack.o \
+ wdata.o \
+ xgetwidth.o \
+ xpg4.o \
+ xpg6.o
+
+PORTPRINT_W= \
+ doprnt_w.o
+
+PORTPRINT= \
+ asprintf.o \
+ doprnt.o \
+ fprintf.o \
+ printf.o \
+ snprintf.o \
+ sprintf.o \
+ vfprintf.o \
+ vprintf.o \
+ vsnprintf.o \
+ vsprintf.o \
+ vwprintf.o \
+ wprintf.o
+
+# c89 variants to support 32-bit size of c89 u/intmax_t (32-bit libc only)
+PORTPRINT_C89= \
+ vfprintf_c89.o \
+ vprintf_c89.o \
+ vsnprintf_c89.o \
+ vsprintf_c89.o \
+ vwprintf_c89.o
+
+PORTSTDIO_C89= \
+ vscanf_c89.o \
+ vwscanf_c89.o \
+
+# portable stdio objects that contain large file interfaces.
+# Note: fopen64 is a special case, as we build it small.
+PORTSTDIO64= \
+ fopen64.o \
+ fpos64.o
+
+PORTSTDIO_W= \
+ doscan_w.o
+
+PORTSTDIO= \
+ __extensions.o \
+ _endopen.o \
+ _filbuf.o \
+ _findbuf.o \
+ _flsbuf.o \
+ _wrtchk.o \
+ clearerr.o \
+ ctermid.o \
+ ctermid_r.o \
+ cuserid.o \
+ data.o \
+ doscan.o \
+ fdopen.o \
+ feof.o \
+ ferror.o \
+ fgetc.o \
+ fgets.o \
+ fileno.o \
+ flockf.o \
+ flush.o \
+ fopen.o \
+ fpos.o \
+ fputc.o \
+ fputs.o \
+ fread.o \
+ fseek.o \
+ fseeko.o \
+ ftell.o \
+ ftello.o \
+ fwrite.o \
+ getc.o \
+ getchar.o \
+ getline.o \
+ getpass.o \
+ gets.o \
+ getw.o \
+ mse.o \
+ popen.o \
+ putc.o \
+ putchar.o \
+ puts.o \
+ putw.o \
+ rewind.o \
+ scanf.o \
+ setbuf.o \
+ setbuffer.o \
+ setvbuf.o \
+ system.o \
+ tempnam.o \
+ tmpfile.o \
+ tmpnam_r.o \
+ ungetc.o \
+ vscanf.o \
+ vwscanf.o \
+ wscanf.o
+
+PORTI18N= \
+ getwchar.o \
+ putwchar.o \
+ putws.o \
+ strtows.o \
+ wcsnlen.o \
+ wcsstr.o \
+ wcstoimax.o \
+ wcstol.o \
+ wcstoul.o \
+ wcswcs.o \
+ wmemchr.o \
+ wmemcmp.o \
+ wmemcpy.o \
+ wmemmove.o \
+ wmemset.o \
+ wscat.o \
+ wschr.o \
+ wscmp.o \
+ wscpy.o \
+ wscspn.o \
+ wsdup.o \
+ wslen.o \
+ wsncat.o \
+ wsncmp.o \
+ wsncpy.o \
+ wspbrk.o \
+ wsprintf.o \
+ wsrchr.o \
+ wsscanf.o \
+ wsspn.o \
+ wstod.o \
+ wstok.o \
+ wstol.o \
+ wstoll.o \
+ wsxfrm.o \
+ gettext.o \
+ gettext_gnu.o \
+ gettext_real.o \
+ gettext_util.o \
+ plural_parser.o \
+ wdresolve.o \
+ _ctype.o \
+ isascii.o \
+ toascii.o
+
+PORTI18N_COND= \
+ wcstol_longlong.o \
+ wcstoul_longlong.o
+
+PORTLOCALE= \
+ big5.o \
+ btowc.o \
+ collate.o \
+ collcmp.o \
+ euc.o \
+ fnmatch.o \
+ fgetwc.o \
+ fgetws.o \
+ fix_grouping.o \
+ fputwc.o \
+ fputws.o \
+ fwide.o \
+ gb18030.o \
+ gb2312.o \
+ gbk.o \
+ getdate.o \
+ isdigit.o \
+ iswctype.o \
+ ldpart.o \
+ lmessages.o \
+ lnumeric.o \
+ lmonetary.o \
+ localeconv.o \
+ localeimpl.o \
+ mbftowc.o \
+ mblen.o \
+ mbrlen.o \
+ mbrtowc.o \
+ mbsinit.o \
+ mbsnrtowcs.o \
+ mbsrtowcs.o \
+ mbstowcs.o \
+ mbtowc.o \
+ mskanji.o \
+ nextwctype.o \
+ nl_langinfo.o \
+ none.o \
+ regcomp.o \
+ regfree.o \
+ regerror.o \
+ regexec.o \
+ rune.o \
+ runetype.o \
+ setlocale.o \
+ setrunelocale.o \
+ strcasecmp.o \
+ strcasestr.o \
+ strcoll.o \
+ strfmon.o \
+ strftime.o \
+ strncasecmp.o \
+ strptime.o \
+ strxfrm.o \
+ table.o \
+ timelocal.o \
+ tolower.o \
+ towlower.o \
+ ungetwc.o \
+ utf8.o \
+ wcrtomb.o \
+ wcscasecmp.o \
+ wcscoll.o \
+ wcsftime.o \
+ wcsnrtombs.o \
+ wcsrtombs.o \
+ wcswidth.o \
+ wcstombs.o \
+ wcsxfrm.o \
+ wctob.o \
+ wctomb.o \
+ wctrans.o \
+ wctype.o \
+ wcwidth.o \
+ wscol.o
+
+AIOOBJS= \
+ aio.o \
+ aio_alloc.o \
+ posix_aio.o
+
+RTOBJS= \
+ clock_timer.o \
+ mqueue.o \
+ pos4obj.o \
+ sched.o \
+ sem.o \
+ shm.o \
+ sigev_thread.o
+
+TPOOLOBJS= \
+ thread_pool.o
+
+THREADSOBJS= \
+ alloc.o \
+ assfail.o \
+ cancel.o \
+ c11_thr.o \
+ door_calls.o \
+ tmem.o \
+ pthr_attr.o \
+ pthr_barrier.o \
+ pthr_cond.o \
+ pthr_mutex.o \
+ pthr_rwlock.o \
+ pthread.o \
+ rwlock.o \
+ scalls.o \
+ sema.o \
+ sigaction.o \
+ spawn.o \
+ synch.o \
+ tdb_agent.o \
+ thr.o \
+ thread_interface.o \
+ tls.o \
+ tsd.o
+
+THREADSMACHOBJS= \
+ machdep.o
+
+THREADSASMOBJS= \
+ asm_subr.o
+
+UNICODEOBJS= \
+ u8_textprep.o \
+ uconv.o
+
+UNWINDMACHOBJS= \
+ unwind.o
+
+UNWINDASMOBJS= \
+ unwind_frame.o
+
+# objects that implement the transitional large file API
+PORTSYS64= \
+ lockf64.o \
+ stat64.o
+
+PORTSYS= \
+ _autofssys.o \
+ access.o \
+ acctctl.o \
+ bsd_signal.o \
+ chmod.o \
+ chown.o \
+ corectl.o \
+ epoll.o \
+ eventfd.o \
+ exacctsys.o \
+ execl.o \
+ execle.o \
+ execv.o \
+ fcntl.o \
+ getpagesizes.o \
+ getpeerucred.o \
+ inst_sync.o \
+ issetugid.o \
+ label.o \
+ link.o \
+ lockf.o \
+ lwp.o \
+ lwp_cond.o \
+ lwp_rwlock.o \
+ lwp_sigmask.o \
+ meminfosys.o \
+ mkdir.o \
+ mknod.o \
+ msgsys.o \
+ nfssys.o \
+ open.o \
+ pgrpsys.o \
+ posix_sigwait.o \
+ ppriv.o \
+ psetsys.o \
+ rctlsys.o \
+ readlink.o \
+ rename.o \
+ sbrk.o \
+ semsys.o \
+ set_errno.o \
+ sharefs.o \
+ shmsys.o \
+ sidsys.o \
+ siginterrupt.o \
+ signal.o \
+ signalfd.o \
+ sigpending.o \
+ sigstack.o \
+ stat.o \
+ symlink.o \
+ tasksys.o \
+ time.o \
+ time_util.o \
+ timerfd.o \
+ ucontext.o \
+ unlink.o \
+ ustat.o \
+ utimesys.o \
+ zone.o
+
+PORTREGEX= \
+ glob.o \
+ regcmp.o \
+ regex.o \
+ wordexp.o
+
+PORTREGEX64= \
+ glob64.o
+
+MOSTOBJS= \
+ $(STRETS) \
+ $(CRTOBJS) \
+ $(DYNOBJS) \
+ $(FPOBJS) \
+ $(FPASMOBJS) \
+ $(ATOMICOBJS) \
+ $(CHACHAOBJS) \
+ $(XATTROBJS) \
+ $(COMOBJS) \
+ $(DTRACEOBJS) \
+ $(GENOBJS) \
+ $(PORTFP) \
+ $(PORTGEN) \
+ $(PORTGEN64) \
+ $(PORTI18N) \
+ $(PORTI18N_COND) \
+ $(PORTLOCALE) \
+ $(PORTPRINT) \
+ $(PORTPRINT_C89) \
+ $(PORTPRINT_W) \
+ $(PORTREGEX) \
+ $(PORTREGEX64) \
+ $(PORTSTDIO) \
+ $(PORTSTDIO64) \
+ $(PORTSTDIO_C89) \
+ $(PORTSTDIO_W) \
+ $(PORTSYS) \
+ $(PORTSYS64) \
+ $(AIOOBJS) \
+ $(RTOBJS) \
+ $(SECFLAGSOBJS) \
+ $(TPOOLOBJS) \
+ $(THREADSOBJS) \
+ $(THREADSMACHOBJS) \
+ $(THREADSASMOBJS) \
+ $(UNICODEOBJS) \
+ $(UNWINDMACHOBJS) \
+ $(UNWINDASMOBJS) \
+ $(COMSYSOBJS) \
+ $(SYSOBJS) \
+ $(COMSYSOBJS64) \
+ $(SYSOBJS64) \
+ $(VALUES)
+
+TRACEOBJS= \
+ plockstat.o
+
+# NOTE: libc.so.1 must be linked with the minimal crti.o and crtn.o
+# modules whose source is provided in the $(SRC)/lib/common directory.
+# This must be done because otherwise the Sun C compiler would insert
+# its own versions of these modules and those versions contain code
+# to call out to C++ initialization functions. Such C++ initialization
+# functions can call back into libc before thread initialization is
+# complete and this leads to segmentation violations and other problems.
+# Since libc contains no C++ code, linking with the minimal crti.o and
+# crtn.o modules is safe and avoids the problems described above.
+OBJECTS= $(CRTI) $(MOSTOBJS) $(CRTN)
+CRTSRCS= ../../common/i386
+
+LDPASS_OFF= $(POUND_SIGN)
+
+# include common library definitions
+include ../../Makefile.lib
+
+# we need to override the default SONAME here because we might
+# be building a variant object (still libc.so.1, but different filename)
+SONAME = libc.so.1
+
+CFLAGS += $(CCVERBOSE) $(CTF_FLAGS)
+
+# This is necessary to avoid problems with calling _ex_unwind().
+# We probably don't want any inlining anyway.
+XINLINE = -xinline=
+CFLAGS += $(XINLINE)
+
+CERRWARN += -_gcc=-Wno-parentheses
+CERRWARN += -_gcc=-Wno-switch
+CERRWARN += -_gcc=-Wno-uninitialized
+CERRWARN += -_gcc=-Wno-unused-value
+CERRWARN += -_gcc=-Wno-unused-label
+CERRWARN += -_gcc=-Wno-unused-variable
+CERRWARN += -_gcc=-Wno-type-limits
+CERRWARN += -_gcc=-Wno-char-subscripts
+CERRWARN += -_gcc=-Wno-clobbered
+CERRWARN += -_gcc=-Wno-unused-function
+CERRWARN += -_gcc=-Wno-address
+
+# Setting THREAD_DEBUG = -DTHREAD_DEBUG (make THREAD_DEBUG=-DTHREAD_DEBUG ...)
+# enables ASSERT() checking in the threads portion of the library.
+# This is automatically enabled for DEBUG builds, not for non-debug builds.
+THREAD_DEBUG =
+$(NOT_RELEASE_BUILD)THREAD_DEBUG = -DTHREAD_DEBUG
+
+# Make string literals read-only to save memory.
+CFLAGS += $(XSTRCONST)
+
+ALTPICS= $(TRACEOBJS:%=pics/%)
+
+$(DYNLIB) := BUILD.SO = $(LD) -o $@ -G $(DYNFLAGS) $(PICS) $(ALTPICS) \
+ $(EXTPICS) $(LDLIBS)
+
+MAPFILES = $(LIBCDIR)/port/mapfile-vers
+
#
-# lib/libc/i386/Makefile
+# EXTN_CPPFLAGS and EXTN_CFLAGS set in enclosing Makefile
#
+CFLAGS += $(EXTN_CFLAGS)
+CPPFLAGS= -D_REENTRANT -Di386 $(EXTN_CPPFLAGS) $(THREAD_DEBUG) \
+ -I$(LIBCBASE)/inc -I$(LIBCDIR)/inc $(CPPFLAGS.master)
+ASFLAGS= $(AS_PICFLAGS) -P -D__STDC__ -D_ASM $(CPPFLAGS) $(i386_AS_XARCH)
-LIBCBASE=../i386
+# As a favor to the dtrace syscall provider, libc still calls the
+# old syscall traps that have been obsoleted by the *at() interfaces.
+# Delete this to compile libc using only the new *at() system call traps
+CPPFLAGS += -D_RETAIN_OLD_SYSCALLS
-EXTN_CPPFLAGS =
-EXTN_XFLAGS =
+# Inform the run-time linker about libc specialized initialization
+RTLDINFO = -z rtldinfo=tls_rtldinfo
+DYNFLAGS += $(RTLDINFO)
-LIBRARY = libc.a
+# Force libc's internal references to be resolved immediately upon loading
+# in order to avoid critical region problems. Since almost all libc symbols
+# are marked 'protected' in the mapfiles, this is a minimal set (15 to 20).
+DYNFLAGS += -znow
-# Special postprocessing for 32-bit fpcw.o: strip the SSE HWCAP attribute
-# from the object file; the internal functions with SSE instructions are
-# called conditionally on systems which have SSE instruction support
-pics/fpcw.o := POST_PROCESS_O += ; \
- if $(ELFDUMP) -H $@ | grep " SSE "; then \
- $(ELFEDIT) -e 'cap:hw1 -and -cmp SSE' $@; \
- fi
+DYNFLAGS += -e __rtboot
+DYNFLAGS += $(EXTN_DYNFLAGS)
-include Makefile.com
+# Inform the kernel about the initial DTrace area (in case
+# libc is being used as the interpreter / runtime linker).
+DTRACE_DATA = -zdtrace=dtrace_data
+DYNFLAGS += $(DTRACE_DATA)
+
+# DTrace needs an executable data segment.
+MAPFILE.NED=
+
+BUILD.s= $(AS) $(ASFLAGS) $< -o $@
+
+# Override this top level flag so the compiler builds in its native
+# C99 mode. This has been enabled to support the complex arithmetic
+# added to libc.
+C99MODE= $(C99_ENABLE)
+
+# libc method of building an archive
+# The "$(GREP) -v ' L '" part is necessary only until
+# lorder is fixed to ignore thread-local variables.
+BUILD.AR= $(RM) $@ ; \
+ $(AR) q $@ `$(LORDER) $(MOSTOBJS:%=$(DIR)/%) | $(GREP) -v ' L ' | $(TSORT)`
+
+# extra files for the clean target
+CLEANFILES += \
+ $(LIBCDIR)/port/gen/errlst.c \
+ $(LIBCDIR)/port/gen/new_list.c \
+ assym.h \
+ genassym \
+ crt/_rtld.s \
+ crt/_rtbootld.s \
+ pics/_rtbootld.o \
+ pics/crti.o \
+ pics/crtn.o \
+ $(ALTPICS)
+
+CLOBBERFILES += $(LIB_PIC)
+
+# list of C source for lint
+SRCS= \
+ $(ATOMICOBJS:%.o=$(SRC)/common/atomic/%.c) \
+ $(XATTROBJS:%.o=$(SRC)/common/xattr/%.c) \
+ $(COMOBJS:%.o=$(SRC)/common/util/%.c) \
+ $(DTRACEOBJS:%.o=$(SRC)/common/dtrace/%.c) \
+ $(PORTFP:%.o=$(LIBCDIR)/port/fp/%.c) \
+ $(PORTGEN:%.o=$(LIBCDIR)/port/gen/%.c) \
+ $(PORTI18N:%.o=$(LIBCDIR)/port/i18n/%.c) \
+ $(PORTLOCALE:%.o=$(LIBCDIR)/port/locale/%.c) \
+ $(PORTPRINT:%.o=$(LIBCDIR)/port/print/%.c) \
+ $(PORTREGEX:%.o=$(LIBCDIR)/port/regex/%.c) \
+ $(PORTSTDIO:%.o=$(LIBCDIR)/port/stdio/%.c) \
+ $(PORTSYS:%.o=$(LIBCDIR)/port/sys/%.c) \
+ $(AIOOBJS:%.o=$(LIBCDIR)/port/aio/%.c) \
+ $(RTOBJS:%.o=$(LIBCDIR)/port/rt/%.c) \
+ $(SECFLAGSOBJS:%.o=$(SRC)/common/secflags/%.c) \
+ $(TPOOLOBJS:%.o=$(LIBCDIR)/port/tpool/%.c) \
+ $(THREADSOBJS:%.o=$(LIBCDIR)/port/threads/%.c) \
+ $(THREADSMACHOBJS:%.o=$(LIBCDIR)/$(MACH)/threads/%.c) \
+ $(UNICODEOBJS:%.o=$(SRC)/common/unicode/%.c) \
+ $(UNWINDMACHOBJS:%.o=$(LIBCDIR)/port/unwind/%.c) \
+ $(FPOBJS:%.o=$(LIBCDIR)/$(MACH)/fp/%.c) \
+ $(LIBCBASE)/gen/ecvt.c \
+ $(LIBCBASE)/gen/makectxt.c \
+ $(LIBCBASE)/gen/siginfolst.c \
+ $(LIBCBASE)/gen/siglongjmp.c \
+ $(LIBCBASE)/gen/strcmp.c \
+ $(LIBCBASE)/gen/sync_instruction_memory.c \
+ $(LIBCBASE)/sys/ptrace.c \
+ $(LIBCBASE)/sys/uadmin.c
+
+# conditional assignments
+$(DYNLIB) := CRTI = crti.o
+$(DYNLIB) := CRTN = crtn.o
+
+# Files which need the threads .il inline template
+TIL= \
+ aio.o \
+ alloc.o \
+ assfail.o \
+ atexit.o \
+ atfork.o \
+ cancel.o \
+ door_calls.o \
+ err.o \
+ errno.o \
+ lwp.o \
+ ma.o \
+ machdep.o \
+ posix_aio.o \
+ pthr_attr.o \
+ pthr_barrier.o \
+ pthr_cond.o \
+ pthr_mutex.o \
+ pthr_rwlock.o \
+ pthread.o \
+ rand.o \
+ rwlock.o \
+ scalls.o \
+ sched.o \
+ sema.o \
+ sigaction.o \
+ sigev_thread.o \
+ spawn.o \
+ stack.o \
+ synch.o \
+ tdb_agent.o \
+ thr.o \
+ thread_interface.o \
+ thread_pool.o \
+ tls.o \
+ tsd.o \
+ tmem.o \
+ unwind.o
+
+THREADS_INLINES = $(LIBCBASE)/threads/i386.il
+$(TIL:%=pics/%) := CFLAGS += $(THREADS_INLINES)
+
+# pics/mul64.o := CFLAGS += $(LIBCBASE)/crt/mul64.il
+
+# large-file-aware components that should be built large
+
+$(COMSYSOBJS64:%=pics/%) := \
+ CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+
+$(SYSOBJS64:%=pics/%) := \
+ CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+
+$(PORTGEN64:%=pics/%) := \
+ CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+
+$(PORTREGEX64:%=pics/%) := \
+ CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+
+$(PORTSTDIO64:%=pics/%) := \
+ CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+
+$(PORTSYS64:%=pics/%) := \
+ CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+
+$(PORTSTDIO_W:%=pics/%) := \
+ CPPFLAGS += -D_WIDE
+
+$(PORTPRINT_W:%=pics/%) := \
+ CPPFLAGS += -D_WIDE
+
+$(PORTPRINT_C89:%=pics/%) := \
+ CPPFLAGS += -D_C89_INTMAX32
+
+$(PORTSTDIO_C89:%=pics/%) := \
+ CPPFLAGS += -D_C89_INTMAX32
+
+$(PORTI18N_COND:%=pics/%) := \
+ CPPFLAGS += -D_WCS_LONGLONG
+
+pics/arc4random.o := CPPFLAGS += -I$(SRC)/common/crypto/chacha
+
+pics/__clock_gettime.o := CPPFLAGS += $(COMMPAGE_CPPFLAGS)
+
+.KEEP_STATE:
+
+all: $(LIBS) $(LIB_PIC)
+
+lint := CPPFLAGS += -I$(LIBCDIR)/$(MACH)/fp
+lint := CPPFLAGS += -D_MSE_INT_H -D_LCONV_C99
+lint := LINTFLAGS += -mn -erroff=E_SUPPRESSION_DIRECTIVE_UNUSED
+
+lint:
+ @echo $(LINT.c) ...
+ @$(LINT.c) $(SRCS) $(LDLIBS)
+
+$(LINTLIB):= SRCS=$(LIBCDIR)/port/llib-lc
+$(LINTLIB):= CPPFLAGS += -D_MSE_INT_H
+$(LINTLIB):= LINTFLAGS=-nvx
+
+# object files that depend on inline template
+$(TIL:%=pics/%): $(LIBCBASE)/threads/i386.il
+# pics/mul64.o: $(LIBCBASE)/crt/mul64.il
+
+# include common libc targets
+include $(LIBCDIR)/Makefile.targ
+
+# We need to strip out all CTF and DOF data from the static library
+$(LIB_PIC) := DIR = pics
+$(LIB_PIC): pics $$(PICS)
+ $(BUILD.AR)
+ $(MCS) -d -n .SUNW_ctf $@ > /dev/null 2>&1
+ $(MCS) -d -n .SUNW_dof $@ > /dev/null 2>&1
+ $(AR) -ts $@ > /dev/null
+ $(POST_PROCESS_A)
+
+$(LIBCBASE)/crt/_rtbootld.s: $(LIBCBASE)/crt/_rtboot.s $(LIBCBASE)/crt/_rtld.c
+ $(CC) $(CPPFLAGS) $(CTF_FLAGS) -O -S $(C_PICFLAGS) \
+ $(LIBCBASE)/crt/_rtld.c -o $(LIBCBASE)/crt/_rtld.s
+ $(CAT) $(LIBCBASE)/crt/_rtboot.s $(LIBCBASE)/crt/_rtld.s > $@
+ $(RM) $(LIBCBASE)/crt/_rtld.s
+
+# partially built from C source
+pics/_rtbootld.o: $(LIBCBASE)/crt/_rtbootld.s
+ $(AS) $(ASFLAGS) $(LIBCBASE)/crt/_rtbootld.s -o $@
+ $(CTFCONVERT_O)
+
+ASSYMDEP_OBJS= \
+ _lwp_mutex_unlock.o \
+ _stack_grow.o \
+ getcontext.o \
+ setjmp.o \
+ tls_get_addr.o \
+ vforkx.o
+
+$(ASSYMDEP_OBJS:%=pics/%) := CPPFLAGS += -I.
+
+$(ASSYMDEP_OBJS:%=pics/%): assym.h
+
+# assym.h build rules
+
+GENASSYM_C = $(LIBCDIR)/$(MACH)/genassym.c
+
+genassym: $(GENASSYM_C)
+ $(NATIVECC) $(NATIVE_CFLAGS) -I$(LIBCBASE)/inc -I$(LIBCDIR)/inc \
+ -D__EXTENSIONS__ $(CPPFLAGS.native) -o $@ $(GENASSYM_C)
+
+OFFSETS = $(LIBCDIR)/$(MACH)/offsets.in
+
+assym.h: $(OFFSETS) genassym
+ $(OFFSETS_CREATE) <$(OFFSETS) >$@
+ ./genassym >>$@
+
+# derived C source and related explicit dependencies
+$(LIBCDIR)/port/gen/errlst.c + \
+$(LIBCDIR)/port/gen/new_list.c: $(LIBCDIR)/port/gen/errlist $(LIBCDIR)/port/gen/errlist.awk
+ cd $(LIBCDIR)/port/gen; pwd; $(AWK) -f errlist.awk < errlist
+
+pics/errlst.o: $(LIBCDIR)/port/gen/errlst.c
+
+pics/new_list.o: $(LIBCDIR)/port/gen/new_list.c