Re: perf tool build error

From: Arnaldo Carvalho de Melo
Date: Mon May 17 2010 - 10:54:43 EST


Em Mon, May 17, 2010 at 11:21:44AM +0800, Lin Ming escreveu:
> Build perf tool in latest tip tree(17efbf4) fails,
>
> $ gcc --version
> gcc (GCC) 4.3.2 20081105 (Red Hat 4.3.2-7)

> cc1: warnings being treated as errors
> util/newt.c: In function âobjdump_line__showâ:
> util/newt.c:252: error: passing argument 1 of âSLsmg_printfâ discards qualifiers from pointer target type
> util/newt.c:258: error: passing argument 1 of âSLsmg_write_nstringâ discards qualifiers from pointer target type

What distribution is this?

The problem here lies in the slang-devel package, I guess we'll have
to have the following patch, please apply and see if it cures the issue.

The problem doesn't happen at least in slang >= 2.1.4 when we define
ENABLE_SLFUTURE_CONST, as we do in tools/perf/Makefile, but since we
want to have perf building in as many scenarios as possible, the patch
is needed, please let me know if it works for you and I'll queue it up.

- Arnaldo

diff --git a/tools/perf/util/newt.c b/tools/perf/util/newt.c
index 2001d26..ccb7c5b 100644
--- a/tools/perf/util/newt.c
+++ b/tools/perf/util/newt.c
@@ -14,6 +14,17 @@
#include "sort.h"
#include "symbol.h"

+#if SLANG_VERSION < 20104
+#define slsmg_printf(msg, args...) SLsmg_printf((char *)msg, ##args)
+#define slsmg_write_nstring(msg, len) SLsmg_write_nstring((char *)msg, len)
+#define sltt_set_color(obj, name, fg, bg) SLtt_set_color(obj,(char *)name,\
+ (char *)fg, (char *)bg)
+#else
+#define slsmg_printf SLsmg_printf
+#define slsmg_write_nstring SLsmg_write_nstring
+#define sltt_set_color SLtt_set_color
+#endif
+
struct ui_progress {
newtComponent form, scale;
};
@@ -292,21 +303,21 @@ static int objdump_line__show(struct objdump_line *self, struct list_head *head,

color = ui_browser__percent_color(percent, current_entry);
SLsmg_set_color(color);
- SLsmg_printf(" %7.2f ", percent);
+ slsmg_printf(" %7.2f ", percent);
if (!current_entry)
SLsmg_set_color(HE_COLORSET_CODE);
} else {
int color = ui_browser__percent_color(0, current_entry);
SLsmg_set_color(color);
- SLsmg_write_nstring(" ", 9);
+ slsmg_write_nstring(" ", 9);
}

SLsmg_write_char(':');
- SLsmg_write_nstring(" ", 8);
+ slsmg_write_nstring(" ", 8);
if (!*self->line)
- SLsmg_write_nstring(" ", width - 18);
+ slsmg_write_nstring(" ", width - 18);
else
- SLsmg_write_nstring(self->line, width - 18);
+ slsmg_write_nstring(self->line, width - 18);

return 0;
}
@@ -1054,11 +1065,11 @@ void setup_browser(void)
newtInit();
newtCls();
ui_helpline__puts(" ");
- SLtt_set_color(HE_COLORSET_TOP, NULL, c->topColorFg, c->topColorBg);
- SLtt_set_color(HE_COLORSET_MEDIUM, NULL, c->mediumColorFg, c->mediumColorBg);
- SLtt_set_color(HE_COLORSET_NORMAL, NULL, c->normalColorFg, c->normalColorBg);
- SLtt_set_color(HE_COLORSET_SELECTED, NULL, c->selColorFg, c->selColorBg);
- SLtt_set_color(HE_COLORSET_CODE, NULL, c->codeColorFg, c->codeColorBg);
+ sltt_set_color(HE_COLORSET_TOP, NULL, c->topColorFg, c->topColorBg);
+ sltt_set_color(HE_COLORSET_MEDIUM, NULL, c->mediumColorFg, c->mediumColorBg);
+ sltt_set_color(HE_COLORSET_NORMAL, NULL, c->normalColorFg, c->normalColorBg);
+ sltt_set_color(HE_COLORSET_SELECTED, NULL, c->selColorFg, c->selColorBg);
+ sltt_set_color(HE_COLORSET_CODE, NULL, c->codeColorFg, c->codeColorBg);
}

void exit_browser(bool wait_for_ok)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/