> The 10/05/2020 17:28, Szabolcs Nagy via Gcc-patches wrote: > > The 10/05/2020 12:52, Vaseeharan Vinayagamoorthy wrote: > > > Hi, > > > > > > After this patch, I am noticing that some glibc crypto tests get stuck in > > > scanf which goes into busy loop. > > > > > > My build/host/target setup is: > > > Build: aarch64-none-linux-gnu > > > Host: aarch64-none-linux-gnu > > > Target: aarch64-none-linux-gnu > > > > i can reproduce this on aarch64, i'm looking at it: > > > > if i compile glibc with gcc trunk after this commit i see > > > > $ ./testrun.sh crypt/cert < $glibcsrc/crypt/cert.input > > K: 0000000000000000 P: 0000000000000000 C: 0000000000000000 Encrypt FAIL > > K: 0000000000000000 P: 0000000000000000 C: 0000000000000000 Encrypt FAIL > > K: 0000000000000000 P: 0000000000000000 C: 0000000000000000 Encrypt FAIL > > K: 0000000000000000 P: 0000000000000000 C: 0000000000000000 Encrypt FAIL > > K: 0000000000000000 P: 0000000000000000 C: 0000000000000000 Encrypt FAIL > > K: 0000000000000000 P: 0000000000000000 C: 0000000000000000 Encrypt FAIL > > ... > > > > it just keeps printing this. > > > > same test binary with glibc code compiled with an > > older gcc works, so something in glibc gets miscompiled. > > > > i will have to do more digging to figure out what. > > minimal reproducer: > > #include <stdio.h> > int main() > { > int r,t; > r = sscanf("01", "%2x", &t); > printf("scanf: %d %02x\n", r, t); > return 0; > } > > should print > > scanf: 1 01 > > but when glibc is compiled with gcc trunk on aarch64 it prints > > scanf: 0 00 > > i will continute the debugging from here tomorrow.
There is a report on glibc issue here https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97264 it turned out to be a latent glibc bug type punning const char * and const unsigned char *. I wonder if it is same as problem you are seeing? Honza > > > > > On 27/09/2020, 22:46, "Gcc-patches on behalf of Jan Hubicka" > > > <gcc-patches-boun...@gcc.gnu.org on behalf of hubi...@ucw.cz> wrote: > > > > > > Hi, > > > this patch fixes a pasto in modref_summary::useful_p that made > > > ipa-modref to give up on tracking stores when all load info got lost. > > > > > > Bootstrapped/regtested x86_64-linux, comitted. > > > > > > gcc/ChangeLog: > > > > > > 2020-09-27 Jan Hubicka <hubi...@ucw.cz> > > > > > > * ipa-modref.c (modref_summary::useful_p): Fix testing of stores. > > > > > > diff --git a/gcc/ipa-modref.c b/gcc/ipa-modref.c > > > index 728c6c1523d..6225552e41a 100644 > > > --- a/gcc/ipa-modref.c > > > +++ b/gcc/ipa-modref.c > > > @@ -135,7 +135,7 @@ modref_summary::useful_p (int ecf_flags) > > > return true; > > > if (ecf_flags & ECF_PURE) > > > return false; > > > - return stores && !loads->every_base; > > > + return stores && !stores->every_base; > > > } > > > > > > /* Dump A to OUT. */ > > >