From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/14185 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Michael Everitt Newsgroups: gmane.linux.lib.musl.general Subject: Re: Illegal instruction in __copy_tls() Date: Thu, 6 Jun 2019 00:34:14 +0100 Message-ID: References: <20190605183742.GK1506@brightrain.aerifal.cx> <20190605200747.GL1506@brightrain.aerifal.cx> <1ae0f7f0-ed7e-570b-5c65-5e6bc48b3306@iee.org> Reply-To: musl@lists.openwall.com Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="vTLMuJhn4WKb60kbzbpLVXp7QApGjOQ3l" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="199657"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 To: musl@lists.openwall.com Original-X-From: musl-return-14201-gllmg-musl=m.gmane.org@lists.openwall.com Thu Jun 06 01:34:34 2019 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.89) (envelope-from ) id 1hYfQP-000pp9-9j for gllmg-musl@m.gmane.org; Thu, 06 Jun 2019 01:34:33 +0200 Original-Received: (qmail 24152 invoked by uid 550); 5 Jun 2019 23:34:30 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 24134 invoked from network); 5 Jun 2019 23:34:30 -0000 Openpgp: id=BA266E0525CFAB101523351B4C30334F93C22371 Autocrypt: addr=m.j.everitt@iee.org; prefer-encrypt=mutual; keydata= xsFNBFngC8gBEAC8/nQZrVrr8v0kaD4OLw8UftKfPQFEMGY/rnFA81M9IvdyPP8/8u/+9AGc DEN3i/LRvW0KUBdKIngcUY/p1M/sJqBspMOBaoOLp6K53/2uxcGXw62TulQJU+7a37Jukv2r HNSyZzM6II0myConmJa8ja1HfsiVoqDrqNigBF+Sts1kqG4xg8YeyOl1Tk+LZwC+ukzzutE9 pbpIL2snu5I6a6RNi9DtbB9FZKzkbXx8TlpMXrcorNryOLQHPRw6tir5Z8kpetiJgoEpKGBX botDOWLVW+s9XnwPzAFmL03gH+3reY+LfrQWQTDphfZIp75caZQUicQHpc1NUr+8bLr3n79A FCPY3CfWriGn17aqaaXDFfeYPJIlH8UmOXI41JqR47C5eYFbocA8A4k7cGVAdKJFWLy51165 dt7qZyvUQc/olzrZOrvoiWXA8ELg7pqxxObM4kl0502IHz9kb6Lt712HvfjH5yAP8zTYpetn sCPR9aVVSQsRgluNrQFlKpVmUXbeBLjw05UBEunS6prDwXOyZdn7t03LSOlK2nBGM+gtxg8l /0Nb1saYMGGN8qtO4RLFRiRBc20kNz01cC89PKRIXYlW9dRZNH1zebIUCAg+S4hSmmV4uvaZ XRADb2G+ZZ2jj9cNTTnI+X1/a19S8XjBZ4z+9+Hty4nhoB6fawARAQABzSNNLiBKLiBFdmVy aXR0IDxtLmouZXZlcml0dEBpZWUub3JnPsLBgAQTAQgAKgIbAwUJA8JnAAULCQgHAwUVCgkI CwUWAgMBAAIeAQIX In-Reply-To: X-Provags-ID: V03:K1:ZWeXPUchgTZobyAcWZw/Ara/wfjuWpCLIeZjUinqrBfnfQBK0h/ VR2R0ENxBBRfMZN9RwQEvsv45Vf+U/BQbhJMqJGXxlrh5T+t+7JV+qqkvSqVdhsTD+YJE/Z apr9pztDW2s64SAS4RWmR/RuqPZPm63m9r50yIdjMu1KttxXrEXWwMsiPc1NswHmkJV5Bvb /1l5omWXLFte1oNGWAsHA== X-UI-Out-Filterresults: notjunk:1;V03:K0:KSgy+xdUjKc=:XdPRXl82JlqizymYxuvBpK pcCpVHP4qnEEEBbP3/P+pTMH71HI3hN19Ymi7ukv+RpGSjNZCESSkOkiFrKhn0T5JoguivZfA RlGzzrpevh4ESq5O18KL6E/0Udw2TrVTvAgkXhg9HJXPUzkzEwIJHhXXOYIHzHpdwl1JUu30j kHxYiG1nJ9mckk17kZZQkzMXqhBqPdXS4cbd2nY1FCSvZNPgTp/4ZzoOcQGEQKV9bSDRZTgV8 zfdIUr9r+DIvvpFkBsIiUvkmk2Dl2Ja/5amYL3PtYeJr+/2Wt+2Si7KcsbkiSiAeF8iT9Cyvu 5uiTq541PPrVXuRAQw7FoH+uLDmBpW9tbplanEZsIkxj1IK5cKVYU+9+ZHcFK0mC9r40oBrvw LVS5nOK+i4L99LPVKsOV4sz9B8C19YoxCx4sEXiqGd0Tv/QKm28tS3ybcHszeXbncfaNGApc4 e/7U6Xs59rCVoA0jOCs3RTrQITAWyvaJizW2XzN6ONmJXgP3drLc0a8RpSMRIyV2hQwqZ9yDd BzGV5drWAahg8PXHurzfl073fZSj7umxfBG8Ojp46UFQrz/BJNHTQVYyM0lf0ZMdhp1ybP+SY T0+TQo7Zax4Tvg93MbcKdXEkFdInHPxSctWNiejmjH5itWPHgh4zolA0Dl+IBiRyL853mVX0C MT4/rUCo4Os02zttkhQ0RTbn+qZsdyUrCtrIKdrTOnKoiG2dSbi/qZ2O6w59c8/1Ie1oHg7eG SzqR7gEe12aNrlsZZtMblc6AE074yN2LBu/fUw== Xref: news.gmane.org gmane.linux.lib.musl.general:14185 Archived-At: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --vTLMuJhn4WKb60kbzbpLVXp7QApGjOQ3l Content-Type: multipart/mixed; boundary="d8sl8efAL4wpWbwpH7X9DGcCJoenlTiVy"; protected-headers="v1" From: Michael Everitt To: musl@lists.openwall.com Message-ID: Subject: Re: [musl] Illegal instruction in __copy_tls() References: <20190605183742.GK1506@brightrain.aerifal.cx> <20190605200747.GL1506@brightrain.aerifal.cx> <1ae0f7f0-ed7e-570b-5c65-5e6bc48b3306@iee.org> In-Reply-To: --d8sl8efAL4wpWbwpH7X9DGcCJoenlTiVy Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-Language: en-US Musl doesn't support multilib ... :] fyi On 06/06/19 00:32, tenspd137 . wrote: > Quick question - anyone know how to make a crossdev crosscompiler > multilib so I can use -m32 when I compile? > > Thanks! > > On Wed, Jun 5, 2019 at 5:09 PM tenspd137 . wrote: >> I probably don't fully understand how it works. In >> /etc/x86_64-pc-linux-musl/etc.portage/make.conf, march is not >> specified. It is specified in /etc/portage/make.conf. When I removed= >> it from there, things worked. Then I just put it back after using >> crossdev to make x86_64-pc-linux-musl-*. >> >> Either way, loads of fun :) >> >> Thanks! >> >> -C >> >> On Wed, Jun 5, 2019 at 3:56 PM Michael Everitt w= rote: >>> In your /usr/${CTARGET}/etc/portage/make.conf you can set appropriate= >>> target flags there. But using 'march=3Dnative' is going to catch you = out a >>> lot cross-compiling anything ... :) At least if you've got it set to >>> something, you're going to see errors that point immediately to your = CFLAGS >>> when/if it goes wrong! >>> >>> Michael. >>> >>> On 05/06/19 22:27, tenspd137 . wrote: >>>> Thanks! That was indeed the problem. I had march=3Dnative for all >>>> portage related stuff set, and my guess is that crossdev read that t= o >>>> start. I removed that, reran the crossdev tool to buiild the cross >>>> toolchain, and can now build static binaries that run on different >>>> systems. >>>> >>>> Much appreciated! >>>> >>>> -C >>>> >>>> On Wed, Jun 5, 2019 at 2:07 PM Rich Felker wrote: >>>>> On Wed, Jun 05, 2019 at 01:53:58PM -0600, tenspd137 . wrote: >>>>>> Sure - >>>>>> >>>>>> strace -d -v ./a.out: >>>>>> strace: ptrace_setoptions =3D 0x51 >>>>>> strace: new tcb for pid 26302, active tcbs:1 >>>>>> strace: [wait(0x80137f) =3D 26302] WIFSTOPPED,sig=3DSIGSTOP,EVENT_= STOP (128) >>>>>> strace: pid 26302 has TCB_STARTUP, initializing it >>>>>> strace: [wait(0x80057f) =3D 26302] WIFSTOPPED,sig=3DSIGTRAP,EVENT_= STOP (128) >>>>>> strace: [wait(0x00127f) =3D 26302] WIFSTOPPED,sig=3DSIGCONT >>>>>> strace: [wait(0x00857f) =3D 26302] WIFSTOPPED,sig=3D133 >>>>>> execve("./a.out", ["./a.out"], ["SSH_CONNECTION=3D15.86.136.27 519= 6"..., >>>>>> "LANG=3Den_US.UTF-8", "XDG_SESSION_ID=3D41", "USER=3Ddayd", >>>>>> "PWD=3D/home/dayd/projects/musl-tes"..., "HOME=3D/home/dayd", >>>>>> "SSH_CLIENT=3Dxx.xxx.xxx.xx 51960 22", "CCACHE_DIR=3D/ssd/dayd/.cc= ache", >>>>>> "VMWARE_USE_SHIPPED_GTK=3Dyes", "XDG_DATA_DIRS=3D/usr/local/share:= /"..., >>>>>> "USECCACHE=3DON", "SSH_TTY=3D/dev/pts/2", "MAIL=3D/var/mail/dayd",= >>>>>> "TERM=3Drxvt-unicode-256color", "SHELL=3D/bin/bash", "SHLVL=3D1", >>>>>> "PYTHONPATH=3D:/home/dayd/projects/"..., "LOGNAME=3Ddayd", >>>>>> "DBUS_SESSION_BUS_ADDRESS=3Dunix:pa"..., >>>>>> "XDG_RUNTIME_DIR=3D/run/user/6686", >>>>>> "PATH=3D/usr/lib/ccache/bin/:/usr/l"..., "USEDISTCC=3DOFF", >>>>>> "_=3D/usr/bin/strace", "OLDPWD=3D/home/dayd/projects"]strace: >>>>>> [wait(0x04057f) =3D 26302] WIFSTOPPED,sig=3DSIGTRAP,EVENT_EXEC (4)= >>>>>> strace: [wait(0x00857f) =3D 26302] WIFSTOPPED,sig=3D133 >>>>>> ) =3D 0 >>>>>> strace: [wait(0x00047f) =3D 26302] WIFSTOPPED,sig=3DSIGILL >>>>>> --- SIGILL {si_signo=3DSIGILL, si_code=3DILL_ILLOPN, si_addr=3D0x4= 0169e} --- >>>>>> strace: [wait(0x06057f) =3D 26302] WIFSTOPPED,sig=3DSIGTRAP,EVENT_= EXIT (6) >>>>>> strace: [wait(0x000084) =3D 26302] WIFSIGNALED,core,sig=3DSIGILL >>>>>> +++ killed by SIGILL (core dumped) +++ >>>>>> strace: dropped tcb for pid 26302, 0 remain >>>>>> Illegal instruction (core dumped) >>>>>> ******************************************************************= ************************ >>>>>> (gdb) bt >>>>>> #0 0x00000000004016ae in __copy_tls () >>>>>> #1 0x0000000000000000 in ?? () >>>>>> ******************************************************************= *********************** >>>>>> >>>>>> (gdb) disassemble >>>>>> Dump of assembler code for function __copy_tls: >>>>>> 0x0000000000401680 <+0>: push %r13 >>>>>> 0x0000000000401682 <+2>: mov %rdi,%r13 >>>>>> 0x0000000000401685 <+5>: push %r12 >>>>>> 0x0000000000401687 <+7>: push %rbp >>>>>> 0x0000000000401688 <+8>: push %rbx >>>>>> 0x0000000000401689 <+9>: sub $0x8,%rsp >>>>>> 0x000000000040168d <+13>: mov 0x410c(%rip),%rax # >>>>>> 0x4057a0 <__libc+32> >>>>>> 0x0000000000401694 <+20>: mov 0x410d(%rip),%rcx # >>>>>> 0x4057a8 <__libc+40> >>>>>> 0x000000000040169b <+27>: mov 0x40f6(%rip),%rbx # >>>>>> 0x405798 <__libc+24> >>>>>> 0x00000000004016a2 <+34>: lea -0xe0(%rdi,%rax,1),%rax >>>>>> 0x00000000004016aa <+42>: lea -0x1(%rcx),%r12 >>>>>> =3D> 0x00000000004016ae <+46>: andn %rax,%r12,%r12 >>>>> This instruction, andn, is not in the base x86_64 ISA. It's part of= >>>>> the BMI1 extension: >>>>> >>>>> https://en.wikipedia.org/wiki/Bit_Manipulation_Instruction_Sets#BMI= 1_(Bit_Manipulation_Instruction_Set_1) >>>>> >>>>> Apparently Gentoo is providing cross compilers that default to >>>>> producing "native ISA level" code for the host, rather than baselin= e >>>>> ISA for the target. But: >>>>> >>>>>> as a bonus (I thought this might also help): >>>>>> (%:~/projects/musl-test)=E2=94=8C- x86_64-pc-linux-musl-gcc -v -st= atic -O0 -g >>>>>> hello.c >>>>>> Using built-in specs. >>>>>> COLLECT_GCC=3Dx86_64-pc-linux-musl-gcc >>>>>> COLLECT_LTO_WRAPPER=3D/usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/= lto-wrapper >>>>>> Target: x86_64-pc-linux-musl >>>>>> Configured with: >>>>>> /var/tmp/portage/cross-x86_64-pc-linux-musl/gcc-9.1.0/work/gcc-9.1= =2E0/configure >>>>>> --host=3Dx86_64-pc-linux-gnu --target=3Dx86_64-pc-linux-musl >>>>>> --build=3Dx86_64-pc-linux-gnu --prefix=3D/usr >>>>>> --bindir=3D/usr/x86_64-pc-linux-gnu/x86_64-pc-linux-musl/gcc-bin/9= =2E1.0 >>>>>> --includedir=3D/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/include >>>>>> --datadir=3D/usr/share/gcc-data/x86_64-pc-linux-musl/9.1.0 >>>>>> --mandir=3D/usr/share/gcc-data/x86_64-pc-linux-musl/9.1.0/man >>>>>> --infodir=3D/usr/share/gcc-data/x86_64-pc-linux-musl/9.1.0/info >>>>>> --with-gxx-include-dir=3D/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/i= nclude/g++-v9 >>>>>> --with-python-dir=3D/share/gcc-data/x86_64-pc-linux-musl/9.1.0/pyt= hon >>>>>> --enable-languages=3Dc,c++,fortran --enable-obsolete --enable-secu= replt >>>>>> --disable-werror --with-system-zlib --enable-nls >>>>>> --without-included-gettext --enable-checking=3Drelease >>>>>> --with-bugurl=3Dhttps://bugs.gentoo.org/ --with-pkgversion=3D'Gent= oo 9.1.0 >>>>>> p1.0' --disable-esp --enable-libstdcxx-time >>>>>> --enable-poison-system-directories >>>>>> --with-sysroot=3D/usr/x86_64-pc-linux-musl --disable-bootstrap >>>>>> --enable-__cxa_atexit --disable-multilib --with-multilib-list=3Dm6= 4 >>>>>> --disable-altivec --disable-fixed-point --enable-targets=3Dall >>>>>> --enable-libgomp --disable-libmudflap --disable-libssp >>>>>> --disable-systemtap --disable-vtable-verify --disable-libvtv >>>>>> --enable-lto --without-isl --disable-libsanitizer --enable-default= -pie >>>>>> --enable-default-ssp >>>>>> Thread model: posix >>>>>> gcc version 9.1.0 (Gentoo 9.1.0 p1.0) >>>>>> COLLECT_GCC_OPTIONS=3D'-v' '-static' '-O0' '-g' '-mtune=3Dgeneric'= '-march=3Dx86-64' >>>>>> /usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/cc1 -quiet -v hello.c= >>>>>> -quiet -dumpbase hello.c -mtune=3Dgeneric -march=3Dx86-64 -auxbase= hello >>>>>> -g -O0 -version -o /tmp/ccoTkh38.s >>>>>> GNU C17 (Gentoo 9.1.0 p1.0) version 9.1.0 (x86_64-pc-linux-musl) >>>>>> compiled by GNU C version 8.3.0, GMP version 6.1.2, MPFR versi= on >>>>>> 4.0.2, MPC version 1.1.0, isl version none >>>>>> GGC heuristics: --param ggc-min-expand=3D100 --param ggc-min-heaps= ize=3D131072 >>>>>> ignoring nonexistent directory "/usr/x86_64-pc-linux-musl/usr/loca= l/include" >>>>>> ignoring nonexistent directory >>>>>> "/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/../../../../x86_64-pc-lin= ux-musl/include" >>>>>> #include "..." search starts here: >>>>>> #include <...> search starts here: >>>>>> /usr/x86_64-pc-linux-musl/usr/include >>>>>> /usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/include >>>>>> End of search list. >>>>>> GNU C17 (Gentoo 9.1.0 p1.0) version 9.1.0 (x86_64-pc-linux-musl) >>>>>> compiled by GNU C version 8.3.0, GMP version 6.1.2, MPFR versi= on >>>>>> 4.0.2, MPC version 1.1.0, isl version none >>>>>> GGC heuristics: --param ggc-min-expand=3D100 --param ggc-min-heaps= ize=3D131072 >>>>>> Compiler executable checksum: a3183e5f435d1938198d432af6db159b >>>>>> COLLECT_GCC_OPTIONS=3D'-v' '-static' '-O0' '-g' '-mtune=3Dgeneric'= '-march=3Dx86-64' >>>>>> /usr/libexec/gcc/x86_64-pc-linux-musl/as -v --64 -o /tmp/ccHq7CL6= =2Eo >>>>>> /tmp/ccoTkh38.s >>>>>> GNU assembler version 2.32.0 (x86_64-pc-linux-musl) using BFD vers= ion >>>>>> (Gentoo 2.32 p2) 2.32.0 >>>>>> COMPILER_PATH=3D/usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/:/usr/= libexec/gcc/x86_64-pc-linux-musl/9.1.0/:/usr/libexec/gcc/x86_64-pc-linux-= musl/:/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/:/usr/lib/gcc/x86_64-pc-lin= ux-musl/ >>>>>> LIBRARY_PATH=3D/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/:/usr/lib/g= cc/x86_64-pc-linux-musl/9.1.0/../../../../x86_64-pc-linux-musl/lib/:/usr/= x86_64-pc-linux-musl/lib/:/usr/x86_64-pc-linux-musl/usr/lib/ >>>>>> COLLECT_GCC_OPTIONS=3D'-v' '-static' '-O0' '-g' '-mtune=3Dgeneric'= '-march=3Dx86-64' >>>>>> /usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/collect2 -plugin >>>>>> /usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/liblto_plugin.so >>>>>> -plugin-opt=3D/usr/libexec/gcc/x86_64-pc-linux-musl/9.1.0/lto-wrap= per >>>>>> -plugin-opt=3D-fresolution=3D/tmp/ccWcifv4.res >>>>>> -plugin-opt=3D-pass-through=3D-lgcc -plugin-opt=3D-pass-through=3D= -lgcc_eh >>>>>> -plugin-opt=3D-pass-through=3D-lc --sysroot=3D/usr/x86_64-pc-linux= -musl -m >>>>>> elf_x86_64 -static /usr/x86_64-pc-linux-musl/usr/lib/crt1.o >>>>>> /usr/x86_64-pc-linux-musl/usr/lib/crti.o >>>>>> /usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/crtbeginT.o >>>>>> -L/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0 >>>>>> -L/usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/../../../../x86_64-pc-li= nux-musl/lib >>>>>> -L/usr/x86_64-pc-linux-musl/lib -L/usr/x86_64-pc-linux-musl/usr/li= b >>>>>> /tmp/ccHq7CL6.o --start-group -lgcc -lgcc_eh -lc --end-group >>>>>> /usr/lib/gcc/x86_64-pc-linux-musl/9.1.0/crtend.o >>>>>> /usr/x86_64-pc-linux-musl/usr/lib/crtn.o >>>>>> COLLECT_GCC_OPTIONS=3D'-v' '-static' '-O0' '-g' '-mtune=3Dgeneric'= '-march=3Dx86-64' >>>>>> >>>>>> mtune=3Dgeneric and march=3Dx86-64 suggests it isn't trying to do >>>>>> something weird on the compile computer. >>>>> Indeed, it looks like the default is right. So you probably need to= >>>>> check how musl was built. Is it also a package provided by Gentoo, = and >>>>> did they perhaps use -march=3Dnative even though it's being cross >>>>> compiled? >>>>> >>>>> Rich >>> --d8sl8efAL4wpWbwpH7X9DGcCJoenlTiVy-- --vTLMuJhn4WKb60kbzbpLVXp7QApGjOQ3l Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQIcBAEBCAAGBQJc+FF2AAoJEGPnxnn01DHdi+0QAKX4Itur3AlK2p9gajsQXcJL 3r7HA2H8wdzBVns/+DuEIFAI166yW2EJkPIvcgUXK0pMtBBBUj9j4q5I9sI49qV0 ulruY6hDKfAGR02zVUOO1o497FuuXc2K8jr8NCAgDTrvJSJ1wtGj7BrU8K4H9zWl VUbwl1MVLcHuoudPeb6PRgEMFO4fz3lE2EEWlCpFDgeCSFL0tgpp+HtebyDz6jSD cLbvuA7EUxyss68Hp1tWhMqmSDDa0lETOASX3hycgbYgEBeMhHfH2va35dfBWdwq 92Vau9wNVJ7WAPtu3HbcP7ZXZX++QD3q6e1fMuYjp0pdDjes/+fg6RyPtfpArL5c ms1a648VmxeTXXU1dB+uCpQ3UJZ1tJLjLE4Yww5N5maAPl0pFvgw+yohWCh49vcC EzISk4L0rH4tSjpjQeIy/mLN0F+NCfyU6E3lh2e5cY5H0nt76WTPeMrhJvngSb77 hfODzukQbYtj94x3DkLWnf1h+7H7PECGzvyilYk4yN7QMa2bGiXYR5VlpT/CTjM3 eYzzG51QyUXhqCjHPfF1ygJ5wUuM0YKDmra0jbnLTCM43KV/fGivHGgR3+59xQVL Y4KEBddW5OD4nbEXlsZS6W61sTTRcQNgzQv1F9YDOjJBsXDyMjUCq5CotWwh9/rK 3nn4AcCCBeP486RRVx42 =vf0h -----END PGP SIGNATURE----- --vTLMuJhn4WKb60kbzbpLVXp7QApGjOQ3l--