|
@@ -312,7 +312,7 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
|
|
|
#endif
|
|
|
NULL
|
|
|
};
|
|
|
- const struct option options[] = {
|
|
|
+ struct option options[] = {
|
|
|
OPT_INCR('v', "verbose", &verbose,
|
|
|
"be more verbose (show parsed arguments, etc)"),
|
|
|
OPT_BOOLEAN('l', "list", ¶ms.list_events,
|
|
@@ -382,6 +382,14 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
|
|
|
};
|
|
|
int ret;
|
|
|
|
|
|
+ set_option_flag(options, 'a', "add", PARSE_OPT_EXCLUSIVE);
|
|
|
+ set_option_flag(options, 'd', "del", PARSE_OPT_EXCLUSIVE);
|
|
|
+ set_option_flag(options, 'l', "list", PARSE_OPT_EXCLUSIVE);
|
|
|
+#ifdef HAVE_DWARF_SUPPORT
|
|
|
+ set_option_flag(options, 'L', "line", PARSE_OPT_EXCLUSIVE);
|
|
|
+ set_option_flag(options, 'V', "vars", PARSE_OPT_EXCLUSIVE);
|
|
|
+#endif
|
|
|
+
|
|
|
argc = parse_options(argc, argv, options, probe_usage,
|
|
|
PARSE_OPT_STOP_AT_NON_OPTION);
|
|
|
if (argc > 0) {
|
|
@@ -409,22 +417,6 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
|
|
|
symbol_conf.try_vmlinux_path = (symbol_conf.vmlinux_name == NULL);
|
|
|
|
|
|
if (params.list_events) {
|
|
|
- if (params.mod_events) {
|
|
|
- pr_err(" Error: Don't use --list with --add/--del.\n");
|
|
|
- usage_with_options(probe_usage, options);
|
|
|
- }
|
|
|
- if (params.show_lines) {
|
|
|
- pr_err(" Error: Don't use --list with --line.\n");
|
|
|
- usage_with_options(probe_usage, options);
|
|
|
- }
|
|
|
- if (params.show_vars) {
|
|
|
- pr_err(" Error: Don't use --list with --vars.\n");
|
|
|
- usage_with_options(probe_usage, options);
|
|
|
- }
|
|
|
- if (params.show_funcs) {
|
|
|
- pr_err(" Error: Don't use --list with --funcs.\n");
|
|
|
- usage_with_options(probe_usage, options);
|
|
|
- }
|
|
|
if (params.uprobes) {
|
|
|
pr_warning(" Error: Don't use --list with --exec.\n");
|
|
|
usage_with_options(probe_usage, options);
|
|
@@ -435,19 +427,6 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
|
|
|
return ret;
|
|
|
}
|
|
|
if (params.show_funcs) {
|
|
|
- if (params.nevents != 0 || params.dellist) {
|
|
|
- pr_err(" Error: Don't use --funcs with"
|
|
|
- " --add/--del.\n");
|
|
|
- usage_with_options(probe_usage, options);
|
|
|
- }
|
|
|
- if (params.show_lines) {
|
|
|
- pr_err(" Error: Don't use --funcs with --line.\n");
|
|
|
- usage_with_options(probe_usage, options);
|
|
|
- }
|
|
|
- if (params.show_vars) {
|
|
|
- pr_err(" Error: Don't use --funcs with --vars.\n");
|
|
|
- usage_with_options(probe_usage, options);
|
|
|
- }
|
|
|
if (!params.filter)
|
|
|
params.filter = strfilter__new(DEFAULT_FUNC_FILTER,
|
|
|
NULL);
|
|
@@ -462,16 +441,6 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
|
|
|
|
|
|
#ifdef HAVE_DWARF_SUPPORT
|
|
|
if (params.show_lines) {
|
|
|
- if (params.mod_events) {
|
|
|
- pr_err(" Error: Don't use --line with"
|
|
|
- " --add/--del.\n");
|
|
|
- usage_with_options(probe_usage, options);
|
|
|
- }
|
|
|
- if (params.show_vars) {
|
|
|
- pr_err(" Error: Don't use --line with --vars.\n");
|
|
|
- usage_with_options(probe_usage, options);
|
|
|
- }
|
|
|
-
|
|
|
ret = show_line_range(¶ms.line_range, params.target,
|
|
|
params.uprobes);
|
|
|
if (ret < 0)
|
|
@@ -479,11 +448,6 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
|
|
|
return ret;
|
|
|
}
|
|
|
if (params.show_vars) {
|
|
|
- if (params.mod_events) {
|
|
|
- pr_err(" Error: Don't use --vars with"
|
|
|
- " --add/--del.\n");
|
|
|
- usage_with_options(probe_usage, options);
|
|
|
- }
|
|
|
if (!params.filter)
|
|
|
params.filter = strfilter__new(DEFAULT_VAR_FILTER,
|
|
|
NULL);
|