[PATCH] configure: Do not ignore malloc value

Leonid Bloch posted 1 patch 3 years, 11 months ago
Test docker-mingw@fedora passed
Test checkpatch passed
Test asan passed
Test docker-quick@centos7 passed
Test FreeBSD passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200524221204.9791-1-lb.workbox@gmail.com
configure | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
[PATCH] configure: Do not ignore malloc value
Posted by Leonid Bloch 3 years, 11 months ago
From: Leonid Bloch <lbloch@janustech.com>

Not checking the value of malloc will cause a warning with GCC 10.1,
which may result in configuration failure, with the following line in
config.log:

config-temp/qemu-conf.c:2:18: error: ignoring return value of ‘malloc’ declared with attribute ‘warn_unused_result’ [-Werror=unused-result]
    2 | int main(void) { malloc(1); return 0; }
      |                  ^~~~~~~~~

Signed-off-by: Leonid Bloch <lb.workbox@gmail.com>
---
 configure | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/configure b/configure
index 2fc05c4465..d0220b2944 100755
--- a/configure
+++ b/configure
@@ -4567,7 +4567,13 @@ fi
 if test "$tcmalloc" = "yes" ; then
   cat > $TMPC << EOF
 #include <stdlib.h>
-int main(void) { malloc(1); return 0; }
+int main(void) {
+    void *tmp = malloc(1);
+    if (tmp != NULL) {
+        return 0;
+    }
+    return 1;
+}
 EOF
 
   if compile_prog "" "-ltcmalloc" ; then
@@ -4583,7 +4589,13 @@ fi
 if test "$jemalloc" = "yes" ; then
   cat > $TMPC << EOF
 #include <stdlib.h>
-int main(void) { malloc(1); return 0; }
+int main(void) {
+    void *tmp = malloc(1);
+    if (tmp != NULL) {
+        return 0;
+    }
+    return 1;
+}
 EOF
 
   if compile_prog "" "-ljemalloc" ; then
@@ -6144,7 +6156,9 @@ if test "$sanitizers" = "yes" ; then
 #include <stdlib.h>
 int main(void) {
     void *tmp = malloc(10);
-    return *(int *)(tmp + 2);
+    if (tmp != NULL) {
+        return *(int *)(tmp + 2);
+    }
 }
 EOF
   if compile_prog "$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
-- 
2.26.2


Re: [PATCH] configure: Do not ignore malloc value
Posted by Philippe Mathieu-Daudé 3 years, 11 months ago
On 5/25/20 12:12 AM, Leonid Bloch wrote:
> From: Leonid Bloch <lbloch@janustech.com>
> 
> Not checking the value of malloc will cause a warning with GCC 10.1,
> which may result in configuration failure, with the following line in
> config.log:
> 
> config-temp/qemu-conf.c:2:18: error: ignoring return value of ‘malloc’ declared with attribute ‘warn_unused_result’ [-Werror=unused-result]
>     2 | int main(void) { malloc(1); return 0; }
>       |                  ^~~~~~~~~

Do we want to add -Wno-unused-result to compile_prog()?

> 
> Signed-off-by: Leonid Bloch <lb.workbox@gmail.com>
> ---
>  configure | 20 +++++++++++++++++---
>  1 file changed, 17 insertions(+), 3 deletions(-)
> 
> diff --git a/configure b/configure
> index 2fc05c4465..d0220b2944 100755
> --- a/configure
> +++ b/configure
> @@ -4567,7 +4567,13 @@ fi
>  if test "$tcmalloc" = "yes" ; then
>    cat > $TMPC << EOF
>  #include <stdlib.h>
> -int main(void) { malloc(1); return 0; }
> +int main(void) {
> +    void *tmp = malloc(1);
> +    if (tmp != NULL) {
> +        return 0;
> +    }
> +    return 1;
> +}
>  EOF
>  
>    if compile_prog "" "-ltcmalloc" ; then
> @@ -4583,7 +4589,13 @@ fi
>  if test "$jemalloc" = "yes" ; then
>    cat > $TMPC << EOF
>  #include <stdlib.h>
> -int main(void) { malloc(1); return 0; }
> +int main(void) {
> +    void *tmp = malloc(1);
> +    if (tmp != NULL) {
> +        return 0;
> +    }
> +    return 1;
> +}
>  EOF
>  
>    if compile_prog "" "-ljemalloc" ; then
> @@ -6144,7 +6156,9 @@ if test "$sanitizers" = "yes" ; then
>  #include <stdlib.h>
>  int main(void) {
>      void *tmp = malloc(10);
> -    return *(int *)(tmp + 2);
> +    if (tmp != NULL) {
> +        return *(int *)(tmp + 2);
> +    }
>  }
>  EOF
>    if compile_prog "$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
> 


Re: [PATCH] configure: Do not ignore malloc value
Posted by Paolo Bonzini 3 years, 10 months ago
On 25/05/20 00:12, Leonid Bloch wrote:
> From: Leonid Bloch <lbloch@janustech.com>
> 
> Not checking the value of malloc will cause a warning with GCC 10.1,
> which may result in configuration failure, with the following line in
> config.log:
> 
> config-temp/qemu-conf.c:2:18: error: ignoring return value of ‘malloc’ declared with attribute ‘warn_unused_result’ [-Werror=unused-result]
>     2 | int main(void) { malloc(1); return 0; }
>       |                  ^~~~~~~~~
> 
> Signed-off-by: Leonid Bloch <lb.workbox@gmail.com>
> ---
>  configure | 20 +++++++++++++++++---
>  1 file changed, 17 insertions(+), 3 deletions(-)
> 
> diff --git a/configure b/configure
> index 2fc05c4465..d0220b2944 100755
> --- a/configure
> +++ b/configure
> @@ -4567,7 +4567,13 @@ fi
>  if test "$tcmalloc" = "yes" ; then
>    cat > $TMPC << EOF
>  #include <stdlib.h>
> -int main(void) { malloc(1); return 0; }
> +int main(void) {
> +    void *tmp = malloc(1);
> +    if (tmp != NULL) {
> +        return 0;
> +    }
> +    return 1;
> +}
>  EOF
>  
>    if compile_prog "" "-ltcmalloc" ; then
> @@ -4583,7 +4589,13 @@ fi
>  if test "$jemalloc" = "yes" ; then
>    cat > $TMPC << EOF
>  #include <stdlib.h>
> -int main(void) { malloc(1); return 0; }
> +int main(void) {
> +    void *tmp = malloc(1);
> +    if (tmp != NULL) {
> +        return 0;
> +    }
> +    return 1;
> +}
>  EOF
>  
>    if compile_prog "" "-ljemalloc" ; then
> @@ -6144,7 +6156,9 @@ if test "$sanitizers" = "yes" ; then
>  #include <stdlib.h>
>  int main(void) {
>      void *tmp = malloc(10);
> -    return *(int *)(tmp + 2);
> +    if (tmp != NULL) {
> +        return *(int *)(tmp + 2);
> +    }
>  }
>  EOF
>    if compile_prog "$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
> 

Queued, thanks.

Paolo