Re: [PATCH] symbol: preserve address space qualifiers with typeof()
Chris Li <[email protected]>
| Newsgroups | org.kernel.vger.linux-sparse |
|---|---|
| Message-ID | <CACePvbXdMNTp1cO=ORLv3C824McNP2xdOmtNXK2KkoCd=F82og@mail.gmail.com> |
On Sat, Oct 18, 2025 at 2:36 AM Dan Carpenter <[email protected]> wrote: > > When we're parsing typeof(var) we then preserve the address space > qualifiers as well. Otherwise it leads to warnings like this: > > "warning: cast removes address space '__seg_gs' of expression" > > Reported-by: Uros Bizjak <[email protected]> > Signed-off-by: Dan Carpenter <[email protected]> Thanks. I just apply it on sparse-dev tips, it applies without conflicts. However it seems "make check" has 67 tests failed now rather than 65 known failures. There are two more test cases that failed with this patch: KO: out of 902 tests, 835 passed, 67 failed 65 of them are known to fail 2 tests were disabled make: *** [Makefile:285: check] Error 1 Maybe some test cases need to be updated as well? I haven't debugged the details of the new failure yet. While we are at it, can we add Uros' reporting case as a validator check as well? After fixing the new test failure, I can apply this patch to sparse-dev. If the validation check patch shows up in the sparse mailing list. I will move the validation check before this patch. Chris > --- > symbol.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/symbol.c b/symbol.c > index 6a39e5487c17..301a6ed225d2 100644 > --- a/symbol.c > +++ b/symbol.c > @@ -552,6 +552,7 @@ static struct symbol *examine_pointer_type(struct symbol *sym) > static struct symbol *examine_typeof_helper(struct symbol *sym, bool qual) > { > struct symbol *base = evaluate_expression(sym->initializer); > + struct ident *as = base->ctype.as; > unsigned long mod = 0; > > if (!base) > @@ -567,6 +568,8 @@ static struct symbol *examine_typeof_helper(struct symbol *sym, bool qual) > sym->type = SYM_NODE; > sym->ctype.modifiers = mod; > sym->ctype.base_type = base; > + if (qual) > + sym->ctype.as = as; > return examine_node_type(sym); > } > > -- > 2.51.0 > >