Hi Max, Max Filippov wrote, > Loops with 'loop forever' annotation inside strcmp are actually meant to > loop forever. Falling through the end of the first loop may result in > equal strings being compared unequal, e.g.: > > #include <string.h> > > int main(void) > { > char a[4096] __attribute__((aligned(4))); > char b[4096] __attribute__((aligned(4))); > > memset(a, ' ', 258 * 8); > memset(b, ' ', 258 * 8); > a[255 * 8] = 0; > a[256 * 8] = 'a'; > b[255 * 8] = 0; > b[256 * 8] = 'b'; > return !(strcmp(a, b) == 0); > } > > Falling through the end of the second loop may result in unequal strings > being compared as equal, e.g.: > > #include <string.h> > > int main(void) > { > char a[4096] __attribute__((aligned(4))); > char b[4096] __attribute__((aligned(4))); > > memset(a, ' ', 514 * 6); > memset(b, ' ', 514 * 6); > a[514 * 6 + 0] = 'a'; > a[514 * 6 + 1] = 0; > b[514 * 6 + 0] = 'b'; > b[514 * 6 + 1] = 0; > return !(strcmp(a, b) != 0); > } > > Use 0 as a loop counter to make 2^32 - 1 iterations which is enough to > cover all addressable memory. While at it drop useless nop at the end of > the first loop and use a11 for all loop counters. > > Signed-off-by: Max Filippov <jcmvb...@gmail.com> > --- > Changes v1->v2: > - wrong test case for the second loop, fixed. >
Applied and pushed, thx Waldemar _______________________________________________ devel mailing list devel@uclibc-ng.org https://mailman.uclibc-ng.org/cgi-bin/mailman/listinfo/devel