* [PATCH 1/2] sparse/semind: add the new --param=dissect-show-compiled option @ 2025-12-26 14:31 Oleg Nesterov 2025-12-26 14:32 ` [PATCH 2/2] sparse/semind: robustify parse_cmdline_add() Oleg Nesterov 2025-12-27 15:58 ` [PATCH 1/2] sparse/semind: add the new --param=dissect-show-compiled option Alexey Gladkov 0 siblings, 2 replies; 4+ messages in thread From: Oleg Nesterov @ 2025-12-26 14:31 UTC (permalink / raw) To: Chris Li, Luc Van Oostenryck; +Cc: Alexey Gladkov, linux-sparse parse_cmdline_add() sets dissect_show_all_symbols = 1 unconditionally and currently it is not possible to clear this option. We could simply remove this line; users could use "semind add --param=dissect-show-all-symbols," but this would break existing setups. Signed-off-by: Oleg Nesterov <oleg@redhat.com> --- options.c | 2 ++ semind.c | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/options.c b/options.c index 0f207e80..dbe0349f 100644 --- a/options.c +++ b/options.c @@ -976,6 +976,8 @@ static char **handle_param(char *arg, char **next) if (!strcmp(value, "dissect-show-all-symbols")) dissect_show_all_symbols = 1; + else if (!strcmp(value, "dissect-show-compiled")) + dissect_show_all_symbols = 0; return next; } diff --git a/semind.c b/semind.c index ad8003ba..fa084e04 100644 --- a/semind.c +++ b/semind.c @@ -322,14 +322,14 @@ done: show_usage(); } - // enforce tabstop + // enforce defaults tabstop = 1; + dissect_show_all_symbols = 1; // step back since sparse_initialize will ignore argv[0]. optind--; sparse_initialize(argc - optind, argv + optind, &semind_filelist); - dissect_show_all_symbols = 1; } static void parse_cmdline_rm(int argc, char **argv) -- 2.52.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] sparse/semind: robustify parse_cmdline_add() 2025-12-26 14:31 [PATCH 1/2] sparse/semind: add the new --param=dissect-show-compiled option Oleg Nesterov @ 2025-12-26 14:32 ` Oleg Nesterov 2025-12-27 15:58 ` Alexey Gladkov 2025-12-27 15:58 ` [PATCH 1/2] sparse/semind: add the new --param=dissect-show-compiled option Alexey Gladkov 1 sibling, 1 reply; 4+ messages in thread From: Oleg Nesterov @ 2025-12-26 14:32 UTC (permalink / raw) To: Chris Li, Luc Van Oostenryck; +Cc: Alexey Gladkov, linux-sparse "semind add -ftabstop=8 ..." works as expected, but (for example) "semind add --param=dissect-show-all-symbols ..." doesn't, this arg is not passed to sparse_initialize(). Because in the latter case getopt_long() increments optind when it sees --param=dissect-show-all-symbols. I have no idea if getopt_long() is correct or not, but lets change parse_cmdline_add() so that it doesn't depend on getopt_long()'s behaviour. Signed-off-by: Oleg Nesterov <oleg@redhat.com> --- semind.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/semind.c b/semind.c index fa084e04..e9708444 100644 --- a/semind.c +++ b/semind.c @@ -298,7 +298,7 @@ static void parse_cmdline_add(int argc, char **argv) { "help", no_argument, NULL, 'h' }, { NULL } }; - int c; + int parsed = optind, c; opterr = 0; @@ -315,6 +315,7 @@ static void parse_cmdline_add(int argc, char **argv) case '?': goto done; } + parsed = optind; } done: if (optind == argc) { @@ -327,9 +328,8 @@ done: dissect_show_all_symbols = 1; // step back since sparse_initialize will ignore argv[0]. - optind--; - - sparse_initialize(argc - optind, argv + optind, &semind_filelist); + parsed--; + sparse_initialize(argc - parsed, argv + parsed, &semind_filelist); } static void parse_cmdline_rm(int argc, char **argv) -- 2.52.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] sparse/semind: robustify parse_cmdline_add() 2025-12-26 14:32 ` [PATCH 2/2] sparse/semind: robustify parse_cmdline_add() Oleg Nesterov @ 2025-12-27 15:58 ` Alexey Gladkov 0 siblings, 0 replies; 4+ messages in thread From: Alexey Gladkov @ 2025-12-27 15:58 UTC (permalink / raw) To: Oleg Nesterov; +Cc: Chris Li, Luc Van Oostenryck, linux-sparse On Fri, Dec 26, 2025 at 03:32:24PM +0100, Oleg Nesterov wrote: > "semind add -ftabstop=8 ..." works as expected, but (for example) > "semind add --param=dissect-show-all-symbols ..." doesn't, this > arg is not passed to sparse_initialize(). > > Because in the latter case getopt_long() increments optind when it > sees --param=dissect-show-all-symbols. I have no idea if getopt_long() > is correct or not, but lets change parse_cmdline_add() so that it doesn't > depend on getopt_long()'s behaviour. > > Signed-off-by: Oleg Nesterov <oleg@redhat.com> Hm. This behavior seems very strange to me. I couldn't find an explanation for it in getopt_long(3) man page. But I tried this sample with glibc and musl, and the behavior was the same and does not depend on POSIXLY_CORRECT #include <stdio.h> #include <getopt.h> int main(int argc, char **argv) { char c; opterr = 0; while ((c = getopt_long(argc, argv, "", NULL, NULL)) != -1) { if (c != '?') printf("unexpected known option: %c\n", c); break; } printf("optind=%d\n", optind); return 0; } Here are the results from both libc: for o in --f "--f f" -f -ff "-f f"; do printf '%s\t' "args='$o'"; ./z-musl $o; done args='--f' optind=1 args='--f f' optind=1 args='-f' optind=2 args='-ff' optind=1 args='-f f' optind=2 So it seems that this is common behavior for different libc's. Thank you so much for finding this and fixing it! Acked-by: Alexey Gladkov <legion@kernel.org> > --- > semind.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/semind.c b/semind.c > index fa084e04..e9708444 100644 > --- a/semind.c > +++ b/semind.c > @@ -298,7 +298,7 @@ static void parse_cmdline_add(int argc, char **argv) > { "help", no_argument, NULL, 'h' }, > { NULL } > }; > - int c; > + int parsed = optind, c; > > opterr = 0; > > @@ -315,6 +315,7 @@ static void parse_cmdline_add(int argc, char **argv) > case '?': > goto done; > } > + parsed = optind; > } > done: > if (optind == argc) { > @@ -327,9 +328,8 @@ done: > dissect_show_all_symbols = 1; > > // step back since sparse_initialize will ignore argv[0]. > - optind--; > - > - sparse_initialize(argc - optind, argv + optind, &semind_filelist); > + parsed--; > + sparse_initialize(argc - parsed, argv + parsed, &semind_filelist); > } > > static void parse_cmdline_rm(int argc, char **argv) > -- > 2.52.0 > > -- Rgrds, legion ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] sparse/semind: add the new --param=dissect-show-compiled option 2025-12-26 14:31 [PATCH 1/2] sparse/semind: add the new --param=dissect-show-compiled option Oleg Nesterov 2025-12-26 14:32 ` [PATCH 2/2] sparse/semind: robustify parse_cmdline_add() Oleg Nesterov @ 2025-12-27 15:58 ` Alexey Gladkov 1 sibling, 0 replies; 4+ messages in thread From: Alexey Gladkov @ 2025-12-27 15:58 UTC (permalink / raw) To: Oleg Nesterov; +Cc: Chris Li, Luc Van Oostenryck, linux-sparse On Fri, Dec 26, 2025 at 03:31:56PM +0100, Oleg Nesterov wrote: > parse_cmdline_add() sets dissect_show_all_symbols = 1 unconditionally > and currently it is not possible to clear this option. > > We could simply remove this line; users could use > "semind add --param=dissect-show-all-symbols," but this would break > existing setups. > > Signed-off-by: Oleg Nesterov <oleg@redhat.com> Acked-by: Alexey Gladkov <legion@kernel.org> > --- > options.c | 2 ++ > semind.c | 4 ++-- > 2 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/options.c b/options.c > index 0f207e80..dbe0349f 100644 > --- a/options.c > +++ b/options.c > @@ -976,6 +976,8 @@ static char **handle_param(char *arg, char **next) > > if (!strcmp(value, "dissect-show-all-symbols")) > dissect_show_all_symbols = 1; > + else if (!strcmp(value, "dissect-show-compiled")) > + dissect_show_all_symbols = 0; > > return next; > } > diff --git a/semind.c b/semind.c > index ad8003ba..fa084e04 100644 > --- a/semind.c > +++ b/semind.c > @@ -322,14 +322,14 @@ done: > show_usage(); > } > > - // enforce tabstop > + // enforce defaults > tabstop = 1; > + dissect_show_all_symbols = 1; > > // step back since sparse_initialize will ignore argv[0]. > optind--; > > sparse_initialize(argc - optind, argv + optind, &semind_filelist); > - dissect_show_all_symbols = 1; > } > > static void parse_cmdline_rm(int argc, char **argv) > -- > 2.52.0 > > -- Rgrds, legion ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-12-27 15:58 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-12-26 14:31 [PATCH 1/2] sparse/semind: add the new --param=dissect-show-compiled option Oleg Nesterov 2025-12-26 14:32 ` [PATCH 2/2] sparse/semind: robustify parse_cmdline_add() Oleg Nesterov 2025-12-27 15:58 ` Alexey Gladkov 2025-12-27 15:58 ` [PATCH 1/2] sparse/semind: add the new --param=dissect-show-compiled option Alexey Gladkov
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 NNTP newsgroup(s).