svn commit: r238191 - in projects/altix2: .
cddl/compat/opensolaris/misc cddl/contrib/dtracetoolkit
cddl/contrib/opensolaris/lib/libdtrace/common
contrib/binutils/gas/config contrib/binutils/opcode...
Marcel Moolenaar
marcel at FreeBSD.org
Sat Jul 7 05:25:24 UTC 2012
Author: marcel
Date: Sat Jul 7 05:25:22 2012
New Revision: 238191
URL: http://svn.freebsd.org/changeset/base/238191
Log:
Merge3 ^/head at 238190
Added:
projects/altix2/sys/arm/include/board.h
- copied unchanged from r238190, head/sys/arm/include/board.h
projects/altix2/sys/dev/ath/if_ath_rx_edma.c
- copied unchanged from r238190, head/sys/dev/ath/if_ath_rx_edma.c
projects/altix2/sys/dev/ath/if_ath_rx_edma.h
- copied unchanged from r238190, head/sys/dev/ath/if_ath_rx_edma.h
projects/altix2/sys/dev/e1000/e1000_i210.c
- copied unchanged from r238190, head/sys/dev/e1000/e1000_i210.c
projects/altix2/sys/dev/e1000/e1000_i210.h
- copied unchanged from r238190, head/sys/dev/e1000/e1000_i210.h
projects/altix2/sys/ia64/ia64/physmem.c
- copied unchanged from r238190, head/sys/ia64/ia64/physmem.c
projects/altix2/tools/regression/usr.bin/make/syntax/funny-targets/
- copied from r238190, head/tools/regression/usr.bin/make/syntax/funny-targets/
Modified:
projects/altix2/Makefile
projects/altix2/Makefile.inc1
projects/altix2/cddl/compat/opensolaris/misc/deviceid.c
projects/altix2/cddl/contrib/dtracetoolkit/dtruss
projects/altix2/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c
projects/altix2/contrib/binutils/gas/config/tc-i386.c
projects/altix2/contrib/binutils/opcodes/i386-dis.c
projects/altix2/contrib/binutils/opcodes/i386-opc.h
projects/altix2/contrib/binutils/opcodes/i386-opc.tbl
projects/altix2/contrib/binutils/opcodes/i386-tbl.h
projects/altix2/etc/rc.d/jail
projects/altix2/include/printf.h
projects/altix2/lib/libc/gen/arc4random.c
projects/altix2/lib/libc/gen/directory.3
projects/altix2/lib/libc/locale/collate.c
projects/altix2/lib/libc/locale/setrunelocale.c
projects/altix2/lib/libc/stdio/xprintf.c
projects/altix2/lib/libedit/chared.c
projects/altix2/lib/libedit/chared.h
projects/altix2/lib/libedit/editline.3
projects/altix2/lib/libedit/el.h
projects/altix2/lib/libedit/read.c
projects/altix2/lib/libedit/sig.c
projects/altix2/lib/libedit/sig.h
projects/altix2/sbin/geom/class/eli/geli.8
projects/altix2/sbin/hastd/primary.c
projects/altix2/sbin/ipfw/ipfw.8
projects/altix2/share/man/man9/rtalloc.9
projects/altix2/share/misc/committers-doc.dot
projects/altix2/share/misc/committers-ports.dot
projects/altix2/sys/amd64/amd64/cpu_switch.S
projects/altix2/sys/amd64/amd64/db_disasm.c
projects/altix2/sys/amd64/amd64/fpu.c
projects/altix2/sys/amd64/amd64/pmap.c
projects/altix2/sys/amd64/include/cpufunc.h
projects/altix2/sys/arm/at91/at91_machdep.c
projects/altix2/sys/arm/at91/at91board.h
projects/altix2/sys/arm/at91/board_bwct.c
projects/altix2/sys/arm/at91/board_ethernut5.c
projects/altix2/sys/arm/at91/board_hl200.c
projects/altix2/sys/arm/at91/board_hl201.c
projects/altix2/sys/arm/at91/board_kb920x.c
projects/altix2/sys/arm/at91/board_qila9g20.c
projects/altix2/sys/arm/at91/board_sam9g20ek.c
projects/altix2/sys/arm/at91/board_sam9x25ek.c
projects/altix2/sys/arm/at91/board_tsc4370.c
projects/altix2/sys/arm/conf/ATMEL
projects/altix2/sys/arm/mv/mv_machdep.c
projects/altix2/sys/boot/arm/at91/boot0spi/main.c
projects/altix2/sys/boot/arm/at91/libat91/Makefile
projects/altix2/sys/boot/arm/at91/linker.cfg
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_impl.h
projects/altix2/sys/cddl/dev/dtrace/amd64/dis_tables.c
projects/altix2/sys/cddl/dev/dtrace/i386/dis_tables.c
projects/altix2/sys/conf/files
projects/altix2/sys/conf/files.ia64
projects/altix2/sys/conf/kern.post.mk
projects/altix2/sys/conf/kmod.mk
projects/altix2/sys/conf/options.arm
projects/altix2/sys/dev/agp/agp.c
projects/altix2/sys/dev/agp/agp_i810.c
projects/altix2/sys/dev/ath/if_ath.c
projects/altix2/sys/dev/ath/if_ath_rx.c
projects/altix2/sys/dev/ath/if_ath_rx.h
projects/altix2/sys/dev/ath/if_athvar.h
projects/altix2/sys/dev/atkbdc/atkbdc_isa.c
projects/altix2/sys/dev/cxgbe/t4_main.c
projects/altix2/sys/dev/e1000/e1000_82541.c
projects/altix2/sys/dev/e1000/e1000_82543.c
projects/altix2/sys/dev/e1000/e1000_82571.c
projects/altix2/sys/dev/e1000/e1000_82575.c
projects/altix2/sys/dev/e1000/e1000_api.c
projects/altix2/sys/dev/e1000/e1000_api.h
projects/altix2/sys/dev/e1000/e1000_defines.h
projects/altix2/sys/dev/e1000/e1000_hw.h
projects/altix2/sys/dev/e1000/e1000_ich8lan.c
projects/altix2/sys/dev/e1000/e1000_mac.c
projects/altix2/sys/dev/e1000/e1000_mac.h
projects/altix2/sys/dev/e1000/e1000_manage.c
projects/altix2/sys/dev/e1000/e1000_manage.h
projects/altix2/sys/dev/e1000/e1000_phy.c
projects/altix2/sys/dev/e1000/e1000_phy.h
projects/altix2/sys/dev/e1000/e1000_regs.h
projects/altix2/sys/dev/e1000/if_em.c
projects/altix2/sys/dev/e1000/if_igb.c
projects/altix2/sys/dev/ixgbe/ixgbe.c
projects/altix2/sys/dev/ixgbe/ixgbe_82598.c
projects/altix2/sys/dev/ixgbe/ixgbe_82598.h
projects/altix2/sys/dev/ixgbe/ixgbe_82599.c
projects/altix2/sys/dev/ixgbe/ixgbe_api.c
projects/altix2/sys/dev/ixgbe/ixgbe_api.h
projects/altix2/sys/dev/ixgbe/ixgbe_common.c
projects/altix2/sys/dev/ixgbe/ixgbe_common.h
projects/altix2/sys/dev/ixgbe/ixgbe_osdep.h
projects/altix2/sys/dev/ixgbe/ixgbe_phy.c
projects/altix2/sys/dev/ixgbe/ixgbe_type.h
projects/altix2/sys/dev/ixgbe/ixgbe_vf.c
projects/altix2/sys/dev/ixgbe/ixgbe_x540.c
projects/altix2/sys/dev/ixgbe/ixv.c
projects/altix2/sys/dev/mfi/mfi.c
projects/altix2/sys/dev/usb/quirk/usb_quirk.c
projects/altix2/sys/dev/usb/serial/u3g.c
projects/altix2/sys/dev/usb/usbdevs
projects/altix2/sys/dev/virtio/balloon/virtio_balloon.h
projects/altix2/sys/dev/virtio/block/virtio_blk.h
projects/altix2/sys/dev/virtio/network/virtio_net.h
projects/altix2/sys/dev/virtio/virtio.h
projects/altix2/sys/dev/virtio/virtio_ring.h
projects/altix2/sys/dev/virtio/virtqueue.h
projects/altix2/sys/fs/ext2fs/ext2_vfsops.c
projects/altix2/sys/geom/eli/g_eli.c
projects/altix2/sys/geom/eli/g_eli.h
projects/altix2/sys/geom/eli/g_eli_ctl.c
projects/altix2/sys/geom/eli/g_eli_key.c
projects/altix2/sys/geom/eli/g_eli_key_cache.c
projects/altix2/sys/geom/gate/g_gate.c
projects/altix2/sys/geom/gate/g_gate.h
projects/altix2/sys/geom/geom_dev.c
projects/altix2/sys/ia64/ia64/busdma_machdep.c
projects/altix2/sys/ia64/ia64/machdep.c
projects/altix2/sys/ia64/ia64/pmap.c
projects/altix2/sys/ia64/include/md_var.h
projects/altix2/sys/ia64/include/param.h
projects/altix2/sys/kern/uipc_socket.c
projects/altix2/sys/modules/ath/Makefile
projects/altix2/sys/modules/em/Makefile
projects/altix2/sys/modules/igb/Makefile
projects/altix2/sys/net/flowtable.c
projects/altix2/sys/net/if_tap.c
projects/altix2/sys/net/route.h
projects/altix2/sys/netinet/igmp.c
projects/altix2/sys/netinet/ip_input.c
projects/altix2/sys/netinet/ip_output.c
projects/altix2/sys/netinet/ipfw/ip_dummynet.c
projects/altix2/sys/netinet/sctp_input.c
projects/altix2/sys/netinet/sctp_output.c
projects/altix2/sys/netinet/tcp_hostcache.c
projects/altix2/sys/netinet6/ip6_output.c
projects/altix2/sys/netinet6/nd6_nbr.c
projects/altix2/sys/powerpc/aim/mmu_oea.c
projects/altix2/sys/vm/vm_pageout.c
projects/altix2/tools/build/make_check/Makefile
projects/altix2/tools/regression/pjdfstest/pjdfstest.c
projects/altix2/tools/tools/netmap/pkt-gen.c
projects/altix2/usr.bin/calendar/calendars/calendar.freebsd
projects/altix2/usr.bin/mkesdb/ldef.h
projects/altix2/usr.bin/procstat/procstat_rlimit.c
projects/altix2/usr.bin/sort/file.c
projects/altix2/usr.bin/sort/file.h
projects/altix2/usr.bin/sort/radixsort.c
projects/altix2/usr.bin/sort/sort.1.in
projects/altix2/usr.bin/sort/sort.c
projects/altix2/usr.sbin/nscd/cachelib.c
projects/altix2/usr.sbin/nscd/cachelib.h
projects/altix2/usr.sbin/nscd/config.c
projects/altix2/usr.sbin/nscd/config.h
projects/altix2/usr.sbin/nscd/nscd.conf.5
projects/altix2/usr.sbin/nscd/parser.c
Directory Properties:
projects/altix2/ (props changed)
projects/altix2/cddl/contrib/opensolaris/ (props changed)
projects/altix2/contrib/binutils/ (props changed)
projects/altix2/lib/libc/ (props changed)
projects/altix2/sbin/ (props changed)
projects/altix2/sbin/ipfw/ (props changed)
projects/altix2/sys/ (props changed)
projects/altix2/sys/boot/ (props changed)
projects/altix2/sys/cddl/contrib/opensolaris/ (props changed)
projects/altix2/sys/conf/ (props changed)
projects/altix2/usr.bin/calendar/ (props changed)
projects/altix2/usr.bin/procstat/ (props changed)
Modified: projects/altix2/Makefile
==============================================================================
--- projects/altix2/Makefile Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/Makefile Sat Jul 7 05:25:22 2012 (r238191)
@@ -92,7 +92,7 @@ TGTS= all all-man buildenv buildenvvars
delete-old delete-old-dirs delete-old-files delete-old-libs \
depend distribute distributekernel distributekernel.debug \
distributeworld distrib-dirs distribution doxygen \
- everything hierarchy install installcheck installkernel \
+ everything hier hierarchy install installcheck installkernel \
installkernel.debug packagekernel packageworld \
reinstallkernel reinstallkernel.debug \
installworld kernel-toolchain libraries lint maninstall \
Modified: projects/altix2/Makefile.inc1
==============================================================================
--- projects/altix2/Makefile.inc1 Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/Makefile.inc1 Sat Jul 7 05:25:22 2012 (r238191)
@@ -1197,7 +1197,7 @@ cross-tools:
#
# hierarchy - ensure that all the needed directories are present
#
-hierarchy:
+hierarchy hier:
cd ${.CURDIR}/etc; ${MAKE} distrib-dirs
#
Modified: projects/altix2/cddl/compat/opensolaris/misc/deviceid.c
==============================================================================
--- projects/altix2/cddl/compat/opensolaris/misc/deviceid.c Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/cddl/compat/opensolaris/misc/deviceid.c Sat Jul 7 05:25:22 2012 (r238191)
@@ -45,7 +45,7 @@ devid_str_decode(char *devidstr, ddi_dev
return (EINVAL);
}
*retminor_name = strdup("");
- if (*retminor_name == NULL);
+ if (*retminor_name == NULL)
return (ENOMEM);
return (0);
}
Modified: projects/altix2/cddl/contrib/dtracetoolkit/dtruss
==============================================================================
--- projects/altix2/cddl/contrib/dtracetoolkit/dtruss Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/cddl/contrib/dtracetoolkit/dtruss Sat Jul 7 05:25:22 2012 (r238191)
@@ -240,7 +240,7 @@ syscall:::entry
*/
/* print 3 args, return as hex */
-syscall::lwp_sigmask:return
+syscall::sigprocmask:return
/self->start/
{
/* calculate elapsed time */
@@ -268,10 +268,11 @@ syscall::lwp_sigmask:return
}
/* print 3 args, arg0 as a string */
+syscall::access*:return,
syscall::stat*:return,
syscall::lstat*:return,
-syscall::open*:return,
-syscall::resolvepath:return
+syscall::readlink*:return,
+syscall::open*:return
/self->start/
{
/* calculate elapsed time */
@@ -329,7 +330,6 @@ syscall::*read*:return
}
/* print 0 arg output */
-syscall::gtime:return,
syscall::*fork*:return
/self->start/
{
@@ -357,9 +357,6 @@ syscall::*fork*:return
}
/* print 1 arg output */
-syscall::brk:return,
-syscall::times:return,
-syscall::stime:return,
syscall::close:return
/self->start/
{
@@ -387,7 +384,7 @@ syscall::close:return
}
/* print 2 arg output */
-syscall::utime:return,
+syscall::utimes:return,
syscall::munmap:return
/self->start/
{
Modified: projects/altix2/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c
==============================================================================
--- projects/altix2/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c Sat Jul 7 05:25:22 2012 (r238191)
@@ -796,7 +796,7 @@ dt_print_llquantize(dtrace_hdl_t *dtp, F
return (0);
assert(last_bin == bin);
- (void) snprintf(c, sizeof (c), ">= %lld", value);
+ (void) snprintf(c, sizeof (c), ">= %lld", (long long)value);
if (dt_printf(dtp, fp, "%16s ", c) < 0)
return (-1);
Modified: projects/altix2/contrib/binutils/gas/config/tc-i386.c
==============================================================================
--- projects/altix2/contrib/binutils/gas/config/tc-i386.c Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/contrib/binutils/gas/config/tc-i386.c Sat Jul 7 05:25:22 2012 (r238191)
@@ -517,7 +517,9 @@ static const arch_entry cpu_arch[] =
{".sse4a", PROCESSOR_UNKNOWN,
CpuMMX|CpuMMX2|CpuSSE|CpuSSE2|CpuSSE3|CpuSSE4a},
{".abm", PROCESSOR_UNKNOWN,
- CpuABM}
+ CpuABM},
+ {".xsave", PROCESSOR_UNKNOWN,
+ CpuXSAVE}
};
const pseudo_typeS md_pseudo_table[] =
@@ -3988,6 +3990,16 @@ output_insn (void)
goto check_prefix;
}
}
+ else if (i.tm.base_opcode == 0x660f3880 || i.tm.base_opcode == 0x660f3881)
+ {
+ /* invept and invvpid are 3 byte instructions with a
+ mandatory prefix. */
+ if (i.tm.base_opcode & 0xff000000)
+ {
+ prefix = (i.tm.base_opcode >> 24) & 0xff;
+ add_prefix (prefix);
+ }
+ }
else if ((i.tm.base_opcode & 0xff0000) != 0)
{
prefix = (i.tm.base_opcode >> 16) & 0xff;
@@ -4027,6 +4039,12 @@ output_insn (void)
p = frag_more (3);
*p++ = (i.tm.base_opcode >> 16) & 0xff;
}
+ else if (i.tm.base_opcode == 0x660f3880 ||
+ i.tm.base_opcode == 0x660f3881)
+ {
+ p = frag_more (3);
+ *p++ = (i.tm.base_opcode >> 16) & 0xff;
+ }
else
p = frag_more (2);
Modified: projects/altix2/contrib/binutils/opcodes/i386-dis.c
==============================================================================
--- projects/altix2/contrib/binutils/opcodes/i386-dis.c Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/contrib/binutils/opcodes/i386-dis.c Sat Jul 7 05:25:22 2012 (r238191)
@@ -93,6 +93,7 @@ static void OP_3DNowSuffix (int, int);
static void OP_SIMD_Suffix (int, int);
static void SIMD_Fixup (int, int);
static void PNI_Fixup (int, int);
+static void XCR_Fixup (int, int);
static void SVME_Fixup (int, int);
static void INVLPG_Fixup (int, int);
static void BadOp (void);
@@ -212,6 +213,7 @@ fetch_data (struct disassemble_info *inf
#define Ew { OP_E, w_mode }
#define M { OP_M, 0 } /* lea, lgdt, etc. */
#define Ma { OP_M, v_mode }
+#define Mo { OP_M, o_mode }
#define Mp { OP_M, f_mode } /* 32 or 48 bit memory operand for LDS, LES etc */
#define Mq { OP_M, q_mode }
#define Gb { OP_G, b_mode }
@@ -539,6 +541,8 @@ fetch_data (struct disassemble_info *inf
#define PREGRP95 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 95 } }
#define PREGRP96 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 96 } }
#define PREGRP97 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 97 } }
+#define PREGRP98 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 98 } }
+#define PREGRP99 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 99 } }
#define X86_64_0 NULL, { { NULL, X86_64_SPECIAL }, { NULL, 0 } }
@@ -1693,7 +1697,7 @@ static const struct dis386 grps[][8] = {
{
{ "sgdt{Q|IQ||}", { { VMX_Fixup, 0 } } },
{ "sidt{Q|IQ||}", { { PNI_Fixup, 0 } } },
- { "lgdt{Q|Q||}", { M } },
+ { "lgdt{Q|Q||}", { { XCR_Fixup, 0 } } },
{ "lidt{Q|Q||}", { { SVME_Fixup, 0 } } },
{ "smswD", { Sv } },
{ "(bad)", { XX } },
@@ -1783,9 +1787,9 @@ static const struct dis386 grps[][8] = {
{ "fxrstor", { Ev } },
{ "ldmxcsr", { Ev } },
{ "stmxcsr", { Ev } },
- { "(bad)", { XX } },
- { "lfence", { { OP_0fae, 0 } } },
- { "mfence", { { OP_0fae, 0 } } },
+ { "xsave", { Ev } },
+ { "xrstor", { { OP_0fae, v_mode } } },
+ { "xsaveopt", { { OP_0fae, v_mode } } },
{ "clflush", { { OP_0fae, 0 } } },
},
/* GRP16 */
@@ -2585,6 +2589,22 @@ static const struct dis386 prefix_user_t
{ "punpckldq",{ MX, EMq } },
{ "(bad)", { XX } },
},
+
+ /* PREGRP98 */
+ {
+ { "(bad)", { XX } },
+ { "(bad)", { XX } },
+ { "invept", { Gm, Mo } },
+ { "(bad)", { XX } },
+ },
+
+ /* PREGRP99 */
+ {
+ { "(bad)", { XX } },
+ { "(bad)", { XX } },
+ { "invvpid",{ Gm, Mo } },
+ { "(bad)", { XX } },
+ },
};
static const struct dis386 x86_64_table[][2] = {
@@ -2754,8 +2774,8 @@ static const struct dis386 three_byte_ta
{ "(bad)", { XX } },
{ "(bad)", { XX } },
/* 80 */
- { "(bad)", { XX } },
- { "(bad)", { XX } },
+ { PREGRP98 },
+ { PREGRP99 },
{ "(bad)", { XX } },
{ "(bad)", { XX } },
{ "(bad)", { XX } },
@@ -5883,7 +5903,7 @@ static void
OP_M (int bytemode, int sizeflag)
{
if (modrm.mod == 3)
- /* bad bound,lea,lds,les,lfs,lgs,lss,cmpxchg8b,vmptrst modrm */
+ /* bad bound,lea,lds,les,lfs,lgs,lss,cmpxchg8b,vmptrst,invept,invvpid modrm */
BadOp ();
else
OP_E (bytemode, sizeflag);
@@ -5905,17 +5925,17 @@ OP_0fae (int bytemode, int sizeflag)
{
if (modrm.reg == 7)
strcpy (obuf + strlen (obuf) - sizeof ("clflush") + 1, "sfence");
+ else if (modrm.reg == 6)
+ strcpy (obuf + strlen (obuf) - sizeof ("xsaveopt") + 1, "mfence");
+ else if (modrm.reg == 5)
+ strcpy (obuf + strlen (obuf) - sizeof ("xrstor") + 1, "lfence");
if (modrm.reg < 5 || modrm.rm != 0)
{
BadOp (); /* bad sfence, mfence, or lfence */
return;
}
- }
- else if (modrm.reg != 7)
- {
- BadOp (); /* bad clflush */
- return;
+ bytemode = 0;
}
OP_E (bytemode, sizeflag);
@@ -6170,6 +6190,43 @@ PNI_Fixup (int extrachar ATTRIBUTE_UNUSE
}
static void
+XCR_Fixup (int extrachar ATTRIBUTE_UNUSED, int sizeflag)
+{
+ if (modrm.mod == 3 && modrm.reg == 2 && modrm.rm <= 1)
+ {
+ /* Override "lgdt". */
+ size_t olen = strlen (obuf);
+ char *p = obuf + olen - 4;
+
+ /* We might have a suffix when disassembling with -Msuffix. */
+ if (*p == 'i')
+ --p;
+
+ /* Remove "addr16/addr32" if we aren't in Intel mode. */
+ if (!intel_syntax
+ && (prefixes & PREFIX_ADDR)
+ && olen >= (4 + 7)
+ && *(p - 1) == ' '
+ && CONST_STRNEQ (p - 7, "addr")
+ && (CONST_STRNEQ (p - 3, "16")
+ || CONST_STRNEQ (p - 3, "32")))
+ p -= 7;
+
+ if (modrm.rm)
+ {
+ strcpy (p, "xsetbv");
+ }
+ else
+ {
+ strcpy (p, "xgetbv");
+ }
+
+ codep++;
+ }
+ else
+ OP_M (0, sizeflag);
+}
+static void
SVME_Fixup (int bytemode, int sizeflag)
{
const char *alt;
Modified: projects/altix2/contrib/binutils/opcodes/i386-opc.h
==============================================================================
--- projects/altix2/contrib/binutils/opcodes/i386-opc.h Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/contrib/binutils/opcodes/i386-opc.h Sat Jul 7 05:25:22 2012 (r238191)
@@ -71,6 +71,7 @@ typedef struct template
#define CpuABM 0x200000 /* ABM New Instructions required */
#define CpuSSE4_1 0x400000 /* SSE4.1 Instructions required */
#define CpuSSE4_2 0x800000 /* SSE4.2 Instructions required */
+#define CpuXSAVE 0x1000000 /* XSAVE Instructions required */
/* SSE4.1/4.2 Instructions required */
#define CpuSSE4 (CpuSSE4_1|CpuSSE4_2)
@@ -83,7 +84,7 @@ typedef struct template
#define CpuUnknownFlags (Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686 \
|CpuP4|CpuSledgehammer|CpuMMX|CpuMMX2|CpuSSE|CpuSSE2|CpuSSE3|CpuVMX \
|Cpu3dnow|Cpu3dnowA|CpuK6|CpuPadLock|CpuSVME|CpuSSSE3|CpuSSE4_1 \
- |CpuSSE4_2|CpuABM|CpuSSE4a)
+ |CpuSSE4_2|CpuABM|CpuSSE4a|CpuXSAVE)
/* the bits in opcode_modifier are used to generate the final opcode from
the base_opcode. These bits also are used to detect alternate forms of
Modified: projects/altix2/contrib/binutils/opcodes/i386-opc.tbl
==============================================================================
--- projects/altix2/contrib/binutils/opcodes/i386-opc.tbl Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/contrib/binutils/opcodes/i386-opc.tbl Sat Jul 7 05:25:22 2012 (r238191)
@@ -1289,6 +1289,10 @@ mwait, 2, 0xf01, 0xc9, CpuSSE3|CpuNo64,
mwait, 2, 0xf01, 0xc9, CpuSSE3|Cpu64, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt|NoRex64, { Reg64, Reg64 }
// VMX instructions.
+invept, 2, 0x660f3880, None, CpuVMX|CpuNo64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf|No_xSuf|NoRex64, { BaseIndex|Disp8|Disp16|Disp32|Disp32S, Reg32 }
+invept, 2, 0x660f3880, None, CpuVMX|Cpu64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf|No_xSuf|NoRex64, { BaseIndex|Disp8|Disp16|Disp32|Disp32S, Reg64 }
+invvpid, 2, 0x660f3881, None, CpuVMX|CpuNo64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf|No_xSuf|NoRex64, { BaseIndex|Disp8|Disp16|Disp32|Disp32S, Reg32 }
+invvpid, 2, 0x660f3881, None, CpuVMX|Cpu64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf|No_xSuf|NoRex64, { BaseIndex|Disp8|Disp16|Disp32|Disp32S, Reg64 }
vmcall, 0, 0xf01, 0xc1, CpuVMX, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt, { 0 }
vmclear, 1, 0x660fc7, 0x6, CpuVMX, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|NoRex64, { BaseIndex|Disp8|Disp16|Disp32|Disp32S }
vmlaunch, 0, 0xf01, 0xc2, CpuVMX, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt, { 0 }
@@ -1487,3 +1491,10 @@ xcryptcfb, 0, 0xf30fa7, 0xe0, Cpu686|Cpu
xcryptofb, 0, 0xf30fa7, 0xe8, Cpu686|CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|IsString|ImmExt, { 0 }
// Alias for xstore-rng.
xstore, 0, 0xfa7, 0xc0, Cpu686|CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|IsString|ImmExt, { 0 }
+
+// XSAVE/XRSTOR related instructions
+xgetbv, 0, 0xf01, 0xd0, CpuXSAVE, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt, { 0 }
+xsetbv, 0, 0xf01, 0xd1, CpuXSAVE, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt, { 0 }
+xsave, 1, 0xfae, 0x4, CpuXSAVE, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S }
+xsaveopt, 1, 0xfae, 0x6, CpuXSAVE, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S }
+xrstor, 1, 0xfae, 0x5, CpuXSAVE, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S }
Modified: projects/altix2/contrib/binutils/opcodes/i386-tbl.h
==============================================================================
--- projects/altix2/contrib/binutils/opcodes/i386-tbl.h Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/contrib/binutils/opcodes/i386-tbl.h Sat Jul 7 05:25:22 2012 (r238191)
@@ -3625,6 +3625,22 @@ const template i386_optab[] =
No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt|NoRex64,
{ Reg64,
Reg64 } },
+ { "invept", 2, 0x660f3880, None, CpuVMX|CpuNo64,
+ Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf|No_xSuf|NoRex64,
+ { BaseIndex|Disp8|Disp16|Disp32|Disp32S,
+ Reg32 } },
+ { "invept", 2, 0x660f3880, None, CpuVMX|Cpu64,
+ Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf|No_xSuf|NoRex64,
+ { BaseIndex|Disp8|Disp16|Disp32|Disp32S,
+ Reg64 } },
+ { "invvpid", 2, 0x660f3881, None, CpuVMX|CpuNo64,
+ Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf|No_xSuf|NoRex64,
+ { BaseIndex|Disp8|Disp16|Disp32|Disp32S,
+ Reg32 } },
+ { "invvpid", 2, 0x660f3881, None, CpuVMX|Cpu64,
+ Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf|No_xSuf|NoRex64,
+ { BaseIndex|Disp8|Disp16|Disp32|Disp32S,
+ Reg64 } },
{ "vmcall", 0, 0xf01, 0xc1, CpuVMX,
No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt,
{ 0 } },
@@ -4288,6 +4304,21 @@ const template i386_optab[] =
{ "xstore", 0, 0xfa7, 0xc0, Cpu686|CpuPadLock,
No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|IsString|ImmExt,
{ 0 } },
+ { "xgetbv", 0, 0xf01, 0xd0, CpuXSAVE,
+ No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt,
+ { 0 } },
+ { "xsetbv", 0, 0xf01, 0xd1, CpuXSAVE,
+ No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt,
+ { 0 } },
+ { "xsave", 1, 0xfae, 0x4, CpuXSAVE,
+ Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_xSuf,
+ { BaseIndex|Disp8|Disp16|Disp32|Disp32S } },
+ { "xsaveopt", 1, 0xfae, 0x6, CpuXSAVE,
+ Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_xSuf,
+ { BaseIndex|Disp8|Disp16|Disp32|Disp32S } },
+ { "xrstor", 1, 0xfae, 0x5, CpuXSAVE,
+ Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_xSuf,
+ { BaseIndex|Disp8|Disp16|Disp32|Disp32S } },
{ NULL, 0, 0, 0, 0, 0, { 0 } }
};
Modified: projects/altix2/etc/rc.d/jail
==============================================================================
--- projects/altix2/etc/rc.d/jail Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/etc/rc.d/jail Sat Jul 7 05:25:22 2012 (r238191)
@@ -641,7 +641,7 @@ jail_start()
i=$((i + 1))
done
- eval ${_setfib} jail ${_flags} -i ${_rootdir} ${_hostname} \
+ eval ${_setfib} jail ${_flags} -n ${_jail} -i ${_rootdir} ${_hostname} \
\"${_addrl}\" ${_exec_start} > ${_tmp_jail} 2>&1 \
</dev/null
Modified: projects/altix2/include/printf.h
==============================================================================
--- projects/altix2/include/printf.h Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/include/printf.h Sat Jul 7 05:25:22 2012 (r238191)
@@ -123,7 +123,7 @@ int register_printf_function(int spec, p
/* FreeBSD */
int register_printf_render(int spec, printf_render *render, printf_arginfo_function *arginfo);
-int register_printf_render_std(const unsigned char *specs);
+int register_printf_render_std(const char *specs);
/* vprintf_errno.c */
printf_arginfo_function __printf_arginfo_errno;
Modified: projects/altix2/lib/libc/gen/arc4random.c
==============================================================================
--- projects/altix2/lib/libc/gen/arc4random.c Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/lib/libc/gen/arc4random.c Sat Jul 7 05:25:22 2012 (r238191)
@@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$");
#include <unistd.h>
#include <sys/types.h>
#include <sys/param.h>
+#include <sys/sysctl.h>
#include <sys/time.h>
#include <pthread.h>
@@ -78,6 +79,9 @@ static struct arc4_stream rs;
static pid_t arc4_stir_pid;
static int arc4_count;
+extern int __sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp,
+ void *newp, size_t newlen);
+
static inline u_int8_t arc4_getbyte(void);
static void arc4_stir(void);
@@ -109,6 +113,28 @@ arc4_addrandom(u_char *dat, int datlen)
rs.j = rs.i;
}
+static size_t
+arc4_sysctl(u_char *buf, size_t size)
+{
+ int mib[2];
+ size_t len, done;
+
+ mib[0] = CTL_KERN;
+ mib[1] = KERN_ARND;
+ done = 0;
+
+ do {
+ len = size;
+ if (__sysctl(mib, 2, buf, &len, NULL, 0) == -1)
+ return (done);
+ done += len;
+ buf += len;
+ size -= len;
+ } while (size > 0);
+
+ return (done);
+}
+
static void
arc4_stir(void)
{
@@ -123,12 +149,16 @@ arc4_stir(void)
arc4_init();
rs_initialized = 1;
}
- fd = _open(RANDOMDEV, O_RDONLY, 0);
done = 0;
- if (fd >= 0) {
- if (_read(fd, &rdat, KEYSIZE) == KEYSIZE)
- done = 1;
- (void)_close(fd);
+ if (arc4_sysctl((u_char *)&rdat, KEYSIZE) == KEYSIZE)
+ done = 1;
+ if (!done) {
+ fd = _open(RANDOMDEV, O_RDONLY, 0);
+ if (fd >= 0) {
+ if (_read(fd, &rdat, KEYSIZE) == KEYSIZE)
+ done = 1;
+ (void)_close(fd);
+ }
}
if (!done) {
(void)gettimeofday(&rdat.tv, NULL);
Modified: projects/altix2/lib/libc/gen/directory.3
==============================================================================
--- projects/altix2/lib/libc/gen/directory.3 Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/lib/libc/gen/directory.3 Sat Jul 7 05:25:22 2012 (r238191)
@@ -28,7 +28,7 @@
.\" @(#)directory.3 8.1 (Berkeley) 6/4/93
.\" $FreeBSD$
.\"
-.Dd April 16, 2008
+.Dd July 5, 2012
.Dt DIRECTORY 3
.Os
.Sh NAME
@@ -153,7 +153,7 @@ returns 0 on success or an error number
The
.Fn telldir
function
-returns the current location associated with the named
+returns a token representing the current location associated with the named
.Em directory stream .
Values returned by
.Fn telldir
@@ -179,6 +179,13 @@ The new position reverts to the one asso
when the
.Fn telldir
operation was performed.
+State associated with the token returned by
+.Fn telldir is freed when it is passed to
+.Fn seekdir .
+If you wish return to the same location again,
+then you must create a new token with another
+.Fn telldir
+call.
.Pp
The
.Fn rewinddir
@@ -245,3 +252,9 @@ The
.Fn fdopendir
function appeared in
.Fx 8.0 .
+.Sh BUGS
+The invalidation of
+.Fn telldir
+tokens when calling
+.Fn seekdir
+is non-standard.
Modified: projects/altix2/lib/libc/locale/collate.c
==============================================================================
--- projects/altix2/lib/libc/locale/collate.c Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/lib/libc/locale/collate.c Sat Jul 7 05:25:22 2012 (r238191)
@@ -56,11 +56,11 @@ __FBSDID("$FreeBSD$");
* We also modify the collation table test functions to search the thread-local
* table first and the global table second.
*/
-#define __collate_load_error (table->__collate_load_error)
#define __collate_substitute_nontrivial (table->__collate_substitute_nontrivial)
#define __collate_substitute_table_ptr (table->__collate_substitute_table_ptr)
#define __collate_char_pri_table_ptr (table->__collate_char_pri_table_ptr)
#define __collate_chain_pri_table (table->__collate_chain_pri_table)
+int __collate_load_error;
struct xlocale_collate __xlocale_global_collate = {
@@ -109,7 +109,9 @@ __collate_load(const char *encoding, loc
int
__collate_load_tables(const char *encoding)
{
- return __collate_load_tables_l(encoding, &__xlocale_global_collate);
+ int ret = __collate_load_tables_l(encoding, &__xlocale_global_collate);
+ __collate_load_error = __xlocale_global_collate.__collate_load_error;
+ return ret;
}
int
@@ -123,7 +125,7 @@ __collate_load_tables_l(const char *enco
/* 'encoding' must be already checked. */
if (strcmp(encoding, "C") == 0 || strcmp(encoding, "POSIX") == 0) {
- __collate_load_error = 1;
+ table->__collate_load_error = 1;
return (_LDP_CACHE);
}
@@ -240,7 +242,7 @@ __collate_load_tables_l(const char *enco
break;
}
}
- __collate_load_error = 0;
+ table->__collate_load_error = 0;
return (_LDP_LOADED);
}
Modified: projects/altix2/lib/libc/locale/setrunelocale.c
==============================================================================
--- projects/altix2/lib/libc/locale/setrunelocale.c Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/lib/libc/locale/setrunelocale.c Sat Jul 7 05:25:22 2012 (r238191)
@@ -67,7 +67,6 @@ extern _RuneLocale *_Read_RuneMagi(FILE
static int __setrunelocale(struct xlocale_ctype *l, const char *);
-#define __collate_load_error (table->__collate_load_error)
#define __collate_substitute_nontrivial (table->__collate_substitute_nontrivial)
#define __collate_substitute_table_ptr (table->__collate_substitute_table_ptr)
#define __collate_char_pri_table_ptr (table->__collate_char_pri_table_ptr)
Modified: projects/altix2/lib/libc/stdio/xprintf.c
==============================================================================
--- projects/altix2/lib/libc/stdio/xprintf.c Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/lib/libc/stdio/xprintf.c Sat Jul 7 05:25:22 2012 (r238191)
@@ -651,7 +651,7 @@ register_printf_render(int spec, printf_
}
int
-register_printf_render_std(const unsigned char *specs)
+register_printf_render_std(const char *specs)
{
for (; *specs != '\0'; specs++) {
Modified: projects/altix2/lib/libedit/chared.c
==============================================================================
--- projects/altix2/lib/libedit/chared.c Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/lib/libedit/chared.c Sat Jul 7 05:25:22 2012 (r238191)
@@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $NetBSD: chared.c,v 1.25 2005/08/08 01:41:30 christos Exp $
+ * $NetBSD: chared.c,v 1.27 2009/02/15 21:55:23 christos Exp $
*/
#if !defined(lint) && !defined(SCCSID)
@@ -59,12 +59,12 @@ cv_undo(EditLine *el)
{
c_undo_t *vu = &el->el_chared.c_undo;
c_redo_t *r = &el->el_chared.c_redo;
- unsigned int size;
+ size_t size;
/* Save entire line for undo */
size = el->el_line.lastchar - el->el_line.buffer;
vu->len = size;
- vu->cursor = el->el_line.cursor - el->el_line.buffer;
+ vu->cursor = (int)(el->el_line.cursor - el->el_line.buffer);
memcpy(vu->buf, el->el_line.buffer, size);
/* save command info for redo */
@@ -83,7 +83,7 @@ cv_yank(EditLine *el, const char *ptr, i
{
c_kill_t *k = &el->el_chared.c_kill;
- memcpy(k->buf, ptr, size +0u);
+ memcpy(k->buf, ptr, (size_t)size);
k->last = k->buf + size;
}
@@ -97,7 +97,7 @@ c_insert(EditLine *el, int num)
char *cp;
if (el->el_line.lastchar + num >= el->el_line.limit) {
- if (!ch_enlargebufs(el, num +0u))
+ if (!ch_enlargebufs(el, (size_t)num))
return; /* can't go past end of buffer */
}
@@ -118,7 +118,7 @@ c_delafter(EditLine *el, int num)
{
if (el->el_line.cursor + num > el->el_line.lastchar)
- num = el->el_line.lastchar - el->el_line.cursor;
+ num = (int)(el->el_line.lastchar - el->el_line.cursor);
if (el->el_map.current != el->el_map.emacs) {
cv_undo(el);
@@ -159,7 +159,7 @@ c_delbefore(EditLine *el, int num)
{
if (el->el_line.cursor - num < el->el_line.buffer)
- num = el->el_line.cursor - el->el_line.buffer;
+ num = (int)(el->el_line.cursor - el->el_line.buffer);
if (el->el_map.current != el->el_map.emacs) {
cv_undo(el);
@@ -375,7 +375,7 @@ cv_delfini(EditLine *el)
/* sanity */
return;
- size = el->el_line.cursor - el->el_chared.c_vcmd.pos;
+ size = (int)(el->el_line.cursor - el->el_chared.c_vcmd.pos);
if (size == 0)
size = 1;
el->el_line.cursor = el->el_chared.c_vcmd.pos;
@@ -529,8 +529,7 @@ ch_reset(EditLine *el, int mclear)
}
private void
-ch__clearmacro(el)
- EditLine *el;
+ch__clearmacro(EditLine *el)
{
c_macro_t *ma = &el->el_chared.c_macro;
while (ma->level >= 0)
@@ -542,9 +541,7 @@ ch__clearmacro(el)
* Returns 1 if successful, 0 if not.
*/
protected int
-ch_enlargebufs(el, addlen)
- EditLine *el;
- size_t addlen;
+ch_enlargebufs(EditLine *el, size_t addlen)
{
size_t sz, newsz;
char *newbuffer, *oldbuf, *oldkbuf;
@@ -695,12 +692,12 @@ protected int
c_gets(EditLine *el, char *buf, const char *prompt)
{
char ch;
- int len;
+ ssize_t len;
char *cp = el->el_line.buffer;
if (prompt) {
len = strlen(prompt);
- memcpy(cp, prompt, len + 0u);
+ memcpy(cp, prompt, (size_t)len);
cp += len;
}
len = 0;
@@ -721,7 +718,7 @@ c_gets(EditLine *el, char *buf, const ch
case '\010': /* Delete and backspace */
case '\177':
- if (len <= 0) {
+ if (len == 0) {
len = -1;
break;
}
@@ -749,7 +746,7 @@ c_gets(EditLine *el, char *buf, const ch
el->el_line.buffer[0] = '\0';
el->el_line.lastchar = el->el_line.buffer;
el->el_line.cursor = el->el_line.buffer;
- return len;
+ return (int)len;
}
@@ -771,6 +768,6 @@ c_hpos(EditLine *el)
ptr >= el->el_line.buffer && *ptr != '\n';
ptr--)
continue;
- return (el->el_line.cursor - ptr - 1);
+ return (int)(el->el_line.cursor - ptr - 1);
}
}
Modified: projects/altix2/lib/libedit/chared.h
==============================================================================
--- projects/altix2/lib/libedit/chared.h Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/lib/libedit/chared.h Sat Jul 7 05:25:22 2012 (r238191)
@@ -30,7 +30,7 @@
* SUCH DAMAGE.
*
* @(#)chared.h 8.1 (Berkeley) 6/4/93
- * $NetBSD: chared.h,v 1.17 2006/03/06 21:11:56 christos Exp $
+ * $NetBSD: chared.h,v 1.18 2009/02/15 21:55:23 christos Exp $
* $FreeBSD$
*/
@@ -70,7 +70,7 @@ typedef struct c_macro_t {
* Undo information for vi - no undo in emacs (yet)
*/
typedef struct c_undo_t {
- int len; /* length of saved line */
+ ssize_t len; /* length of saved line */
int cursor; /* position of saved cursor */
char *buf; /* full saved text */
} c_undo_t;
Modified: projects/altix2/lib/libedit/editline.3
==============================================================================
--- projects/altix2/lib/libedit/editline.3 Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/lib/libedit/editline.3 Sat Jul 7 05:25:22 2012 (r238191)
@@ -162,11 +162,6 @@ is modified to contain the number of cha
Returns the line read if successful, or
.Dv NULL
if no characters were read or if an error occurred.
-If an error occurred,
-.Fa count
-is set to \-1 and
-.Dv errno
-contains the error code that caused it.
The return value may not remain valid across calls to
.Fn el_gets
and must be copied if the data is to be retained.
Modified: projects/altix2/lib/libedit/el.h
==============================================================================
--- projects/altix2/lib/libedit/el.h Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/lib/libedit/el.h Sat Jul 7 05:25:22 2012 (r238191)
@@ -115,7 +115,6 @@ struct editline {
FILE *el_errfile; /* Stdio stuff */
int el_infd; /* Input file descriptor */
int el_flags; /* Various flags. */
- int el_errno; /* Local copy of errno */
coord_t el_cursor; /* Cursor location */
char **el_display; /* Real screen image = what is there */
char **el_vdisplay; /* Virtual screen image = what we see */
Modified: projects/altix2/lib/libedit/read.c
==============================================================================
--- projects/altix2/lib/libedit/read.c Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/lib/libedit/read.c Sat Jul 7 05:25:22 2012 (r238191)
@@ -49,7 +49,7 @@ __FBSDID("$FreeBSD$");
#include <stdlib.h>
#include "el.h"
-#define OKCMD -1 /* must be -1! */
+#define OKCMD -1
private int read__fixio(int, int);
private int read_preread(EditLine *);
@@ -170,7 +170,7 @@ read__fixio(int fd __unused, int e)
return (e ? 0 : -1);
case EINTR:
- return (-1);
+ return (0);
default:
return (-1);
@@ -235,12 +235,9 @@ read_getcmd(EditLine *el, el_action_t *c
el_action_t cmd;
int num;
- el->el_errno = 0;
do {
- if ((num = el_getc(el, ch)) != 1) { /* if EOF or error */
- el->el_errno = num == 0 ? 0 : errno;
+ if ((num = el_getc(el, ch)) != 1) /* if EOF or error */
return (num);
- }
#ifdef KANJI
if ((*ch & 0200)) {
@@ -292,21 +289,14 @@ read_char(EditLine *el, char *cp)
ssize_t num_read;
int tried = 0;
- again:
- el->el_signal->sig_no = 0;
- while ((num_read = read(el->el_infd, cp, 1)) == -1) {
- if (el->el_signal->sig_no == SIGCONT) {
- sig_set(el);
- el_set(el, EL_REFRESH);
- goto again;
- }
+ while ((num_read = read(el->el_infd, cp, 1)) == -1)
if (!tried && read__fixio(el->el_infd, errno) == 0)
tried = 1;
else {
*cp = '\0';
return (-1);
}
- }
+
return (int)num_read;
}
@@ -413,20 +403,17 @@ el_gets(EditLine *el, int *nread)
int num; /* how many chars we have read at NL */
char ch;
int crlf = 0;
- int nrb;
#ifdef FIONREAD
c_macro_t *ma = &el->el_chared.c_macro;
#endif /* FIONREAD */
- if (nread == NULL)
- nread = &nrb;
*nread = 0;
if (el->el_flags & NO_TTY) {
char *cp = el->el_line.buffer;
size_t idx;
- while ((num = (*el->el_read.read_char)(el, cp)) == 1) {
+ while ((*el->el_read.read_char)(el, cp) == 1) {
/* make sure there is space for next character */
if (cp + 1 >= el->el_line.limit) {
idx = (cp - el->el_line.buffer);
@@ -440,16 +427,12 @@ el_gets(EditLine *el, int *nread)
if (cp[-1] == '\r' || cp[-1] == '\n')
break;
}
- if (num == -1) {
- if (errno == EINTR)
- cp = el->el_line.buffer;
- el->el_errno = errno;
- }
el->el_line.cursor = el->el_line.lastchar = cp;
*cp = '\0';
- *nread = (int)(el->el_line.cursor - el->el_line.buffer);
- goto done;
+ if (nread)
+ *nread = (int)(el->el_line.cursor - el->el_line.buffer);
+ return (*nread ? el->el_line.buffer : NULL);
}
@@ -460,8 +443,8 @@ el_gets(EditLine *el, int *nread)
(void) ioctl(el->el_infd, FIONREAD, (ioctl_t) & chrs);
if (chrs == 0) {
if (tty_rawmode(el) < 0) {
- errno = 0;
- *nread = 0;
+ if (nread)
+ *nread = 0;
return (NULL);
}
}
@@ -474,7 +457,6 @@ el_gets(EditLine *el, int *nread)
if (el->el_flags & EDIT_DISABLED) {
char *cp;
size_t idx;
-
if ((el->el_flags & UNBUFFERED) == 0)
cp = el->el_line.buffer;
else
@@ -482,7 +464,7 @@ el_gets(EditLine *el, int *nread)
term__flush(el);
- while ((num = (*el->el_read.read_char)(el, cp)) == 1) {
+ while ((*el->el_read.read_char)(el, cp) == 1) {
/* make sure there is space next character */
if (cp + 1 >= el->el_line.limit) {
idx = (cp - el->el_line.buffer);
@@ -498,15 +480,11 @@ el_gets(EditLine *el, int *nread)
break;
}
- if (num == -1) {
- if (errno == EINTR)
- cp = el->el_line.buffer;
- el->el_errno = errno;
- }
-
el->el_line.cursor = el->el_line.lastchar = cp;
*cp = '\0';
- goto done;
+ if (nread)
+ *nread = (int)(el->el_line.cursor - el->el_line.buffer);
+ return (*nread ? el->el_line.buffer : NULL);
}
for (num = OKCMD; num == OKCMD;) { /* while still editing this
@@ -522,12 +500,6 @@ el_gets(EditLine *el, int *nread)
#endif /* DEBUG_READ */
break;
}
- if (el->el_errno == EINTR) {
- el->el_line.buffer[0] = '\0';
- el->el_line.lastchar =
- el->el_line.cursor = el->el_line.buffer;
- break;
- }
if ((unsigned int)cmdnum >= (unsigned int)el->el_map.nfunc) { /* BUG CHECK command */
#ifdef DEBUG_EDIT
(void) fprintf(el->el_errfile,
@@ -645,17 +617,12 @@ el_gets(EditLine *el, int *nread)
/* make sure the tty is set up correctly */
if ((el->el_flags & UNBUFFERED) == 0) {
read_finish(el);
- *nread = num != -1 ? num : 0;
+ if (nread)
+ *nread = num;
} else {
- *nread = (int)(el->el_line.lastchar - el->el_line.buffer);
+ if (nread)
+ *nread =
+ (int)(el->el_line.lastchar - el->el_line.buffer);
}
-done:
- if (*nread == 0) {
- if (num == -1) {
- *nread = -1;
- errno = el->el_errno;
- }
- return NULL;
- } else
- return el->el_line.buffer;
+ return (num ? el->el_line.buffer : NULL);
}
Modified: projects/altix2/lib/libedit/sig.c
==============================================================================
--- projects/altix2/lib/libedit/sig.c Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/lib/libedit/sig.c Sat Jul 7 05:25:22 2012 (r238191)
@@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $NetBSD: sig.c,v 1.15 2009/02/19 15:20:22 christos Exp $
+ * $NetBSD: sig.c,v 1.14 2009/02/18 15:04:40 christos Exp $
*/
#if !defined(lint) && !defined(SCCSID)
@@ -73,8 +73,6 @@ sig_handler(int signo)
(void) sigaddset(&nset, signo);
(void) sigprocmask(SIG_BLOCK, &nset, &oset);
- sel->el_signal->sig_no = signo;
-
switch (signo) {
case SIGCONT:
tty_rawmode(sel);
@@ -160,12 +158,12 @@ sig_set(EditLine *el)
struct sigaction osa, nsa;
nsa.sa_handler = sig_handler;
- nsa.sa_flags = 0;
sigemptyset(&nsa.sa_mask);
(void) sigprocmask(SIG_BLOCK, &el->el_signal->sig_set, &oset);
for (i = 0; sighdl[i] != -1; i++) {
+ nsa.sa_flags = SIGINT ? 0 : SA_RESTART;
/* This could happen if we get interrupted */
if (sigaction(sighdl[i], &nsa, &osa) != -1 &&
osa.sa_handler != sig_handler)
Modified: projects/altix2/lib/libedit/sig.h
==============================================================================
--- projects/altix2/lib/libedit/sig.h Sat Jul 7 05:17:43 2012 (r238190)
+++ projects/altix2/lib/libedit/sig.h Sat Jul 7 05:25:22 2012 (r238191)
@@ -30,7 +30,7 @@
* SUCH DAMAGE.
*
* @(#)sig.h 8.1 (Berkeley) 6/4/93
- * $NetBSD: sig.h,v 1.5 2003/08/07 16:44:33 agc Exp $
+ * $NetBSD: sig.h,v 1.7 2009/02/15 21:25:01 christos Exp $
* $FreeBSD$
*/
@@ -61,7 +61,6 @@
typedef struct {
struct sigaction sig_action[ALLSIGSNO];
sigset_t sig_set;
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list