Mail Archives: djgpp/2015/05/23/09:10:28
--001a113f7e1c72d1c30516bf7f27
Content-Type: text/plain; charset=UTF-8
Updated patch for zoneinfo build system follows (also attached
as a patch file.) Bulid tested using 2.03 and 2.05 cross toolchains,
also successfully built under winxp using gcc-2.95 and djgpp-2.03
based environment. If no objections, I plan to apply this tomorrow.
* build tz binaries against source-tree, not against toolchain:
- zic: define as dos-zic.exe or host-zic.exe depending on cross
or native build.
- host-zic: place in $(TOPDIR)/hostbin like other utils.
- HOST_ZIC: new var for 'host-zic' for cross-builds.
- HOST_ZIC: do not build if cross-compiling, copy over target-
zic.exe to hostbin/ instead.
- LIBGCCA, DJGPP_DJL: copied defitinions from src/makefile.inc.
- CFLAGS: add -nostdinc -I$(TOPDIR)/include
- GCCFLAGS: (kept intact)
- zdump.exe, zic.exe, date.exe: change rules to link against
freshly built crt0.o and libc.a.
- date.exe: remove logwtmpl.a building, because it was linking
to locally built logwtmpl.a and logwtmp.o is simply an empty
object for dos-targeting builds.
- debug flags: made them to work old compilers too, and cleaned
and tidied a bit.
Index: zoneinfo/src/makefile
===================================================================
RCS file: /cvs/djgpp/djgpp/zoneinfo/src/makefile,v
retrieving revision 1.16
diff -u -r1.16 makefile
--- zoneinfo/src/makefile 26 Nov 2013 18:08:51 -0000 1.16
+++ zoneinfo/src/makefile 23 May 2015 12:55:50 -0000
@@ -87,6 +87,27 @@
CROSS_GCC_MAJOR := $(word 3, $(shell ../../src/misc.exe |
$(CROSS_GCC) -E -dD -x c - | egrep 'define\ *__GNUC__'))
CROSS_GCC_MINOR := $(word 3, $(shell ../../src/misc.exe |
$(CROSS_GCC) -E -dD -x c - | egrep 'define\ *__GNUC_MINOR__'))
+# very old gcc, e.g. gcc-2.95, fails the above, so we invent a default.
+ifeq ($(GCC_MAJOR),)
+GCC_MAJOR := 2
+GCC_MINOR := 7
+endif
+ifeq ($(CROSS_GCC_MAJOR),)
+CROSS_GCC_MAJOR := 2
+CROSS_GCC_MINOR := 7
+endif
+
+ifeq ($(LIBGCCA),)
+LIBGCCA := $(shell $(CROSS_GCC) $(GCC_OPT) -print-file-name=libgcc.a)
+LIBGCCA := $(subst \,/,$(LIBGCCA))
+export LIBGCCA
+endif
+
+ifeq ($(DJGPP_DJL),)
+DJGPP_DJL = $(TOPDIR)/lib/djgpp.djl
+#export DJGPP_DJL
+endif
+
# A replacement for (possibly missing) Unix programs:
UTIL= $(TOPDIR)/src/misc.exe
@@ -162,97 +183,48 @@
# -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wtrampolines \
# -Wwrite-strings
+COMMON_DEBUG_FLAGS = -Dlint -g -fno-common -fstrict-aliasing \
+ -Wall -W -Wcast-align -Wcast-qual -Wpointer-arith \
+ -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes \
+ -Wnested-externs -Wshadow -Wwrite-strings
+
# Cross compiler debug flags.
-CROSS_GCC_DEBUG_FLAGS_FOR_ALL = -Dlint -g2 -fno-common -fstrict-aliasing \
- -Wall -Wextra \
- -Wbad-function-cast -Wcast-align -Wcast-qual \
- -Wformat=2 -Winit-self \
- -Wmissing-declarations -Wmissing-noreturn -Wmissing-prototypes \
- -Wnested-externs -Wno-format-nonliteral -Wno-sign-compare \
- -Wno-unused-parameter -Wpointer-arith -Wshadow -Wstrict-prototypes \
- -Wwrite-strings
-
-ifeq ($(CROSS_GCC_MAJOR),3)
-ifeq ($(CROSS_GCC_MINOR),4)
-CROSS_GCC_DEBUG_FLAGS = $(CROSS_GCC_DEBUG_FLAGS_FOR_ALL) -Wconversion
-Wtraditional
+ifeq ($(filter 2,$(CROSS_GCC_MAJOR)),)
+# gcc >= 3.x
+CROSS_GCC3_DFLAGS = -Wbad-function-cast -Wno-sign-compare -Wno-unused-parameter
+ifeq ($(filter 3,$(CROSS_GCC_MAJOR)),)
+ifeq ($(filter 4,$(CROSS_GCC_MAJOR)),)
+# gcc >= 5.x
+CROSS_GCC4_DFLAGS = -Wno-type-limits
+else
+# gcc >= 4.x
+ifeq ($(filter 0 1 2,$(CROSS_GCC_MINOR)),)
+# gcc >= 4.3
+CROSS_GCC4_DFLAGS = -Wno-type-limits
+endif
endif
endif
-
-ifeq ($(CROSS_GCC_MAJOR),4)
- ifeq ($(CROSS_GCC_MINOR),0)
-CROSS_GCC_DEBUG_FLAGS_SPECIAL =
- else
- ifeq ($(CROSS_GCC_MINOR),1)
-CROSS_GCC_DEBUG_FLAGS_SPECIAL =
- else
- ifeq ($(CROSS_GCC_MINOR),2)
-CROSS_GCC_DEBUG_FLAGS_SPECIAL = -Woverlength-strings
- else
- ifeq ($(CROSS_GCC_MINOR),3)
-CROSS_GCC_DEBUG_FLAGS_SPECIAL = -Woverlength-strings
-Wno-sign-conversion -Wno-type-limits
- else
- ifeq ($(CROSS_GCC_MINOR),4)
-CROSS_GCC_DEBUG_FLAGS_SPECIAL = -Woverlength-strings
-Wno-sign-conversion -Wno-type-limits
- else
- ifeq ($(CROSS_GCC_MINOR),5)
-CROSS_GCC_DEBUG_FLAGS_SPECIAL = -Woverlength-strings
-Wno-sign-conversion -Wno-type-limits
- else
-# gcc 4.6 and later works.
-CROSS_GCC_DEBUG_FLAGS_SPECIAL = -Woverlength-strings
-Wno-sign-conversion -Wno-type-limits -Wsuggest-attribute=const
-Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wtrampolines
- endif
- endif
- endif
- endif
- endif
-CROSS_GCC_DEBUG_FLAGS = $(CROSS_GCC_DEBUG_FLAGS_FOR_ALL)
$(CROSS_GCC_DEBUG_FLAGS_SPECIAL)
- endif
endif
+CROSS_GCC_DEBUG_FLAGS = $(COMMON_DEBUG_FLAGS) $(CROSS_GCC3_DFLAGS)
$(CROSS_GCC4_DFLAGS)
# Native compiler debug flags.
-GCC_DEBUG_FLAGS_FOR_ALL = -Dlint -g2 -fno-common -fstrict-aliasing \
- -Wall -Wextra \
- -Wbad-function-cast -Wcast-align -Wcast-qual \
- -Wformat=2 -Winit-self \
- -Wmissing-declarations -Wmissing-noreturn -Wmissing-prototypes \
- -Wnested-externs -Wno-format-nonliteral -Wno-sign-compare \
- -Wno-unused-parameter -Wpointer-arith -Wshadow -Wstrict-prototypes \
- -Wwrite-strings
-
-ifeq ($(GCC_MAJOR),3)
-ifeq ($(GCC_MINOR),4)
-GCC_DEBUG_FLAGS = $(GCC_DEBUG_FLAGS_FOR_ALL) -Wconversion -Wtraditional
+ifeq ($(filter 2,$(GCC_MAJOR)),)
+# gcc >= 3.x
+GCC3_DEBUG_FLAGS = -Wbad-function-cast -Wno-sign-compare -Wno-unused-parameter
+ifeq ($(filter 3,$(GCC_MAJOR)),)
+ifeq ($(filter 4,$(GCC_MAJOR)),)
+# gcc >= 5.x
+GCC4_DEBUG_FLAGS = -Wno-type-limits
+else
+# gcc >= 4.x
+ifeq ($(filter 0 1 2,$(GCC_MINOR)),)
+# gcc >= 4.3
+GCC4_DEBUG_FLAGS = -Wno-type-limits
+endif
endif
endif
-
-ifeq ($(GCC_MAJOR),4)
- ifeq ($(GCC_MINOR),0)
-GCC_DEBUG_FLAGS_SPECIAL =
- else
- ifeq ($(GCC_MINOR),1)
-GCC_DEBUG_FLAGS_SPECIAL =
- else
- ifeq ($(GCC_MINOR),2)
-GCC_DEBUG_FLAGS_SPECIAL = -Woverlength-strings
- else
- ifeq ($(GCC_MINOR),3)
-GCC_DEBUG_FLAGS_SPECIAL = -Woverlength-strings -Wno-sign-conversion
-Wno-type-limits
- else
- ifeq ($(GCC_MINOR),4)
-GCC_DEBUG_FLAGS_SPECIAL = -Woverlength-strings -Wno-sign-conversion
-Wno-type-limits
- else
- ifeq ($(GCC_MINOR),5)
-GCC_DEBUG_FLAGS_SPECIAL = -Woverlength-strings -Wno-sign-conversion
-Wno-type-limits
- else
-# gcc 4.6 and later works.
-GCC_DEBUG_FLAGS_SPECIAL = -Woverlength-strings -Wno-sign-conversion
-Wno-type-limits -Wsuggest-attribute=const
-Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wtrampolines
- endif
- endif
- endif
- endif
- endif
-GCC_DEBUG_FLAGS = $(GCC_DEBUG_FLAGS_FOR_ALL) $(GCC_DEBUG_FLAGS_SPECIAL)
- endif
endif
+GCC_DEBUG_FLAGS = $(COMMON_DEBUG_FLAGS) $(GCC3_DEBUG_FLAGS) $(GCC4_DEBUG_FLAGS)
#
# If you want to use System V compatibility code, add
@@ -349,7 +321,7 @@
-DHAVE_STRERROR=1 -DHAVE_SYMLINK=0 -DHAVE_STDINT_H=1\
-DSTD_INSPIRED \
-DLOCALE_HOME=\"/dev/env/DJDIR~c:/djgpp~/share/locale\" \
- $(CROSS_GCC_DEBUG_FLAGS) -O2
+ $(CROSS_GCC_DEBUG_FLAGS) -O2 -nostdinc -I$(TOPDIR)/include
# Flags for native compiler
GCCFLAGS= -DHAVE_ADJTIME=0 -DHAVE_LONG_DOUBLE=1 -DHAVE_SETTIMEOFDAY=1 \
@@ -368,7 +340,12 @@
LDFLAGS= $(LFLAGS)
EXEEXT= .exe
-zic= ./host-zic
+HOST_ZIC= $(TOPDIR)/hostbin/zic$(EXEEXT)
+ifeq ($(CROSS_BUILD),1)
+zic= $(HOST_ZIC)
+else
+zic= zic$(EXEEXT)
+endif
ZIC= $(zic) $(ZFLAGS)
# The name of a Posix-compliant `awk' on your system.
@@ -508,7 +485,7 @@
$(UTIL) cp zdump.man $(MANDIR)/cat8/zdump.8
$(UTIL) cp zic.man $(MANDIR)/cat8/zic.8
-all: tzselect host-zic zic$(EXEEXT) zdump$(EXEEXT) $(LIBOBJS)
+all: tzselect $(HOST_ZIC) zic$(EXEEXT) zdump$(EXEEXT) $(LIBOBJS)
ALL: all date$(EXEEXT)
@@ -517,18 +494,23 @@
echo 'static char const TZVERSION[]="$(VERSION)";' && \
echo 'static char const REPORT_BUGS_TO[]="$(BUGEMAIL)";') >$@
-zdump$(EXEEXT): $(TZDOBJS)
- $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(TZDOBJS) $(LDLIBS)
- $(CROSS_STRIP) $@
-
-host-zic: $(TZCSRCS) yearistype version.h
+zdump$(EXEEXT): $(TZDOBJS) $(TOPDIR)/lib/crt0.o $(TOPDIR)/lib/libc.a
+ $(CROSS_LD) -s $(LDFLAGS) $(TOPDIR)/lib/crt0.o $(TZDOBJS) -o $@
$(TOPDIR)/lib/libc.a $(LIBGCCA) -T $(DJGPP_DJL)
+ $(TOPDIR)/hostbin/stubify.exe $@
+
+ifneq ($(CROSS_BUILD),1)
+$(HOST_ZIC): zic$(EXEEXT)
+ $(UTIL) cp zic$(EXEEXT) $(HOST_ZIC)
+else
+$(HOST_ZIC): $(TZCSRCS) yearistype version.h
$(GCC) -DTZDIR=\"/dev/env/DJDIR~c:/djgpp~/zoneinfo\" \
$(GCCFLAGS) $(LDFLAGS) $(TZCSRCS) $(LDLIBS) -o $@
$(STRIP) $@
+endif
-zic$(EXEEXT): $(TZCOBJS) yearistype
- $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(TZCOBJS) $(LDLIBS)
- $(CROSS_STRIP) $@
+zic$(EXEEXT): $(TZCOBJS) $(TOPDIR)/lib/crt0.o $(TOPDIR)/lib/libc.a yearistype
+ $(CROSS_LD) -s $(LDFLAGS) $(TOPDIR)/lib/crt0.o $(TZCOBJS) -o $@
$(TOPDIR)/lib/libc.a $(LIBGCCA) -T $(DJGPP_DJL)
+ $(TOPDIR)/hostbin/stubify.exe $@
yearistype: yearistype.sh
$(UTIL) cp yearistype.sh yearistype
@@ -578,15 +560,9 @@
-$(UTIL) mkdir $(LIBDIR)
$(CROSS_AR) rus $@ $(LIBOBJS)
-# We use the system's logwtmp in preference to ours if available.
-
-date$(EXEEXT): $(DATEOBJS)
- $(CROSS_AR) rs logwtmpl.a logwtmp.o
- $(CC) $(CFLAGS) date.o localtime.o asctime.o strftime.o \
- $(LDLIBS) -lc logwtmpl.a -o $@
- $(CROSS_STRIP) $@
- $(UTIL) rm logwtmpl.a
- $(CROSS_STRIP) $@
+date$(EXEEXT): $(DATEOBJS) $(TOPDIR)/lib/crt0.o $(TOPDIR)/lib/libc.a
+ $(CROSS_LD) -s $(LDFLAGS) $(TOPDIR)/lib/crt0.o $(DATEOBJS) -o $@
$(TOPDIR)/lib/libc.a $(LIBGCCA) -T $(DJGPP_DJL)
+ $(TOPDIR)/hostbin/stubify.exe $@
tzselect: tzselect.ksh
sed \
@@ -611,7 +587,7 @@
clean_misc:
$(UTIL) rm core *.o *.out tzselect zdump$(EXEEXT) zic$(EXEEXT) \
- yearistype date$(EXEEXT) logwtmpl* *.tar.gz host-zic *.exe *.man \
+ yearistype date$(EXEEXT) logwtmpl* *.tar.gz $(HOST_ZIC) *.exe *.man \
TDATA_list
clean: clean_misc
$(UTIL) rm -f -r tzpublic
--
O.S.
--001a113f7e1c72d1c30516bf7f27
Content-Type: text/plain; charset=US-ASCII; name="z4.diff"
Content-Disposition: attachment; filename="z4.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: file0
KiBidWlsZCB0eiBiaW5hcmllcyBhZ2FpbnN0IHNvdXJjZS10cmVlLCBub3QgYWdhaW5zdCB0b29s
Y2hhaW46Ci0gemljOiBkZWZpbmUgYXMgZG9zLXppYy5leGUgb3IgaG9zdC16aWMuZXhlIGRlcGVu
ZGluZyBvbiBjcm9zcwogIG9yIG5hdGl2ZSBidWlsZC4KLSBob3N0LXppYzogcGxhY2UgaW4gJChU
T1BESVIpL2hvc3RiaW4gbGlrZSBvdGhlciB1dGlscy4KLSBIT1NUX1pJQzogbmV3IHZhciBmb3Ig
J2hvc3QtemljJyBmb3IgY3Jvc3MtYnVpbGRzLgotIEhPU1RfWklDOiBkbyBub3QgYnVpbGQgaWYg
Y3Jvc3MtY29tcGlsaW5nLCBjb3B5IG92ZXIgdGFyZ2V0LQogIHppYy5leGUgdG8gaG9zdGJpbi8g
aW5zdGVhZC4KLSBMSUJHQ0NBLCBESkdQUF9ESkw6IGNvcGllZCBkZWZpdGluaW9ucyBmcm9tIHNy
Yy9tYWtlZmlsZS5pbmMuCi0gQ0ZMQUdTOiBhZGQgLW5vc3RkaW5jIC1JJChUT1BESVIpL2luY2x1
ZGUKLSBHQ0NGTEFHUzogKGtlcHQgaW50YWN0KQotIHpkdW1wLmV4ZSwgemljLmV4ZSwgZGF0ZS5l
eGU6IGNoYW5nZSBydWxlcyB0byBsaW5rIGFnYWluc3QKICBmcmVzaGx5IGJ1aWx0IGNydDAubyBh
bmQgbGliYy5hLgotIGRhdGUuZXhlOiByZW1vdmUgbG9nd3RtcGwuYSBidWlsZGluZywgYmVjYXVz
ZSBpdCB3YXMgbGlua2luZwogIHRvIGxvY2FsbHkgYnVpbHQgbG9nd3RtcGwuYSBhbmQgbG9nd3Rt
cC5vIGlzIHNpbXBseSBhbiBlbXB0eQogIG9iamVjdCBmb3IgZG9zLXRhcmdldGluZyBidWlsZHMu
Ci0gZGVidWcgZmxhZ3M6IG1hZGUgdGhlbSB0byB3b3JrIG9sZCBjb21waWxlcnMgdG9vLCBhbmQg
Y2xlYW5lZAogIGFuZCB0aWRpZWQgYSBiaXQuCgpJbmRleDogem9uZWluZm8vc3JjL21ha2VmaWxl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZGpncHAvZGpncHAvem9uZWluZm8vc3JjL21ha2Vm
aWxlLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE2CmRpZmYgLXUgLXIxLjE2IG1ha2VmaWxlCi0t
LSB6b25laW5mby9zcmMvbWFrZWZpbGUJMjYgTm92IDIwMTMgMTg6MDg6NTEgLTAwMDAJMS4xNgor
Kysgem9uZWluZm8vc3JjL21ha2VmaWxlCTIzIE1heSAyMDE1IDEyOjU1OjUwIC0wMDAwCkBAIC04
Nyw2ICs4NywyNyBAQAogQ1JPU1NfR0NDX01BSk9SIDo9ICQod29yZCAzLCAkKHNoZWxsIC4uLy4u
L3NyYy9taXNjLmV4ZSB8ICQoQ1JPU1NfR0NDKSAtRSAtZEQgLXggYyAtIHwgZWdyZXAgJ2RlZmlu
ZVwgKl9fR05VQ19fJykpCiBDUk9TU19HQ0NfTUlOT1IgOj0gJCh3b3JkIDMsICQoc2hlbGwgLi4v
Li4vc3JjL21pc2MuZXhlIHwgJChDUk9TU19HQ0MpIC1FIC1kRCAteCBjIC0gfCBlZ3JlcCAnZGVm
aW5lXCAqX19HTlVDX01JTk9SX18nKSkKIAorIyB2ZXJ5IG9sZCBnY2MsIGUuZy4gZ2NjLTIuOTUs
IGZhaWxzIHRoZSBhYm92ZSwgc28gd2UgaW52ZW50IGEgZGVmYXVsdC4KK2lmZXEgKCQoR0NDX01B
Sk9SKSwpCitHQ0NfTUFKT1IgOj0gMgorR0NDX01JTk9SIDo9IDcKK2VuZGlmCitpZmVxICgkKENS
T1NTX0dDQ19NQUpPUiksKQorQ1JPU1NfR0NDX01BSk9SIDo9IDIKK0NST1NTX0dDQ19NSU5PUiA6
PSA3CitlbmRpZgorCitpZmVxICgkKExJQkdDQ0EpLCkKK0xJQkdDQ0EgOj0gJChzaGVsbCAkKENS
T1NTX0dDQykgJChHQ0NfT1BUKSAtcHJpbnQtZmlsZS1uYW1lPWxpYmdjYy5hKQorTElCR0NDQSA6
PSAkKHN1YnN0IFwsLywkKExJQkdDQ0EpKQorZXhwb3J0IExJQkdDQ0EKK2VuZGlmCisKK2lmZXEg
KCQoREpHUFBfREpMKSwpCitESkdQUF9ESkwgPSAkKFRPUERJUikvbGliL2RqZ3BwLmRqbAorI2V4
cG9ydCBESkdQUF9ESkwKK2VuZGlmCisKICMgQSByZXBsYWNlbWVudCBmb3IgKHBvc3NpYmx5IG1p
c3NpbmcpIFVuaXggcHJvZ3JhbXM6CiAKIFVUSUw9CQkkKFRPUERJUikvc3JjL21pc2MuZXhlCkBA
IC0xNjIsOTcgKzE4Myw0OCBAQAogIwktV3N1Z2dlc3QtYXR0cmlidXRlPW5vcmV0dXJuIC1Xc3Vn
Z2VzdC1hdHRyaWJ1dGU9cHVyZSAtV3RyYW1wb2xpbmVzIFwKICMJLVd3cml0ZS1zdHJpbmdzCiAK
K0NPTU1PTl9ERUJVR19GTEFHUyA9IC1EbGludCAtZyAtZm5vLWNvbW1vbiAtZnN0cmljdC1hbGlh
c2luZyBcCisJLVdhbGwgLVcgLVdjYXN0LWFsaWduIC1XY2FzdC1xdWFsIC1XcG9pbnRlci1hcml0
aCBcCisJLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyAtV21pc3NpbmctcHJvdG90eXBlcyAtV3N0cmlj
dC1wcm90b3R5cGVzIFwKKwktV25lc3RlZC1leHRlcm5zIC1Xc2hhZG93IC1Xd3JpdGUtc3RyaW5n
cworCiAjIENyb3NzIGNvbXBpbGVyIGRlYnVnIGZsYWdzLgotQ1JPU1NfR0NDX0RFQlVHX0ZMQUdT
X0ZPUl9BTEwgPSAtRGxpbnQgLWcyIC1mbm8tY29tbW9uIC1mc3RyaWN0LWFsaWFzaW5nIFwKLQkt
V2FsbCAtV2V4dHJhIFwKLQktV2JhZC1mdW5jdGlvbi1jYXN0IC1XY2FzdC1hbGlnbiAtV2Nhc3Qt
cXVhbCBcCi0JLVdmb3JtYXQ9MiAtV2luaXQtc2VsZiBcCi0JLVdtaXNzaW5nLWRlY2xhcmF0aW9u
cyAtV21pc3Npbmctbm9yZXR1cm4gLVdtaXNzaW5nLXByb3RvdHlwZXMgXAotCS1XbmVzdGVkLWV4
dGVybnMgLVduby1mb3JtYXQtbm9ubGl0ZXJhbCAtV25vLXNpZ24tY29tcGFyZSBcCi0JLVduby11
bnVzZWQtcGFyYW1ldGVyICAtV3BvaW50ZXItYXJpdGggLVdzaGFkb3cgLVdzdHJpY3QtcHJvdG90
eXBlcyBcCi0JLVd3cml0ZS1zdHJpbmdzCi0KLWlmZXEgKCQoQ1JPU1NfR0NDX01BSk9SKSwzKQot
aWZlcSAoJChDUk9TU19HQ0NfTUlOT1IpLDQpCi1DUk9TU19HQ0NfREVCVUdfRkxBR1MgPSAkKENS
T1NTX0dDQ19ERUJVR19GTEFHU19GT1JfQUxMKSAtV2NvbnZlcnNpb24gLVd0cmFkaXRpb25hbAor
aWZlcSAoJChmaWx0ZXIgMiwkKENST1NTX0dDQ19NQUpPUikpLCkKKyMgZ2NjID49IDMueAorQ1JP
U1NfR0NDM19ERkxBR1MgPSAtV2JhZC1mdW5jdGlvbi1jYXN0IC1Xbm8tc2lnbi1jb21wYXJlIC1X
bm8tdW51c2VkLXBhcmFtZXRlcgoraWZlcSAoJChmaWx0ZXIgMywkKENST1NTX0dDQ19NQUpPUikp
LCkKK2lmZXEgKCQoZmlsdGVyIDQsJChDUk9TU19HQ0NfTUFKT1IpKSwpCisjIGdjYyA+PSA1LngK
K0NST1NTX0dDQzRfREZMQUdTID0gLVduby10eXBlLWxpbWl0cworZWxzZQorIyBnY2MgPj0gNC54
CitpZmVxICgkKGZpbHRlciAwIDEgMiwkKENST1NTX0dDQ19NSU5PUikpLCkKKyMgZ2NjID49IDQu
MworQ1JPU1NfR0NDNF9ERkxBR1MgPSAtV25vLXR5cGUtbGltaXRzCitlbmRpZgogZW5kaWYKIGVu
ZGlmCi0KLWlmZXEgKCQoQ1JPU1NfR0NDX01BSk9SKSw0KQotIGlmZXEgKCQoQ1JPU1NfR0NDX01J
Tk9SKSwwKQotQ1JPU1NfR0NDX0RFQlVHX0ZMQUdTX1NQRUNJQUwgPSAKLSBlbHNlCi0gIGlmZXEg
KCQoQ1JPU1NfR0NDX01JTk9SKSwxKQotQ1JPU1NfR0NDX0RFQlVHX0ZMQUdTX1NQRUNJQUwgPSAK
LSAgZWxzZQotICAgaWZlcSAoJChDUk9TU19HQ0NfTUlOT1IpLDIpCi1DUk9TU19HQ0NfREVCVUdf
RkxBR1NfU1BFQ0lBTCA9IC1Xb3Zlcmxlbmd0aC1zdHJpbmdzCi0gICBlbHNlCi0gICAgaWZlcSAo
JChDUk9TU19HQ0NfTUlOT1IpLDMpCi1DUk9TU19HQ0NfREVCVUdfRkxBR1NfU1BFQ0lBTCA9IC1X
b3Zlcmxlbmd0aC1zdHJpbmdzIC1Xbm8tc2lnbi1jb252ZXJzaW9uIC1Xbm8tdHlwZS1saW1pdHMK
LSAgICBlbHNlCi0gICAgIGlmZXEgKCQoQ1JPU1NfR0NDX01JTk9SKSw0KQotQ1JPU1NfR0NDX0RF
QlVHX0ZMQUdTX1NQRUNJQUwgPSAtV292ZXJsZW5ndGgtc3RyaW5ncyAtV25vLXNpZ24tY29udmVy
c2lvbiAtV25vLXR5cGUtbGltaXRzCi0gICAgIGVsc2UKLSAgICAgIGlmZXEgKCQoQ1JPU1NfR0ND
X01JTk9SKSw1KQotQ1JPU1NfR0NDX0RFQlVHX0ZMQUdTX1NQRUNJQUwgPSAtV292ZXJsZW5ndGgt
c3RyaW5ncyAtV25vLXNpZ24tY29udmVyc2lvbiAtV25vLXR5cGUtbGltaXRzCi0gICAgICBlbHNl
Ci0jIGdjYyA0LjYgYW5kIGxhdGVyIHdvcmtzLgotQ1JPU1NfR0NDX0RFQlVHX0ZMQUdTX1NQRUNJ
QUwgPSAtV292ZXJsZW5ndGgtc3RyaW5ncyAtV25vLXNpZ24tY29udmVyc2lvbiAtV25vLXR5cGUt
bGltaXRzIC1Xc3VnZ2VzdC1hdHRyaWJ1dGU9Y29uc3QgLVdzdWdnZXN0LWF0dHJpYnV0ZT1ub3Jl
dHVybiAtV3N1Z2dlc3QtYXR0cmlidXRlPXB1cmUgLVd0cmFtcG9saW5lcwotICAgICAgZW5kaWYK
LSAgICAgZW5kaWYKLSAgICBlbmRpZgotICAgZW5kaWYKLSAgZW5kaWYKLUNST1NTX0dDQ19ERUJV
R19GTEFHUyA9ICQoQ1JPU1NfR0NDX0RFQlVHX0ZMQUdTX0ZPUl9BTEwpICQoQ1JPU1NfR0NDX0RF
QlVHX0ZMQUdTX1NQRUNJQUwpCi0gZW5kaWYKIGVuZGlmCitDUk9TU19HQ0NfREVCVUdfRkxBR1Mg
PSAkKENPTU1PTl9ERUJVR19GTEFHUykgJChDUk9TU19HQ0MzX0RGTEFHUykgJChDUk9TU19HQ0M0
X0RGTEFHUykKIAogIyBOYXRpdmUgY29tcGlsZXIgZGVidWcgZmxhZ3MuCi1HQ0NfREVCVUdfRkxB
R1NfRk9SX0FMTCA9IC1EbGludCAtZzIgLWZuby1jb21tb24gLWZzdHJpY3QtYWxpYXNpbmcgXAot
CS1XYWxsIC1XZXh0cmEgXAotCS1XYmFkLWZ1bmN0aW9uLWNhc3QgLVdjYXN0LWFsaWduIC1XY2Fz
dC1xdWFsIFwKLQktV2Zvcm1hdD0yIC1XaW5pdC1zZWxmIFwKLQktV21pc3NpbmctZGVjbGFyYXRp
b25zIC1XbWlzc2luZy1ub3JldHVybiAtV21pc3NpbmctcHJvdG90eXBlcyBcCi0JLVduZXN0ZWQt
ZXh0ZXJucyAtV25vLWZvcm1hdC1ub25saXRlcmFsIC1Xbm8tc2lnbi1jb21wYXJlIFwKLQktV25v
LXVudXNlZC1wYXJhbWV0ZXIgIC1XcG9pbnRlci1hcml0aCAtV3NoYWRvdyAtV3N0cmljdC1wcm90
b3R5cGVzIFwKLQktV3dyaXRlLXN0cmluZ3MKLQotaWZlcSAoJChHQ0NfTUFKT1IpLDMpCi1pZmVx
ICgkKEdDQ19NSU5PUiksNCkKLUdDQ19ERUJVR19GTEFHUyA9ICQoR0NDX0RFQlVHX0ZMQUdTX0ZP
Ul9BTEwpIC1XY29udmVyc2lvbiAtV3RyYWRpdGlvbmFsCitpZmVxICgkKGZpbHRlciAyLCQoR0ND
X01BSk9SKSksKQorIyBnY2MgPj0gMy54CitHQ0MzX0RFQlVHX0ZMQUdTID0gLVdiYWQtZnVuY3Rp
b24tY2FzdCAtV25vLXNpZ24tY29tcGFyZSAtV25vLXVudXNlZC1wYXJhbWV0ZXIKK2lmZXEgKCQo
ZmlsdGVyIDMsJChHQ0NfTUFKT1IpKSwpCitpZmVxICgkKGZpbHRlciA0LCQoR0NDX01BSk9SKSks
KQorIyBnY2MgPj0gNS54CitHQ0M0X0RFQlVHX0ZMQUdTID0gLVduby10eXBlLWxpbWl0cworZWxz
ZQorIyBnY2MgPj0gNC54CitpZmVxICgkKGZpbHRlciAwIDEgMiwkKEdDQ19NSU5PUikpLCkKKyMg
Z2NjID49IDQuMworR0NDNF9ERUJVR19GTEFHUyA9IC1Xbm8tdHlwZS1saW1pdHMKK2VuZGlmCiBl
bmRpZgogZW5kaWYKLQotaWZlcSAoJChHQ0NfTUFKT1IpLDQpCi0gaWZlcSAoJChHQ0NfTUlOT1Ip
LDApCi1HQ0NfREVCVUdfRkxBR1NfU1BFQ0lBTCA9IAotIGVsc2UKLSAgaWZlcSAoJChHQ0NfTUlO
T1IpLDEpCi1HQ0NfREVCVUdfRkxBR1NfU1BFQ0lBTCA9IAotICBlbHNlCi0gICBpZmVxICgkKEdD
Q19NSU5PUiksMikKLUdDQ19ERUJVR19GTEFHU19TUEVDSUFMID0gLVdvdmVybGVuZ3RoLXN0cmlu
Z3MKLSAgIGVsc2UKLSAgICBpZmVxICgkKEdDQ19NSU5PUiksMykKLUdDQ19ERUJVR19GTEFHU19T
UEVDSUFMID0gLVdvdmVybGVuZ3RoLXN0cmluZ3MgLVduby1zaWduLWNvbnZlcnNpb24gLVduby10
eXBlLWxpbWl0cwotICAgIGVsc2UKLSAgICAgaWZlcSAoJChHQ0NfTUlOT1IpLDQpCi1HQ0NfREVC
VUdfRkxBR1NfU1BFQ0lBTCA9IC1Xb3Zlcmxlbmd0aC1zdHJpbmdzIC1Xbm8tc2lnbi1jb252ZXJz
aW9uIC1Xbm8tdHlwZS1saW1pdHMKLSAgICAgZWxzZQotICAgICAgaWZlcSAoJChHQ0NfTUlOT1Ip
LDUpCi1HQ0NfREVCVUdfRkxBR1NfU1BFQ0lBTCA9IC1Xb3Zlcmxlbmd0aC1zdHJpbmdzIC1Xbm8t
c2lnbi1jb252ZXJzaW9uIC1Xbm8tdHlwZS1saW1pdHMKLSAgICAgIGVsc2UKLSMgZ2NjIDQuNiBh
bmQgbGF0ZXIgd29ya3MuCi1HQ0NfREVCVUdfRkxBR1NfU1BFQ0lBTCA9IC1Xb3Zlcmxlbmd0aC1z
dHJpbmdzIC1Xbm8tc2lnbi1jb252ZXJzaW9uIC1Xbm8tdHlwZS1saW1pdHMgLVdzdWdnZXN0LWF0
dHJpYnV0ZT1jb25zdCAtV3N1Z2dlc3QtYXR0cmlidXRlPW5vcmV0dXJuIC1Xc3VnZ2VzdC1hdHRy
aWJ1dGU9cHVyZSAtV3RyYW1wb2xpbmVzCi0gICAgICBlbmRpZgotICAgICBlbmRpZgotICAgIGVu
ZGlmCi0gICBlbmRpZgotICBlbmRpZgotR0NDX0RFQlVHX0ZMQUdTID0gJChHQ0NfREVCVUdfRkxB
R1NfRk9SX0FMTCkgJChHQ0NfREVCVUdfRkxBR1NfU1BFQ0lBTCkKLSBlbmRpZgogZW5kaWYKK0dD
Q19ERUJVR19GTEFHUyA9ICQoQ09NTU9OX0RFQlVHX0ZMQUdTKSAkKEdDQzNfREVCVUdfRkxBR1Mp
ICQoR0NDNF9ERUJVR19GTEFHUykKIAogIwogIyBJZiB5b3Ugd2FudCB0byB1c2UgU3lzdGVtIFYg
Y29tcGF0aWJpbGl0eSBjb2RlLCBhZGQKQEAgLTM0OSw3ICszMjEsNyBAQAogCQktREhBVkVfU1RS
RVJST1I9MSAtREhBVkVfU1lNTElOSz0wIC1ESEFWRV9TVERJTlRfSD0xXAogCQktRFNURF9JTlNQ
SVJFRCBcCiAJCS1ETE9DQUxFX0hPTUU9XCIvZGV2L2Vudi9ESkRJUn5jOi9kamdwcH4vc2hhcmUv
bG9jYWxlXCIgXAotCQkkKENST1NTX0dDQ19ERUJVR19GTEFHUykgLU8yCisJCSQoQ1JPU1NfR0ND
X0RFQlVHX0ZMQUdTKSAtTzIgLW5vc3RkaW5jIC1JJChUT1BESVIpL2luY2x1ZGUKIAogIyBGbGFn
cyBmb3IgbmF0aXZlIGNvbXBpbGVyCiBHQ0NGTEFHUz0JLURIQVZFX0FESlRJTUU9MCAtREhBVkVf
TE9OR19ET1VCTEU9MSAtREhBVkVfU0VUVElNRU9GREFZPTEgXApAQCAtMzY4LDcgKzM0MCwxMiBA
QAogTERGTEFHUz0JJChMRkxBR1MpCiAKIEVYRUVYVD0JCS5leGUKLXppYz0JCS4vaG9zdC16aWMK
K0hPU1RfWklDPQkkKFRPUERJUikvaG9zdGJpbi96aWMkKEVYRUVYVCkKK2lmZXEgKCQoQ1JPU1Nf
QlVJTEQpLDEpCit6aWM9CQkkKEhPU1RfWklDKQorZWxzZQoremljPQkJemljJChFWEVFWFQpCitl
bmRpZgogWklDPQkJJCh6aWMpICQoWkZMQUdTKQogCiAjIFRoZSBuYW1lIG9mIGEgUG9zaXgtY29t
cGxpYW50IGBhd2snIG9uIHlvdXIgc3lzdGVtLgpAQCAtNTA4LDcgKzQ4NSw3IEBACiAJCSQoVVRJ
TCkgY3AgemR1bXAubWFuICQoTUFORElSKS9jYXQ4L3pkdW1wLjgKIAkJJChVVElMKSBjcCB6aWMu
bWFuICQoTUFORElSKS9jYXQ4L3ppYy44CiAKLWFsbDoJCXR6c2VsZWN0IGhvc3QtemljIHppYyQo
RVhFRVhUKSB6ZHVtcCQoRVhFRVhUKSAkKExJQk9CSlMpCithbGw6CQl0enNlbGVjdCAkKEhPU1Rf
WklDKSB6aWMkKEVYRUVYVCkgemR1bXAkKEVYRUVYVCkgJChMSUJPQkpTKQogCiBBTEw6CQlhbGwg
ZGF0ZSQoRVhFRVhUKQogCkBAIC01MTcsMTggKzQ5NCwyMyBAQAogCQkgZWNobyAnc3RhdGljIGNo
YXIgY29uc3QgVFpWRVJTSU9OW109IiQoVkVSU0lPTikiOycgJiYgXAogCQkgZWNobyAnc3RhdGlj
IGNoYXIgY29uc3QgUkVQT1JUX0JVR1NfVE9bXT0iJChCVUdFTUFJTCkiOycpID4kQAogCi16ZHVt
cCQoRVhFRVhUKToJJChUWkRPQkpTKQotCQkkKENDKSAtbyAkQCAkKENGTEFHUykgJChMREZMQUdT
KSAkKFRaRE9CSlMpICQoTERMSUJTKQotCQkkKENST1NTX1NUUklQKSAkQAotCi1ob3N0LXppYzoJ
JChUWkNTUkNTKSB5ZWFyaXN0eXBlIHZlcnNpb24uaAoremR1bXAkKEVYRUVYVCk6CSQoVFpET0JK
UykgJChUT1BESVIpL2xpYi9jcnQwLm8gJChUT1BESVIpL2xpYi9saWJjLmEKKwkJJChDUk9TU19M
RCkgLXMgJChMREZMQUdTKSAkKFRPUERJUikvbGliL2NydDAubyAkKFRaRE9CSlMpIC1vICRAICQo
VE9QRElSKS9saWIvbGliYy5hICQoTElCR0NDQSkgLVQgJChESkdQUF9ESkwpCisJCSQoVE9QRElS
KS9ob3N0YmluL3N0dWJpZnkuZXhlICRACisKK2lmbmVxICgkKENST1NTX0JVSUxEKSwxKQorJChI
T1NUX1pJQyk6CXppYyQoRVhFRVhUKQorCQkkKFVUSUwpIGNwIHppYyQoRVhFRVhUKSAkKEhPU1Rf
WklDKQorZWxzZQorJChIT1NUX1pJQyk6CSQoVFpDU1JDUykgeWVhcmlzdHlwZSB2ZXJzaW9uLmgK
IAkJJChHQ0MpIC1EVFpESVI9XCIvZGV2L2Vudi9ESkRJUn5jOi9kamdwcH4vem9uZWluZm9cIiBc
CiAJCSQoR0NDRkxBR1MpICQoTERGTEFHUykgJChUWkNTUkNTKSAkKExETElCUykgLW8gJEAKIAkJ
JChTVFJJUCkgJEAKK2VuZGlmCiAKLXppYyQoRVhFRVhUKToJJChUWkNPQkpTKSB5ZWFyaXN0eXBl
Ci0JCSQoQ0MpIC1vICRAICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoVFpDT0JKUykgJChMRExJQlMp
Ci0JCSQoQ1JPU1NfU1RSSVApICRACit6aWMkKEVYRUVYVCk6CSQoVFpDT0JKUykgJChUT1BESVIp
L2xpYi9jcnQwLm8gJChUT1BESVIpL2xpYi9saWJjLmEgeWVhcmlzdHlwZQorCQkkKENST1NTX0xE
KSAtcyAkKExERkxBR1MpICQoVE9QRElSKS9saWIvY3J0MC5vICQoVFpDT0JKUykgLW8gJEAgJChU
T1BESVIpL2xpYi9saWJjLmEgJChMSUJHQ0NBKSAtVCAkKERKR1BQX0RKTCkKKwkJJChUT1BESVIp
L2hvc3RiaW4vc3R1YmlmeS5leGUgJEAKIAogeWVhcmlzdHlwZToJeWVhcmlzdHlwZS5zaAogCQkk
KFVUSUwpIGNwIHllYXJpc3R5cGUuc2ggeWVhcmlzdHlwZQpAQCAtNTc4LDE1ICs1NjAsOSBAQAog
CQktJChVVElMKSBta2RpciAkKExJQkRJUikKIAkJJChDUk9TU19BUikgcnVzICRAICQoTElCT0JK
UykKIAotIyBXZSB1c2UgdGhlIHN5c3RlbSdzIGxvZ3d0bXAgaW4gcHJlZmVyZW5jZSB0byBvdXJz
IGlmIGF2YWlsYWJsZS4KLQotZGF0ZSQoRVhFRVhUKToJJChEQVRFT0JKUykKLQkJJChDUk9TU19B
UikgcnMgbG9nd3RtcGwuYSBsb2d3dG1wLm8KLQkJJChDQykgJChDRkxBR1MpIGRhdGUubyBsb2Nh
bHRpbWUubyBhc2N0aW1lLm8gc3RyZnRpbWUubyBcCi0JCQkkKExETElCUykgLWxjIGxvZ3d0bXBs
LmEgLW8gJEAKLQkJJChDUk9TU19TVFJJUCkgJEAKLQkJJChVVElMKSBybSBsb2d3dG1wbC5hCi0J
CSQoQ1JPU1NfU1RSSVApICRACitkYXRlJChFWEVFWFQpOgkkKERBVEVPQkpTKSAkKFRPUERJUikv
bGliL2NydDAubyAkKFRPUERJUikvbGliL2xpYmMuYQorCQkkKENST1NTX0xEKSAtcyAkKExERkxB
R1MpICQoVE9QRElSKS9saWIvY3J0MC5vICQoREFURU9CSlMpIC1vICRAICQoVE9QRElSKS9saWIv
bGliYy5hICQoTElCR0NDQSkgLVQgJChESkdQUF9ESkwpCisJCSQoVE9QRElSKS9ob3N0YmluL3N0
dWJpZnkuZXhlICRACiAKIHR6c2VsZWN0Ogl0enNlbGVjdC5rc2gKIAkJc2VkIFwKQEAgLTYxMSw3
ICs1ODcsNyBAQAogCiBjbGVhbl9taXNjOgogCQkkKFVUSUwpIHJtIGNvcmUgKi5vICoub3V0IHR6
c2VsZWN0IHpkdW1wJChFWEVFWFQpIHppYyQoRVhFRVhUKSBcCi0JCQl5ZWFyaXN0eXBlIGRhdGUk
KEVYRUVYVCkgbG9nd3RtcGwqICoudGFyLmd6IGhvc3QtemljICouZXhlICoubWFuIFwKKwkJCXll
YXJpc3R5cGUgZGF0ZSQoRVhFRVhUKSBsb2d3dG1wbCogKi50YXIuZ3ogJChIT1NUX1pJQykgKi5l
eGUgKi5tYW4gXAogCQkJVERBVEFfbGlzdAogY2xlYW46CQljbGVhbl9taXNjCiAJCSQoVVRJTCkg
cm0gLWYgLXIgdHpwdWJsaWMK
--001a113f7e1c72d1c30516bf7f27--
- Raw text -