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

Leslie Zhai zhaixiang at loongson.cn
Thu Aug 9 09:57:14 UTC 2018


Hi David,

Thanks for your response!

Because our operating system[1] use GCC old version toolchain, for example, gcc 4.9.3, binutils-gdb 2.24, and glibc 2.20 for long term support. Fortunately there are some patches had been merged by upstream[2], but we still need to maintain the ones not be approved by upstream, that is the usecase for building with old version of binutils-gdb. And we are migrating[3] to gcc-5/6/7/8 branches from gcc-4-branch. So there might be less and less backport requirement[4]

BTW, hsdis perhaps also need nonexecstack flag set for linking with binutils/ld:

diff -r 119d4695c1ed hotspot/src/share/tools/hsdis/Makefile --- a/hotspot/src/share/tools/hsdis/Makefile Mon Aug 06 11:15:26 2018 +0800 +++ b/hotspot/src/share/tools/hsdis/Makefile Thu Aug 09 17:56:21 2018 +0800 @@ -94,6 +94,7 @@ endif CFLAGS += -O DLDFLAGS += -shared +DLDFLAGS += -Wl,-z,noexecstack LDFLAGS += -ldl OUTFLAGS += -o $@ else

  1. Loongnix http://ftp.loongnix.org/os/loongnix/1.0/liveinst/

  2. https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=8095d2f70e1a982c006f306be1a9e1c892758914

  3. http://github.com/loongson-community/gcc

  4. https://gcc.gnu.org/ml/gcc/2018-08/msg00041.html

在 2018年08月09日 17:13, David Buck 写道: > Hi Leslie! >> What exactly is the use-case for building with older versions of BINUTILS? It would be good to know what benefit(s) there might be that would justify the cost of (slightly) complicating the code. >> Cheers, > -Buck >>> On Aug 9, 2018, at 17:12, Leslie Zhai <zhaixiang at loongson.cn> wrote: >>>> 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 BFDVERSION 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. */ >> appdata->dinfo.applicationdata = (void*) appdata; >> +#if BFDVERSION >= 229000000 >> appdata->dfn = disassembler(bfdgetarch(nativebfd), >> bfdbigendian(nativebfd), >> bfdgetmach(nativebfd), >> nativebfd); >> +#else >> + appdata->dfn = disassembler(nativebfd); >> +#endif >> appdata->dinfo.printaddressfunc = hsdisprintaddressfunc; >> appdata->dinfo.readmemoryfunc = hsdisreadmemoryfunc; >>>> 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. */ >> appdata->dinfo.applicationdata = (void*) appdata; >> +#if BFDVERSION >= 229000000 >> appdata->dfn = disassembler(bfdgetarch(nativebfd), >> bfdbigendian(nativebfd), >> bfdgetmach(nativebfd), >> nativebfd); >> +#else >> + appdata->dfn = disassembler(nativebfd); >> +#endif >> appdata->dinfo.printaddressfunc = hsdisprintaddressfunc; >> appdata->dinfo.readmemoryfunc = hsdisreadmemoryfunc; >>>> 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 decodeinstructionsvirtual >> Decoding for CPU 'mips:loongson3a' >> 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 decodeinstructions >> Decoding for CPU 'mips:loongson3a' >> 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 >>>>

Regards, Leslie Zhai



More information about the jdk-dev mailing list