* [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 an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.