From owner-svn-src-user@FreeBSD.ORG Tue Aug 24 21:16:38 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1ADDC10656A6; Tue, 24 Aug 2010 21:16:38 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 06F938FC1A; Tue, 24 Aug 2010 21:16:38 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o7OLGcdp088199; Tue, 24 Aug 2010 21:16:38 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o7OLGbk8088171; Tue, 24 Aug 2010 21:16:37 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201008242116.o7OLGbk8088171@svn.freebsd.org> From: Warner Losh Date: Tue, 24 Aug 2010 21:16:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r211775 - in user/imp/tbemd: . contrib/gcc contrib/libstdc++/include/ext contrib/libstdc++/src contrib/top gnu/lib/libdialog lib lib/libc lib/libc/compat-43 lib/libc/gen lib/libc/locale... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Aug 2010 21:16:38 -0000 Author: imp Date: Tue Aug 24 21:16:37 2010 New Revision: 211775 URL: http://svn.freebsd.org/changeset/base/211775 Log: Loopback changes in head @211774 Added: user/imp/tbemd/lib/libc/sys/stack_protector_compat.c - copied unchanged from r211774, head/lib/libc/sys/stack_protector_compat.c Deleted: user/imp/tbemd/lib/libthr/arch/powerpc64/ user/imp/tbemd/lib/libthr/thread/thr_atfork.c Modified: user/imp/tbemd/Makefile.inc1 user/imp/tbemd/contrib/gcc/crtstuff.c user/imp/tbemd/contrib/libstdc++/include/ext/bitmap_allocator.h user/imp/tbemd/contrib/libstdc++/include/ext/ropeimpl.h user/imp/tbemd/contrib/libstdc++/src/locale-inst.cc user/imp/tbemd/gnu/lib/libdialog/checklist.c user/imp/tbemd/lib/Makefile user/imp/tbemd/lib/libc/Makefile user/imp/tbemd/lib/libc/compat-43/Makefile.inc user/imp/tbemd/lib/libc/gen/Makefile.inc user/imp/tbemd/lib/libc/locale/Makefile.inc user/imp/tbemd/lib/libc/quad/Makefile.inc user/imp/tbemd/lib/libc/softfloat/Makefile.inc user/imp/tbemd/lib/libc/stdlib/Makefile.inc user/imp/tbemd/lib/libc/string/Makefile.inc user/imp/tbemd/lib/libc/sys/Makefile.inc user/imp/tbemd/lib/libc/sys/stack_protector.c user/imp/tbemd/lib/libthr/arch/powerpc/include/pthread_md.h user/imp/tbemd/lib/libthr/pthread.map user/imp/tbemd/lib/libthr/thread/thr_private.h user/imp/tbemd/lib/libthr/thread/thr_sig.c user/imp/tbemd/libexec/rtld-elf/rtld.c user/imp/tbemd/sys/amd64/include/trap.h user/imp/tbemd/sys/boot/common/ufsread.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/intel/dtrace/fasttrap_isa.c user/imp/tbemd/sys/dev/age/if_age.c user/imp/tbemd/sys/dev/ed/if_ed_isa.c user/imp/tbemd/sys/dev/vr/if_vr.c user/imp/tbemd/sys/i386/include/trap.h user/imp/tbemd/sys/kern/kern_thr.c user/imp/tbemd/sys/modules/dtrace/Makefile user/imp/tbemd/sys/modules/dtrace/dtraceall/dtraceall.c user/imp/tbemd/sys/modules/dtrace/fasttrap/Makefile user/imp/tbemd/sys/pci/if_rl.c user/imp/tbemd/sys/sys/cdefs.h user/imp/tbemd/sys/sys/param.h user/imp/tbemd/sys/sys/signal.h user/imp/tbemd/sys/x86/x86/local_apic.c user/imp/tbemd/usr.sbin/acpi/acpiconf/acpiconf.c user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/disk-info.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/disk-list.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/disk-part.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/enable-net.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/get-packages.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/list-packages.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/set-mirror.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/test-netup.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/update-part-list.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/xkeyboard-layouts.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/xkeyboard-models.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/xkeyboard-variants.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-bsdlabel.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-cleanup.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-disk.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-extractimage.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-ftp.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-installcomponents.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-installpackages.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-localize.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-mountdisk.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-mountoptical.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-networking.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-newfs.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-packages.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-parse.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-unmount.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-upgrade.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-users.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/parseconfig.sh user/imp/tbemd/usr.sbin/pc-sysinstall/pc-sysinstall/pc-sysinstall.sh Directory Properties: user/imp/tbemd/ (props changed) user/imp/tbemd/cddl/contrib/opensolaris/ (props changed) user/imp/tbemd/contrib/bind9/ (props changed) user/imp/tbemd/contrib/ee/ (props changed) user/imp/tbemd/contrib/expat/ (props changed) user/imp/tbemd/contrib/file/ (props changed) user/imp/tbemd/contrib/gdb/ (props changed) user/imp/tbemd/contrib/gdtoa/ (props changed) user/imp/tbemd/contrib/gnu-sort/ (props changed) user/imp/tbemd/contrib/groff/ (props changed) user/imp/tbemd/contrib/less/ (props changed) user/imp/tbemd/contrib/libpcap/ (props changed) user/imp/tbemd/contrib/llvm/ (props changed) user/imp/tbemd/contrib/llvm/tools/clang/ (props changed) user/imp/tbemd/contrib/ncurses/ (props changed) user/imp/tbemd/contrib/netcat/ (props changed) user/imp/tbemd/contrib/ntp/ (props changed) user/imp/tbemd/contrib/one-true-awk/ (props changed) user/imp/tbemd/contrib/openbsm/ (props changed) user/imp/tbemd/contrib/openpam/ (props changed) user/imp/tbemd/contrib/pf/ (props changed) user/imp/tbemd/contrib/sendmail/ (props changed) user/imp/tbemd/contrib/tcpdump/ (props changed) user/imp/tbemd/contrib/tcsh/ (props changed) user/imp/tbemd/contrib/top/ (props changed) user/imp/tbemd/contrib/top/install-sh (props changed) user/imp/tbemd/contrib/tzcode/stdtime/ (props changed) user/imp/tbemd/contrib/tzcode/zic/ (props changed) user/imp/tbemd/contrib/tzdata/ (props changed) user/imp/tbemd/contrib/wpa/ (props changed) user/imp/tbemd/crypto/openssh/ (props changed) user/imp/tbemd/crypto/openssl/ (props changed) user/imp/tbemd/lib/libc/ (props changed) user/imp/tbemd/lib/libc/stdtime/ (props changed) user/imp/tbemd/lib/libutil/ (props changed) user/imp/tbemd/lib/libz/ (props changed) user/imp/tbemd/sbin/ (props changed) user/imp/tbemd/sbin/ipfw/ (props changed) user/imp/tbemd/share/zoneinfo/ (props changed) user/imp/tbemd/sys/ (props changed) user/imp/tbemd/sys/amd64/include/xen/ (props changed) user/imp/tbemd/sys/cddl/contrib/opensolaris/ (props changed) user/imp/tbemd/sys/contrib/dev/acpica/ (props changed) user/imp/tbemd/sys/contrib/pf/ (props changed) user/imp/tbemd/sys/contrib/x86emu/ (props changed) user/imp/tbemd/sys/dev/xen/xenpci/ (props changed) user/imp/tbemd/usr.bin/csup/ (props changed) user/imp/tbemd/usr.bin/procstat/ (props changed) user/imp/tbemd/usr.sbin/zic/ (props changed) Modified: user/imp/tbemd/Makefile.inc1 ============================================================================== --- user/imp/tbemd/Makefile.inc1 Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/Makefile.inc1 Tue Aug 24 21:16:37 2010 (r211775) @@ -1131,12 +1131,10 @@ _prereq_libs= gnu/lib/libssp/libssp_nons # all shared libraries for ELF. # _startup_libs= gnu/lib/csu -.if exists(${.CURDIR}/lib/csu/${MACHINE_CPUARCH}-elf) -_startup_libs+= lib/csu/${MACHINE_CPUARCH}-elf +.if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}-elf) +_startup_libs+= lib/csu/${MACHINE_ARCH}-elf .elif exists(${.CURDIR}/lib/csu/${MACHINE_CPUARCH}-elf) _startup_libs+= lib/csu/${MACHINE_CPUARCH}-elf -.elif exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}) -_startup_libs+= lib/csu/${MACHINE_ARCH} .else _startup_libs+= lib/csu/${MACHINE_CPUARCH} .endif Modified: user/imp/tbemd/contrib/gcc/crtstuff.c ============================================================================== --- user/imp/tbemd/contrib/gcc/crtstuff.c Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/contrib/gcc/crtstuff.c Tue Aug 24 21:16:37 2010 (r211775) @@ -175,14 +175,14 @@ CTOR_LIST_BEGIN; #elif defined(CTORS_SECTION_ASM_OP) /* Hack: force cc1 to switch to .data section early, so that assembling __CTOR_LIST__ does not undo our behind-the-back change to .ctors. */ -static func_ptr force_to_data[1] __attribute__ ((__unused__)) = { }; +static func_ptr force_to_data[1] __attribute__ ((__used__)) = { }; asm (CTORS_SECTION_ASM_OP); STATIC func_ptr __CTOR_LIST__[1] - __attribute__ ((__unused__, aligned(sizeof(func_ptr)))) + __attribute__ ((__used__, aligned(sizeof(func_ptr)))) = { (func_ptr) (-1) }; #else STATIC func_ptr __CTOR_LIST__[1] - __attribute__ ((__unused__, section(".ctors"), aligned(sizeof(func_ptr)))) + __attribute__ ((__used__, section(".ctors"), aligned(sizeof(func_ptr)))) = { (func_ptr) (-1) }; #endif /* __CTOR_LIST__ alternatives */ @@ -308,7 +308,7 @@ __do_global_dtors_aux (void) CRT_CALL_STATIC_FUNCTION (FINI_SECTION_ASM_OP, __do_global_dtors_aux) #else /* !defined(FINI_SECTION_ASM_OP) */ static func_ptr __do_global_dtors_aux_fini_array_entry[] - __attribute__ ((__unused__, section(".fini_array"))) + __attribute__ ((__used__, section(".fini_array"))) = { __do_global_dtors_aux }; #endif /* !defined(FINI_SECTION_ASM_OP) */ @@ -348,7 +348,7 @@ frame_dummy (void) CRT_CALL_STATIC_FUNCTION (INIT_SECTION_ASM_OP, frame_dummy) #else /* defined(INIT_SECTION_ASM_OP) */ static func_ptr __frame_dummy_init_array_entry[] - __attribute__ ((__unused__, section(".init_array"))) + __attribute__ ((__used__, section(".init_array"))) = { frame_dummy }; #endif /* !defined(INIT_SECTION_ASM_OP) */ #endif /* USE_EH_FRAME_REGISTRY || JCR_SECTION_NAME */ @@ -456,7 +456,7 @@ CTOR_LIST_END; #elif defined(CTORS_SECTION_ASM_OP) /* Hack: force cc1 to switch to .data section early, so that assembling __CTOR_LIST__ does not undo our behind-the-back change to .ctors. */ -static func_ptr force_to_data[1] __attribute__ ((__unused__)) = { }; +static func_ptr force_to_data[1] __attribute__ ((__used__)) = { }; asm (CTORS_SECTION_ASM_OP); STATIC func_ptr __CTOR_END__[1] __attribute__((aligned(sizeof(func_ptr)))) Modified: user/imp/tbemd/contrib/libstdc++/include/ext/bitmap_allocator.h ============================================================================== --- user/imp/tbemd/contrib/libstdc++/include/ext/bitmap_allocator.h Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/contrib/libstdc++/include/ext/bitmap_allocator.h Tue Aug 24 21:16:37 2010 (r211775) @@ -549,11 +549,13 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) */ class free_list { + public: typedef size_t* value_type; typedef __detail::__mini_vector vector_type; typedef vector_type::iterator iterator; typedef __mutex __mutex_type; + private: struct _LT_pointer_compare { bool Modified: user/imp/tbemd/contrib/libstdc++/include/ext/ropeimpl.h ============================================================================== --- user/imp/tbemd/contrib/libstdc++/include/ext/ropeimpl.h Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/contrib/libstdc++/include/ext/ropeimpl.h Tue Aug 24 21:16:37 2010 (r211775) @@ -382,7 +382,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) { _Rope_RopeLeaf<_CharT, _Alloc>* __l = (_Rope_RopeLeaf<_CharT, _Alloc>*)this; - __l->_Rope_RopeLeaf<_CharT, _Alloc>::~_Rope_RopeLeaf(); + __l->template _Rope_RopeLeaf<_CharT, _Alloc>::~_Rope_RopeLeaf(); _L_deallocate(__l, 1); break; } @@ -390,7 +390,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) { _Rope_RopeConcatenation<_CharT,_Alloc>* __c = (_Rope_RopeConcatenation<_CharT, _Alloc>*)this; - __c->_Rope_RopeConcatenation<_CharT, _Alloc>:: + __c->template _Rope_RopeConcatenation<_CharT, _Alloc>:: ~_Rope_RopeConcatenation(); _C_deallocate(__c, 1); break; @@ -399,7 +399,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) { _Rope_RopeFunction<_CharT, _Alloc>* __f = (_Rope_RopeFunction<_CharT, _Alloc>*)this; - __f->_Rope_RopeFunction<_CharT, _Alloc>::~_Rope_RopeFunction(); + __f->template _Rope_RopeFunction<_CharT, _Alloc>::~_Rope_RopeFunction(); _F_deallocate(__f, 1); break; } @@ -407,7 +407,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) { _Rope_RopeSubstring<_CharT, _Alloc>* __ss = (_Rope_RopeSubstring<_CharT, _Alloc>*)this; - __ss->_Rope_RopeSubstring<_CharT, _Alloc>:: + __ss->template _Rope_RopeSubstring<_CharT, _Alloc>:: ~_Rope_RopeSubstring(); _S_deallocate(__ss, 1); break; @@ -433,7 +433,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) { size_t __old_len = __r->_M_size; _CharT* __new_data = (_CharT*) - _Data_allocate(_S_rounded_up_size(__old_len + __len)); + _Rope_rep_base<_CharT, _Alloc>::_Data_allocate(_S_rounded_up_size(__old_len + __len)); _RopeLeaf* __result; uninitialized_copy_n(__r->_M_data, __old_len, __new_data); @@ -817,7 +817,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) if (__result_len > __lazy_threshold) goto lazy; __section = (_CharT*) - _Data_allocate(_S_rounded_up_size(__result_len)); + _Rope_rep_base<_CharT, _Alloc>::_Data_allocate(_S_rounded_up_size(__result_len)); try { (*(__f->_M_fn))(__start, __result_len, __section); } catch(...) Modified: user/imp/tbemd/contrib/libstdc++/src/locale-inst.cc ============================================================================== --- user/imp/tbemd/contrib/libstdc++/src/locale-inst.cc Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/contrib/libstdc++/src/locale-inst.cc Tue Aug 24 21:16:37 2010 (r211775) @@ -180,11 +180,11 @@ _GLIBCXX_END_LDBL_NAMESPACE template class messages_byname; // ctype - inline template class __ctype_abstract_base; + template class __ctype_abstract_base; template class ctype_byname; // codecvt - inline template class __codecvt_abstract_base; + template class __codecvt_abstract_base; template class codecvt_byname; // collate Modified: user/imp/tbemd/gnu/lib/libdialog/checklist.c ============================================================================== --- user/imp/tbemd/gnu/lib/libdialog/checklist.c Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/gnu/lib/libdialog/checklist.c Tue Aug 24 21:16:37 2010 (r211775) @@ -198,6 +198,24 @@ draw: wnoutrefresh(dialog); wmove(list, choice, check_x+1); wrefresh(list); + + /* + * XXX Black magic voodoo that allows printing to the checklist + * window. For some reason, if this "refresh" code is not in + * place, printing to the window from the selected callback + * prints "behind" the checklist window. There is probably a + * better way to do this. + */ + draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2, menubox_border_attr, menubox_attr); + + for (i = 0; i < max_choice; i++) + print_item(list, items[i * 3], items[i * 3 + 1], status[i], i, i == choice, DREF(ditems, i), list_width, item_x, check_x); + print_arrows(dialog, scroll, list_height, item_no, box_x, box_y, check_x + 4, cur_x, cur_y); + + wmove(list, choice, check_x+1); + wnoutrefresh(dialog); + wrefresh(list); + /* XXX Black magic XXX */ while (key != ESC) { key = wgetch(dialog); Modified: user/imp/tbemd/lib/Makefile ============================================================================== --- user/imp/tbemd/lib/Makefile Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/lib/Makefile Tue Aug 24 21:16:37 2010 (r211775) @@ -112,7 +112,9 @@ SUBDIR= ${SUBDIR_ORDERED} \ ${_bind} \ ${_clang} -.if exists(${.CURDIR}/csu/${MACHINE_CPUARCH}-elf) +.if exists(${.CURDIR}/csu/${MACHINE_ARCH}-elf) +_csu=csu/${MACHINE_ARCH}-elf +.elif exists(${.CURDIR}/csu/${MACHINE_CPUARCH}-elf) _csu=csu/${MACHINE_CPUARCH}-elf .elif exists(${.CURDIR}/csu/${MACHINE_CPUARCH}/Makefile) _csu=csu/${MACHINE_CPUARCH} Modified: user/imp/tbemd/lib/libc/Makefile ============================================================================== --- user/imp/tbemd/lib/libc/Makefile Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/lib/libc/Makefile Tue Aug 24 21:16:37 2010 (r211775) @@ -5,6 +5,15 @@ SHLIBDIR?= /lib .include +# We have to special case powerpc and powerpc64, since they mostly have +# the same source implementation. libc is very different due to large +# ABI differences. +.if ${LIBC_ARCH} == "powerpc" +LIBC_ARCH=${MACHINE_ARCH} +.else +LIBC_ARCH=${LIBC_ARCH} +.endif + # All library objects contain FreeBSD revision strings by default; they may be # excluded as a space-saving measure. To produce a library that does # not contain these strings, add -DSTRIP_FBSDID (see ) to CFLAGS @@ -15,7 +24,7 @@ LIB=c SHLIB_MAJOR= 7 WARNS?= 2 CFLAGS+=-I${.CURDIR}/include -I${.CURDIR}/../../include -CFLAGS+=-I${.CURDIR}/${MACHINE_CPUARCH} +CFLAGS+=-I${.CURDIR}/${LIBC_ARCH} CFLAGS+=-DNLS CLEANFILES+=tags INSTALL_PIC_ARCHIVE= @@ -36,7 +45,7 @@ MDASM= MIASM= NOASM= -.include "${.CURDIR}/${MACHINE_CPUARCH}/Makefile.inc" +.include "${.CURDIR}/${LIBC_ARCH}/Makefile.inc" .include "${.CURDIR}/db/Makefile.inc" .include "${.CURDIR}/compat-43/Makefile.inc" .include "${.CURDIR}/gdtoa/Makefile.inc" @@ -49,14 +58,14 @@ NOASM= .include "${.CURDIR}/net/Makefile.inc" .include "${.CURDIR}/nls/Makefile.inc" .include "${.CURDIR}/posix1e/Makefile.inc" -.if ${MACHINE_CPUARCH} != "amd64" && \ - ${MACHINE_CPUARCH} != "ia64" && \ - ${MACHINE_ARCH} != "powerpc64" && \ - ${MACHINE_CPUARCH} != "sparc64" && \ - ${MACHINE_CPUARCH} != "mips" +.if ${LIBC_ARCH} != "amd64" && \ + ${LIBC_ARCH} != "ia64" && \ + ${LIBC_ARCH} != "powerpc64" && \ + ${LIBC_ARCH} != "sparc64" && \ + ${LIBC_ARCH} != "mips" .include "${.CURDIR}/quad/Makefile.inc" .endif -.if ${MACHINE_ARCH} == "mips" && \ +.if ${LIBC_ARCH} == "mips" && \ (!defined(TARGET_ABI) || ${TARGET_ABI} == "o32") .include "${.CURDIR}/quad/Makefile.inc" .endif @@ -70,7 +79,7 @@ NOASM= .include "${.CURDIR}/rpc/Makefile.inc" .include "${.CURDIR}/uuid/Makefile.inc" .include "${.CURDIR}/xdr/Makefile.inc" -.if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "mips" +.if ${LIBC_ARCH} == "arm" || ${LIBC_ARCH} == "mips" .include "${.CURDIR}/softfloat/Makefile.inc" .endif .if ${MK_NIS} != "no" @@ -115,14 +124,14 @@ KQSRCS= adddi3.c anddi3.c ashldi3.c ashr KSRCS= bcmp.c ffs.c ffsl.c fls.c flsl.c index.c mcount.c rindex.c \ strcat.c strcmp.c strcpy.c strlen.c strncpy.c -libkern: libkern.gen libkern.${MACHINE_CPUARCH} +libkern: libkern.gen libkern.${LIBC_ARCH} libkern.gen: ${KQSRCS} ${KSRCS} cp -p ${.CURDIR}/quad/quad.h ${.ALLSRC} ${DESTDIR}/sys/libkern -libkern.${MACHINE_CPUARCH}:: ${KMSRCS} +libkern.${LIBC_ARCH}:: ${KMSRCS} .if defined(KMSRCS) && !empty(KMSRCS) - cp -p ${.ALLSRC} ${DESTDIR}/sys/libkern/${MACHINE_CPUARCH} + cp -p ${.ALLSRC} ${DESTDIR}/sys/libkern/${LIBC_ARCH} .endif .include Modified: user/imp/tbemd/lib/libc/compat-43/Makefile.inc ============================================================================== --- user/imp/tbemd/lib/libc/compat-43/Makefile.inc Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/lib/libc/compat-43/Makefile.inc Tue Aug 24 21:16:37 2010 (r211775) @@ -2,7 +2,7 @@ # $FreeBSD$ # compat-43 sources -.PATH: ${.CURDIR}/${MACHINE_CPUARCH}/compat-43 ${.CURDIR}/compat-43 +.PATH: ${.CURDIR}/${LIBC_ARCH}/compat-43 ${.CURDIR}/compat-43 SRCS+= creat.c gethostid.c getwd.c killpg.c sethostid.c setpgrp.c \ setrgid.c setruid.c sigcompat.c Modified: user/imp/tbemd/lib/libc/gen/Makefile.inc ============================================================================== --- user/imp/tbemd/lib/libc/gen/Makefile.inc Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/lib/libc/gen/Makefile.inc Tue Aug 24 21:16:37 2010 (r211775) @@ -2,7 +2,7 @@ # $FreeBSD$ # machine-independent gen sources -.PATH: ${.CURDIR}/${MACHINE_CPUARCH}/gen ${.CURDIR}/gen +.PATH: ${.CURDIR}/${LIBC_ARCH}/gen ${.CURDIR}/gen SRCS+= __getosreldate.c __xuname.c \ _once_stub.c _pthread_stubs.c _rand48.c _spinlock_stub.c \ @@ -38,9 +38,7 @@ SRCS+= __getosreldate.c __xuname.c \ SYM_MAPS+=${.CURDIR}/gen/Symbol.map # machine-dependent gen sources -.if exists(${.CURDIR}/${MACHINE_CPUARCH}/gen/Makefile.inc) -.include "${.CURDIR}/${MACHINE_CPUARCH}/gen/Makefile.inc" -.endif +.sinclude "${.CURDIR}/${LIBC_ARCH}/gen/Makefile.inc" MAN+= alarm.3 arc4random.3 \ basename.3 check_utility_compat.3 clock.3 \ Modified: user/imp/tbemd/lib/libc/locale/Makefile.inc ============================================================================== --- user/imp/tbemd/lib/libc/locale/Makefile.inc Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/lib/libc/locale/Makefile.inc Tue Aug 24 21:16:37 2010 (r211775) @@ -2,7 +2,7 @@ # $FreeBSD$ # locale sources -.PATH: ${.CURDIR}/${MACHINE_CPUARCH}/locale ${.CURDIR}/locale +.PATH: ${.CURDIR}/${LIBC_ARCH}/locale ${.CURDIR}/locale SRCS+= ascii.c big5.c btowc.c collate.c collcmp.c euc.c fix_grouping.c \ gb18030.c gb2312.c gbk.c isctype.c iswctype.c \ Modified: user/imp/tbemd/lib/libc/quad/Makefile.inc ============================================================================== --- user/imp/tbemd/lib/libc/quad/Makefile.inc Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/lib/libc/quad/Makefile.inc Tue Aug 24 21:16:37 2010 (r211775) @@ -2,9 +2,9 @@ # $FreeBSD$ # Quad support, if needed -.PATH: ${.CURDIR}/${MACHINE_CPUARCH}/quad ${.CURDIR}/quad +.PATH: ${.CURDIR}/${LIBC_ARCH}/quad ${.CURDIR}/quad -.if ${MACHINE_CPUARCH} == "i386" +.if ${LIBC_ARCH} == "i386" SRCS+= cmpdi2.c divdi3.c moddi3.c qdivrem.c ucmpdi2.c udivdi3.c umoddi3.c Modified: user/imp/tbemd/lib/libc/softfloat/Makefile.inc ============================================================================== --- user/imp/tbemd/lib/libc/softfloat/Makefile.inc Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/lib/libc/softfloat/Makefile.inc Tue Aug 24 21:16:37 2010 (r211775) @@ -2,10 +2,10 @@ # $FreeBSD$ SOFTFLOAT_BITS?=64 -.PATH: ${MACHINE_CPUARCH}/softfloat \ +.PATH: ${LIBC_ARCH}/softfloat \ ${.CURDIR}/softfloat/bits${SOFTFLOAT_BITS} ${.CURDIR}/softfloat -CFLAGS+= -I${.CURDIR}/${MACHINE_CPUARCH}/softfloat -I${.CURDIR}/softfloat +CFLAGS+= -I${.CURDIR}/${LIBC_ARCH}/softfloat -I${.CURDIR}/softfloat CFLAGS+= -DSOFTFLOAT_FOR_GCC SRCS+= softfloat.c Modified: user/imp/tbemd/lib/libc/stdlib/Makefile.inc ============================================================================== --- user/imp/tbemd/lib/libc/stdlib/Makefile.inc Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/lib/libc/stdlib/Makefile.inc Tue Aug 24 21:16:37 2010 (r211775) @@ -2,7 +2,7 @@ # $FreeBSD$ # machine-independent stdlib sources -.PATH: ${.CURDIR}/${MACHINE_CPUARCH}/stdlib ${.CURDIR}/stdlib +.PATH: ${.CURDIR}/${LIBC_ARCH}/stdlib ${.CURDIR}/stdlib MISRCS+=_Exit.c a64l.c abort.c abs.c atexit.c atof.c atoi.c atol.c atoll.c \ bsearch.c div.c exit.c getenv.c getopt.c getopt_long.c \ @@ -16,7 +16,7 @@ MISRCS+=_Exit.c a64l.c abort.c abs.c ate SYM_MAPS+= ${.CURDIR}/stdlib/Symbol.map # machine-dependent stdlib sources -.sinclude "${.CURDIR}/${MACHINE_CPUARCH}/stdlib/Makefile.inc" +.sinclude "${.CURDIR}/${LIBC_ARCH}/stdlib/Makefile.inc" MAN+= a64l.3 abort.3 abs.3 alloca.3 atexit.3 atof.3 atoi.3 atol.3 bsearch.3 \ div.3 exit.3 getenv.3 getopt.3 getopt_long.3 getsubopt.3 \ Modified: user/imp/tbemd/lib/libc/string/Makefile.inc ============================================================================== --- user/imp/tbemd/lib/libc/string/Makefile.inc Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/lib/libc/string/Makefile.inc Tue Aug 24 21:16:37 2010 (r211775) @@ -1,7 +1,7 @@ # @(#)Makefile.inc 8.1 (Berkeley) 6/4/93 # $FreeBSD$ -.PATH: ${.CURDIR}/${MACHINE_CPUARCH}/string ${.CURDIR}/string +.PATH: ${.CURDIR}/${LIBC_ARCH}/string ${.CURDIR}/string CFLAGS+= -I${.CURDIR}/locale @@ -26,9 +26,7 @@ SYM_MAPS+= ${.CURDIR}/string/Symbol.map # machine-dependent string sources -.if exists(${.CURDIR}/${MACHINE_CPUARCH}/string/Makefile.inc) -.include "${.CURDIR}/${MACHINE_CPUARCH}/string/Makefile.inc" -.endif +.sinclude "${.CURDIR}/${LIBC_ARCH}/string/Makefile.inc" MAN+= bcmp.3 bcopy.3 bstring.3 bzero.3 ffs.3 index.3 memccpy.3 memchr.3 \ memcmp.3 memcpy.3 memmem.3 memmove.3 memset.3 strcasecmp.3 strcat.3 \ Modified: user/imp/tbemd/lib/libc/sys/Makefile.inc ============================================================================== --- user/imp/tbemd/lib/libc/sys/Makefile.inc Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/lib/libc/sys/Makefile.inc Tue Aug 24 21:16:37 2010 (r211775) @@ -2,7 +2,7 @@ # $FreeBSD$ # sys sources -.PATH: ${.CURDIR}/${MACHINE_CPUARCH}/sys ${.CURDIR}/sys +.PATH: ${.CURDIR}/${LIBC_ARCH}/sys ${.CURDIR}/sys # Include the generated makefile containing the *complete* list # of syscall names in MIASM. @@ -13,12 +13,10 @@ # MDASM names override the default syscall names in MIASM. # NOASM will prevent the default syscall code from being generated. # -.if exists(${.CURDIR}/${MACHINE_CPUARCH}/sys/Makefile.inc) -.include "${.CURDIR}/${MACHINE_CPUARCH}/sys/Makefile.inc" -.endif +.sinclude "${.CURDIR}/${LIBC_ARCH}/sys/Makefile.inc" # Sources common to both syscall interfaces: -SRCS+= stack_protector.c __error.c +SRCS+= stack_protector.c stack_protector_compat.c __error.c .if !defined(WITHOUT_SYSCALL_COMPAT) SRCS+= fcntl.c ftruncate.c lseek.c mmap.c pread.c pwrite.c truncate.c PSEUDO+= _fcntl.o Modified: user/imp/tbemd/lib/libc/sys/stack_protector.c ============================================================================== --- user/imp/tbemd/lib/libc/sys/stack_protector.c Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/lib/libc/sys/stack_protector.c Tue Aug 24 21:16:37 2010 (r211775) @@ -1,4 +1,3 @@ -/* $FreeBSD$ */ /* $NetBSD: stack_protector.c,v 1.4 2006/11/22 17:23:25 christos Exp $ */ /* $OpenBSD: stack_protector.c,v 1.10 2006/03/31 05:34:44 deraadt Exp $ */ /* @@ -116,8 +115,6 @@ __chk_fail(void) __fail("buffer overflow detected; terminated"); } -#ifdef PIC -__sym_compat(__stack_chk_fail_local, __stack_chk_fail, FBSD_1.0); -#else +#ifndef PIC __weak_reference(__stack_chk_fail, __stack_chk_fail_local); #endif Copied: user/imp/tbemd/lib/libc/sys/stack_protector_compat.c (from r211774, head/lib/libc/sys/stack_protector_compat.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/imp/tbemd/lib/libc/sys/stack_protector_compat.c Tue Aug 24 21:16:37 2010 (r211775, copy of r211774, head/lib/libc/sys/stack_protector_compat.c) @@ -0,0 +1,20 @@ +/* + * Written by Alexander Kabaev + * The file is in public domain. + */ + +#include +__FBSDID("$FreeBSD$"); + +void __stack_chk_fail(void); + +#ifdef PIC +void +__stack_chk_fail_local_hidden(void) +{ + + __stack_chk_fail(); +} + +__sym_compat(__stack_chk_fail_local, __stack_chk_fail_local_hidden, FBSD_1.0); +#endif Modified: user/imp/tbemd/lib/libthr/arch/powerpc/include/pthread_md.h ============================================================================== --- user/imp/tbemd/lib/libthr/arch/powerpc/include/pthread_md.h Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/lib/libthr/arch/powerpc/include/pthread_md.h Tue Aug 24 21:16:37 2010 (r211775) @@ -39,12 +39,16 @@ #define CPU_SPINWAIT #define DTV_OFFSET offsetof(struct tcb, tcb_dtv) +#ifdef __powerpc64__ +#define TP_OFFSET 0x7010 +#else #define TP_OFFSET 0x7008 +#endif /* * Variant I tcb. The structure layout is fixed, don't blindly * change it. - * %r2 points to end of the structure. + * %r2 (32-bit) or %r13 (64-bit) points to end of the structure. */ struct tcb { void *tcb_dtv; @@ -57,7 +61,11 @@ void _tcb_dtor(struct tcb *); static __inline void _tcb_set(struct tcb *tcb) { +#ifdef __powerpc64__ + register uint8_t *_tp __asm__("%r13"); +#else register uint8_t *_tp __asm__("%r2"); +#endif __asm __volatile("mr %0,%1" : "=r"(_tp) : "r"((uint8_t *)tcb + TP_OFFSET)); @@ -66,7 +74,11 @@ _tcb_set(struct tcb *tcb) static __inline struct tcb * _tcb_get(void) { +#ifdef __powerpc64__ + register uint8_t *_tp __asm__("%r13"); +#else register uint8_t *_tp __asm__("%r2"); +#endif return ((struct tcb *)(_tp - TP_OFFSET)); } Modified: user/imp/tbemd/lib/libthr/pthread.map ============================================================================== --- user/imp/tbemd/lib/libthr/pthread.map Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/lib/libthr/pthread.map Tue Aug 24 21:16:37 2010 (r211775) @@ -342,6 +342,7 @@ FBSDprivate_1.0 { _pthread_timedjoin_np; _pthread_yield; _raise; + _setcontext; _sigaction; _sigprocmask; _sigsuspend; @@ -351,6 +352,7 @@ FBSDprivate_1.0 { _spinlock; _spinlock_debug; _spinunlock; + _swapcontext; /* Debugger needs these. */ _libthr_debug; @@ -397,4 +399,6 @@ FBSD_1.1 { FBSD_1.2 { openat; + setcontext; + swapcontext; }; Modified: user/imp/tbemd/lib/libthr/thread/thr_private.h ============================================================================== --- user/imp/tbemd/lib/libthr/thread/thr_private.h Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/lib/libthr/thread/thr_private.h Tue Aug 24 21:16:37 2010 (r211775) @@ -66,10 +66,6 @@ WEAK_REF(func, SYM_FBP10(sym)); \ SYM_DEFAULT(sym, SYM_FBP10(sym), FBSDprivate_1.0) -#ifndef __hidden -#define __hidden __attribute__((visibility("hidden"))) -#endif - #include "pthread_md.h" #include "thr_umtx.h" #include "thread_db.h" @@ -709,6 +705,12 @@ int __sys_sigwaitinfo(const sigset_t *se int __sys_nanosleep(const struct timespec *, struct timespec *); #endif +/* #include */ +#ifdef _SYS_UCONTEXT_H_ +int __sys_setcontext(const ucontext_t *ucp); +int __sys_swapcontext(ucontext_t *oucp, const ucontext_t *ucp); +#endif + /* #include */ #ifdef _UNISTD_H_ int __sys_close(int); Modified: user/imp/tbemd/lib/libthr/thread/thr_sig.c ============================================================================== --- user/imp/tbemd/lib/libthr/thread/thr_sig.c Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/lib/libthr/thread/thr_sig.c Tue Aug 24 21:16:37 2010 (r211775) @@ -59,7 +59,29 @@ int _sigwaitinfo(const sigset_t *set, si int __sigwait(const sigset_t *set, int *sig); int _sigwait(const sigset_t *set, int *sig); int __sigsuspend(const sigset_t *sigmask); +int _setcontext(const ucontext_t *); +int _swapcontext(ucontext_t *, const ucontext_t *); +static void +remove_thr_signals(sigset_t *set) +{ + if (SIGISMEMBER(*set, SIGCANCEL)) + SIGDELSET(*set, SIGCANCEL); +} + +static const sigset_t * +thr_remove_thr_signals(const sigset_t *set, sigset_t *newset) +{ + const sigset_t *pset; + + if (SIGISMEMBER(*set, SIGCANCEL)) { + *newset = *set; + SIGDELSET(*newset, SIGCANCEL); + pset = newset; + } else + pset = set; + return (pset); +} static void sigcancel_handler(int sig __unused, @@ -268,20 +290,6 @@ _pthread_sigmask(int how, const sigset_t __weak_reference(__sigsuspend, sigsuspend); -static const sigset_t * -thr_remove_thr_signals(const sigset_t *set, sigset_t *newset) -{ - const sigset_t *pset; - - if (SIGISMEMBER(*set, SIGCANCEL)) { - *newset = *set; - SIGDELSET(*newset, SIGCANCEL); - pset = newset; - } else - pset = set; - return (pset); -} - int _sigsuspend(const sigset_t * set) { @@ -389,3 +397,26 @@ __sigwait(const sigset_t *set, int *sig) _thr_cancel_leave_defer(curthread, (ret != 0)); return (ret); } + +__weak_reference(_setcontext, setcontext); +int +_setcontext(const ucontext_t *ucp) +{ + ucontext_t uc; + + (void) memcpy(&uc, ucp, sizeof (uc)); + remove_thr_signals(&uc.uc_sigmask); + + return __sys_setcontext(&uc); +} + +__weak_reference(_swapcontext, swapcontext); +int +_swapcontext(ucontext_t *oucp, const ucontext_t *ucp) +{ + ucontext_t uc; + + (void) memcpy(&uc, ucp, sizeof (uc)); + remove_thr_signals(&uc.uc_sigmask); + return __sys_swapcontext(oucp, &uc); +} Modified: user/imp/tbemd/libexec/rtld-elf/rtld.c ============================================================================== --- user/imp/tbemd/libexec/rtld-elf/rtld.c Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/libexec/rtld-elf/rtld.c Tue Aug 24 21:16:37 2010 (r211775) @@ -104,7 +104,6 @@ static void init_dag1(Obj_Entry *, Obj_E static void init_rtld(caddr_t, Elf_Auxinfo **); static void initlist_add_neededs(Needed_Entry *, Objlist *); static void initlist_add_objects(Obj_Entry *, Obj_Entry **, Objlist *); -static bool is_exported(const Elf_Sym *); static void linkmap_add(Obj_Entry *); static void linkmap_delete(Obj_Entry *); static int load_needed_objects(Obj_Entry *, int); @@ -197,36 +196,6 @@ extern Elf_Dyn _DYNAMIC; int osreldate, pagesize; /* - * These are the functions the dynamic linker exports to application - * programs. They are the only symbols the dynamic linker is willing - * to export from itself. - */ -static func_ptr_type exports[] = { - (func_ptr_type) &_rtld_error, - (func_ptr_type) &dlclose, - (func_ptr_type) &dlerror, - (func_ptr_type) &dlopen, - (func_ptr_type) &dlsym, - (func_ptr_type) &dlfunc, - (func_ptr_type) &dlvsym, - (func_ptr_type) &dladdr, - (func_ptr_type) &dllockinit, - (func_ptr_type) &dlinfo, - (func_ptr_type) &_rtld_thread_init, -#ifdef __i386__ - (func_ptr_type) &___tls_get_addr, -#endif - (func_ptr_type) &__tls_get_addr, - (func_ptr_type) &_rtld_allocate_tls, - (func_ptr_type) &_rtld_free_tls, - (func_ptr_type) &dl_iterate_phdr, - (func_ptr_type) &_rtld_atfork_pre, - (func_ptr_type) &_rtld_atfork_post, - (func_ptr_type) &_rtld_addr_phdr, - NULL -}; - -/* * Global declarations normally provided by crt1. The dynamic linker is * not built with crt1, so we have to provide them ourselves. */ @@ -1445,19 +1414,6 @@ initlist_add_objects(Obj_Entry *obj, Obj #define FPTR_TARGET(f) ((Elf_Addr) (f)) #endif -static bool -is_exported(const Elf_Sym *def) -{ - Elf_Addr value; - const func_ptr_type *p; - - value = (Elf_Addr)(obj_rtld.relocbase + def->st_value); - for (p = exports; *p != NULL; p++) - if (FPTR_TARGET(*p) == value) - return true; - return false; -} - /* * Given a shared object, traverse its list of needed objects, and load * each of them. Returns 0 on success. Generates an error message and @@ -2161,12 +2117,11 @@ do_dlsym(void *handle, const char *name, /* * Search the dynamic linker itself, and possibly resolve the * symbol from there. This is how the application links to - * dynamic linker services such as dlopen. Only the values listed - * in the "exports" array can be resolved from the dynamic linker. + * dynamic linker services such as dlopen. */ if (def == NULL || ELF_ST_BIND(def->st_info) == STB_WEAK) { symp = symlook_obj(name, hash, &obj_rtld, ve, flags); - if (symp != NULL && is_exported(symp)) { + if (symp != NULL) { def = symp; defobj = &obj_rtld; } @@ -2746,12 +2701,11 @@ symlook_default(const char *name, unsign /* * Search the dynamic linker itself, and possibly resolve the * symbol from there. This is how the application links to - * dynamic linker services such as dlopen. Only the values listed - * in the "exports" array can be resolved from the dynamic linker. + * dynamic linker services such as dlopen. */ if (def == NULL || ELF_ST_BIND(def->st_info) == STB_WEAK) { symp = symlook_obj(name, hash, &obj_rtld, ventry, flags); - if (symp != NULL && is_exported(symp)) { + if (symp != NULL) { def = symp; defobj = &obj_rtld; } Modified: user/imp/tbemd/sys/amd64/include/trap.h ============================================================================== --- user/imp/tbemd/sys/amd64/include/trap.h Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/sys/amd64/include/trap.h Tue Aug 24 21:16:37 2010 (r211775) @@ -62,6 +62,8 @@ #define T_MCHK 28 /* machine check trap */ #define T_XMMFLT 29 /* SIMD floating-point exception */ #define T_RESERVED 30 /* reserved (unknown) */ +#define T_DTRACE_RET 31 /* DTrace pid return */ +#define T_DTRACE_PROBE 32 /* DTrace fasttrap probe */ /* XXX most of the following codes aren't used, but could be. */ Modified: user/imp/tbemd/sys/boot/common/ufsread.c ============================================================================== --- user/imp/tbemd/sys/boot/common/ufsread.c Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/sys/boot/common/ufsread.c Tue Aug 24 21:16:37 2010 (r211775) @@ -223,14 +223,19 @@ fsread(ino_t inode, void *buf, size_t nb return -1; n = INO_TO_VBO(n, inode); #if defined(UFS1_ONLY) - dp1 = ((struct ufs1_dinode *)blkbuf)[n]; + memcpy(&dp1, (struct ufs1_dinode *)blkbuf + n, + sizeof(struct ufs1_dinode)); #elif defined(UFS2_ONLY) - dp2 = ((struct ufs2_dinode *)blkbuf)[n]; + memcpy(&dp2, (struct ufs2_dinode *)blkbuf + n, + sizeof(struct ufs2_dinode)); #else if (fs->fs_magic == FS_UFS1_MAGIC) - dp1 = ((struct ufs1_dinode *)blkbuf)[n]; + memcpy(&dp1, (struct ufs1_dinode *)blkbuf + n, + sizeof(struct ufs1_dinode)); else - dp2 = ((struct ufs2_dinode *)blkbuf)[n]; + memcpy(&dp2, (struct ufs2_dinode *)blkbuf + n, + sizeof(struct ufs2_dinode)); + #endif inomap = inode; fs_off = 0; Modified: user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c ============================================================================== --- user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c Tue Aug 24 20:54:43 2010 (r211774) +++ user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c Tue Aug 24 21:16:37 2010 (r211775) @@ -17,6 +17,10 @@ * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END + * + * Portions Copyright 2010 The FreeBSD Foundation + * + * $FreeBSD$ */ /* @@ -24,7 +28,9 @@ * Use is subject to license terms. */ +#if defined(sun) #pragma ident "%Z%%M% %I% %E% SMI" +#endif #include #include @@ -32,11 +38,15 @@ #include #include #include +#if defined(sun) #include +#endif #include #include #include +#if defined(sun) #include +#endif #include #include #include @@ -44,9 +54,17 @@ #include #include #include -#include #include +#if defined(sun) #include +#endif +#include +#include +#if !defined(sun) +#include +#include +#include +#endif /* * User-Land Trap-Based Tracing @@ -125,11 +143,20 @@ * never hold the provider lock and creation lock simultaneously */ -static dev_info_t *fasttrap_devi; +static d_open_t fasttrap_open; +static d_ioctl_t fasttrap_ioctl; + +static struct cdevsw fasttrap_cdevsw = { + .d_version = D_VERSION, + .d_open = fasttrap_open, + .d_ioctl = fasttrap_ioctl, + .d_name = "fasttrap", +}; +static struct cdev *fasttrap_cdev; static dtrace_meta_provider_id_t fasttrap_meta_id; -static timeout_id_t fasttrap_timeout; -static kmutex_t fasttrap_cleanup_mtx; +static struct callout fasttrap_timeout; +static struct mtx fasttrap_cleanup_mtx; static uint_t fasttrap_cleanup_work; /* @@ -229,6 +256,7 @@ fasttrap_hash_str(const char *p) void fasttrap_sigtrap(proc_t *p, kthread_t *t, uintptr_t pc) { +#if defined(sun) sigqueue_t *sqp = kmem_zalloc(sizeof (sigqueue_t), KM_SLEEP); sqp->sq_info.si_signo = SIGTRAP; @@ -241,6 +269,17 @@ fasttrap_sigtrap(proc_t *p, kthread_t *t if (t != NULL) aston(t); +#else + ksiginfo_t *ksi = kmem_zalloc(sizeof (ksiginfo_t), KM_SLEEP); + + ksiginfo_init(ksi); + ksi->ksi_signo = SIGTRAP; + ksi->ksi_code = TRAP_DTRACE; + ksi->ksi_addr = (caddr_t)pc; + PROC_LOCK(p); + (void) tdksignal(t, SIGTRAP, ksi); + PROC_UNLOCK(p); +#endif } /* @@ -250,17 +289,24 @@ fasttrap_sigtrap(proc_t *p, kthread_t *t static void fasttrap_mod_barrier(uint64_t gen) { +#if defined(sun) int i; +#endif if (gen < fasttrap_mod_gen) return; fasttrap_mod_gen++; +#if defined(sun) for (i = 0; i < NCPU; i++) { mutex_enter(&cpu_core[i].cpuc_pid_lock); mutex_exit(&cpu_core[i].cpuc_pid_lock); } +#else + /* XXX */ + __asm __volatile("": : :"memory"); +#endif } /* @@ -274,16 +320,15 @@ fasttrap_pid_cleanup_cb(void *data) fasttrap_provider_t **fpp, *fp; fasttrap_bucket_t *bucket; dtrace_provider_id_t provid; - int i, later; + int i, later = 0; static volatile int in = 0; ASSERT(in == 0); in = 1; - mutex_enter(&fasttrap_cleanup_mtx); while (fasttrap_cleanup_work) { fasttrap_cleanup_work = 0; - mutex_exit(&fasttrap_cleanup_mtx); + mtx_unlock(&fasttrap_cleanup_mtx); later = 0; @@ -349,10 +394,12 @@ fasttrap_pid_cleanup_cb(void *data) mutex_exit(&bucket->ftb_mtx); } - mutex_enter(&fasttrap_cleanup_mtx); + mtx_lock(&fasttrap_cleanup_mtx); } +#if 0 ASSERT(fasttrap_timeout != 0); +#endif /* * If we were unable to remove a retired provider, try again after @@ -364,14 +411,17 @@ fasttrap_pid_cleanup_cb(void *data) * get a chance to do that work if and when the timeout is reenabled * (if detach fails). */ - if (later > 0 && fasttrap_timeout != (timeout_id_t)1) - fasttrap_timeout = timeout(&fasttrap_pid_cleanup_cb, NULL, hz); + if (later > 0 && callout_active(&fasttrap_timeout)) + callout_reset(&fasttrap_timeout, hz, &fasttrap_pid_cleanup_cb, + NULL); else if (later > 0) fasttrap_cleanup_work = 1; - else - fasttrap_timeout = 0; + else { +#if !defined(sun) + /* Nothing to be done for FreeBSD */ +#endif + } - mutex_exit(&fasttrap_cleanup_mtx); in = 0; } @@ -381,11 +431,11 @@ fasttrap_pid_cleanup_cb(void *data) static void fasttrap_pid_cleanup(void) { - mutex_enter(&fasttrap_cleanup_mtx); + + mtx_lock(&fasttrap_cleanup_mtx); fasttrap_cleanup_work = 1; - if (fasttrap_timeout == 0) - fasttrap_timeout = timeout(&fasttrap_pid_cleanup_cb, NULL, 1); - mutex_exit(&fasttrap_cleanup_mtx); + callout_reset(&fasttrap_timeout, 1, &fasttrap_pid_cleanup_cb, NULL); + mtx_unlock(&fasttrap_cleanup_mtx); } /* @@ -400,9 +450,23 @@ fasttrap_fork(proc_t *p, proc_t *cp) pid_t ppid = p->p_pid; int i; +#if defined(sun) ASSERT(curproc == p); ASSERT(p->p_proc_flag & P_PR_LOCK); +#else + PROC_LOCK_ASSERT(p, MA_OWNED); +#endif +#if defined(sun) ASSERT(p->p_dtrace_count > 0); +#else + /* + * This check is purposely here instead of in kern_fork.c because, + * for legal resons, we cannot include the dtrace_cddl.h header + * inside kern_fork.c and insert if-clause there. + */ + if (p->p_dtrace_count == 0) + return; +#endif ASSERT(cp->p_dtrace_count == 0); /* @@ -419,9 +483,11 @@ fasttrap_fork(proc_t *p, proc_t *cp) * We don't have to worry about the child process disappearing * because we're in fork(). */ - mutex_enter(&cp->p_lock); *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***