From c08788ef1bb274fe86946397b497b89b2be60d5c Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 9 Nov 2016 11:42:54 +0000 Subject: [PATCH] filearch: Add s390 and s390x detection and tests. Unfortunately I was unable to build s390 binaries since multilib was dropped in Fedora 24 on s390x. Going from the source of the 'file' command it seems as if it prints "32-bit" (the architecture is really 31 bit). --- generator/actions.ml | 12 ++++++++++++ src/filearch.c | 10 ++++++++++ test-data/Makefile.am | 2 ++ test-data/binaries/Makefile.am | 2 ++ test-data/binaries/bin-s390x-dynamic | Bin 0 -> 8448 bytes test-data/binaries/lib-s390x.so | Bin 0 -> 7696 bytes 6 files changed, 26 insertions(+) create mode 100755 test-data/binaries/bin-s390x-dynamic create mode 100755 test-data/binaries/lib-s390x.so diff --git a/generator/actions.ml b/generator/actions.ml index 91a181973..43de38bd2 100644 --- a/generator/actions.ml +++ b/generator/actions.ml @@ -797,6 +797,8 @@ to specify the QEMU interface emulation to use at run time." }; [["file_architecture"; "/bin-ppc64le-dynamic"]], "ppc64le"), []; InitISOFS, Always, TestResultString ( [["file_architecture"; "/bin-riscv64-dynamic"]], "riscv64"), []; + InitISOFS, Always, TestResultString ( + [["file_architecture"; "/bin-s390x-dynamic"]], "s390x"), []; InitISOFS, Always, TestResultString ( [["file_architecture"; "/bin-sparc-dynamic"]], "sparc"), []; InitISOFS, Always, TestResultString ( @@ -817,6 +819,8 @@ to specify the QEMU interface emulation to use at run time." }; [["file_architecture"; "/lib-ppc64le.so"]], "ppc64le"), []; InitISOFS, Always, TestResultString ( [["file_architecture"; "/lib-riscv64.so"]], "riscv64"), []; + InitISOFS, Always, TestResultString ( + [["file_architecture"; "/lib-s390x.so"]], "s390x"), []; InitISOFS, Always, TestResultString ( [["file_architecture"; "/lib-sparc.so"]], "sparc"), []; InitISOFS, Always, TestResultString ( @@ -880,6 +884,14 @@ Intel Itanium. RISC-V 32-, 64- or 128-bit variants. +=item \"s390\" + +31 bit IBM S/390. + +=item \"s390x\" + +64 bit IBM S/390. + =item \"sparc\" 32 bit SPARC. diff --git a/src/filearch.c b/src/filearch.c index 310038eb0..2c75425ef 100644 --- a/src/filearch.c +++ b/src/filearch.c @@ -102,6 +102,16 @@ canonical_elf_arch (guestfs_h *g, ret = safe_asprintf (g, "riscv%s", bits); goto no_strdup; } + else if (strstr (elf_arch, "IBM S/390")) { + if (STREQ (bits, "32")) + r = "s390"; + else if (STREQ (bits, "64")) + r = "s390x"; + else { + error (g, "file_architecture: unknown S/390 bit size: %s", bits); + return NULL; + } + } else r = elf_arch; diff --git a/test-data/Makefile.am b/test-data/Makefile.am index 86cd5a280..0ac73544c 100644 --- a/test-data/Makefile.am +++ b/test-data/Makefile.am @@ -42,6 +42,7 @@ image_files = \ $(srcdir)/binaries/bin-ppc64-dynamic \ $(srcdir)/binaries/bin-ppc64le-dynamic \ $(srcdir)/binaries/bin-riscv64-dynamic \ + $(srcdir)/binaries/bin-s390x-dynamic \ $(srcdir)/binaries/bin-sparc-dynamic \ $(srcdir)/binaries/bin-win32.exe \ $(srcdir)/binaries/bin-win64.exe \ @@ -54,6 +55,7 @@ image_files = \ $(srcdir)/binaries/lib-ppc64.so \ $(srcdir)/binaries/lib-ppc64le.so \ $(srcdir)/binaries/lib-riscv64.so \ + $(srcdir)/binaries/lib-s390x.so \ $(srcdir)/binaries/lib-sparc.so \ $(srcdir)/binaries/lib-win32.dll \ $(srcdir)/binaries/lib-win64.dll \ diff --git a/test-data/binaries/Makefile.am b/test-data/binaries/Makefile.am index ccc7d0046..05c1eb9ab 100644 --- a/test-data/binaries/Makefile.am +++ b/test-data/binaries/Makefile.am @@ -27,6 +27,7 @@ EXTRA_DIST = \ bin-ppc64-dynamic \ bin-ppc64le-dynamic \ bin-riscv64-dynamic \ + bin-s390x-dynamic \ bin-sparc-dynamic \ bin-win32.exe \ bin-win64.exe \ @@ -39,6 +40,7 @@ EXTRA_DIST = \ lib-ppc64le.so \ lib-mipsel.so \ lib-riscv64.so \ + lib-s390x.so \ lib-sparc.so \ lib-win32.dll \ lib-win64.dll \ diff --git a/test-data/binaries/bin-s390x-dynamic b/test-data/binaries/bin-s390x-dynamic new file mode 100755 index 0000000000000000000000000000000000000000..43d3b3ddd1ec36ab2b8653212d9ee128c630d046 GIT binary patch literal 8448 zcmeHMdu&@*89&!?>ZFY`ckN0?w{j~QfPV6P_96Pmd zrlk9$mZ(I>MyUo&2niAK$^`sTG>J8uU=|W(qh-wyh)M{lB`cZ~p}DA36OWqTch32) zk8d4m2=QOO=-lsozwdb-_xjwMQ~kpOfq*4E3W#m!OQ0x%5sk+czrQ4TTYu0_g*d$_>I6&=UZ!DthZG#=ECa8q{lll z$?m<;LN3}VwG<q`&c`v*qcR9(rw|`IqAt|C~J0d-3N# zAR`djQr5xo zSs;_sxvWMUad3F(K(Esk?NZLN9#qMDlEyB==`^Jw-A73#Dhk^MBfE`g9s#F)Mz)(6 zT+NkZqHQTCKCt-D%GgQ-g|?MS*s;+P;zNIpxglOw{KYqfT?+_RtqKLFhWmCBuE@SS4d z+2+3Rrjbiwe#DEtz(1k&$Hl-G!)IEa+4QB2&o)2T^ySdm4PR*-Xe|W-pS$wLZ!TZ@ z_3N+ws#OQ3d@gEe0$2AYI_tDP1M4%eJ_GABus#FpGw|QdKv6W(Zz+ENgY;W%5}y&6 zw~!L&>T}vCtmMXPTE1V&>U|6S9U7PM(Wm!F`0uodgXoMvB=xzbUzWr;%`(=v~X z{hKu|97#u#zn z@_i6E?<1)OF83>Nf1P}vE&Jl=`_21a!*N=vgZucJ1oQ>*5_-2xU zAM@ezl^Xj;?rYW|{uX8L-Oo}5T;4~p-^I4Xfy?{RzYl@aw&^eAHOBQ1*z-DGtJY&R0k1b+Q9q7Fww%{C;(Q2k>a3#`HSCRj zV)X#8v)`;y#Hq9H)^Q}|-<7L6FQ&#iX=|aDS>Fa;XP;OvASvUi@l*Ocam%y<8oG^*3X@QyM=GdmHue{)rj(->ur4 z&w)U|us6mVXsy~e4(d4gP7~N-SA!b8z=ts|o;M?JU{8H}>tBd}_j9acwvd+}4<{!k zItqLC$L8AespM3`ZO^2$vvVEYQT!@&Oyu41)MPpv&EX^5W4$BJ@X+I*nXh6Zyn+%1O>nPtU`}kQ`XLHKy-*B&lptj$>e?=TN`Xf4C0=QKRC1P3)v_ z`aXNO=g?3utPG9(FbN1hz)t_5qoNJ=jR@!9@R0*O!_JX`fyettozb2H!~K*&e$JdI z%*s&;XK3`0Q=PxjL%lS6qlxiMN;s)x!cD-1nEKucq2}W!bcLKVmB=Q^e&`6SlIg57 zTS%c^|CiHvy!x%wsDlOr7t}mnG$)_LTDA z{_zQzA$npuJ%Q9Y1XO`Abs~zLJ&oOJ+?)SXm(JpN(x){lW07j>_0{d_>bX2MB_B`o8vzX9s3_3WBiWI z5r@C#p8qz5t8+5?6!$C|&j+8k_4;||-#Bbc;(UZXgXZ^NR>lpQi@1`#EBo6(zJ})W z=ig7}7RTWLJbseDdAEP#HBw;8u1RM6FG$OrpTq?;&L1EE=j;e^EScuQmSXi{=6?~e z-#?~Iy>on9)m8S){6DSZe@y#pE}rxGoB2!7$#WC9-0;=+0rmex;HEvq8u>D0{`k-S zHW?wTEm^HSL1w(Gka_&`Yf@0s>~|JwjKzaB4{5PAN*4-{Or zCqH_pka<~I<=cOz`}}=_Rh*Ax>dSr4$|{eXQT@iZ!Reb2kB7&*9T>e^uaSS-40NEt KA;rC`m;XPXE<-N> literal 0 HcmV?d00001 diff --git a/test-data/binaries/lib-s390x.so b/test-data/binaries/lib-s390x.so new file mode 100755 index 0000000000000000000000000000000000000000..387b56da990bd829acc7eb3a824361c2e5203a7e GIT binary patch literal 7696 zcmeHMUua}k89z6fWRh(Xr+;?a>Jl$)uvzF%X0sSmUph&eO;WPyn$5!cboWkXnvBk$ z?aWO{iduyrqPWz>q7QxOK1dKMY{iF$f*k}=q{yl$(ibgZeTlFWY(-Hz{=Rd*@6O5X zomJ2WA9BJy-}!#upL5Q4&Yk<6lNVCK%AFY z9-(T);2}-qgWI10#{IGM-;)&VmZ3&{qI8;{^G7XKLUl~Y<^eq2b4!=hlXLI<<#%0w z`q8xu{jbzd?VtQa?#fq;jp_zX;?Z&J&nA@PHYm=7_2aqc&%d3W{=)UWH&0%E?)O6n z-`pL#^P7F(9Sa-CW=MB~Mb>I{q z6!(Imy8fz#+xn^d;^%b&_<*tRy&U@SytQ(*;?)Dc7I>cWij`uZyk|j_x3F^F%NJ^e zwPHOe)K<>Vl&Y1&ik~YLj4WQ_t#10{z%LbFfa257d&}%$rsUV_g}N#gbF1lkH9euc zLf#L2<$1Y!-HZWHC9mcd7p7;t@$@*4limSS9IU_jYx7ENfI&Ev8Y~tuO-1_OA>I^u z&%*g@U8ROcS%Kry(_sC{!}u`st_z%eA7eQam;BKFjN%z!w7;V``J>;ED4qpI?_Lyt z2pIKy4<23itIdoW*-faA@BE{6WiQoKYNXM?{I54Kx51sg6i8yXOWnJ(t-1%_-OC=N zR03AFR3iCaG6{=GSdi}4uanJ8st*>>NFF5dLM4@!Y#J}ggTWM91L}dsd#zUMHVr__ zzua(P|HY|PD!JRQ?)%9w1VhPRYFVy5g5`nbX1Naa1?=~2pmP=C;~?j_`i!lFY+QPk`EdV`J&{74kMIz zQsMkDJVy)~ILxyjHhh?ee$4RtoJP%$vRv}fleWCt`rv)TJ8v+~=g)2)r_LE6a+)lc z{P70!k~dNwNriG%6j#@%B)=9ppEvZ`igX?{iV5Uhy3m;mrCa*zGrVdr<#UzN{;I9k z2L|uHMHGCC^>iG;v!CuCvi$EX=W#OkKO=H}jymj_h$5Z%xtWC?&xwM@6P*y!B3B$>f|ECF-hJ}a!xlQ;Jhy3x@!S&j!U@Sg7f)1+!un& ze$nwY-nA1tYoM5QF>Q@U*Vkw%*{|U~5IpW2O@rip*dzNx^m#vq_bq~d_MY8}MjXR#UL#+k)th>P2_g>PE^E?IcP!aooH(Q(rLdjVBk+-|h}$nT=|_5Xk1~yO3es;dq!OyGkBkOX(^8Y;xx5xi_2R}dUfd2vG`S5!>wo$K* z;X-C?ZFP05e)fsX=IL4?zwQU8OU25@=9vC<8(XafIb7mYE~cxvta*B7*;`z=xPtql z_Vth#l)Y8DAgV(nU-i~X)tq1Q@vCiN)!gsza*(@lHru|&y6asUUxJxS zx5#}Q-G&{y9*en8)6U~B$t5OXL>9xv6I=4|Q@-b*qKhg&o$~cH#f<5PVf=fOjRJqWj@k_t<{PQdW z3GI3QVSd?w%30)Z%=R=am3sqU;FRZ0M0_u1o z_LA=i?P%}9_DeDL{5voCk&}XsU1a`*ZR3gb-+S383ssLBKCJEWf8DaD^+f3!E!Lrm{#{~B~<{=7$qGi=ZFuJ*6T z*iW)O)4SUL7`nV~!trO>o~hFSZ^vBbPwVIqe(9!?1AVV%;|NjDizI)05 literal 0 HcmV?d00001