[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit

Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/cap/zx297520v3/sources/poky/meta/classes/image-prelink.bbclass b/cap/zx297520v3/sources/poky/meta/classes/image-prelink.bbclass
new file mode 100644
index 0000000..ebf6e6d
--- /dev/null
+++ b/cap/zx297520v3/sources/poky/meta/classes/image-prelink.bbclass
@@ -0,0 +1,81 @@
+do_rootfs[depends] += "prelink-native:do_populate_sysroot"
+
+IMAGE_PREPROCESS_COMMAND_append_libc-glibc = " prelink_setup; prelink_image; "
+
+python prelink_setup () {
+    oe.utils.write_ld_so_conf(d)
+}
+
+inherit linuxloader
+
+prelink_image () {
+#	export PSEUDO_DEBUG=4
+#	/bin/env | /bin/grep PSEUDO
+#	echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
+#	echo "LD_PRELOAD=$LD_PRELOAD"
+
+	pre_prelink_size=`du -ks ${IMAGE_ROOTFS} | awk '{size = $1 ; print size }'`
+	echo "Size before prelinking $pre_prelink_size."
+
+	# The filesystem may not contain sysconfdir so establish what is present
+	# to enable cleanup after temporary creation of sysconfdir if needed
+	presentdir="${IMAGE_ROOTFS}${sysconfdir}"
+	while [ "${IMAGE_ROOTFS}" != "${presentdir}" ] ; do
+		[ ! -d "${presentdir}" ] || break
+		presentdir=`dirname "${presentdir}"`
+	done
+
+	mkdir -p "${IMAGE_ROOTFS}${sysconfdir}"
+
+	# We need a prelink conf on the filesystem, add one if it's missing
+	if [ ! -e ${IMAGE_ROOTFS}${sysconfdir}/prelink.conf ]; then
+		cp ${STAGING_ETCDIR_NATIVE}/prelink.conf \
+			${IMAGE_ROOTFS}${sysconfdir}/prelink.conf
+		dummy_prelink_conf=true;
+	else
+		dummy_prelink_conf=false;
+	fi
+
+	# We need a ld.so.conf with pathnames in,prelink conf on the filesystem, add one if it's missing
+	ldsoconf=${IMAGE_ROOTFS}${sysconfdir}/ld.so.conf
+	if [ -e $ldsoconf ]; then
+		cp $ldsoconf $ldsoconf.prelink
+	fi
+	cat ${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf >> $ldsoconf
+
+	dynamic_loader=${@get_linuxloader(d)}
+
+	# prelink!
+	if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
+		bbnote " prelink: BUILD_REPRODUCIBLE_BINARIES..."
+		if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then
+			export PRELINK_TIMESTAMP=`git log -1 --pretty=%ct `
+		else
+			export PRELINK_TIMESTAMP=$REPRODUCIBLE_TIMESTAMP_ROOTFS
+		fi
+		${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -am -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader
+	else
+		${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -amR -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader
+	fi
+
+	# Remove the prelink.conf if we had to add it.
+	if [ "$dummy_prelink_conf" = "true" ]; then
+		rm -f ${IMAGE_ROOTFS}${sysconfdir}/prelink.conf
+	fi
+
+	if [ -e $ldsoconf.prelink ]; then
+		mv $ldsoconf.prelink $ldsoconf
+	else
+		rm $ldsoconf
+	fi
+
+	# Remove any directories temporarily created for sysconfdir
+	cleanupdir="${IMAGE_ROOTFS}${sysconfdir}"
+	while [ "${presentdir}" != "${cleanupdir}" ] ; do
+		rmdir "${cleanupdir}"
+		cleanupdir=`dirname ${cleanupdir}`
+	done
+
+	pre_prelink_size=`du -ks ${IMAGE_ROOTFS} | awk '{size = $1 ; print size }'`
+	echo "Size after prelinking $pre_prelink_size."
+}