Hi Mike,
On 11.08.21 18:25, Mike Crowe wrote:
On Monday 17 May 2021 at 21:25:06 +0200, Philip Lorenz wrote:
Commit 60e25a36558f1f07dcce1a044fe976b475bec42b started dereferencing
the "path" parameter which for some functions is annotated with the
"nonnull" attribute. While the commit explicitly checks for NULL
pointers before dereferencing it, GCC (at optimization level 1 and
above) removes the check due to the "nonnull" attribute being set for
some parameters in the glibc headers (e.g. statx()).
However, the statx() man page explicitly allows calling with NULL
pointers (in which case the EFAULT is returned) and this behaviour is
used in the wild (e.g. in Rust) to determine whether the statx() system
call is supported.
Disabling the optimization is not possible ([1]) so prevent the compiler
optimization by referencing the parameter in a noop inline assembly
instruction instead.
[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100404
Signed-off-by: Philip Lorenz <[email protected]>
---
Makefile.in | 2 ++
makewrappers | 6 +++++-
test/test-fstat.c | 29 +++++++++++++++++++++++++++++
test/test-fstat.sh | 8 ++++++++
4 files changed, 44 insertions(+), 1 deletion(-)
create mode 100644 test/test-fstat.c
create mode 100755 test/test-fstat.sh
diff --git a/Makefile.in b/Makefile.in
index cf13010..10441ef 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -77,6 +77,8 @@ all: $(LIBPSEUDO) $(PSEUDO) $(PSEUDODB) $(PSEUDOLOG)
$(PSEUDO_PROFILE)
test: all | $(BIN) $(LIB) $(LOCALSTATE)
$(CC) $(CFLAGS) $(CFLAGS_PSEUDO) -o test/test-rename-fstat
test/test-rename-fstat.c
$(CC) $(CFLAGS) $(CFLAGS_PSEUDO) -o test/test-openat test/test-openat.c
+ $(CC) $(CFLAGS) $(CFLAGS_PSEUDO) -o test/test-statx test/test-statx.c
The test/test-stax.c file wasn't included in the patch, which means that
"make test" no longer works on the current pseudo oe-core branch. :(
Perhaps this went unnoticed since it's necessary to run configure again for
the Makefile to be regenerated to see the problem.
Do you still have the file, or should I just submit a change to remove this
line?
My bad - I must've forgotten to stage it. Just resent the missing test
case in "[pseudo][PATCH] test: Add missing test-statx test case".
Philip
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#154728):
https://lists.openembedded.org/g/openembedded-core/message/154728
Mute This Topic: https://lists.openembedded.org/mt/82895298/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-