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 |
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
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 --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 " "}' )
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(+)