diff mbox series

[v,1/1] powerpc/64s: allow for clang's objdump differences

Message ID 20200724001605.3718561-1-morbo@google.com (mailing list archive)
State Superseded
Headers show
Series [v,1/1] powerpc/64s: allow for clang's objdump differences | expand

Commit Message

Bill Wendling July 24, 2020, 12:16 a.m. UTC
Clang's objdump emits slightly different output from GNU's objdump,
causing a list of warnings to be emitted during relocatable builds.
E.g., clang's objdump emits this:

   c000000000000004: 2c 00 00 48  b  0xc000000000000030
   ...
   c000000000005c6c: 10 00 82 40  bf 2, 0xc000000000005c7c

while GNU objdump emits:

   c000000000000004: 2c 00 00 48  b    c000000000000030 <__start+0x30>
   ...
   c000000000005c6c: 10 00 82 40  bne  c000000000005c7c <masked_interrupt+0x3c>

Adjust llvm-objdump's output to remove the extraneous '0x' and convert
'bf' and 'bt' to 'bne' and 'beq' resp. to more closely match GNU
objdump's output.

Note that clang's objdump doesn't yet output the relocation symbols on
PPC.

Signed-off-by: Bill Wendling <morbo@google.com>
---
 arch/powerpc/tools/unrel_branch_check.sh | 3 +++
 1 file changed, 3 insertions(+)

Comments

Michael Ellerman July 24, 2020, 10:48 a.m. UTC | #1
Hi Bill,

Bill Wendling <morbo@google.com> writes:
> Clang's objdump emits slightly different output from GNU's objdump,
> causing a list of warnings to be emitted during relocatable builds.
> E.g., clang's objdump emits this:
>
>    c000000000000004: 2c 00 00 48  b  0xc000000000000030
>    ...
>    c000000000005c6c: 10 00 82 40  bf 2, 0xc000000000005c7c
>
> while GNU objdump emits:
>
>    c000000000000004: 2c 00 00 48  b    c000000000000030 <__start+0x30>
>    ...
>    c000000000005c6c: 10 00 82 40  bne  c000000000005c7c <masked_interrupt+0x3c>
>
> Adjust llvm-objdump's output to remove the extraneous '0x' and convert
> 'bf' and 'bt' to 'bne' and 'beq' resp. to more closely match GNU
> objdump's output.
>
> Note that clang's objdump doesn't yet output the relocation symbols on
> PPC.
>
> Signed-off-by: Bill Wendling <morbo@google.com>
> ---
>  arch/powerpc/tools/unrel_branch_check.sh | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/arch/powerpc/tools/unrel_branch_check.sh b/arch/powerpc/tools/unrel_branch_check.sh
> index 77114755dc6f..71ce86b68d18 100755
> --- a/arch/powerpc/tools/unrel_branch_check.sh
> +++ b/arch/powerpc/tools/unrel_branch_check.sh
> @@ -31,6 +31,9 @@ grep -e "^c[0-9a-f]*:[[:space:]]*\([0-9a-f][0-9a-f][[:space:]]\)\{4\}[[:space:]]
>  grep -v '\<__start_initialization_multiplatform>' |
>  grep -v -e 'b.\?.\?ctr' |
>  grep -v -e 'b.\?.\?lr' |
> +sed 's/\bbt.\?[[:space:]]*[[:digit:]][[:digit:]]*,/beq/' |
> +sed 's/\bbf.\?[[:space:]]*[[:digit:]][[:digit:]]*,/bne/' |
> +sed 's/[[:space:]]0x/ /' |
>  sed 's/://' |

I know you followed the example in the script of just doing everything
as a separate entry in the pipeline, but I think we could consolidate
all the seds into one?

eg:

sed -e 's/\bbt.\?[[:space:]]*[[:digit:]][[:digit:]]*,/beq/' \
    -e 's/\bbf.\?[[:space:]]*[[:digit:]][[:digit:]]*,/bne/' \
    -e 's/[[:space:]]0x/ /' \
    -e 's/://' |

Does that work?

cheers
Bill Wendling July 24, 2020, 10:40 p.m. UTC | #2
On Fri, Jul 24, 2020 at 3:48 AM Michael Ellerman <mpe@ellerman.id.au> wrote:
>
> Hi Bill,
>
> Bill Wendling <morbo@google.com> writes:
> > Clang's objdump emits slightly different output from GNU's objdump,
> > causing a list of warnings to be emitted during relocatable builds.
> > E.g., clang's objdump emits this:
> >
> >    c000000000000004: 2c 00 00 48  b  0xc000000000000030
> >    ...
> >    c000000000005c6c: 10 00 82 40  bf 2, 0xc000000000005c7c
> >
> > while GNU objdump emits:
> >
> >    c000000000000004: 2c 00 00 48  b    c000000000000030 <__start+0x30>
> >    ...
> >    c000000000005c6c: 10 00 82 40  bne  c000000000005c7c <masked_interrupt+0x3c>
> >
> > Adjust llvm-objdump's output to remove the extraneous '0x' and convert
> > 'bf' and 'bt' to 'bne' and 'beq' resp. to more closely match GNU
> > objdump's output.
> >
> > Note that clang's objdump doesn't yet output the relocation symbols on
> > PPC.
> >
> > Signed-off-by: Bill Wendling <morbo@google.com>
> > ---
> >  arch/powerpc/tools/unrel_branch_check.sh | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/arch/powerpc/tools/unrel_branch_check.sh b/arch/powerpc/tools/unrel_branch_check.sh
> > index 77114755dc6f..71ce86b68d18 100755
> > --- a/arch/powerpc/tools/unrel_branch_check.sh
> > +++ b/arch/powerpc/tools/unrel_branch_check.sh
> > @@ -31,6 +31,9 @@ grep -e "^c[0-9a-f]*:[[:space:]]*\([0-9a-f][0-9a-f][[:space:]]\)\{4\}[[:space:]]
> >  grep -v '\<__start_initialization_multiplatform>' |
> >  grep -v -e 'b.\?.\?ctr' |
> >  grep -v -e 'b.\?.\?lr' |
> > +sed 's/\bbt.\?[[:space:]]*[[:digit:]][[:digit:]]*,/beq/' |
> > +sed 's/\bbf.\?[[:space:]]*[[:digit:]][[:digit:]]*,/bne/' |
> > +sed 's/[[:space:]]0x/ /' |
> >  sed 's/://' |
>
> I know you followed the example in the script of just doing everything
> as a separate entry in the pipeline, but I think we could consolidate
> all the seds into one?
>
> eg:
>
> sed -e 's/\bbt.\?[[:space:]]*[[:digit:]][[:digit:]]*,/beq/' \
>     -e 's/\bbf.\?[[:space:]]*[[:digit:]][[:digit:]]*,/bne/' \
>     -e 's/[[:space:]]0x/ /' \
>     -e 's/://' |
>
> Does that work?
>
I'm fine with that. I separated them mostly for my benefit while
creating the patch to keep things simple. :-) I'll send out an update.

-bw
diff mbox series

Patch

diff --git a/arch/powerpc/tools/unrel_branch_check.sh b/arch/powerpc/tools/unrel_branch_check.sh
index 77114755dc6f..71ce86b68d18 100755
--- a/arch/powerpc/tools/unrel_branch_check.sh
+++ b/arch/powerpc/tools/unrel_branch_check.sh
@@ -31,6 +31,9 @@  grep -e "^c[0-9a-f]*:[[:space:]]*\([0-9a-f][0-9a-f][[:space:]]\)\{4\}[[:space:]]
 grep -v '\<__start_initialization_multiplatform>' |
 grep -v -e 'b.\?.\?ctr' |
 grep -v -e 'b.\?.\?lr' |
+sed 's/\bbt.\?[[:space:]]*[[:digit:]][[:digit:]]*,/beq/' |
+sed 's/\bbf.\?[[:space:]]*[[:digit:]][[:digit:]]*,/bne/' |
+sed 's/[[:space:]]0x/ /' |
 sed 's/://' |
 awk '{ print $1 ":" $6 ":0x" $7 ":" $8 " "}'
 )