public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] gdb: Fix build error on macOS
@ 2021-10-04 10:03 Enze Li
  2021-10-04 16:14 ` Simon Marchi
  2021-10-05  4:51 ` Enze Li
  0 siblings, 2 replies; 5+ messages in thread
From: Enze Li @ 2021-10-04 10:03 UTC (permalink / raw)
  To: gdb-patches

PR build/28413 notes that the gdb master fails to build on macOS.

Based on De Morgan's law, the expression
!(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
is equal to (!defined __GNUC__ || defined __clang__ || !__OPTIMIZE).
The expression above looks weird, maybe there are some problems with
this way of judging. When any one of the conditions is established, the
subsequent judgment will be ignored.

This patch works around the issue by rewriting the expression of
judgment after referring to the nearby notes.

Tested by building on x86_64-Linux and macOS(Mojave & Catalina).

Bug: https://sourceware.org/PR28413
---
 gnulib/import/c++defs.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnulib/import/c++defs.h b/gnulib/import/c++defs.h
index 39df1bc76bc..dbbae2f1fa2 100644
--- a/gnulib/import/c++defs.h
+++ b/gnulib/import/c++defs.h
@@ -286,7 +286,7 @@
    _GL_CXXALIASWARN_2 (func, namespace)
 /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
    we enable the warning only when not optimizing.  */
-# if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
+# if defined __GNUC__ && !defined __clang__ && !__OPTIMIZE__
 #  define _GL_CXXALIASWARN_2(func,namespace) \
     _GL_WARN_ON_USE (func, \
                      "The symbol ::" #func " refers to the system function. " \
@@ -314,7 +314,7 @@
    _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
 /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
    we enable the warning only when not optimizing.  */
-# if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
+# if defined __GNUC__ && !defined __clang__ && !__OPTIMIZE__
 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
     _GL_WARN_ON_USE_CXX (func, rettype, rettype, parameters_and_attributes, \
                          "The symbol ::" #func " refers to the system function. " \
-- 
2.30.2


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] gdb: Fix build error on macOS
  2021-10-04 10:03 [PATCH] gdb: Fix build error on macOS Enze Li
@ 2021-10-04 16:14 ` Simon Marchi
  2021-10-05  8:23   ` Enze Li
  2021-10-05  4:51 ` Enze Li
  1 sibling, 1 reply; 5+ messages in thread
From: Simon Marchi @ 2021-10-04 16:14 UTC (permalink / raw)
  To: Enze Li, gdb-patches



On 2021-10-04 06:03, Enze Li via Gdb-patches wrote:
> PR build/28413 notes that the gdb master fails to build on macOS.
> 
> Based on De Morgan's law, the expression
> !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
> is equal to (!defined __GNUC__ || defined __clang__ || !__OPTIMIZE).
> The expression above looks weird, maybe there are some problems with
> this way of judging. When any one of the conditions is established, the
> subsequent judgment will be ignored.
> 
> This patch works around the issue by rewriting the expression of
> judgment after referring to the nearby notes.
> 
> Tested by building on x86_64-Linux and macOS(Mojave & Catalina).

Thanks for addressing this.  Please send the patch to upstream gnulib,
to the following mailing list:

  https://lists.gnu.org/mailman/listinfo/bug-gnulib

Then we can pull the updated feedback.

Otherwise, we can always have a local patch in
binutils-gdb/gnulib/patches, but if the change is correct, I don't see
why it wouldn't be accepted in upstream gnulib.

Thanks,

Simon

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] gdb: Fix build error on macOS
  2021-10-04 10:03 [PATCH] gdb: Fix build error on macOS Enze Li
  2021-10-04 16:14 ` Simon Marchi
@ 2021-10-05  4:51 ` Enze Li
  2021-10-06  0:05   ` Bruno Haible
  1 sibling, 1 reply; 5+ messages in thread
From: Enze Li @ 2021-10-05  4:51 UTC (permalink / raw)
  To: gdb-patches, bug-gnulib

[ add bug-gnulib@gnu.org ]

On 10/4/21 6:03 PM, Enze Li via Gdb-patches wrote:
> PR build/28413 notes that the gdb master fails to build on macOS.
> 
> Based on De Morgan's law, the expression
> !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
> is equal to (!defined __GNUC__ || defined __clang__ || !__OPTIMIZE).
> The expression above looks weird, maybe there are some problems with
> this way of judging. When any one of the conditions is established, the
> subsequent judgment will be ignored.
> 
> This patch works around the issue by rewriting the expression of
> judgment after referring to the nearby notes.
> 
> Tested by building on x86_64-Linux and macOS(Mojave & Catalina).
> 
> Bug: https://sourceware.org/PR28413
> ---
>  gnulib/import/c++defs.h | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/gnulib/import/c++defs.h b/gnulib/import/c++defs.h
> index 39df1bc76bc..dbbae2f1fa2 100644
> --- a/gnulib/import/c++defs.h
> +++ b/gnulib/import/c++defs.h
> @@ -286,7 +286,7 @@
>     _GL_CXXALIASWARN_2 (func, namespace)
>  /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
>     we enable the warning only when not optimizing.  */
> -# if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
> +# if defined __GNUC__ && !defined __clang__ && !__OPTIMIZE__
>  #  define _GL_CXXALIASWARN_2(func,namespace) \
>      _GL_WARN_ON_USE (func, \
>                       "The symbol ::" #func " refers to the system function. " \
> @@ -314,7 +314,7 @@
>     _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
>  /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
>     we enable the warning only when not optimizing.  */
> -# if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
> +# if defined __GNUC__ && !defined __clang__ && !__OPTIMIZE__
>  #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
>      _GL_WARN_ON_USE_CXX (func, rettype, rettype, parameters_and_attributes, \
>                           "The symbol ::" #func " refers to the system function. " \
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] gdb: Fix build error on macOS
  2021-10-04 16:14 ` Simon Marchi
@ 2021-10-05  8:23   ` Enze Li
  0 siblings, 0 replies; 5+ messages in thread
From: Enze Li @ 2021-10-05  8:23 UTC (permalink / raw)
  To: Simon Marchi, gdb-patches

Thanks for the review.

I noticed that the upstream gnulib and the gnulib used in gdb have different directory structures, and it would be confused to forward this patch to them directly. I will soon remake a patch based on the upstream gnulib and send it to the bug-gnulib mailing list.

Thanks,
Enze

On 10/5/21 12:14 AM, Simon Marchi wrote:
> 
> 
> On 2021-10-04 06:03, Enze Li via Gdb-patches wrote:
>> PR build/28413 notes that the gdb master fails to build on macOS.
>>
>> Based on De Morgan's law, the expression
>> !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
>> is equal to (!defined __GNUC__ || defined __clang__ || !__OPTIMIZE).
>> The expression above looks weird, maybe there are some problems with
>> this way of judging. When any one of the conditions is established, the
>> subsequent judgment will be ignored.
>>
>> This patch works around the issue by rewriting the expression of
>> judgment after referring to the nearby notes.
>>
>> Tested by building on x86_64-Linux and macOS(Mojave & Catalina).
> 
> Thanks for addressing this.  Please send the patch to upstream gnulib,
> to the following mailing list:
> 
>   https://lists.gnu.org/mailman/listinfo/bug-gnulib
> 
> Then we can pull the updated feedback.
> 
> Otherwise, we can always have a local patch in
> binutils-gdb/gnulib/patches, but if the change is correct, I don't see
> why it wouldn't be accepted in upstream gnulib.
> 
> Thanks,
> 
> Simon
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] gdb: Fix build error on macOS
  2021-10-05  4:51 ` Enze Li
@ 2021-10-06  0:05   ` Bruno Haible
  0 siblings, 0 replies; 5+ messages in thread
From: Bruno Haible @ 2021-10-06  0:05 UTC (permalink / raw)
  To: gdb-patches, bug-gnulib

Enze Li wrote:
> > PR build/28413 notes that the gdb master fails to build on macOS.

The build fails due to the combination of '-Werror' and a useful
warning emitted by Gnulib.

But Gnulib does not support '-Werror'. To fix the issue, you need to
filter out the '-Werror' option. Or not add it in the first place.

> > Based on De Morgan's law, the expression
> > !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
> > is equal to (!defined __GNUC__ || defined __clang__ || !__OPTIMIZE).
> > The expression above looks weird, maybe there are some problems with
> > this way of judging. When any one of the conditions is established, the
> > subsequent judgment will be ignored.
> > 
> > This patch works around the issue by rewriting the expression of
> > judgment after referring to the nearby notes.

This text does not explain what the patch does.

> > --- a/gnulib/import/c++defs.h
> > +++ b/gnulib/import/c++defs.h
> > @@ -286,7 +286,7 @@
> >     _GL_CXXALIASWARN_2 (func, namespace)
> >  /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
> >     we enable the warning only when not optimizing.  */
> > -# if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
> > +# if defined __GNUC__ && !defined __clang__ && !__OPTIMIZE__
> >  #  define _GL_CXXALIASWARN_2(func,namespace) \
> >      _GL_WARN_ON_USE (func, \
> >                       "The symbol ::" #func " refers to the system function. " \

The previous code enables a useful warning for clang, and does not enable it
for GCC because that would trigger a GCC bug.

Your patch swaps the cases of clang and GCC. Thus it removes a useful warning
for clang builds, and triggers a known GCC bug in the GCC builds.

> > @@ -314,7 +314,7 @@
> >     _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
> >  /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
> >     we enable the warning only when not optimizing.  */
> > -# if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
> > +# if defined __GNUC__ && !defined __clang__ && !__OPTIMIZE__
> >  #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
> >      _GL_WARN_ON_USE_CXX (func, rettype, rettype, parameters_and_attributes, \
> >                           "The symbol ::" #func " refers to the system function. " \

Likewise.

So, the patch is bad on all accounts.

Bruno




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-10-06  0:06 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-04 10:03 [PATCH] gdb: Fix build error on macOS Enze Li
2021-10-04 16:14 ` Simon Marchi
2021-10-05  8:23   ` Enze Li
2021-10-05  4:51 ` Enze Li
2021-10-06  0:05   ` Bruno Haible

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).