diff --git a/build-aux/check-mescc.sh b/build-aux/check-mescc.sh index 5fd89a1e..fb6557b8 100755 --- a/build-aux/check-mescc.sh +++ b/build-aux/check-mescc.sh @@ -107,6 +107,7 @@ lib/tests/scaffold/47-function-expression.c lib/tests/scaffold/48-global-static.c lib/tests/assert/50-assert.c lib/tests/mes/50-itoa.c +lib/tests/scaffold/50-compare-rotated-weird.c lib/tests/posix/50-getenv.c lib/tests/stdlib/50-malloc.c lib/tests/string/50-memcmp.c diff --git a/lib/tests/scaffold/50-compare-rotated-weird.c b/lib/tests/scaffold/50-compare-rotated-weird.c new file mode 100644 index 00000000..bd354891 --- /dev/null +++ b/lib/tests/scaffold/50-compare-rotated-weird.c @@ -0,0 +1,40 @@ +/* -*-comment-start: "//";comment-end:""-*- + * GNU Mes --- Maxwell Equations of Software + * Copyright © 2023 Ekaitz Zarraga + * + * This file is part of GNU Mes. + * + * GNU Mes is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * GNU Mes is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Mes. If not, see . + */ + +#include +#include +#include + +int +main () +{ + uint64_t val = 0x27c1c; + uint64_t addr = 0x28bb4; + uint64_t off64 = (int64_t)((int64_t)(val - addr + 0x800) >> 12); + uint64_t cond = (off64 + ((uint64_t)1 << 20)) >> 21; + if (cond) + { + eputs ("failure: "); + eputs (itoa (cond)); + eputs ("\n"); + return 2; + } + return 0; +}