Print this page
1235 Use symbol capabilities to eliminate libc_hwcap*

*** 17,45 **** # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # ! # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # ! # ident "%Z%%M% %I% %E% SMI" # ! # lib/libc/i386/Makefile # ! LIBCBASE=../i386 ! EXTN_CPPFLAGS = ! EXTN_XFLAGS = ! LIBRARY = libc.a ! # 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 ! include Makefile.com --- 17,1352 ---- # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # ! # 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. # ! ! 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 ! # ! # 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) ! # 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 ! # Inform the run-time linker about libc specialized initialization ! RTLDINFO = -z rtldinfo=tls_rtldinfo ! DYNFLAGS += $(RTLDINFO) ! # 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 ! DYNFLAGS += -e __rtboot ! DYNFLAGS += $(EXTN_DYNFLAGS) ! # 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