[prev in list] [next in list] [prev in thread] [next in thread]
List: gnulib-bug
Subject: Re: gl_array_list.c:452:29: runtime error: applying zero offset to null pointer
From: Paul Eggert <eggert () cs ! ucla ! edu>
Date: 2022-02-26 19:57:40
Message-ID: 3941a0cd-85af-b092-e619-e769603abbab () cs ! ucla ! edu
[Download RAW message or body]
On 11/1/21 18:13, Paul Eggert wrote:
>
> Most likely Paweł can configure his testing environment to suppress
> these false alarms. If not, I suggest firing off a bug report to the
> Clang developers, asking for an easy way to suppress them. In practice
> these particular diagnostics are more trouble than they're worth.
While rereading the Gnulib manual I remembered this issue, found a way
to suppress Clang's false alarms, and documented it in the attached
Gnulib patch.
["0001-Document-clang-fsanitize-undefined-glitch.patch" (text/x-patch)]
From 532b4c9f21473559657e273ef9f8f6fc8c7c2ab1 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Sat, 26 Feb 2022 11:39:32 -0800
Subject: [PATCH] Document clang -fsanitize=undefined glitch
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* doc/gnulib-intro.texi (Unsupported Platforms):
Document incompatibility of ‘clang -fsanitize=undefined'
with Gnulib, and how to work around it by also using
‘-fno-sanitize=pointer-overflow'.
---
ChangeLog | 8 ++++++++
doc/gnulib-intro.texi | 11 +++++++++++
2 files changed, 19 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index 6daf85da3e..430f81fd39 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2022-02-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ Document clang -fsanitize=undefined glitch
+ * doc/gnulib-intro.texi (Unsupported Platforms):
+ Document incompatibility of ‘clang -fsanitize=undefined'
+ with Gnulib, and how to work around it by also using
+ ‘-fno-sanitize=pointer-overflow'.
+
2022-02-25 Darshit Shah <darnir@gnu.org>
modules/unicase/special-casing: Fix compilation error
diff --git a/doc/gnulib-intro.texi b/doc/gnulib-intro.texi
index a80c0995f5..0bc9701561 100644
--- a/doc/gnulib-intro.texi
+++ b/doc/gnulib-intro.texi
@@ -235,6 +235,17 @@ and Gnulib-using code would have if it were intended to be portable to
all practical POSIX or C platforms.
@itemize @bullet
+@item
+Clang's @option{-fsanitize=undefined} option causes the program to
+crash if it adds zero to a null pointer -- behavior that is undefined
+in strict C, but which yields a null pointer on all practical porting
+targets and which the Gnulib portability guidelines allow.
+
+If you use Clang with @option{-fsanitize=undefined}, you can work
+around the problem by also using @samp{-fno-sanitize=pointer-overflow},
+although this may also disable some unrelated and useful pointer checks.
+Perhaps someday the Clang developers will fix the infelicity.
+
@item
The IBM i's pointers are 128 bits wide and it lacks the two types
@code{intptr_t} and @code{uintptr_t}, which are optional in the C and
--
2.32.0
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic