From: Blue Swirl <blauwirbel@gmail.com>
To: Thomas Monjalon <thomas_ml@monjalon.net>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] microblaze: fix custom fprintf
Date: Tue, 27 Apr 2010 21:58:35 +0300 [thread overview]
Message-ID: <n2kf43fc5581004271158md655705bqc2745d19ea87f76@mail.gmail.com> (raw)
In-Reply-To: <1272374829-3594-1-git-send-email-thomas_ml@monjalon.net>
Thanks, applied. Also clang analyzer had problems with the 'fprintf' variable.
On 4/27/10, Thomas Monjalon <thomas_ml@monjalon.net> wrote:
> From: Thomas Monjalon <thomas@monjalon.net>
>
> Using GCC-4.2.4-1ubuntu4, there is a warning:
> microblaze-dis.c:792: warning: unused variable 'fprintf'
>
> Indeed, fprintf() is shadowed by a custom redefinition but is not used because
> of FORTIFY_SOURCE option which replace calls to fprintf() by fprintf_chk().
> So, fprintf refers to the libc implementation instead of the qemu one.
> It's a bug.
>
> It is fixed by renaming the variable to something different of "fprintf".
> It prevents from hazardous shadowing.
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---
> microblaze-dis.c | 62 +++++++++++++++++++++++++++---------------------------
> 1 files changed, 31 insertions(+), 31 deletions(-)
>
> diff --git a/microblaze-dis.c b/microblaze-dis.c
> index 9235fd8..7694a43 100644
> --- a/microblaze-dis.c
> +++ b/microblaze-dis.c
> @@ -789,7 +789,7 @@ read_insn_microblaze (bfd_vma memaddr,
> int
> print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info)
> {
> - fprintf_ftype fprintf = info->fprintf_func;
> + fprintf_ftype fprintf_func = info->fprintf_func;
> void * stream = info->stream;
> unsigned long inst, prev_inst;
> struct op_code_struct * op, *pop;
> @@ -826,19 +826,19 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info)
> prev_insn_vma = curr_insn_vma;
>
> if (op->name == 0) {
> - fprintf (stream, ".short 0x%04lx", inst);
> + fprintf_func (stream, ".short 0x%04lx", inst);
> }
> else
> {
> - fprintf (stream, "%s", op->name);
> + fprintf_func (stream, "%s", op->name);
>
> switch (op->inst_type)
> {
> case INST_TYPE_RD_R1_R2:
> - fprintf(stream, "\t%s, %s, %s", get_field_rd(inst), get_field_r1(inst), get_field_r2(inst));
> + fprintf_func(stream, "\t%s, %s, %s", get_field_rd(inst), get_field_r1(inst), get_field_r2(inst));
> break;
> case INST_TYPE_RD_R1_IMM:
> - fprintf(stream, "\t%s, %s, %s", get_field_rd(inst), get_field_r1(inst), get_field_imm(inst));
> + fprintf_func(stream, "\t%s, %s, %s", get_field_rd(inst), get_field_r1(inst), get_field_imm(inst));
> if (info->print_address_func && get_int_field_r1(inst) == 0 && info->symbol_at_address_func) {
> if (immfound)
> immval |= (get_int_field_imm(inst) & 0x0000ffff);
> @@ -848,34 +848,34 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info)
> immval |= 0xFFFF0000;
> }
> if (immval > 0 && info->symbol_at_address_func(immval, info)) {
> - fprintf (stream, "\t// ");
> + fprintf_func (stream, "\t// ");
> info->print_address_func (immval, info);
> }
> }
> break;
> case INST_TYPE_RD_R1_IMM5:
> - fprintf(stream, "\t%s, %s, %s", get_field_rd(inst), get_field_r1(inst), get_field_imm5(inst));
> + fprintf_func(stream, "\t%s, %s, %s", get_field_rd(inst), get_field_r1(inst), get_field_imm5(inst));
> break;
> case INST_TYPE_RD_RFSL:
> - fprintf(stream, "\t%s, %s", get_field_rd(inst), get_field_rfsl(inst));
> + fprintf_func(stream, "\t%s, %s", get_field_rd(inst), get_field_rfsl(inst));
> break;
> case INST_TYPE_R1_RFSL:
> - fprintf(stream, "\t%s, %s", get_field_r1(inst), get_field_rfsl(inst));
> + fprintf_func(stream, "\t%s, %s", get_field_r1(inst), get_field_rfsl(inst));
> break;
> case INST_TYPE_RD_SPECIAL:
> - fprintf(stream, "\t%s, %s", get_field_rd(inst), get_field_special(inst, op));
> + fprintf_func(stream, "\t%s, %s", get_field_rd(inst), get_field_special(inst, op));
> break;
> case INST_TYPE_SPECIAL_R1:
> - fprintf(stream, "\t%s, %s", get_field_special(inst, op), get_field_r1(inst));
> + fprintf_func(stream, "\t%s, %s", get_field_special(inst, op), get_field_r1(inst));
> break;
> case INST_TYPE_RD_R1:
> - fprintf(stream, "\t%s, %s", get_field_rd(inst), get_field_r1(inst));
> + fprintf_func(stream, "\t%s, %s", get_field_rd(inst), get_field_r1(inst));
> break;
> case INST_TYPE_R1_R2:
> - fprintf(stream, "\t%s, %s", get_field_r1(inst), get_field_r2(inst));
> + fprintf_func(stream, "\t%s, %s", get_field_r1(inst), get_field_r2(inst));
> break;
> case INST_TYPE_R1_IMM:
> - fprintf(stream, "\t%s, %s", get_field_r1(inst), get_field_imm(inst));
> + fprintf_func(stream, "\t%s, %s", get_field_r1(inst), get_field_imm(inst));
> /* The non-pc relative instructions are returns, which shouldn't
> have a label printed */
> if (info->print_address_func && op->inst_offset_type == INST_PC_OFFSET && info->symbol_at_address_func) {
> @@ -888,16 +888,16 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info)
> }
> immval += memaddr;
> if (immval > 0 && info->symbol_at_address_func(immval, info)) {
> - fprintf (stream, "\t// ");
> + fprintf_func (stream, "\t// ");
> info->print_address_func (immval, info);
> } else {
> - fprintf (stream, "\t\t// ");
> - fprintf (stream, "%x", immval);
> + fprintf_func (stream, "\t\t// ");
> + fprintf_func (stream, "%x", immval);
> }
> }
> break;
> case INST_TYPE_RD_IMM:
> - fprintf(stream, "\t%s, %s", get_field_rd(inst), get_field_imm(inst));
> + fprintf_func(stream, "\t%s, %s", get_field_rd(inst), get_field_imm(inst));
> if (info->print_address_func && info->symbol_at_address_func) {
> if (immfound)
> immval |= (get_int_field_imm(inst) & 0x0000ffff);
> @@ -909,13 +909,13 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info)
> if (op->inst_offset_type == INST_PC_OFFSET)
> immval += (int) memaddr;
> if (info->symbol_at_address_func(immval, info)) {
> - fprintf (stream, "\t// ");
> + fprintf_func (stream, "\t// ");
> info->print_address_func (immval, info);
> }
> }
> break;
> case INST_TYPE_IMM:
> - fprintf(stream, "\t%s", get_field_imm(inst));
> + fprintf_func(stream, "\t%s", get_field_imm(inst));
> if (info->print_address_func && info->symbol_at_address_func && op->instr != imm) {
> if (immfound)
> immval |= (get_int_field_imm(inst) & 0x0000ffff);
> @@ -927,39 +927,39 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info)
> if (op->inst_offset_type == INST_PC_OFFSET)
> immval += (int) memaddr;
> if (immval > 0 && info->symbol_at_address_func(immval, info)) {
> - fprintf (stream, "\t// ");
> + fprintf_func (stream, "\t// ");
> info->print_address_func (immval, info);
> } else if (op->inst_offset_type == INST_PC_OFFSET) {
> - fprintf (stream, "\t\t// ");
> - fprintf (stream, "%x", immval);
> + fprintf_func (stream, "\t\t// ");
> + fprintf_func (stream, "%x", immval);
> }
> }
> break;
> case INST_TYPE_RD_R2:
> - fprintf(stream, "\t%s, %s", get_field_rd(inst), get_field_r2(inst));
> + fprintf_func(stream, "\t%s, %s", get_field_rd(inst), get_field_r2(inst));
> break;
> case INST_TYPE_R2:
> - fprintf(stream, "\t%s", get_field_r2(inst));
> + fprintf_func(stream, "\t%s", get_field_r2(inst));
> break;
> case INST_TYPE_R1:
> - fprintf(stream, "\t%s", get_field_r1(inst));
> + fprintf_func(stream, "\t%s", get_field_r1(inst));
> break;
> case INST_TYPE_RD_R1_SPECIAL:
> - fprintf(stream, "\t%s, %s", get_field_rd(inst), get_field_r2(inst));
> + fprintf_func(stream, "\t%s, %s", get_field_rd(inst), get_field_r2(inst));
> break;
> case INST_TYPE_RD_IMM15:
> - fprintf(stream, "\t%s, %s", get_field_rd(inst), get_field_imm15(inst));
> + fprintf_func(stream, "\t%s, %s", get_field_rd(inst), get_field_imm15(inst));
> break;
> /* For tuqula instruction */
> case INST_TYPE_RD:
> - fprintf(stream, "\t%s", get_field_rd(inst));
> + fprintf_func(stream, "\t%s", get_field_rd(inst));
> break;
> case INST_TYPE_RFSL:
> - fprintf(stream, "\t%s", get_field_rfsl(inst));
> + fprintf_func(stream, "\t%s", get_field_rfsl(inst));
> break;
> default:
> /* if the disassembler lags the instruction set */
> - fprintf (stream, "\tundecoded operands, inst is 0x%04lx", inst);
> + fprintf_func (stream, "\tundecoded operands, inst is 0x%04lx", inst);
> break;
> }
> }
>
> --
> 1.7.1
>
>
>
>
>
>
prev parent reply other threads:[~2010-04-27 18:58 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-27 13:27 [Qemu-devel] [PATCH] microblaze: fix custom fprintf Thomas Monjalon
2010-04-27 18:58 ` Blue Swirl [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=n2kf43fc5581004271158md655705bqc2745d19ea87f76@mail.gmail.com \
--to=blauwirbel@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=thomas_ml@monjalon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).