[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] x86emul: rework wrapping of libc functions in test and fuzzing harnesses


  • To: Jan Beulich <jbeulich@xxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Date: Thu, 17 Aug 2023 13:58:29 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=uIMG2pq51Ki4wpnbCrSGV1mVt0seOygKCZAFBbfZZBQ=; b=XAxKWlrPiUZheh5PSJBbeVL4Cnioaqf7LAGZT7QysWJZIjFwo7lr/h1OzGdh3MF4VAY6DYfnjoNXkWyvaL0bB0QiuPNszoZcja+H85c6YQ2wSskk+/R3q69ov4YUEWa8rYjwUKVkDB/PM/N/x6ZWEej9VL5ACFdMp3ZLuhLN1+9AAV4sDRC/vl0BrI4cfU0pxyLN0hSHHqpmMWBrZZ6kr2CQn6GegFeq26B9rxfQeWt5YKfWvApo1Y0whIg6mHR/vpf3Jx6L/8s6ZK4oaHeQ0IMuXMWebhKasG+rtucLqzcw75fHHvGeqzYasNmsCEAKXjiavowvAnMkY4lXCI9WNA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TLvneLdyFDRoApD7b+dN/3CsIwkRbEiemNgSSJE9gVyClQ68KulY2PyuDgqs3GIxOT4nzmFPIztOfmqcMwd1SonRLs69YnWe5apau7kNau/74VlMp0cUvNlYKxrfl0ZfpJx5geJD12mwQ1HihNL+HWb3v/HM2nteFFeKciyaQEc7EV1s67atMRr10oyWrTHtaTTIc00mmyWMt33BxRXTYoZ+wIkjltUbYFKefOUWbOC8uNnxxt79QSN+51u4UJ1WIFT/3zQjzulGVNwVApiaAE/O9dAZrfNYrXccFjYM0PXEUm+nuLCb1yhWs08qP3I0cvHQRSuHh04IQIRwXwkPRg==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: Wei Liu <wl@xxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Delivery-date: Thu, 17 Aug 2023 12:58:47 +0000
  • Ironport-data: A9a23:CGWihKCHXBiMExVW/wTiw5YqxClBgxIJ4kV8jS/XYbTApG4ngTcBy DRJUTiBMvvZYTH2L4t0aN+y9UlV78fRm9Q1QQY4rX1jcSlH+JHPbTi7wuUcHAvJd5GeExg3h yk6QoOdRCzhZiaE/n9BCpC48T8nk/nOHuGmYAL9EngZbRd+Tys8gg5Ulec8g4p56fC0GArIs t7pyyHlEAbNNwVcbCRMsspvlDs15K6p4GNB4QRkDRx2lAS2e0c9Xcp3yZ6ZdxMUcqEMdsamS uDKyq2O/2+x13/B3fv8z94X2mVTKlLjFVDmZkh+AsBOsTAbzsAG6Y4pNeJ0VKtio27hc+ada jl6ncfYpQ8BZsUgkQmGOvVSO3kW0aZuoNcrLZUj2CA6IoKvn3bEmp1T4E8K0YIw1KFUKDtl1 cQjBWoQdgufm++H/7+XVbw57igjBJGD0II3nFhFlGucIdN4BJfJTuPN+MNS2yo2ioZWB/HCa sEFaD1pKhPdfxlIPVRRA5U79AuqriCnL3sE9xTI9OxuvDS7IA9ZidABNPL8fNCQSNoTtUGfv m/cpEzyAw0ANczZwj2Amp6prraWzHyrB9tCRdVU8NZXjny23G4jECdJbmT4naeCsmnleMxmf hl8Fi0G6PJaGFaQZtv3UgC8oXWElgUBQNcWGOo/gCmdx6yR7wuHC2wsSj9adMdgpMIwXSYt1 FKCg5XuHzMHmKKRYWKQ8PGTtzzaBMQOBWoLZCtBQQ5b5dDm+ds3lkiWEYolF7OphNroHz222 yqNsCU1m7QUi4gMyrm/+lfExTmro/AlUzII2+keZUr9hisRWWJvT9XABYTzhRqYELukcw==
  • Ironport-hdrordr: A9a23:etU/GqGR2TTqr7G2pLqEHseALOsnbusQ8zAXPiBKJCC9vPb5qy nOpoV86faQslwssR4b9uxoVJPvfZqYz+8W3WBzB8bEYOCFghrKEGgK1+KLrwEIWReOk9K1vZ 0KT0EUMqyVMbEVt6fHCAnTKade/DGEmprY+9s3GR1WPHBXg6IL1XYINu6CeHcGPTWvnfACZe ehDswsnUvZRV0nKv6VK1MiROb5q9jChPvdEGI7705O0nj0sduwgoSKaSSl4g==
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 17/08/2023 12:47 pm, Jan Beulich wrote:
> Our present approach is working fully behind the compiler's back. This
> was found to not work with LTO. Employ ld's --wrap= option instead. Note
> that while this makes the build work at least with new enough gcc (it
> doesn't with gcc7, for example, due to tool chain side issues afaict),
> according to my testing things still won't work when building the
> fuzzing harness with afl-cc: While with the gcc7 tool chain I see afl-as
> getting invoked, this does not happen with gcc13. Yet without using that
> assembler wrapper the resulting binary will look uninstrumented to
> afl-fuzz.
>
> While checking the resulting binaries I noticed that we've gained uses
> of snprintf() and strstr(), which only just so happen to not cause any
> problems. Add a wrappers for them as well.
>
> Since we don't have any actual uses of v{,sn}printf(), no definitions of
> their wrappers appear (just yet). But I think we want
> __wrap_{,sn}printf() to properly use __real_v{,sn}printf() right away,
> which means we need delarations of the latter.
>
> Reported-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> Suggested-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>

This does resolve the build issue.  I do get a binary out of the end, so
Tested-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>.  I presume that
you've smoke tested the resulting binary?

However, I do see something else in the logs which is concerning. 
Likely unrelated.

make[6]: Entering directory
'/builddir/build/BUILD/xen-4.18.0/tools/tests/x86_emulator'
gcc -m32 -march=i686 -DBUILD_ID -fno-strict-aliasing -std=gnu99 -Wall
-Wstrict-prototypes -Wdeclaration-after-statement
-Wno-unused-but-set-variable -Wno-unused-local-typedefs -g3 -Werror -Og
-fno-omit-frame-pointer
-D__XEN_INTERFACE_VERSION__=__XEN_LATEST_INTERFACE_VERSION__
-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -mno-tls-direct-seg-refs
-fno-pie -fno-stack-protector -fno-exceptions
-fno-asynchronous-unwind-tables -fno-builtin -g0 -D_64f2 -mavx512fp16
-ffixed-xmm0 -Os -DVEC_SIZE=64 -DFLOAT_SIZE=2 -c avx512fp16.c
make[6]: Leaving directory
'/builddir/build/BUILD/xen-4.18.0/tools/tests/x86_emulator'
/tmp/ccrznrqa.s: Assembler messages:
/tmp/ccrznrqa.s:98: Error: no such instruction: `vmovw .LC0,%xmm3'
/tmp/ccrznrqa.s:99: Error: no such instruction: `vmovw %xmm3,58(%esp)'
/tmp/ccrznrqa.s:105: Error: no such instruction: `vcvtsi2shl
%eax,%xmm1,%xmm1'
/tmp/ccrznrqa.s:106: Error: no such instruction: `vmovw
%xmm3,382(%esp,%eax,2)'
/tmp/ccrznrqa.s:107: Error: no such instruction: `vmovw
%xmm1,-2(%edx,%eax,2)'
/tmp/ccrznrqa.s:108: Error: no such instruction: `vcvtsi2shl
%ecx,%xmm1,%xmm1'
/tmp/ccrznrqa.s:109: Error: no such instruction: `vmovw
%xmm1,318(%esp,%eax,2)'
/tmp/ccrznrqa.s:113: Error: no such instruction: `vaddph
256(%esp),%zmm7,%zmm5'
<snip many>
simd-fma.c:208: Error: no such instruction: `vfmaddsub231ph
60(%esp){1to32},%zmm6,%zmm5'
simd-fma.c:209: Error: no such instruction: `vfmaddsub231ph
60(%esp){1to32},%zmm6,%zmm1'

GCC is 12.2.1, binutils is 2.37

AVX512_FP16 was added in bintuils 2.38 so I understand the simd-fma.c
complains, but ccrznrqa.s suggest that there's a bad -m passed.  I
haven't figured out which source file it logically associated with.

~Andrew



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.