Hi John,
I am trying to create a pull request. I currently don't have access permissions to csmith GitHub, and cannot push a branch with the changes. Can you please assist?
Thanks,
Karine
From: Even Mendoza, Karine <k.even-mendoza@imperial.ac.uk>
Sent: 18 March 2020 07:17 To: John Regehr <regehr@cs.utah.edu>; csmith-dev@flux.utah.edu <csmith-dev@flux.utah.edu> Subject: Re: [csmith-dev] Using safe math headers in csmith
Hi John,
Thank you much. Yes, I will prepare a pull request. I have already a sketch of these two header files, but I wish to try it on more examples.
Thanks,
Karine
From: John Regehr <regehr@cs.utah.edu>
Sent: 16 March 2020 15:28 To: Even Mendoza, Karine <k.even-mendoza@imperial.ac.uk>; csmith-dev@flux.utah.edu <csmith-dev@flux.utah.edu> Subject: Re: [csmith-dev] Using safe math headers in csmith Hi Karine, thanks for pointing this out.
I believe that we never used these features too much, so never noticed this. Can I ask you to prepare a pull request fixing the easy parts, and then we'll look at whatever's left? Thanks, John On 3/16/20 3:48 AM, Even Mendoza, Karine wrote: > Hi John > > > I was testing csmith the macro options; however, when running on a large population of seed, we got testcases with a different output when using macros. > > I debugged it a bit, and it is due to 3 main issues: (1) safe condition checks are not always the same, (2) casting (between explicit C-like casting in the macros and implicit casting coming from the function signature), and last (3) brackets. > > I can relatively easily fix 2+3, however (1) tends to be a bit more tricky. > > > For example: > The seed: 314862222 produces a different result when using macros due to differences in the conditions (the ternary operator) in rshift_func_int8_t_s_u. > > I compile it and run it that way: > ./src/csmith --seed 314862222 --bitfields --packed-struct >> temp_regular_5.c > clang -I../runtimeExp -DUSE_MATH_MACROS -w -O temp_regular_5.c -o temp_macros_5 > > The conditions: > ((left < 0) || (((unsigned int)right) >= 32)) vs. (((int8_t)(left)) < ((int8_t)0)) || (((unsigned int)(right)) >= sizeof(int8_t)*CHAR_BIT)); these are evaluated to false vs. true for seed 314862222. > > > Please let me know if more examples of seeds could help. I have several examples. > > > Thanks much, > > Karine > > -----Original Message----- > From: csmith-dev-bounces@flux.utah.edu <csmith-dev-bounces@flux.utah.edu> On Behalf Of John Regehr > Sent: 24 February 2020 18:01 > To: csmith-dev@flux.utah.edu > Subject: Re: [csmith-dev] Using safe math headers in csmith > > > ******************* > This email originates from outside Imperial. Do not click on links and attachments unless you recognise the sender. > If you trust the sender, add them to your safe senders list https://spam.ic.ac.uk/SpamConsole/Senders.aspx to disable email stamping for this address. > ******************* > Hi Karine, ok, I looked into this. Both of these alternative header files appear to work just fine. If you want to use the NOTMP versions, you need to pass Csmith the additional --math-notmp flag. > > I ran this shell script a few times and both versions always produced the same checksum: > > ./src/csmith > foo.c > clang -O0 -w foo.c -I../runtime -o foo1 > clang -O0 foo.c -I../runtime -DUSE_MATH_MACROS -w -o foo2 ulimit -t 2 > ./foo1 > ./foo2 > > Let us know if anything doesn't work as advertised. > > John > > > > On 2/24/20 8:20 AM, John Regehr wrote: >> Hi Karine, >> >> Well, I just tried to compile a program using -DUSE_MATH_MACROS_NOTMP >> and it did not compile, so something must have gone wrong here. I >> assume the same thing happened when you tried this? >> >> I'll try to look into it soon. >> >> John >> >> >> On 2/24/20 2:28 AM, Even Mendoza, Karine wrote: >>> Hi, >>> >>> I would like to know if the version of csmith using the header >>> safe_math_macros.h or safe_math_macros_notmp.c is working. >>> >>> Can I use these headers instead of safe_math.h and expect the same >>> output for the generated programs? >>> >>> Thanks much, >>> >>> Karine >>> |