On Tue, Oct 08, 2019 at 09:24:56AM -0700, William Baker wrote:
> On 10/7/19 9:30 PM, Junio C Hamano wrote:
> > SZEDER Gábor <[email protected]> writes:
> >
> >>> func(PROGRESS | REGRESS);
> >>> func(PROGRESS + REGRESS);
> >>> func(PROGRESS * 3);
> >>> }
> >>>
> >>> how caller came about to give 3?
> >>
> >> No, they tend to show (PROGRESS | REGRESS), at least both gdb and lldb
> >> do.
> I tried to see how lldb would handle the "PROGRESS * 3" scenario
> but I was unable to get lldb to display the "PROGRESS | REGRESS" format
> even when ORing the flags:
>
> (lldb) l 399
> 399 enum test_flags {
> 400 TEST_FLAG_1 = 1 << 0,
> 401 TEST_FLAG_2 = 1 << 1,
> 402 };
> 403
> 404 enum test_flags flags_1 = TEST_FLAG_1;
> 405 enum test_flags flags_2 = TEST_FLAG_2;
> 406 enum test_flags flags_both = TEST_FLAG_1 | TEST_FLAG_2;
> 407
> 408 if (flags_1 || flags_2 || flags_both)
> (lldb) p flags_1
> (test_flags) $0 = TEST_FLAG_1
> (lldb) p flags_2
> (test_flags) $1 = TEST_FLAG_2
> (lldb) p flags_both
> (test_flags) $2 = 3
> (lldb) fr v flags_both
> (test_flags) flags_both = 3
> (lldb) fr v --format enum flags_both
> (test_flags) flags_both = 3
> (lldb) version
> lldb-902.0.79.7
> Swift-4.1
>
> Is there something that needs to be adjusted in the config or with
> --format to display "TEST_FLAG_1 | TEST_FLAG_2" in this example?
I'm afraid you are right and lldb doesn't do this, at least not by
default, what a pity. I tried different versions of gdb and lldb,
distro-shipped older ones and some more recent in containers a couple
of days ago; now I tried it again and see the same behavior as you, so
I must have misremembered. Sorry for the confusion.
gdb still does the user-friendly thing, though.