From 65e98b1ceabcefc5914b9592d6cafd867ed887a5 Mon Sep 17 00:00:00 2001 From: hengyunabc Date: Thu, 2 Dec 2021 19:03:31 +0800 Subject: [PATCH] vmtool support mac arm64 #2036 --- .github/workflows/build-vmtool.yaml | 2 +- arthas-vmtool/pom.xml | 7 +++---- .../com/taobao/arthas/common/VmToolUtils.java | 2 +- lib/libArthasJniLibrary-x64.dylib | Bin 52440 -> 0 bytes lib/libArthasJniLibrary.dylib | Bin 0 -> 134915 bytes 5 files changed, 5 insertions(+), 6 deletions(-) delete mode 100644 lib/libArthasJniLibrary-x64.dylib create mode 100644 lib/libArthasJniLibrary.dylib diff --git a/.github/workflows/build-vmtool.yaml b/.github/workflows/build-vmtool.yaml index 8c095d640..ddec432b5 100644 --- a/.github/workflows/build-vmtool.yaml +++ b/.github/workflows/build-vmtool.yaml @@ -21,7 +21,7 @@ jobs: path: arthas-vmtool/target/lib* mac: - runs-on: macos-10.15 + runs-on: macos-latest steps: - uses: actions/checkout@v2 diff --git a/arthas-vmtool/pom.xml b/arthas-vmtool/pom.xml index 653a58287..824bf12af 100644 --- a/arthas-vmtool/pom.xml +++ b/arthas-vmtool/pom.xml @@ -20,13 +20,12 @@ mac - x86_64 macos - -m64 - libArthasJniLibrary-x64.dylib + -arch x86_64 -arch arm64 + libArthasJniLibrary.dylib @@ -181,7 +180,7 @@ ${os_arch_option} -fpic -shared - -o + -o ${project.build.directory}/${lib_name} diff --git a/common/src/main/java/com/taobao/arthas/common/VmToolUtils.java b/common/src/main/java/com/taobao/arthas/common/VmToolUtils.java index 7967b415e..179de0836 100644 --- a/common/src/main/java/com/taobao/arthas/common/VmToolUtils.java +++ b/common/src/main/java/com/taobao/arthas/common/VmToolUtils.java @@ -9,7 +9,7 @@ public class VmToolUtils { private static String libName = null; static { if (OSUtils.isMac()) { - libName = "libArthasJniLibrary-x64.dylib"; + libName = "libArthasJniLibrary.dylib"; } if (OSUtils.isLinux()) { libName = "libArthasJniLibrary-x64.so"; diff --git a/lib/libArthasJniLibrary-x64.dylib b/lib/libArthasJniLibrary-x64.dylib deleted file mode 100644 index f1e977585b9c17d49ff45a0381d66698f3784ca8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52440 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 diff --git a/lib/libArthasJniLibrary.dylib b/lib/libArthasJniLibrary.dylib new file mode 100644 index 0000000000000000000000000000000000000000..768ac975760eee70fdd394f22e6a06995691ebd2 GIT binary patch literal 134915 zcmeI54{#ILoyVUf%NRm20Vg4Cz)DJ5QV7V#1W0fy$0*2PKnW(HZIVTn*H}iD6lrB3 zDUDjEe;k$8wDj8RHLa7hJ;=2aH^;TOf87#-C#8ea;}WK&cZSfMJeS_Mz4Xq`g!sO{ z-M7+8mVs$6*O|_5hu!yn@BQBIz4v*){q1^&w|e2N@Bdf`VYdk}4XHy250Vq7ahZj( znMj4Od2l(2Ix!0;A54G=FaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W zOn?b60Vco%n85!rfs=3i?k#Nmx6$VQQk>;D=OOd))RlTq*W$X!E`*{qdABv`Mfn#` zzNmjb07XuDl1(}kMN@ZcM&6L~?Zs-0x{pmaQj$w@>LjGBqM{_UWOE{0R5-pr)EZSE zlo}-Cdj{E~OxnwhkL)RJYB;9Gp;c(F@phx>LTQ0yV96bm#urRz@la%k)F`wUllB(N zL7B2?FwZs$6(tyrBys=??e)IjXgOONAUThpX;`L;l8o#MMOu_lq&14NLVJDEo=@tN zTsS7HN%E5~>2}uEHPtEgn>TG~((66?)%dIgWea5TJ30vija^Z8M02wwxwt)Zo@9^O zn}_McrcC2n1>=StvlMAc<~=ekkj-(KwiP8DP!fAOnxkPQrp2eUw_BPc`(|4zqK|7B zcN9r9o|b?XF!F{>^UTS+Q%1f_7LjbVCyTR*qBJLRcf;iQrqG^_c}AjNt@en&^&oDv z_KMQjuxW#LZG*9zLJUYPk4&X}+W1n4zK&K~?|@niC-rMBU$!-&#uLlp$w)+vFWVK3 z?_3s$Yi)r7muZ3c4pmzg4mH>5TI(aB#!z!S5Z`n2?ptb>w(LO-dJy6U ztgM?d140nHGNg-;x{;>rLiGJi2p8lbq}u@iMf%wM&kJ!q^238djG_DrOqIdmv>wB-bqZ(x{oHm?BuQT<$u{Ou; z??Y+U*O4d8G(WOMV;7D-49zB%B@=PNLuYXD;-yuR3F)uGnbjAS2+jHWTlOS0wPWcW z7L4LOXhZ$F!NrC2CMgpqK9~R#U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6 z0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N;IE&+R$upTeO<44eBGnI zeJkGDfL#XNdq;iU-i$B3cl7)CAyRi{H}(K^d(U_6Juk{1eJ_~!(#|IQhkRdpReI}r zH2WSD`a~v$FJ1d(>SJGWD6?EQd!lRa ziJaLB(AUkLfZ0Qa*_#Zrv=$?@Z3A6UKJ9(e*Y%v|{-do+%PSwH5>Z|$$rGCM9lB1a|&^=O$odW0pqbaa&(XU;-UWiNv zqzp|f9*;SGL*D>1(X$P^8w}+heY|Psg$61au=%>3e?WFpe{RD|k{Qfr*w?-Bv@h*F z4X?oh(^-ZD#bv&IwLd`f%t9K?zS?IfKL`1Pw(^hDjJA)_wm`V?4B$ zY42FNtm~(??lS9&oAslpA0@Bt+Fc^b_f3br=e-lQ5!&M8OK;4i>q>63m49tuA)IjH zG4I4eTlsefV903S^_t&0pYDxkGOyFpU_R;O84UcteHi$bQnFS1E99}-!;SmAL*J)u zA-;X@coo{2hf&|{mHxZ{73n0rxb|Ai7dJGFCwb`ND?EWd;x9Q}dFTHg*^DH1^7DtYI4^ua3 z@8R3LgXQ~Z6AP(f8b{Jw4};x+FSrru%)tz;3-qw|-QL3^FW_FroL^l>4Uz+y1Q|?w zkHDzDB=8!4vGo}1PQFe{cAUBu>5Z><`%0|$8~IQ6{_Ng3+}I8GG4IpVZt_RtR>k5C zH^R5{yATc`?pAa0Pp%qTWn>3-|*_F?J+Xsf&I4@bU>5u?>|y;X8BGhk}w zxoolZr{_g3KI4Ir8pOb94akekl`9%g-P!dchdk~bCT+<87+X@0x0!q2$gcN&=)hR-!@9rJ-e&Zex8CcZ zpE-m2BJ2GSx<&6VP-}C&KZLOrtoQl)g7x0mJ($^B+~kK0le?@Y%V;fwcsAr#0kh1; zUypTu$GxYZO-mm^uXtC0Uv52}nXdOX)U|gA_-OwgytU5gYNqUpnvLWK!c%%6JVff< z-ofME=SU~*eeO2zsk}fqnBMvv9O^W@3@HNPhYda5tDZ9h;cxDsaV1Y@+Q}d}Wo|z7 zDq=oQ^msDapV~0oLVudLu?$8hZk(ZCXX@8k`gOK`ougkX^y}67b)J5Gr+&Rozb??P zF8z9geqD%be8aFU|bDos;eCpA#bE}iEEvzA$7F|LSeOKiA#;gqw(4sTV{x&hSuM+v8lmT z*V0lShy|KM;gA+m6SDF3Hzu>K47~ zgIeO=kk-}|*l`)ETS5=1Qw{4|1wMFkYH(I=y7CXRITqi56sU2msXCD9b^S|W& zcam|xW8bI^`#Gt#eq=Ld0jErW2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1em~Ij=%u@I5ZCTN+X>u)7WZ5?vtr!g&~hhId+>N$7K0{{N8{| z)^ESXs2`U0@1u{b;AoYpA@P+7FaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k z025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k z025#WOn?b60Vco%m;e(X0$1K3wwEKF<53hPp|z;-cud^&py=_m>NoyR_a|@ODDIZAvQ(>Eow_W!JvjA zzds9Sa)VXbQ6=sTX>Cn`9SOkP5Z0UJhFD~b)zx=K<3V*@Al@9+2}5Y>tQ* z?CZs=_8qDQ4C2L-+(7EFvdw|uPVrKSLyWcw;aIs|L~;`ppSR`vz4&#Buov-~&)5tH z7AKvKl7V(1>{a4%TebMPLpU#U&5zkHf6ZQS7IBZdeXz8W==jBpI$tVq*oJ^dt z*J)ZH*e1@}9in%qaEPIusN2*4n7Tr@0}PZvTx$y?lzTdwqS3G-KI3qRR9J|TR^5Ms zZt=VW%thLnNOqXsLHCGT{J2z)0cK&sEq+nz5PfKDpW6FQl)UZkb_}aG9L9W89k}#% zz#;OY)kmG#$o2`R83PB-POXIp={Suxfy*c^qF19_CvtteaOv5N%jh1I4LnSD7jBFp zn_E9zu9(X+WOsS|9*=v-?%6(U8?uS-I)s=tU5MQ&U0oa_d4>=vDGy2cQ&K)F9 z(X8Ai#E|^1%p58AO4((~^7}G1QWjG7NO|@eWN@_LBztaI|4}KA%KE3J+$XDQ0N2guN=J#~IB4zWtI%lM8eqZO0QZ~P{ zGZ#RpKl6J#x0|x$p-I{N{?1cUHowDjM#|>*c%0x(_RR0{By}07oR=Ksn4*AE2QBWPW{5^t*!3Psy0!)AjFaajO1egF5U;<2l2`~XBzyz28 z6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 z6Zq>OaPp1cy){$c;wMBYrbPSn79sQT6z$eC_T(+X?mtCo@@{L=i}Ej?d{Ic*iDEj* zCLM~Rsk=2JZ^-%fW-mADwqvg-9VBNr9a2GwNKs-Q^s$0ubHWrSjW1SfR2`NYBwOv3 zNqd;Pei-(YHZ>f>rw%61cj4`Zp4&(S$yR%l#}`a!*rmQh>KF2BlJ*v3b0r<7Y)A#R zQK%@vC^prb)syC%dcRRc>qiI4B}TUBRZ)_WUHGm8wrI6Rp;0)#9%(NoTa%nO-vX<& zck@fSowapMbxQr_Oa# z*tEgBw!v6UAqJ$1N2XGCNa$q8YU>@4$%m+4Yx%OR2{oQr7EeYZYJAzQXnf}~;}Zh; z$<6rk20kdTObf)Zr*K&~)Lf^3XkdLL)EH`x2jY8f-hE5WQtTECHKPY1ZotaADKj7h zu`5Hm2&o%s3J%=&GhUE}`H`eC3{e39O`nq0= zxgaH5GNfC(@GCcp%k025#WOn?b6f&V`O6ZN(iFFagw z=z_zxzt>SY_C(i$v0jHVc0K;<`1QiR-|k7>eS`RB{BgTD&|AOY$ieytjttsF4gRlr zUzyD_E^r<~S;jH_Y5bq=p6mUq_m4Ql{zW!1eh_WSL~72#qm@VAi=V(ko1QY;?fZpo zp!RIN*grfiRXaRwpw@O>? za^%9pYY&0N{sD*b(!@~#CiX)Yy2Sq8uFA2qSBUX*=%cqw87mW>@v>_@<7cn%pv==R zZ0~>R!oznQLK~xP7qzt=x}eWbjN|v-#)qe&4YgZw2V`PKZR!q9!2Xo|O%vnP-&wT% z;>5%k^ZF<@K8t?3P=AUs(O6Q@9T2IzU7|OhH>M(OOy*0#?_#>y`F^`@(p<^LbgyUJ z`g`o~Au;|t8+-tqGDuTG z+_DJsA)lLaee1=G)NTZA7TG-gWlnJ=Z1zuJ&GhkL?!&Ur4D`yJ(6NaJ@!NS#WE=T8 znMcHG_;ZDB1NHDz=uF?4dHHMaH0v{ucvfTU!JOPW)4f&-zslWfPdXNiJ#}>ck?&(2 zGVmelZ}?qe{E4IYA2H|n4CZy7#wvaO3C9Ct%@_yvO!Nf(SMUEh&3_s0fn}b4AMSw> zq~!OAB0ZwxYPF#brUE}E=K^-wdd6TY-wLORO4AykynpD4I zPiQQKHl#~yl0myaOiWy3j`1w?K0@_qcM$WS`{TmHcjDfY_pMylv(rRBt;_qdrkQD; z{zXp9+B#?r9EUDou5@od;iw#Y^5}viuVB5;gMIcM|54re6PVAFM;}0)2X*FsTYqQ* zu~PSwLRh zhG)Z=xVUduV7+_m=i|9^|B*KM_93Lje0w(Z@T~b9`31I8R=k4somigl-%nx;=btkC zoBEy7uEoFKfSzfWe0&0NX`&K-RSADyZus;2?4s#hJ^F(WnZ61i9v`Vp_1oanr(i?( zaXp4jPiJ6*+Uq_JTfejVINBYP`bB-b*xFkCR+a0T^;e5u6#6TCpZt}^PIIICbR$oZMjy2BF{ceqO z`>7upOUM^SD0UQybNirYt{L{QRlGuLGdJHC&S4A`=gvEvPgB2B+O_z?E{k2n-iplJ zRDW)bEbk9f%>C>Zj05908PgcHP~R9E{G)$Rh#H;k_S*gTp`2oMHm+i>=fH#FDwOcN zgC8Q!QG6o~d2tnMe-7moCr73kaTWXO4v?ppIcF9#F8RD zSLt&6ORU1aP1q}6qP*XdcU$taE&0*8IsG9^zR!~HvE*Zxyx)>{Tk^9l`O!HR`<8s4 z%ztN&eKw7Cblp!5QQ9|4=;QZeTj4nFRjd*1m7MqA$kR4Z@7;HAzWY{}v7ggr?BH~5 zjRcy*s!NNyf^ii;>gY0mRDFqSo&J;SuGT;(thOw1;V0;$@!A_(W)wHH{+^9Z4X%RU zPM3|ZzcHC@W$0bxN6DvbgYg)@O`iR^^h>MK&$C`kEAPjjO~n~RF8`o?px5D~EtLyp z6{T{EWeGN2+G%h68kEubV6CANfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G zCcp%kz+Z;InUzMr3vV&f5}Ed{GUW3zT}WTzz_Dnxkq+Eyq}yeAjrNfC(@GCcp%k z025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k z025#WOn?b60T8(I2C=;y=^T%uC<(1ajmKl+t_MYrr)5vL1trO5r8yKqx#%HaQ2XGf zs_Mp2M@XxWCL@{}uL(s$nl~iwf=ZF<6@hR#y35;Hv~qQjY^;s$iewd5uHV$)jdUti zHJj93o15F!pjH=;2ljYF{*_95FdRrE{Hv7qs9qzDnr*79wy2u5O<3(vBbwJ=wcKo> z+X@x25aL&zio2;a$-jLST6xfjf%nf0^S#F3$##mi_XEYvE*9GFufgNgnG#tiigrd2{%CV_l*#KVv zn9ZGPydjd%0+FDa*xag*(VHDzb(KCtpBji6pzaKX(awLTtT2qAi~49pi=)G^KkUbH zY=Hle|Ha$jsjabiD5ABZBp!p9l}N#+2&X6|msBw1h$g&nSh2p2^2+9jc)`A2ylUT} zYQP{~EXfU|9xK}%2<{Xwl{iFCs}PQr>qR6tLGgK8zTb;qmk4_iulbD4aA0xL=_vVn zn-KOY@wly8{M;d&m$~N0?3cf0FE|UlvcL3VZg{lxQvUODsiS0=hD}Z;&e-cTEf8!I zXYCGgAS4{(xe)3$H2|ir(Cq*NB@oxz0tw}wj;3fdtccGz9O8B8m9*;q6LgE`9bhif z&P1}q^bWd5+~UWjdJHfN6K?T~QinL$j!vfbz7r*HySp93>YZxGd{aAdIj|EBkr%B# z>dZ#APdLpOIDkfvh6UC=jPaXu65n#xg~NIGtXurDRM;`uA27Nq%4r8TzA4E^*>2ffRd7i%^;&OgB$__t7cNcDq1NJpF zZgj#O{=?E{>5rLx_}=hot-|DW8>c zkCg3bR&EpGIr&|gIZ{3#WtS<-@5@jz>Ax=PJyLGF4H+CQIH`V-)c>fITh>sm5KrTz z`ZwkGY)(q~!}2>gznAiT^1C-zL$}GQ%Q0~r-H?+S&4H#P8ZHU$A(KNX6To3EGz5LODXaIQ1Av~MmJ^spD0I&%Qw>)j|p7}Jjm zlp&tk%Z0s!A{)iFD9&w0wRndRCx%^iF;mKyNIcp4_DJaFaHu&Ri0`?%+FhfrY+V{n zYU04B1L=)l{=tRP!{7SA@-O{u-|KIV{m=Au_q}`jTb{iW*9ZFuM(77iXAIe5j=C%zE+$VaaFyI;NU zH!GfnsGRvX75@t)BUn=a literal 0 HcmV?d00001