Request for Approval: Add BFD_VERSION for JDK-8191006: hsdis disassembler plugin does not compile with binutils 2.29+

Leslie Zhai zhaixiang at loongson.cn
Thu Aug 9 08:12:38 UTC 2018


Hi all,

Thanks for David's patch to fix:

https://bugs.openjdk.java.net/browse/JDK-8191006

But hsdis plugin does not compiled with binutils old version 2.27, so I 
just add `BFD_VERSION` for supporting old version binutils:

Here is the patch:

diff -r 09cc8813ae51 src/utils/hsdis/hsdis.c
--- a/src/utils/hsdis/hsdis.c    Wed Aug 08 18:38:34 2018 -0700
+++ b/src/utils/hsdis/hsdis.c    Thu Aug 09 15:49:31 2018 +0800
@@ -338,10 +338,14 @@

    /* Finish linking together the various callback blocks. */
    app_data->dinfo.application_data = (void*) app_data;
+#if BFD_VERSION >= 229000000
    app_data->dfn = disassembler(bfd_get_arch(native_bfd),
                                 bfd_big_endian(native_bfd),
                                 bfd_get_mach(native_bfd),
                                 native_bfd);
+#else
+  app_data->dfn = disassembler(native_bfd);
+#endif
    app_data->dinfo.print_address_func = hsdis_print_address_func;
    app_data->dinfo.read_memory_func = hsdis_read_memory_func;

And I would like to backport the fix to OpenJDK8 updates dev:

http://hg.openjdk.java.net/jdk8u/jdk8u-dev

So here is the backport patch:

diff -r b4ee249eb1c4 src/share/tools/hsdis/hsdis.c
--- a/src/share/tools/hsdis/hsdis.c    Tue Aug 07 11:55:44 2018 -0400
+++ b/src/share/tools/hsdis/hsdis.c    Thu Aug 09 15:49:57 2018 +0800
@@ -337,10 +337,14 @@

    /* Finish linking together the various callback blocks. */
    app_data->dinfo.application_data = (void*) app_data;
+#if BFD_VERSION >= 229000000
    app_data->dfn = disassembler(bfd_get_arch(native_bfd),
                                 bfd_big_endian(native_bfd),
                                 bfd_get_mach(native_bfd),
                                 native_bfd);
+#else
+  app_data->dfn = disassembler(native_bfd);
+#endif
    app_data->dinfo.print_address_func = hsdis_print_address_func;
    app_data->dinfo.read_memory_func = hsdis_read_memory_func;

And I make demo[1] to test for OpenJDK8 mips64el[2].

A patch by Loongson! Please sponsor it, thanks a lot!


1.

$ ./build/linux-mips64/hsdis-demo
Hello, world!
...And now for something completely different:

Decoding from 0x120000dd0 to 0x120001090...with decode_instructions_virtual
Decoding for CPU 'mips:loongson_3a'
main:
  0x120000dd0    daddiu    sp,sp,-80
  0x120000dd4    gssq    ra,s8,64(sp)
  0x120000dd8    sd    gp,56(sp)
  0x120000ddc    move    s8,sp
  0x120000de0    lui    gp,0x2
  0x120000de4    daddu    gp,gp,t9
  0x120000de8    daddiu    gp,gp,-23968
  0x120000dec    move    v0,a0
  0x120000df0    sd    a1,40(s8)
  0x120000df4    sll    v0,v0,0x0
  0x120000df8    sw    v0,32(s8)
  0x120000dfc    sw    zero,0(s8)
  0x120000e00    li    v0,1
  0x120000e04    sw    v0,4(s8)
  0x120000e08    b    0x0000000120000f6c
  0x120000e0c    nop
  0x120000e10    lw    v0,4(s8)
  0x120000e14    dsll    v0,v0,0x3
  0x120000e18    ld    v1,40(s8)
  0x120000e1c    daddu    v0,v1,v0
  0x120000e20    ld    v0,0(v0)
  0x120000e24    sd    v0,8(s8)
  0x120000e28    ld    v0,8(s8)
  0x120000e2c    lb    v1,0(v0)
  0x120000e30    li    v0,45
  0x120000e34    bne    v1,v0,0x0000000120000f44
  0x120000e38    nop
  0x120000e3c    ld    a0,8(s8)
  0x120000e40    ld    v0,-32696(gp)
  0x120000e44    daddiu    a1,v0,7424
  0x120000e48    ld    v0,-32456(gp)
  0x120000e4c    move    t9,v0
  0x120000e50    jalr    t9
  0x120000e54    nop
  0x120000e58    bnez    v0,0x0000000120000e80
  0x120000e5c    nop
  0x120000e60    ld    v0,-32688(gp)
  0x120000e64    lw    v0,0(v0)
  0x120000e68    xori    v0,v0,0x1
  0x120000e6c    move    v1,v0
  0x120000e70    ld    v0,-32688(gp)
  0x120000e74    sw    v1,0(v0)
  0x120000e78    b    0x0000000120000f3c
  0x120000e7c    nop
  0x120000e80    ld    a0,8(s8)
  0x120000e84    ld    v0,-32696(gp)
  0x120000e88    daddiu    a1,v0,7432
  0x120000e8c    ld    v0,-32456(gp)
  0x120000e90    move    t9,v0
  0x120000e94    jalr    t9
  0x120000e98    nop
  0x120000e9c    bnez    v0,0x0000000120000ec4
  0x120000ea0    nop
  0x120000ea4    ld    v0,-32680(gp)
  0x120000ea8    lw    v0,0(v0)
  0x120000eac    xori    v0,v0,0x1
  0x120000eb0    move    v1,v0
  0x120000eb4    ld    v0,-32680(gp)
  0x120000eb8    sw    v1,0(v0)
  0x120000ebc    b    0x0000000120000f3c
  0x120000ec0    nop
  0x120000ec4    ld    a0,8(s8)
  0x120000ec8    ld    v0,-32696(gp)
  0x120000ecc    daddiu    a1,v0,7440
  0x120000ed0    li    a2,9
  0x120000ed4    ld    v0,-32592(gp)
  0x120000ed8    move    t9,v0
  0x120000edc    jalr    t9
  0x120000ee0    nop
  0x120000ee4    bnez    v0,0x0000000120000f04
  0x120000ee8    nop
  0x120000eec    ld    v0,8(s8)
  0x120000ef0    daddiu    v1,v0,9
  0x120000ef4    ld    v0,-32672(gp)
  0x120000ef8    sd    v1,0(v0)
  0x120000efc    b    0x0000000120000f3c
  0x120000f00    nop
  0x120000f04    ld    v0,40(s8)
  0x120000f08    ld    v1,0(v0)
  0x120000f0c    ld    v0,-32696(gp)
  0x120000f10    daddiu    a0,v0,7456
  0x120000f14    move    a1,v1
  0x120000f18    ld    v0,-32472(gp)
  0x120000f1c    move    t9,v0
  0x120000f20    jalr    t9
  0x120000f24    nop
  0x120000f28    li    a0,2
  0x120000f2c    ld    v0,-32512(gp)
  0x120000f30    move    t9,v0
  0x120000f34    jalr    t9
  0x120000f38    nop
  0x120000f3c    b    0x0000000120000f60
  0x120000f40    nop
  0x120000f44    ld    a0,8(s8)
  0x120000f48    ld    v0,-32664(gp)
  0x120000f4c    move    t9,v0
  0x120000f50    bal    &greet (0x12000103c)
  0x120000f54    nop
  0x120000f58    li    v0,1
  0x120000f5c    sw    v0,0(s8)
  0x120000f60    lw    v0,4(s8)
  0x120000f64    addiu    v0,v0,1
  0x120000f68    sw    v0,4(s8)
  0x120000f6c    lw    v1,4(s8)
  0x120000f70    lw    v0,32(s8)
  0x120000f74    slt    v0,v1,v0
  0x120000f78    bnez    v0,0x0000000120000e10
  0x120000f7c    nop
  0x120000f80    lw    v0,0(s8)
  0x120000f84    bnez    v0,0x0000000120000fa4
  0x120000f88    nop
  0x120000f8c    ld    v0,-32696(gp)
  0x120000f90    daddiu    a0,v0,7488
  0x120000f94    ld    v0,-32664(gp)
  0x120000f98    move    t9,v0
  0x120000f9c    bal    &greet (0x12000103c)
  0x120000fa0    nop
  0x120000fa4    ld    v0,-32696(gp)
  0x120000fa8    daddiu    a0,v0,7496
  0x120000fac    ld    v0,-32496(gp)
  0x120000fb0    move    t9,v0
  0x120000fb4    jalr    t9
  0x120000fb8    nop
  0x120000fbc    ld    v0,-32736(gp)
  0x120000fc0    sd    v0,16(s8)
  0x120000fc4    ld    v0,-32656(gp)
  0x120000fc8    sd    v0,24(s8)
  0x120000fcc    ld    a0,16(s8)
  0x120000fd0    ld    v1,24(s8)
  0x120000fd4    ld    v0,16(s8)
  0x120000fd8    sltu    v0,v0,v1
  0x120000fdc    bnez    v0,0x0000000120000ff4
  0x120000fe0    nop
  0x120000fe4    ld    v0,16(s8)
  0x120000fe8    daddiu    v0,v0,64
  0x120000fec    b    0x0000000120000ff8
  0x120000ff0    nop
  0x120000ff4    ld    v0,24(s8)
  0x120000ff8    move    a1,v0
  0x120000ffc    ld    v0,-32648(gp)
  0x120001000    move    t9,v0
  0x120001004    bal    0x0000000120001840
  0x120001008    nop
  0x12000100c    ld    v0,-32696(gp)
  0x120001010    daddiu    a0,v0,7544
  0x120001014    ld    v0,-32496(gp)
  0x120001018    move    t9,v0
  0x12000101c    jalr    t9
  0x120001020    nop
  0x120001024    move    sp,s8
  0x120001028    gslq    ra,s8,64(sp)
  0x12000102c    ld    gp,56(sp)
  0x120001030    daddiu    sp,sp,80
  0x120001034    jr    ra
  0x120001038    nop
greet:
  0x12000103c    daddiu    sp,sp,-48
  0x120001040    gssq    ra,s8,32(sp)
  0x120001044    sd    gp,24(sp)
  0x120001048    move    s8,sp
  0x12000104c    lui    gp,0x2
  0x120001050    daddu    gp,gp,t9
  0x120001054    daddiu    gp,gp,-24588
  0x120001058    sd    a0,0(s8)
  0x12000105c    ld    v0,-32696(gp)
  0x120001060    daddiu    a0,v0,7552
  0x120001064    ld    a1,0(s8)
  0x120001068    ld    v0,-32472(gp)
  0x12000106c    move    t9,v0
  0x120001070    jalr    t9
  0x120001074    nop
  0x120001078    move    sp,s8
  0x12000107c    gslq    ra,s8,32(sp)
  0x120001080    ld    gp,24(sp)
  0x120001084    daddiu    sp,sp,48
  0x120001088    jr    ra
  0x12000108c    nop

Decoding from 0x120000dd0 to 0x120001090...with old decode_instructions
Decoding for CPU 'mips:loongson_3a'
main:
  0x120000dd0    daddiu    sp,sp,-80
  0x120000dd4    gssq    ra,s8,64(sp)
  0x120000dd8    sd    gp,56(sp)
  0x120000ddc    move    s8,sp
  0x120000de0    lui    gp,0x2
  0x120000de4    daddu    gp,gp,t9
  0x120000de8    daddiu    gp,gp,-23968
  0x120000dec    move    v0,a0
  0x120000df0    sd    a1,40(s8)
  0x120000df4    sll    v0,v0,0x0
  0x120000df8    sw    v0,32(s8)
  0x120000dfc    sw    zero,0(s8)
  0x120000e00    li    v0,1
  0x120000e04    sw    v0,4(s8)
  0x120000e08    b    0x0000000120000f6c
  0x120000e0c    nop
  0x120000e10    lw    v0,4(s8)
  0x120000e14    dsll    v0,v0,0x3
  0x120000e18    ld    v1,40(s8)
  0x120000e1c    daddu    v0,v1,v0
  0x120000e20    ld    v0,0(v0)
  0x120000e24    sd    v0,8(s8)
  0x120000e28    ld    v0,8(s8)
  0x120000e2c    lb    v1,0(v0)
  0x120000e30    li    v0,45
  0x120000e34    bne    v1,v0,0x0000000120000f44
  0x120000e38    nop
  0x120000e3c    ld    a0,8(s8)
  0x120000e40    ld    v0,-32696(gp)
  0x120000e44    daddiu    a1,v0,7424
  0x120000e48    ld    v0,-32456(gp)
  0x120000e4c    move    t9,v0
  0x120000e50    jalr    t9
  0x120000e54    nop
  0x120000e58    bnez    v0,0x0000000120000e80
  0x120000e5c    nop
  0x120000e60    ld    v0,-32688(gp)
  0x120000e64    lw    v0,0(v0)
  0x120000e68    xori    v0,v0,0x1
  0x120000e6c    move    v1,v0
  0x120000e70    ld    v0,-32688(gp)
  0x120000e74    sw    v1,0(v0)
  0x120000e78    b    0x0000000120000f3c
  0x120000e7c    nop
  0x120000e80    ld    a0,8(s8)
  0x120000e84    ld    v0,-32696(gp)
  0x120000e88    daddiu    a1,v0,7432
  0x120000e8c    ld    v0,-32456(gp)
  0x120000e90    move    t9,v0
  0x120000e94    jalr    t9
  0x120000e98    nop
  0x120000e9c    bnez    v0,0x0000000120000ec4
  0x120000ea0    nop
  0x120000ea4    ld    v0,-32680(gp)
  0x120000ea8    lw    v0,0(v0)
  0x120000eac    xori    v0,v0,0x1
  0x120000eb0    move    v1,v0
  0x120000eb4    ld    v0,-32680(gp)
  0x120000eb8    sw    v1,0(v0)
  0x120000ebc    b    0x0000000120000f3c
  0x120000ec0    nop
  0x120000ec4    ld    a0,8(s8)
  0x120000ec8    ld    v0,-32696(gp)
  0x120000ecc    daddiu    a1,v0,7440
  0x120000ed0    li    a2,9
  0x120000ed4    ld    v0,-32592(gp)
  0x120000ed8    move    t9,v0
  0x120000edc    jalr    t9
  0x120000ee0    nop
  0x120000ee4    bnez    v0,0x0000000120000f04
  0x120000ee8    nop
  0x120000eec    ld    v0,8(s8)
  0x120000ef0    daddiu    v1,v0,9
  0x120000ef4    ld    v0,-32672(gp)
  0x120000ef8    sd    v1,0(v0)
  0x120000efc    b    0x0000000120000f3c
  0x120000f00    nop
  0x120000f04    ld    v0,40(s8)
  0x120000f08    ld    v1,0(v0)
  0x120000f0c    ld    v0,-32696(gp)
  0x120000f10    daddiu    a0,v0,7456
  0x120000f14    move    a1,v1
  0x120000f18    ld    v0,-32472(gp)
  0x120000f1c    move    t9,v0
  0x120000f20    jalr    t9
  0x120000f24    nop
  0x120000f28    li    a0,2
  0x120000f2c    ld    v0,-32512(gp)
  0x120000f30    move    t9,v0
  0x120000f34    jalr    t9
  0x120000f38    nop
  0x120000f3c    b    0x0000000120000f60
  0x120000f40    nop
  0x120000f44    ld    a0,8(s8)
  0x120000f48    ld    v0,-32664(gp)
  0x120000f4c    move    t9,v0
  0x120000f50    bal    &greet (0x12000103c)
  0x120000f54    nop
  0x120000f58    li    v0,1
  0x120000f5c    sw    v0,0(s8)
  0x120000f60    lw    v0,4(s8)
  0x120000f64    addiu    v0,v0,1
  0x120000f68    sw    v0,4(s8)
  0x120000f6c    lw    v1,4(s8)
  0x120000f70    lw    v0,32(s8)
  0x120000f74    slt    v0,v1,v0
  0x120000f78    bnez    v0,0x0000000120000e10
  0x120000f7c    nop
  0x120000f80    lw    v0,0(s8)
  0x120000f84    bnez    v0,0x0000000120000fa4
  0x120000f88    nop
  0x120000f8c    ld    v0,-32696(gp)
  0x120000f90    daddiu    a0,v0,7488
  0x120000f94    ld    v0,-32664(gp)
  0x120000f98    move    t9,v0
  0x120000f9c    bal    &greet (0x12000103c)
  0x120000fa0    nop
  0x120000fa4    ld    v0,-32696(gp)
  0x120000fa8    daddiu    a0,v0,7496
  0x120000fac    ld    v0,-32496(gp)
  0x120000fb0    move    t9,v0
  0x120000fb4    jalr    t9
  0x120000fb8    nop
  0x120000fbc    ld    v0,-32736(gp)
  0x120000fc0    sd    v0,16(s8)
  0x120000fc4    ld    v0,-32656(gp)
  0x120000fc8    sd    v0,24(s8)
  0x120000fcc    ld    a0,16(s8)
  0x120000fd0    ld    v1,24(s8)
  0x120000fd4    ld    v0,16(s8)
  0x120000fd8    sltu    v0,v0,v1
  0x120000fdc    bnez    v0,0x0000000120000ff4
  0x120000fe0    nop
  0x120000fe4    ld    v0,16(s8)
  0x120000fe8    daddiu    v0,v0,64
  0x120000fec    b    0x0000000120000ff8
  0x120000ff0    nop
  0x120000ff4    ld    v0,24(s8)
  0x120000ff8    move    a1,v0
  0x120000ffc    ld    v0,-32648(gp)
  0x120001000    move    t9,v0
  0x120001004    bal    0x0000000120001840
  0x120001008    nop
  0x12000100c    ld    v0,-32696(gp)
  0x120001010    daddiu    a0,v0,7544
  0x120001014    ld    v0,-32496(gp)
  0x120001018    move    t9,v0
  0x12000101c    jalr    t9
  0x120001020    nop
  0x120001024    move    sp,s8
  0x120001028    gslq    ra,s8,64(sp)
  0x12000102c    ld    gp,56(sp)
  0x120001030    daddiu    sp,sp,80
  0x120001034    jr    ra
  0x120001038    nop
greet:
  0x12000103c    daddiu    sp,sp,-48
  0x120001040    gssq    ra,s8,32(sp)
  0x120001044    sd    gp,24(sp)
  0x120001048    move    s8,sp
  0x12000104c    lui    gp,0x2
  0x120001050    daddu    gp,gp,t9
  0x120001054    daddiu    gp,gp,-24588
  0x120001058    sd    a0,0(s8)
  0x12000105c    ld    v0,-32696(gp)
  0x120001060    daddiu    a0,v0,7552
  0x120001064    ld    a1,0(s8)
  0x120001068    ld    v0,-32472(gp)
  0x12000106c    move    t9,v0
  0x120001070    jalr    t9
  0x120001074    nop
  0x120001078    move    sp,s8
  0x12000107c    gslq    ra,s8,32(sp)
  0x120001080    ld    gp,24(sp)
  0x120001084    daddiu    sp,sp,48
  0x120001088    jr    ra
  0x12000108c    nop
Cheers!

2. 
http://hg.loongnix.org/jdk8-mips64-public/hotspot/file/tip/src/share/tools/hsdis/Makefile#l85


-- 
Regards,
Leslie Zhai




More information about the jdk-dev mailing list