Date: Sat, 21 Apr 2012 16:27:51 +0000 (UTC) From: Warner Losh <imp@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r234548 - in user/imp/extern_cc: . contrib/binutils contrib/binutils/bfd gnu/usr.bin/binutils gnu/usr.bin/binutils/as gnu/usr.bin/binutils/ld gnu/usr.bin/binutils/libbfd gnu/usr.bin/cc ... Message-ID: <201204211627.q3LGRp5X095740@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: imp Date: Sat Apr 21 16:27:50 2012 New Revision: 234548 URL: http://svn.freebsd.org/changeset/base/234548 Log: Two, unrelated patches intermerged (sorry) o Add support for TARGET_ARCH=armv6. This is just the compile phase and hasn't done things like get uname to return armv6. o Add support for external compilers: - Define EXT_COMP to be the prefix to prepend to the normal commands (either the full path or just armv6-freebsd-) - Some things don't work: KERBEROS and RESCUE. To test it out: o sudo make xdev XDEV=arm XDEV_ARCH=armv6 o make buildworld WITHOUT_RESCUE=y WITHOUT_KERBEROS=y TARGET=arm TARGET_ARCH=armv6 Things missing: o We still build some tools we don't need to. o Really need to have a SYSTEM_COMPILER={gcc,clang,external} to make this nicer. In fact, we may need gcc42, gcc43, etc to get the warnings flags right (or GCC_VERSION and CLANG_VERSION). o crunchgen is busted in this configuration. I fixed one thing, but it needs more love for rescue to work. Also, it likely just needs to be a bootstrap tool again, and the test needs to include a freebsd version bump. o External toolchains, like those delivered by the chip vendors, have not been tested. There's likely tweaks needed. o It assumes that the standard tools are called the stanard things. This isn't true, afaik, with externally built clang without symlinks. It is 'stage 2' in my roadmap: o stage 1: cross build kernels with minimal effort o stage 2: cross build with xdev built compilers o stage 3: cross build with external gcc compilers o stage 4: cross build with external clang o stage 5: profit. Modified: user/imp/extern_cc/Makefile user/imp/extern_cc/Makefile.inc1 user/imp/extern_cc/contrib/binutils/bfd/config.bfd user/imp/extern_cc/contrib/binutils/config.sub user/imp/extern_cc/gnu/usr.bin/binutils/Makefile.inc0 user/imp/extern_cc/gnu/usr.bin/binutils/as/Makefile user/imp/extern_cc/gnu/usr.bin/binutils/ld/Makefile.arm user/imp/extern_cc/gnu/usr.bin/binutils/libbfd/Makefile.arm user/imp/extern_cc/gnu/usr.bin/cc/Makefile.inc user/imp/extern_cc/gnu/usr.bin/cc/Makefile.tgt user/imp/extern_cc/gnu/usr.bin/gdb/Makefile.inc user/imp/extern_cc/share/mk/bsd.endian.mk user/imp/extern_cc/share/mk/sys.mk user/imp/extern_cc/sys/conf/kern.pre.mk user/imp/extern_cc/sys/conf/kmod.mk user/imp/extern_cc/usr.bin/xlint/Makefile.inc user/imp/extern_cc/usr.sbin/crunch/crunchgen/crunchgen.c Modified: user/imp/extern_cc/Makefile ============================================================================== --- user/imp/extern_cc/Makefile Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/Makefile Sat Apr 21 16:27:50 2012 (r234548) @@ -135,7 +135,7 @@ _MAKE= PATH=${PATH} ${BINMAKE} -f Makefi _TARGET_ARCH= ${TARGET:S/pc98/i386/} .elif !defined(TARGET) && defined(TARGET_ARCH) && \ ${TARGET_ARCH} != ${MACHINE_ARCH} -_TARGET= ${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/} +_TARGET= ${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/} .endif # Legacy names, for another transition period mips:mips(n32|64)?eb -> mips:mips\1 .if defined(TARGET) && defined(TARGET_ARCH) && \ @@ -329,7 +329,7 @@ kernel-toolchains: # .if make(universe) || make(universe_kernels) || make(tinderbox) || make(targets) TARGETS?=amd64 arm i386 ia64 mips pc98 powerpc sparc64 -TARGET_ARCHES_arm?= arm armeb +TARGET_ARCHES_arm?= arm armeb armv6 armv6eb TARGET_ARCHES_mips?= mipsel mips mips64el mips64 mipsn32 TARGET_ARCHES_powerpc?= powerpc powerpc64 TARGET_ARCHES_pc98?= i386 Modified: user/imp/extern_cc/Makefile.inc1 ============================================================================== --- user/imp/extern_cc/Makefile.inc1 Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/Makefile.inc1 Sat Apr 21 16:27:50 2012 (r234548) @@ -136,7 +136,7 @@ VERSION!= uname -srp VERSION+= ${OSRELDATE} .endif -KNOWN_ARCHES?= amd64 arm armeb/arm i386 i386/pc98 ia64 mips mipsel/mips mips64el/mips mips64/mips mipsn32el/mips mipsn32/mips powerpc powerpc64/powerpc sparc64 +KNOWN_ARCHES?= amd64 arm armeb/arm armv6/arm armv6eb/arm i386 i386/pc98 ia64 mips mipsel/mips mips64el/mips mips64/mips mipsn32el/mips mipsn32/mips powerpc powerpc64/powerpc sparc64 .if ${TARGET} == ${TARGET_ARCH} _t= ${TARGET} .else @@ -231,6 +231,9 @@ CROSSENV+= GROFF_BIN_PATH=${WORLDTMP}/le GROFF_FONT_PATH=${WORLDTMP}/legacy/usr/share/groff_font \ GROFF_TMAC_PATH=${WORLDTMP}/legacy/usr/share/tmac .endif +.if ${EXT_COMP} +CROSSENV+= __X=${EXT_COMP} +.endif # bootstrap-tools stage BMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \ @@ -521,7 +524,7 @@ WMAKE_TGTS= WMAKE_TGTS+= _worldtmp _legacy _bootstrap-tools .endif WMAKE_TGTS+= _cleanobj _obj _build-tools -.if !defined(SUBDIR_OVERRIDE) +.if !defined(SUBDIR_OVERRIDE) && !defined(EXT_COMP) WMAKE_TGTS+= _cross-tools .endif WMAKE_TGTS+= _includes _libraries _depend everything @@ -1035,7 +1038,7 @@ _gensnmptree= usr.sbin/bsnmpd/gensnmptre .endif .if ${MK_RESCUE} != "no" && \ - ${BOOTSTRAPPING} < 700026 + (${BOOTSTRAPPING} < 700026 || defined(EXT_COMP)) _crunchgen= usr.sbin/crunch/crunchgen .endif Modified: user/imp/extern_cc/contrib/binutils/bfd/config.bfd ============================================================================== --- user/imp/extern_cc/contrib/binutils/bfd/config.bfd Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/contrib/binutils/bfd/config.bfd Sat Apr 21 16:27:50 2012 (r234548) @@ -277,6 +277,14 @@ case "${targ}" in targ_defvec=bfd_elf32_bigarm_vec targ_selvecs=bfd_elf32_littlearm_vec ;; + armv6eb-*-freebsd*) + targ_defvec=bfd_elf32_bigarm_vec + targ_selvecs=bfd_elf32_littlearm_vec + ;; + armv6-*-freebsd*) + targ_defvec=bfd_elf32_littlearm_vec + targ_selvecs=bfd_elf32_bigarm_vec + ;; arm-*-elf | arm-*-freebsd* | arm*-*-linux-* | arm*-*-conix* | \ arm*-*-uclinux* | arm-*-kfreebsd*-gnu | \ arm*-*-eabi* ) Modified: user/imp/extern_cc/contrib/binutils/config.sub ============================================================================== --- user/imp/extern_cc/contrib/binutils/config.sub Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/contrib/binutils/config.sub Sat Apr 21 16:27:50 2012 (r234548) @@ -241,7 +241,7 @@ case $basic_machine in | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | arc | arm | arm[bl]e | arme[lb] | armv[23456] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ Modified: user/imp/extern_cc/gnu/usr.bin/binutils/Makefile.inc0 ============================================================================== --- user/imp/extern_cc/gnu/usr.bin/binutils/Makefile.inc0 Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/gnu/usr.bin/binutils/Makefile.inc0 Sat Apr 21 16:27:50 2012 (r234548) @@ -7,7 +7,7 @@ VERSION= "2.17.50 [FreeBSD] 2007-07-03" .if defined(TARGET_ARCH) -TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/:C/powerpc64/powerpc/} +TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/} .else TARGET_CPUARCH=${MACHINE_CPUARCH} .endif @@ -16,7 +16,7 @@ TARGET_VENDOR?= unknown TARGET_OS?= freebsd BINUTILS_ARCH=${TARGET_ARCH:C/amd64/x86_64/} TARGET_TUPLE?= ${BINUTILS_ARCH}-${TARGET_VENDOR}-${TARGET_OS} -.if ${TARGET_ARCH} == "armeb" || \ +.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" || \ (${TARGET_CPUARCH} == "mips" && ${TARGET_ARCH:Mmips*el} == "") TARGET_BIG_ENDIAN=t .endif Modified: user/imp/extern_cc/gnu/usr.bin/binutils/as/Makefile ============================================================================== --- user/imp/extern_cc/gnu/usr.bin/binutils/as/Makefile Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/gnu/usr.bin/binutils/as/Makefile Sat Apr 21 16:27:50 2012 (r234548) @@ -41,6 +41,10 @@ SRCS+= app.c \ # DEO: why not used? #SRCS+= itbl-ops.c +.if ${TARGET_ARCH} == "armv6" || ${TARGET_ARCH} == "armv6eb" +CFLAGS+= -DCPU_DEFAULT=ARM_ARCH_V6 +.endif + .if ${TARGET_CPUARCH} == "mips" SRCS+= itbl-ops.c itbl-parse.y itbl-lex.l .if ${TARGET_ARCH:Mmips64*} != "" Modified: user/imp/extern_cc/gnu/usr.bin/binutils/ld/Makefile.arm ============================================================================== --- user/imp/extern_cc/gnu/usr.bin/binutils/ld/Makefile.arm Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/gnu/usr.bin/binutils/ld/Makefile.arm Sat Apr 21 16:27:50 2012 (r234548) @@ -1,6 +1,6 @@ # $FreeBSD$ -.if ${TARGET_ARCH} == "armeb" +.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" NATIVE_EMULATION= armelfb_fbsd .else NATIVE_EMULATION= armelf_fbsd Modified: user/imp/extern_cc/gnu/usr.bin/binutils/libbfd/Makefile.arm ============================================================================== --- user/imp/extern_cc/gnu/usr.bin/binutils/libbfd/Makefile.arm Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/gnu/usr.bin/binutils/libbfd/Makefile.arm Sat Apr 21 16:27:50 2012 (r234548) @@ -1,6 +1,6 @@ # $FreeBSD$ -.if ${TARGET_ARCH} == "armeb" +.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" DEFAULT_VECTOR= bfd_elf32_bigarm_vec .else DEFAULT_VECTOR= bfd_elf32_littlearm_vec @@ -14,7 +14,7 @@ SRCS+= cpu-arm.c \ elflink.c VECS+= ${DEFAULT_VECTOR} -.if ${TARGET_ARCH} == "armeb" +.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" VECS+= bfd_elf32_littlearm_vec .else VECS+= bfd_elf32_bigarm_vec Modified: user/imp/extern_cc/gnu/usr.bin/cc/Makefile.inc ============================================================================== --- user/imp/extern_cc/gnu/usr.bin/cc/Makefile.inc Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/gnu/usr.bin/cc/Makefile.inc Sat Apr 21 16:27:50 2012 (r234548) @@ -26,7 +26,7 @@ CSTD?= gnu89 CFLAGS+= -DCROSS_COMPILE .endif -.if ${TARGET_ARCH} == "armeb" +.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" CFLAGS += -DTARGET_ENDIAN_DEFAULT=MASK_BIG_END .endif Modified: user/imp/extern_cc/gnu/usr.bin/cc/Makefile.tgt ============================================================================== --- user/imp/extern_cc/gnu/usr.bin/cc/Makefile.tgt Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/gnu/usr.bin/cc/Makefile.tgt Sat Apr 21 16:27:50 2012 (r234548) @@ -4,7 +4,7 @@ # MACHINE_CPUARCH, but there's no easy way to export make functions... .if defined(TARGET_ARCH) -TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/:C/powerpc64/powerpc/} +TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/} .else TARGET_CPUARCH=${MACHINE_CPUARCH} .endif @@ -17,7 +17,7 @@ TARGET_CPU_DEFAULT= MASK_GNU_AS|MASK_GNU .if ${TARGET_ARCH} == "sparc64" TARGET_CPU_DEFAULT= TARGET_CPU_ultrasparc .endif -.if ${TARGET_ARCH} == "armeb" || \ +.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" || \ (${TARGET_CPUARCH} == "mips" && ${TARGET_ARCH:Mmips*el} == "") TARGET_BIG_ENDIAN=t .endif Modified: user/imp/extern_cc/gnu/usr.bin/gdb/Makefile.inc ============================================================================== --- user/imp/extern_cc/gnu/usr.bin/gdb/Makefile.inc Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/gnu/usr.bin/gdb/Makefile.inc Sat Apr 21 16:27:50 2012 (r234548) @@ -20,7 +20,7 @@ OBJ_GDB= ${OBJ_ROOT}/gdb # MACHINE_CPUARCH, but there's no easy way to export make functions... .if defined(TARGET_ARCH) -TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/:C/powerpc64/powerpc/} +TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/} .else TARGET_CPUARCH=${MACHINE_CPUARCH} .endif Modified: user/imp/extern_cc/share/mk/bsd.endian.mk ============================================================================== --- user/imp/extern_cc/share/mk/bsd.endian.mk Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/share/mk/bsd.endian.mk Sat Apr 21 16:27:50 2012 (r234548) @@ -4,12 +4,14 @@ ${MACHINE_ARCH} == "i386" || \ ${MACHINE_ARCH} == "ia64" || \ ${MACHINE_ARCH} == "arm" || \ + ${MACHINE_ARCH} == "armv6" || \ ${MACHINE_ARCH:Mmips*el} != "" TARGET_ENDIANNESS= 1234 .elif ${MACHINE_ARCH} == "powerpc" || \ ${MACHINE_ARCH} == "powerpc64" || \ ${MACHINE_ARCH} == "sparc64" || \ ${MACHINE_ARCH} == "armeb" || \ + ${MACHINE_ARCH} == "armv6eb" || \ ${MACHINE_ARCH:Mmips*} != "" TARGET_ENDIANNESS= 4321 .endif Modified: user/imp/extern_cc/share/mk/sys.mk ============================================================================== --- user/imp/extern_cc/share/mk/sys.mk Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/share/mk/sys.mk Sat Apr 21 16:27:50 2012 (r234548) @@ -13,7 +13,7 @@ unix ?= We run FreeBSD, not UNIX. # and/or endian. This is called MACHINE_CPU in NetBSD, but that's used # for something different in FreeBSD. # -MACHINE_CPUARCH=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/:C/powerpc64/powerpc/} +MACHINE_CPUARCH=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/} .endif # If the special target .POSIX appears (without prerequisites or @@ -31,23 +31,23 @@ MACHINE_CPUARCH=${MACHINE_ARCH:C/mips(n3 .SUFFIXES: .out .a .ln .o .c .cc .cpp .cxx .C .m .F .f .e .r .y .l .S .asm .s .cl .p .h .sh .endif -AR ?= ar +AR ?= ${__X}ar .if defined(%POSIX) ARFLAGS ?= -rv .else ARFLAGS ?= rl .endif -RANLIB ?= ranlib +RANLIB ?= ${__X}ranlib -AS ?= as +AS ?= ${__X}as AFLAGS ?= ACFLAGS ?= .if defined(%POSIX) -CC ?= c89 +CC ?= ${__X}c89 CFLAGS ?= -O .else -CC ?= cc +CC ?= ${__X}cc .if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "mips" CFLAGS ?= -O -pipe .else @@ -73,11 +73,11 @@ CTFFLAGS += -g #CFLAGS += -g .endif -CXX ?= c++ +CXX ?= ${__X}c++ CXXFLAGS ?= ${CFLAGS:N-std=*:N-Wnested-externs:N-W*-prototypes:N-Wno-pointer-sign:N-Wold-style-definition} PO_CXXFLAGS ?= ${CXXFLAGS} -CPP ?= cpp +CPP ?= ${__X}cpp .if empty(.MAKEFLAGS:M-s) ECHO ?= echo @@ -111,7 +111,7 @@ INSTALL ?= install LEX ?= lex LFLAGS ?= -LD ?= ld +LD ?= ${__X}ld LDFLAGS ?= LINT ?= lint @@ -123,6 +123,10 @@ LINTLIBFLAGS ?= -cghapbxu -C ${LIB} MAKE ?= make +.if !defined(%POSIX) +NM ?= ${__X}nm +.endif + OBJC ?= cc OBJCFLAGS ?= ${OBJCINCLUDES} ${CFLAGS} -Wno-import Modified: user/imp/extern_cc/sys/conf/kern.pre.mk ============================================================================== --- user/imp/extern_cc/sys/conf/kern.pre.mk Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/sys/conf/kern.pre.mk Sat Apr 21 16:27:50 2012 (r234548) @@ -6,7 +6,7 @@ .include <bsd.own.mk> # backwards compat option for older systems. -MACHINE_CPUARCH?=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/:C/powerpc64/powerpc/} +MACHINE_CPUARCH?=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/} # Can be overridden by makeoptions or /etc/make.conf KERNEL_KO?= kernel @@ -19,9 +19,9 @@ M= ${MACHINE_CPUARCH} AWK?= awk LINT?= lint -NM?= nm -OBJCOPY?= objcopy -SIZE?= size +NM?= ${__X}nm +OBJCOPY?= ${__X}objcopy +SIZE?= ${__X}size .if defined(DEBUG) _MINUS_O= -O Modified: user/imp/extern_cc/sys/conf/kmod.mk ============================================================================== --- user/imp/extern_cc/sys/conf/kmod.mk Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/sys/conf/kmod.mk Sat Apr 21 16:27:50 2012 (r234548) @@ -61,7 +61,7 @@ # # backwards compat option for older systems. -MACHINE_CPUARCH?=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/:C/powerpc64/powerpc/} +MACHINE_CPUARCH?=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/} AWK?= awk KMODLOAD?= /sbin/kldload Modified: user/imp/extern_cc/usr.bin/xlint/Makefile.inc ============================================================================== --- user/imp/extern_cc/usr.bin/xlint/Makefile.inc Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/usr.bin/xlint/Makefile.inc Sat Apr 21 16:27:50 2012 (r234548) @@ -8,7 +8,7 @@ WARNS?= 0 # These assignments duplicate much of the functionality of # MACHINE_CPUARCH, but there's no easy way to export make functions... .if defined(TARGET_ARCH) -TARGET_CPUARCH= ${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/} +TARGET_CPUARCH= ${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/} .else TARGET_CPUARCH= ${MACHINE_CPUARCH} TARGET_ARCH= ${MACHINE_ARCH} Modified: user/imp/extern_cc/usr.sbin/crunch/crunchgen/crunchgen.c ============================================================================== --- user/imp/extern_cc/usr.sbin/crunch/crunchgen/crunchgen.c Sat Apr 21 16:07:11 2012 (r234547) +++ user/imp/extern_cc/usr.sbin/crunch/crunchgen/crunchgen.c Sat Apr 21 16:27:50 2012 (r234548) @@ -1078,7 +1078,7 @@ void prog_makefile_rules(FILE *outmk, pr fprintf(outmk, " $(%s_LIBS)", p->ident); fprintf(outmk, "\n"); - fprintf(outmk, "\tld -dc -r -o %s.lo %s_stub.o $(%s_OBJPATHS)", + fprintf(outmk, "\t${LD} -dc -r -o %s.lo %s_stub.o $(%s_OBJPATHS)", p->name, p->name, p->ident); if (p->libs) fprintf(outmk, " $(%s_LIBS)", p->ident);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201204211627.q3LGRp5X095740>