[llvm] [llvm-gsymutil] Print one-time DWO file missing warning under --quiet flag (PR #79882)

via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 31 15:56:16 PST 2024


https://github.com/kusmour updated https://github.com/llvm/llvm-project/pull/79882

>From 1400ccbce3eabbea6d4c62e661dd8055a29f65f7 Mon Sep 17 00:00:00 2001
From: Wanyi Ye <wanyi at fb.com>
Date: Mon, 2 Oct 2023 17:50:18 -0700
Subject: [PATCH 1/2] [llvm-gsymutil] Print one-time DWO file missing warning
 under --quiet flag

FileCheck test added
```
./bin/llvm-lit -sv llvm/test/tools/llvm-gsymutil/X86/dwo-warning.test
```

Manual test steps:

- Create binary with split-dwarf:
```
clang++ -g -gdwarf-4 -gsplit-dwarf main.cpp -o main_split
```

- Remane the dwo file to a different name so llvm-gsymutil can't find it
```
mv main_split-main.dwo main_split-main__.dwo
```

- Now run llvm-gsymutil conversion, it should print out warning with and without the `--quiet` flag
```
$ ./bin/llvm-gsymutil --convert=./main_split
Input file: ./main_split
Output file (x86_64): ./main_split.gsym
warning: Unable to retrieve DWO .debug_info section for main_split-main.dwo
Loaded 0 functions from DWARF.
Loaded 12 functions from symbol table.
Pruned 0 functions, ended with 12 total
```

```
$ ./bin/llvm-gsymutil --convert=./main_split --quiet
Input file: ./main_split
Output file (x86_64): ./main_split.gsym
warning: Unable to retrieve DWO .debug_info section for some object files. (Remove the --quiet flag for full output)
Pruned 0 functions, ended with 12 total
```
---
 llvm/lib/DebugInfo/GSYM/DwarfTransformer.cpp  |  24 +++++++++----
 .../tools/llvm-gsymutil/X86/Inputs/main.cpp   |  13 +++++++
 .../tools/llvm-gsymutil/X86/Inputs/main_split | Bin 0 -> 19624 bytes
 .../X86/Inputs/main_split-main__.dwo          | Bin 0 -> 10160 bytes
 .../llvm-gsymutil/X86/Inputs/main_split.gsym  | Bin 0 -> 520 bytes
 .../tools/llvm-gsymutil/X86/dwo-warning.test  |  32 ++++++++++++++++++
 6 files changed, 62 insertions(+), 7 deletions(-)
 create mode 100644 llvm/test/tools/llvm-gsymutil/X86/Inputs/main.cpp
 create mode 100755 llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split
 create mode 100644 llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split-main__.dwo
 create mode 100644 llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split.gsym
 create mode 100644 llvm/test/tools/llvm-gsymutil/X86/dwo-warning.test

diff --git a/llvm/lib/DebugInfo/GSYM/DwarfTransformer.cpp b/llvm/lib/DebugInfo/GSYM/DwarfTransformer.cpp
index 0b225376349ec..6268c7845a142 100644
--- a/llvm/lib/DebugInfo/GSYM/DwarfTransformer.cpp
+++ b/llvm/lib/DebugInfo/GSYM/DwarfTransformer.cpp
@@ -537,17 +537,27 @@ void DwarfTransformer::handleDie(raw_ostream *OS, CUInfo &CUI, DWARFDie Die) {
 
 Error DwarfTransformer::convert(uint32_t NumThreads, raw_ostream *OS) {
   size_t NumBefore = Gsym.getNumFunctionInfos();
+  std::once_flag flag;
   auto getDie = [&](DWARFUnit &DwarfUnit) -> DWARFDie {
     DWARFDie ReturnDie = DwarfUnit.getUnitDIE(false);
     if (DwarfUnit.getDWOId()) {
       DWARFUnit *DWOCU = DwarfUnit.getNonSkeletonUnitDIE(false).getDwarfUnit();
-      if (OS && !DWOCU->isDWOUnit()) {
-        std::string DWOName = dwarf::toString(
-            DwarfUnit.getUnitDIE().find(
-                {dwarf::DW_AT_dwo_name, dwarf::DW_AT_GNU_dwo_name}),
-            "");
-        *OS << "warning: Unable to retrieve DWO .debug_info section for "
-            << DWOName << "\n";
+      if (!DWOCU->isDWOUnit()) {
+        if (OS) {
+          std::string DWOName = dwarf::toString(
+              DwarfUnit.getUnitDIE().find(
+                  {dwarf::DW_AT_dwo_name, dwarf::DW_AT_GNU_dwo_name}),
+              "");
+          *OS << "warning: Unable to retrieve DWO .debug_info section for "
+              << DWOName << "\n";
+        } else {
+          std::call_once(flag, []() {
+            outs()
+                << "warning: Unable to retrieve DWO .debug_info section for "
+                   "some "
+                   "object files. (Remove the --quiet flag for full output)\n";
+          });
+        }
       } else {
         ReturnDie = DWOCU->getUnitDIE(false);
       }
diff --git a/llvm/test/tools/llvm-gsymutil/X86/Inputs/main.cpp b/llvm/test/tools/llvm-gsymutil/X86/Inputs/main.cpp
new file mode 100644
index 0000000000000..4c72cdf16a232
--- /dev/null
+++ b/llvm/test/tools/llvm-gsymutil/X86/Inputs/main.cpp
@@ -0,0 +1,13 @@
+#include <iostream>
+#include <unistd.h>
+
+void foo() {
+    std::cout << "This is foo" << std::endl;
+}
+
+int main() {
+    std::cout << "hello world" << std::endl;
+    foo();
+    std::cout << "after foo" << std::endl;
+    return 0;
+}
diff --git a/llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split b/llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split
new file mode 100755
index 0000000000000000000000000000000000000000..a448f1bdf93b2bc247722b08d2a834e13c4bb01e
GIT binary patch
literal 19624
zcmeHPe{3Abb)Gwl6lGcDNs(;IO5$s5IaI9sMN+gx*YWYkQOB5)7?E}uwefQAZb at Ey
zcYC?pla8+1%23i)O at uOOo2G4mC_#b*g$t;$Q5bFD&`}#Jsew93P`HJgs6~iUwcXmS
z8#r|;_Ioq)mdn*q2?V75=SJFl?|t*$o7uNByED5p{PooMXfO~EoPy%Lf~1R~q=eM3
z5GzAc)Yw6>O(ey;#XX`8$R->~nL|`@OkWJD45sZ`uLYFsx`>f9xsJYFN<uK at 8WJVD
zwUpGXqAzS#B2y7kGTF5ft7W0jk7-TUlPT-D<%P)@DV&sq>6ES*Q?DJx=F1VK{^bXh
z9n+8K at -FK0XFGz)Zb{oMX*;Gu+cD*MQcUPLsQn#mNkSr7(J%=}VfibB-)>slO>2Fo
zBU+y+l|gB8*~#5Zc at x^MFD%`NJ{?b{Tn<w%@BOf&xcsz<FY|F--bUA9TE~-VKo<}z
z<TL$!u|h6V$d_vMNc~`cq`xm(wWB>!gX%?PP at 6h@^kES^BbEr`%SrrBEmQurM~DC6
z(4%j?{%q;*cUN!w at ay}Y`eK}YP?@AdiR}3jlT7?AI7mmGe+Ya?Vt_>Wf8N-#>(jRm
z6W=Ipg5iz^8MkeKe-gTl^dH{<|Lz7j#U_lypHOT=eE$acE5IAoXH?_yP!il)`WD#j
zVz)>plM)P3fs_nmu4tExs$*6h!w|;U)Da_RRjj#u)v+p5M}`Y_$(k}V1xw{M&N(sZ
z^jW1`VJti8Bof(qvtl?EGw)Q#vZ>T at V7(c$n$H?`)u~u!acs(%iW{lPeiV4(=%ih!
zrY1&@Pui143c#dOsE++~ezH^Wa=@5)C at byyvUbgpE}esUyK10Nt8c87cZL(Gla25Z
zi5qCtSsj9+nJ*zI*}7?%j#bY)0-04Om%aC1YUTYT7F}*G3p<h$gl83gczkSV*yxG&
zL=On&d;1hSJ#F+x`zY`&xGx3ezW`cpz~zJDeYiH%PU1LfcjULw9gOayggy0%PocTD
zh#7tT$nq|ohiu{O`y_5*LGjBvf9b&_!LpBNNXnNzxavO=7B6^k{m76RFM4pkM^eTW
z4~~kuiQ5_72e!H>7~THJH}zjm?H-)^Hm8sW=X(g{b$M{QUvLV0aQR&0j3#YHpc#Q?
z1ey_OMxYsiW(0mh1pc%0o&TLa`$~KIW3A7|gh+pM$qBB$kUslY?U$tG>Va<oUfugV
zemn0>f+KmJ@~&Q4McVsyl4;0w^#v*a1<5qDxw<6fuaHbbnyVM3{3j&SQ0D3d$W;Dh
z`usco8iT;}x$m#M1T6ir2U1W<pZne~q|filbVBv_0e9XxA_VCtUL8C4?MKt+{yBa2
z2d_;`r4mbtZ>FDn?#gylZ`aFFA>NpccHa3B6ruDlt%-~2^A8*%-{)I<h#Y#;*@aVo
z21a!1TUM`h-g$=XE@=w=EmHqLkjTDk>2t58pZ&K7)6c%yk`8<${q1YcPB=KP9kj1r
znU(cqd#dl52bN(gYHxcueQtT>F`UXbTE7D%@S#hKmuA;0NAV^7mw$T=Ba`&kc$Arb
zCKOIm^~B2WUPGYHJ(qrlXFw~T0P-RDqvW2yv_Jbw=(*I7$;|8O?d&RjovTqGE05Eq
z at D$z6`d!!Q-v%VHgjN$m1>Cave5fVSdC7L>wk)bnGc_a7j6gF2%?LCj(2PJc0?i0C
zBhZXMGXl*B{9i?YzQ=ge)O@}g#{XH{7V}o2V24lHl|oLKv-nCTQOsNSwA`PB5q;Zu
z<=<CVX{J5?+UhDk(TLNazX<sW&@yP at _0`oUNCtf#bpL;>uF^L>`Zh`_ at Yrz?sD}c3
zZr$9z2z&bWL*M+nV1ExOjBE}OhSvk44;X*zxSO(Y%%J=kP|*<@?dW=6=hjp0XT*bd
z-2a~5yWd4H`6}Re8ny`n20KE(5ggvuRzQIeDgWa*UPOKc)XfhTr2>`x1dfBKKbPGF
zc?rh|%Dxv=q&h-pgC{z?--`%tre*}15okuB8G&X5nh|J5pc#Q?1ey_OM&M>5a7M3l
zT*OCCN;8_$hgV9pHjWa at JwEy8eKM`Rqjakxn0O^6w at u6QJCwXz%e-!RkCtg(MClGi
z#M646GR>zb at m%P?uC3Z6Uua1ZQERY4S2iU{)N5LWxUBPet=uVHKVDNub1q7|6mfrf
zt=x)UpU1P=y4K)%Ca>|kUE|Z6lagcna+{L5-ium~*ZOh!_|PfOr>^z!ja159E~b%E
zp3(W*&Hp=b*N^*Z(yy=ksHTr-I;-hPP08%=@bEym8!MIfg%gQrUo;W!iTCuz`{M_~
z-N&t5IBhyQBhs^PopvwQh$`(wA`$m!%Z$i at eIi>hOLO6qR;8M^OX0+Q(Krmchpm!x
zY*LGno~Ttgv`-8^GSF8}^z<gg at ka(KwNfb$ODs_JS4s>$GGLZUb|znHn0@#I1Mzxq
zt|xw=-wa2ivFbuKXO*ilEcK3=nS7*VJ61F+CMO1Z#pLinByj_!;n9JEH^?3xzp?q@
z!GVOB7^8wx196d`#Lv3w<*~Mx>LRP51zD!%RRLO9XNd*RPCgr{SOq)ldhmhLlMhoK
zeW2>svhSmR9v-|q&}$~#y&`|7+Y0p|zs|DGW7<fE??JcSzz^S-$~%(OB;|d^U)F2d
z{!{uM*{Cc_+cUjc9j@!18`PQWTGM6jN4+<x+UvWV5VZRLt5aM5<>|MM?Yf}r{S~Q$
zd-`?}x_wW_Q$xEi4t4z5(B|!d9c at nz(Vgrr-2OI+ at 8RYX2n62h*hYk0;t0fQ)k-X1
z$`)!lE0)0$^_a6zwyGj#mz`K;K879>acnF}x130#H&(H2N19-LH|0?`F#7w at aB}me
zqjo{Wpofm){%7x4Gmb3bEl~;RdZbM*We1NX?&B)`?CK#;_GjomXJu-0>rPgcC}>H2
zG+QpyWiyN-R?}l;z2QXX>3aCY>?ztjKrdfU<x37LNf7$DtcEc<Hl9+pSeBo&X2GM?
zSoN$`c5st4%1#9kUP at -swN30>fHTD at 4_Uh2nw2~$$jSr6T6lQHg;5IN4Kq`PK>kz?
zsjt<6z`RYEVa%4X=RlvAgq0HmTMMY7M$xPrW+6XUl1ivF86$(NWg~<>9=xZ#HB<s=
zC@#XWkWc6>LGBd0T03ufs5RWy{zPk_ZR>KYXx|BBSs|@$%dMRsY<(x?f^XXz4Yr|A
z#OCdy6+2~?7V at z|;bbvVHA}geRmUssl37qtxnlp4m35>LbF8Wplbu6l&Q%wRH78$)
zP2<@xRw~z=s=V4pwOq(M5qaTrr)<Hivv_G0FPY-XU(r4LG+GGG6e*5l495jwkVLQD
zi^Rz78NUiHgwP2K%ESx|7{<B=Ahx5aaE at x2KgN(LgxxNs8a8*-#ou5=r$v<ypW=_v
zAlJ&j56Gfyj(gE87TuOAA|!fRvakq1dlh+NYNaZ!F&_McED)mFviO3sqsAkim$=#~
zBOb at aT&(6FL$46$h<9CJ_syL6DDJ|j>q!$ERjTL|=A5WwK)9H*YqT%tkBFZw*rp@?
zmRM=?d5mBs7uH%|a{-zE5{c`I2}}G3h|6Lwe-br$mDqyfKi>f!+hXiu8GCzX(Sk)K
zMA<q&vK at jvv3}xIPY at 3h&;3H&f<fw{rw at o20ch40vxI&lhDbCFM6I_6;zK$Yy%o|=
zNOX7KBwk<jtI_i-fSl7UNtqRvziRJPBmH+EKPWl`&nx723}ElY5y1Yb_YWq)$tQ`V
zNATOo&oprI!_Qo)jGq%459=1scv0gsKKv|jDtE$H?(ax^r#ru3KYy<M at O+5zuS@;6
ziHmwZ!uUUdX;lA>&g);LpB-Z2=aTHgrH%Z&DRZ~G`x#kzD=t_7vljpOd#A*27d&ra
z{r3P5i7v4}nPf=PI=X8Zc()HvKp(>cWGa0%t`H&#d<U)z-*GD1TT0@%!RYY{7xHoP
z6AX!V?T7I{B>iBg;Bgn at pVfX?X8KjBk8-ttJWgc#?gsj&ab8r<i(3C4t^eu<`U$D8
zl|1Aq;X(9u-+4^|-yZA|@nq7YjrlX-4fYA11Wxhy$N8+pcZ+G=KH1rCY21Ikeh)aE
z*9G0q<+n!|eMaJJy+)U`{>+Y~1UYX12t2%|=5jyU0B>(;tp6_HJ6vlIldU+3sEvm@
zrabbFOZy4sL;~R9 at nb`S<9M#uGR9am9*-Z28*YA9?L{0vh+COW76QJiP7SM%vlwUa
z21>&z8W^FJF!VHxoNde%?2K73a*kc88fL97=w4f}94i-%H`Xv_;oUGR6?4JBgs`$8
zW-DgVGIF(Iae;;-Ym%(_I#qX2h5^;_!6PXnb##RGe;Sy_8mY7f(<8@)G4jEqgGa`O
z-P1lcIy#xc4$i@$@f0kqoava at 9D0m~Ir)-Nt6DiZ3Q$`zZ)#g;Qtq47n<WvRs%^|;
zY(kq*>7-Fj+HUFDvZ)NP=@J_)ja<Qy^Ew)4s+pQm&coERtJBq|O`12k<#c@|efwC~
zXUb+^7}!qBai$%!v|Dw(o<Xrxr-i_la;S5rT4mrwFUCO)_p#Fc*7cs?zbC<aU at 2M^
zv$7zY0UX?DlW&9lz}#fl?*_&R`*zvVZrXLV5K#;e9Ww*!R1}?O4v%@OQWjD9Isv1y
zC`OuPtKuwppiC`~o#y$Rh6abmA~g7klKQ+^ofpyELJ37E>Qq#Yep|9mFp!5fVUmI7
z$^}P6<%Nl2qc3>bvZ57Rw&$oduRG9u4z?^Q3)Pd91 at mxh7V}w at YQq<PqOt(x3>Q&E
z(V>gzry{D~zQ|JtPG=*}G-^6dC7-Ebn2j@{=@c&5tj)Zc$yBV9EMfn>#XMrlteK<g
zDq|Y!mTMW*Yt5m?)STCIzq?76-h1Magt3lFT`ft;@ZYcC_ntai>M~FCE*vzIVSE0&
z4E*;R!pQR`8qaxCKLoEm|9uAjyA5}HmBI5kfMJ?rc<p(dcpA?IN at 4lC_T#tz0J46F
zcbi=Q3;O&oX!~w$iqXDI{`#9h>0K_{^ZVY*Tz){=Q5}h8dw%bl2S%!F&+m^{bVd1n
zF;ryI?pPEb21oB|*?y)iDf4D at g}EHAKkG65HE7ejUzYj(Z(SQqNN;N~=K5<`oCiZy
zWqW?#d|BHsYDF%e?YUlmpzVjW9>2eyrhp;U6_M}L>CKSe{&T=6ChXrGCt>JFiQnrh
z>H7Bb8Dx0v!+M+**7h at OsHui&WGd5_ at awfdqwUXVg=Nb0B(`JdPr-QYc|1C=2Q}MR
zQB!~WeNx+V{CT`A!pfjW+cDwzvHX`{sC>5PzgN;1RvIIUxWE4Lzlj{LeLb9%y7jOm
z;w44gUw`@EK at O&-vJa3Fe~;n6YvPX=+cW(>Y&t#m{JrMs2zgs;FG^aI+5Tl at P}|Yn
z)t%4q->Koi=;r9QKd#psu%+{N?e+JXr5He at ZbjT*E|=+#kmI%IdDDuvPr8<hVLPTl
z7<=t`eBT{c`u^)hy57_dfP8WNc}L!UZQtcHNP3OIZ$mz*XmvN2?SIon6vOVA(%);L
zvi<f?YT#E`QTt($>0U5=ZAfL>OiInTZuldtDADWt|NY4KsYp$yR~h*0<<~vDf&CY>
zJ%2~k#a~y}!yDK?qwU|#7e+hqmv3r&e?6D!!HPuB7jI&FrUh;9)gk^Uy*xweR>b{f
zI|k|-*q_w)XIN2Fzdg;*{TQkKP}|dd+?#x&wB>u3SMSq at lq7fLg58S)@1xxQ%g>)J
hz<ePFf<!NjkVbu({_^pHtfBqrpfnd3d<H&I{4Z^v&`<yX

literal 0
HcmV?d00001

diff --git a/llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split-main__.dwo b/llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split-main__.dwo
new file mode 100644
index 0000000000000000000000000000000000000000..4bb34ae7bd6bdf7b36994cb05dd6c764ae42808d
GIT binary patch
literal 10160
zcmbtad3=*q*1k7Q-j*ii?e at N<1Tct{z3jV|MGGPb3Mj~8Ow*)|q)AB91sp+8!3|||
z14U5=Hxy8ZaX}s2Kt*sFozZa}opD2*&vgXHndh9F<!#`<ufN}OpL@?;&bjBFyCmuI
z+G&$)Qi}AS6g47SN=t<pRF%z-=j?c)p{2jk7Z+adgqbrZT;QEGWnQg!_66tEdc7i%
ztcTnmZH^>G2=IDaeBtH*xYge%nj?u&LnKh|QB at Gtp{A)Wk at O`4-lWLpTG0Z6x at 5G~
zFM<t$B*;5uhIi7GX|?FW#Nvd&D84w_24l_CiYXz2t)cn=(pVfL1<@sxi26s5_6A!M
zeqSVr8pUd8PH9d}b at 6Z@k~K6OjWmcvXsNO;&gQ_%P$b0GvLGRpW=?64#Bo{^DQ#(P
zjwrn?83P+)-e at qG2+%yzxoAru9t=lYy}oz at 5b%k3puwB)wFFd&oa+sT67ZC-Av;A3
zs^*r>9B)xe+LUbOIICOI<D|INkNGy$!Q&V|$<!2MiiX3?u_a82ScEv33^fHrvWfEK
zRZt|=G2&M}BYxF|2d1 at 5r1~bK^`bu7To(?IFd4;)g`-MoGP+2~!h)BF>zmntwqTsJ
zC8IF1DbU19h)D^!2_EGP`T4l%re~>~hf)2FaZ(hki?hObs+>qdOrxUO>urcMd;M)~
zDU0gaB#+f{xQ5L1SZxirk1$o|^#<DffmkvWjd)|w(Z1xJH!C at KWIT{;j3Xj4b<-go
zp3`&i&`dQAREx05=_S1LPSkN&qSY6xojHA$H+P6xgR!?!DZ>6}q(#7g;i%t-#Zkn<
zP{J3EG&c$2SfdZ at k0j$^aDAu&`z4fUi2GuVV8nDF4(82C+#K;!eIn-b2f)p-7}vL{
zj>)L%kc_4)>cYOrqLlON19i<5{fd2c2~i(v!FjN_Ihw at Gn?zWZeRa`zQuxAr0(pI5
zST1nvw81i8(!01h<X;50atYDqOGZPKghgE<;KR~GgFo67!%-8AV028L2Efo*Cv*zN
z0|9|e9e{VjWCUpyO{!HB!Z^aG8;-LCGJK9KPLM$s#c^Mx9u})U2`(YlXeTg*6(Q0S
zOA<*;i~}F15l1}sWjHlcZ!K9AR%WmrG?7&IG&iR+!PMwDxaUnDoeAinu)h{@txnv@
z-e4 at 6z`VWbOseb;!#ja^Tm=2$XaXm0fVL_GQHX-!=0qbO-|7&@5L`kUjlm<q)aguT
zwmP{{0|(So$}O_zw%V1!Gz9{S1Ra+=WHNxs1Y6^wB(H&=7J{!Rgb^8%Qo~v(p+g#+
zpzxq0As&eMa8ktsxOV9NO5GJoS1Ju8>zd)JK(d87_g+b)nkh;)#eyO14lqW>W+#J0
zOM1R7sopJW2VmGp?szS!nWi~oREyG(q2qg|Ole6m;ugE5!Q13(L)0Vsy^(0d9~evl
zeWHpXh}v{ZT5sH+Lx*7HajYUFDF%>R5~CY2gd-uf<&jZ)zE$l_RHb*nYEF&Q=Rj-v
zAZSgW1nMxRHtDmVHGLSgrZ;_S<~T^1BCw6pCqt at Lx+bO5J8x((8f`(iMKP;TMDUC~
zxK|T6Wj%vORu8Hk?CE`aAd;LhD^(mYq&g5D-G|#(`(rWAcoVU3C^>+}sIG5~@>9rx
zv=ZnF^aT0<gMpF28NgIv4&VbCfe6qHECa3tt^+m#n}NH4dx71+v%t&1Yrs3eN5D70
zkHCKb2VQDAU;y2KUce||Ja8s36IcKQfi_?juo2h}>;xVMUIG3LybpW>`~>_4IBY_=
zfO5bM^Z at z;1A!4h4KN9q4$K9-KoDpGlE6}61#lIx2DlNp9k?5K0C)u03p@`T1l|Ka
z0loyj1C9bRPlygc8Q=zb0Rw^2z(n9YAOIwQoxnceN8l(R>_QX*2GAAg2 at C*+1E&GC
zz}digz(ODZM1U4x8L$di4{QRq0Na53fCqs`fhT|iz+vEh;P1d^z!BgFz=ojc02BeG
zKn2hZ=mGQw1_Hx at 8lV=K3Y-tj2mC+?hyks at a$ps318 at _t1=t4M59|W=08az^fkVLC
zz*oS(fTKX3244VWKxg12pb8iO3<bsl6M)IU4B$LqKHvjFz!KmxU=?sZuo2h{+zH$Z
z>;(1zPXf;Y2Y|!C+raz45#T%E7eMC2FF+;W0eS-iff2wsU@~wHZ~<^J5C>KQR|6Y>
zZNLuT1>ghVOW+6KHz2=2h+?1;I2q^%3<FLBCIK^mxquJ27)St at 0;_?wz^%Ym;9g)C
z at F?&&@G0;$5HdNe5L^ZF-?F>-MIM!VXFET8?AQ#$Rt2$i*p7+3AryUMk+_6|jsQ()
zGG7+tt0o<6$E0l*HFnyL*|LobML`}N8uI)f<xf)DJJ{n~`dP|?0326nbK1xEM8;`f
zLkr at x->`yd?OLXF4>7HOmubT{OdCt!7N`Bjo=i85VY-?8>$KnEWxBPIY13Aw&Cf91
z_E)Cc1!nEEZz*TGvj@{%<W8sk?paLR8kn}<!*t(1rX3$LJ at gCHuA&aq;o*~+9;sz|
zbS~2$7BTHv#`MQ^Opk42di+hMCq8C+@)xGPC51HDQ+=48K9}j4dZvA=n4a6h^!y&C
z7v5xg at d(p?yOX*fC}Vo5Khw*#Os`zXbg-4_)zwUgZecq70MlzvGrj&g(;J_HTz03t
z-bL(^+nI~xbIfi at _PFfbBss@r?=HzLF8e8x9OAO~PW9`P>erY16?%&<a&|b6&drYg
z`VRlpKf+*~!0-+e8z3+C)pa;mryL~T$H30Q;r~E0XW at v?m_{BYDjJ_(L^Q!*n%INs
z^ubJLjAN=jn`zQ~rpY0uGh3OaT*-9S2BxW7nWpVzn)4K>q}5qG>@6ynT>dH36<;&0
zD(XnWt4f)!sbX3)mTB!&rgig})`yrjv at vbm$8_V{OgDYSbo0+lx8&(G=B;H+n|d&9
z9>sL~nM_+2GTqV2v~?ZRwjE6OJjQhIvrPB>h3WoJm>!VDH1v+nOb-ra+Ic$Du7ylL
z#F>8D!1V7sn0}c}ZZ0{xlS{uo&-5Qh2?>9DlS}_S0&<lISxM5ex&ci75ln%pOu+?A
z4U3o>FJTH@%XIN3rbYKNg%2?`ea;m5l_^?UN<+tbF)cooDSi=CVkuK{JyY`zrj}Qj
zTK~q>_FtwYdKrzftdePYPo~R8Fs+!%v~oVv<%^iESju$e^-QZaF|B@(>8huhu702C
zn(vveb(WKcHRVh<^k7;$ifP?Uru7X>kFQ{Q;x?uyA7k2knCYo+h$_Yu8lcWI2Qtl?
z$~2n~#?I%@=F%KL(*<#+`74+ftYuobjp at Qin7q$2UGzGW?<1zVZ<+kRG1V90 at OO3&
zbYTh(Vrm%2)Ht0fv=Agp=~gYw(@KYfJJ^geM}e)VJdciWn=Z;7(<oDJHyn0bak)m<
ztF2U&7c@}@ZW5Z^Vb}8W?Rj){@HJu=rPR#nC^ubNS4nf!X*gjPX`kD;cn1|LwjnLu
zLDl(=P94o+&5^gCO0Q8uJ at mJbh>C+qwGxNDl4>iduUV at 7q(-7Torg2aG#8t#+i)4E
zu9f-7R=AKjsG(V|O|$X9)FWk-q0Le<QpSBd3%6OJtvgO?cGAAE*x#j6`<9DlXKk2V
zK}y$9!nvD~6Q%SD=u%Lvx$_Gu*CSss1k%deDA$wh>8kZn9eK(*z0Gb~Ps!FEqQNTO
zMC#yfCuuV+-F|}HqO|fD4NuxkkM{F%Uh1y>Co2=?$=X6SPqu(fC-=bxJx<YXQB~|u
zB{h3$<$1h>*>yClv_Oup^viH_h>9zbc6IdY)U6i<gy`0r$lk5bcE}65^(876C%O9%
z(Dt8j0JB<)pU65jynEmv?NE+|s>U3wHCZay826B&+AFz2bC_1GJUJFuoX)|-D_1!l
z<q8UE&v4C`jY{%@@Qlzd=5?Xy(kT(1k=o_CqEXtM+>WEQz3k#_M{|reJC9}U7eId&
z28hc2WX3 at xj@OZN8tXY#`!F+t at SLUv+N<C=5S|*Xsl7ER`8aLCiQ1dvwYe5IOvW?7
z8c@?vt{{^=6SO~Nw5y4m6SbwXjXH3Y{0=#xoo+9vTtS^knR$k`TyDx~QERt*CTZ{H
z7{k5I$=ZYRaJ%+ur)p<93d||m!;*GYR-LN!oTaVKx{+<6qA;gw-PI<dfEDI6El(9Q
zOQ2k1o~`A}9COqF(>0f>;9BmcDrRWKmI{s?RdJ3sFB at psN$1YgZnO$Kv$Wr52cwR{
zGh2H(D<UPrbDp*{D^jh_*WSvCRI54KZ&^{+h{Cx}`!V&-v!~u`4t}pWOAe~1!5ivn
z at V0syyr<p-pQ$&&=jt)=1w96wC10r*!V!8BbpO3vElb{^A at pbPn&1St<W6-3?owCa
zZgmAdtggUE=n53(1=<RE7j>~j$~=3qIbVB1@=zIhYP}a=y%%cx<a_Npr7ADXFF2W=
zl$`>epmQm0SFX_M;1fL>oR`}0va6t1rl-*r=G{Pv at Pu4yZ>ZA6u85^>kt=E`g<Xp+
zr6yO*Qi{0ZmQvJ}u#{r1q@}dj)odxnT`iVU!nM>=O1dt!l$u>Dv!%k8Q#y_*q3;RI
zHhsFf=BQSb9>Fx1=ruh{e?;bY`lK>Pu|BbUDQ}=NMEND0sVxvym+G@^<}!VTjgDQl
zy;Zm_*XOF}9FBLZs2GE^mwB1gQx^kEJu9Rh;BC(S^{kY7BU`76mrH#SE8?Pgh1AF7
zv6|a3n9d35Qd;j~HCvJP?z02wl~S+HtJsZPUmh~kN0_Um-t9PhS4(|f9zEaHg0ma?
zT_yF1O@&7PtEJx8rjveQUL*D8HjWNu+O<-jk;kS|BFyWgz95f21n3sw8mYUpYK3{d
z)bCV2r$JH&#tl+`z;beDE^lG3mHOSPdHZW!^j|0SGxFH7>;mZQkACZ=o=i=k%Lb{x
zz^9bCQR-F7lFX`!{x?c}zts6k_1q-&W?mQ8|1&-wh{|7)R?wV1H%omN&nr`_T;#b$
z>W}g<np0ukDs>|}Rbg(D`c5 at Vz9B6K>t?Cnqgt|i`G6|D1n0tSQa^{Ha9a6N-qzC*
zg`C0n8U1dT`qI=i%`H-&nU_68%sZrhQC`l;;<;1mF>a$GZL8D|a52Yl&s|b~l at E&C
zio2zL312^%3gOu%^<{h%Wo7&j-7ZV>OUL1uyH6UkOV32+URmC;(>=2P{nBvd>2n|v
z74(_N^MEvVaJaI}+#!vQ${VWupfrjtWzR#>_{h?Hr!<bKdq_3kC5`XYCVU2i>(7&(
zN~)@S2}uQg{4#e-<17`*yc9edwHBU-rSU5 at R_{-mlQ18V#$2U=M<iiqVLmF2lawBd
zF at KQ8)k?_j;4#fT(zxBmn|3}vZ&|{Xt1BrS%|A*bPqtUAbG7?1`8fP at y#6Po at tjh{
z-8eSM5 at 9|mjh`(w`=C@*yol7nliw?i12%3>9fkRnH11aB9X*kGbcUEu!z~skcX>t{
zHdfL9Ptxd?r>+WfpENF1tx`UERvI2<iN#0HNuw$&6z22NxIvXwT)rTU_1s()UzEni
zOi?N7zh4@!+EfU+56G9KvD2!y|I5;tDA|2Ft*<a&k;Wv82eXT=j_rfexJXrVjWXW-
zsyrl(-PwUTBsz;8ho!NHJm+~$8vA*}QX<UPrEybsUdlT24QVu3G;>t&BiejZ8cmkL
zmGIBfh~`+5dWXLyjijZ9!zpFx+ww2cc;|##+<%qtNaKU!^t>yLwiAt(`Z(}6`JOaB
zw)D!{U0Q|@#UDzuQ<=kKmJN8H-y0^rCLHhqKS at lpxLA~qLZgpm<)Dhwka0{zQc7$1
zk?homKgs=Fx~n{&NVk_)mfw?}Po+CxDgHycRT!w+e at eHyCROn>>AoY=Sf}p*gy(bV
zR<9G)<O}Im&kR-kQo7aaK^4D}?zYST!gEBr)r&#Zel6WAEw$fB_i9V=Tj{>eQv8>!
z97)}DPUve1;rT!5-ky;O&v(*&pQZS{tQ<z|R5*KnknYVi1yvNXMD|=+Q|8E9S+i^6
z%9`C1ap2g7i791coMWA~PWV<|$|?B5z}_9Qk at zCgQH2aXESw_HrN-%mD4+9AXASZN
z)uLoYO{q4%Q)FcgTF@}#@T*maj65ZrQbyv!(Gq36Rtp5R?1YhBoOMvP$VN&|MZ1pG
zGCSU>mDE*tupz~{HLE2mOGZ;qM1qM%DUJALqD+o}#iR*8ITcY8HPKNh8x at vHvzqKe
zL&uadrLIC}bubGRWK!iw7IcP>gxg|7rbm}*YHA&$E9r-foYpO+o>ZSi_rE8t(wSD-
z-7;!McyckT?U5clQ*p|ej0^Ft8d+GCZsVXSuwQyn!1S&{(kJT~{C3mV;8pIIwjtZ2
ze>)L=&9S%*uQxJZh-&_42(PcME*@y%A1qT6{3Ai?zl#z%VrwxJ2}V_!{_((9M??O<
z{-&Tey}EP%KJ2L^=jK%4m&kU1eNiIWAp9a_tr(vwNIHZqf9d{dM(lEb&}EipVnV9l
tksRaF{nBkmBa at P~>ksGiUlV-=X!*<SPvsN!-_%2Os--XWEq}TF{|A3}gvbB@

literal 0
HcmV?d00001

diff --git a/llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split.gsym b/llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split.gsym
new file mode 100644
index 0000000000000000000000000000000000000000..c9e074bb3568d8f455ebc7bcf15af2940977cd79
GIT binary patch
literal 520
zcmZvXze at u#6vtl$H-)<*f}1!9B9yBR(#;=3RVof$)S<7ryR;45U2Kxpc5`rW(@7j0
z926WK99+BkC#X|LN4p7v_^wb4#YaBm`$<BQw|7`BW?*6lU>(w$BF=~&@l)A)FI2t<
zz2t39&o&23Pxl@;r_Q6(cRrnYx9VQHw{G99W*gb<48Q@=AUec3aZNlB&%_JyN_-Gs
z1dYGKVrhSKqlBniKJMf^&ntK+q(+ellM4a}x#D%94OeJl3?i9u4gV}5h7#+M^jU<V
zkxC<Lb)cqL%rR`maTj7H62KZ=3>ZeJcq9X6IBLU;2=G{NNV769d>rs-wI*eo=CWDI
zr+ at O9<`@ZIG1VQOX^$GY8U>n{3A at Kd@(XK!lJbe=X<QidwK3lv^Qz@}$~TrP%8}*i
Mdv}&kQ*K)R3+R<;4*&oF

literal 0
HcmV?d00001

diff --git a/llvm/test/tools/llvm-gsymutil/X86/dwo-warning.test b/llvm/test/tools/llvm-gsymutil/X86/dwo-warning.test
new file mode 100644
index 0000000000000..0a57c8dfe8791
--- /dev/null
+++ b/llvm/test/tools/llvm-gsymutil/X86/dwo-warning.test
@@ -0,0 +1,32 @@
+$ cat > main.cpp
+#include <iostream>
+#include <unistd.h>
+
+void foo() {
+    std::cout << "This is foo" << std::endl;
+}
+
+int main() {
+    std::cout << "hello world" << std::endl;
+    foo();
+    std::cout << "after foo" << std::endl;
+    return 0;
+}
+
+$ clang++ -g -gdwarf-4 -gsplit-dwarf main.cpp -o main_split
+$ mv main_split-main.dwo main_split-main__.dwo
+
+// RUN: llvm-gsymutil --convert=%p/Inputs/main_split | FileCheck %s --check-prefix=WARNING
+// RUN: llvm-gsymutil --convert=%p/Inputs/main_split --quiet 2>&1 | FileCheck %s --check-prefix=WARNING-QUIET
+
+// WARNING: Input file:  {{.*\/main_split}}
+// WARNING: Output file (x86_64): {{.*\.gsym}}
+// WARNING: warning: Unable to retrieve DWO .debug_info section for main_split-main.dwo
+// WARNING: Loaded 0 functions from DWARF.
+// WARNING: Loaded 12 functions from symbol table.
+// WARNING: Pruned 0 functions, ended with 12 total
+
+// WARNING-QUIET: Input file: {{.*\/main_split}}
+// WARNING-QUIET: Output file (x86_64): {{.*\.gsym}}
+// WARNING-QUIET: warning: Unable to retrieve DWO .debug_info section for some object files. (Remove the --quiet flag for full output)
+// WARNING-QUIET: Pruned 0 functions, ended with 12 total

>From d03fc83745ffa967d97a0b64e1f46bfa3cdd590e Mon Sep 17 00:00:00 2001
From: Wanyi Ye <wanyi at fb.com>
Date: Wed, 31 Jan 2024 15:54:05 -0800
Subject: [PATCH 2/2] remove test binaries; use yaml instead

---
 .../tools/llvm-gsymutil/X86/Inputs/main.cpp   |  13 -
 .../tools/llvm-gsymutil/X86/Inputs/main_split | Bin 19624 -> 0 bytes
 .../X86/Inputs/main_split-main__.dwo          | Bin 10160 -> 0 bytes
 .../llvm-gsymutil/X86/Inputs/main_split.gsym  | Bin 520 -> 0 bytes
 .../tools/llvm-gsymutil/X86/dwo-warning.test  |  32 -
 .../test/tools/llvm-gsymutil/X86/elf-dwo.yaml | 565 ++++++++++++++++++
 6 files changed, 565 insertions(+), 45 deletions(-)
 delete mode 100644 llvm/test/tools/llvm-gsymutil/X86/Inputs/main.cpp
 delete mode 100755 llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split
 delete mode 100644 llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split-main__.dwo
 delete mode 100644 llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split.gsym
 delete mode 100644 llvm/test/tools/llvm-gsymutil/X86/dwo-warning.test
 create mode 100644 llvm/test/tools/llvm-gsymutil/X86/elf-dwo.yaml

diff --git a/llvm/test/tools/llvm-gsymutil/X86/Inputs/main.cpp b/llvm/test/tools/llvm-gsymutil/X86/Inputs/main.cpp
deleted file mode 100644
index 4c72cdf16a232..0000000000000
--- a/llvm/test/tools/llvm-gsymutil/X86/Inputs/main.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-#include <iostream>
-#include <unistd.h>
-
-void foo() {
-    std::cout << "This is foo" << std::endl;
-}
-
-int main() {
-    std::cout << "hello world" << std::endl;
-    foo();
-    std::cout << "after foo" << std::endl;
-    return 0;
-}
diff --git a/llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split b/llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split
deleted file mode 100755
index a448f1bdf93b2bc247722b08d2a834e13c4bb01e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 19624
zcmeHPe{3Abb)Gwl6lGcDNs(;IO5$s5IaI9sMN+gx*YWYkQOB5)7?E}uwefQAZb at Ey
zcYC?pla8+1%23i)O at uOOo2G4mC_#b*g$t;$Q5bFD&`}#Jsew93P`HJgs6~iUwcXmS
z8#r|;_Ioq)mdn*q2?V75=SJFl?|t*$o7uNByED5p{PooMXfO~EoPy%Lf~1R~q=eM3
z5GzAc)Yw6>O(ey;#XX`8$R->~nL|`@OkWJD45sZ`uLYFsx`>f9xsJYFN<uK at 8WJVD
zwUpGXqAzS#B2y7kGTF5ft7W0jk7-TUlPT-D<%P)@DV&sq>6ES*Q?DJx=F1VK{^bXh
z9n+8K at -FK0XFGz)Zb{oMX*;Gu+cD*MQcUPLsQn#mNkSr7(J%=}VfibB-)>slO>2Fo
zBU+y+l|gB8*~#5Zc at x^MFD%`NJ{?b{Tn<w%@BOf&xcsz<FY|F--bUA9TE~-VKo<}z
z<TL$!u|h6V$d_vMNc~`cq`xm(wWB>!gX%?PP at 6h@^kES^BbEr`%SrrBEmQurM~DC6
z(4%j?{%q;*cUN!w at ay}Y`eK}YP?@AdiR}3jlT7?AI7mmGe+Ya?Vt_>Wf8N-#>(jRm
z6W=Ipg5iz^8MkeKe-gTl^dH{<|Lz7j#U_lypHOT=eE$acE5IAoXH?_yP!il)`WD#j
zVz)>plM)P3fs_nmu4tExs$*6h!w|;U)Da_RRjj#u)v+p5M}`Y_$(k}V1xw{M&N(sZ
z^jW1`VJti8Bof(qvtl?EGw)Q#vZ>T at V7(c$n$H?`)u~u!acs(%iW{lPeiV4(=%ih!
zrY1&@Pui143c#dOsE++~ezH^Wa=@5)C at byyvUbgpE}esUyK10Nt8c87cZL(Gla25Z
zi5qCtSsj9+nJ*zI*}7?%j#bY)0-04Om%aC1YUTYT7F}*G3p<h$gl83gczkSV*yxG&
zL=On&d;1hSJ#F+x`zY`&xGx3ezW`cpz~zJDeYiH%PU1LfcjULw9gOayggy0%PocTD
zh#7tT$nq|ohiu{O`y_5*LGjBvf9b&_!LpBNNXnNzxavO=7B6^k{m76RFM4pkM^eTW
z4~~kuiQ5_72e!H>7~THJH}zjm?H-)^Hm8sW=X(g{b$M{QUvLV0aQR&0j3#YHpc#Q?
z1ey_OMxYsiW(0mh1pc%0o&TLa`$~KIW3A7|gh+pM$qBB$kUslY?U$tG>Va<oUfugV
zemn0>f+KmJ@~&Q4McVsyl4;0w^#v*a1<5qDxw<6fuaHbbnyVM3{3j&SQ0D3d$W;Dh
z`usco8iT;}x$m#M1T6ir2U1W<pZne~q|filbVBv_0e9XxA_VCtUL8C4?MKt+{yBa2
z2d_;`r4mbtZ>FDn?#gylZ`aFFA>NpccHa3B6ruDlt%-~2^A8*%-{)I<h#Y#;*@aVo
z21a!1TUM`h-g$=XE@=w=EmHqLkjTDk>2t58pZ&K7)6c%yk`8<${q1YcPB=KP9kj1r
znU(cqd#dl52bN(gYHxcueQtT>F`UXbTE7D%@S#hKmuA;0NAV^7mw$T=Ba`&kc$Arb
zCKOIm^~B2WUPGYHJ(qrlXFw~T0P-RDqvW2yv_Jbw=(*I7$;|8O?d&RjovTqGE05Eq
z at D$z6`d!!Q-v%VHgjN$m1>Cave5fVSdC7L>wk)bnGc_a7j6gF2%?LCj(2PJc0?i0C
zBhZXMGXl*B{9i?YzQ=ge)O@}g#{XH{7V}o2V24lHl|oLKv-nCTQOsNSwA`PB5q;Zu
z<=<CVX{J5?+UhDk(TLNazX<sW&@yP at _0`oUNCtf#bpL;>uF^L>`Zh`_ at Yrz?sD}c3
zZr$9z2z&bWL*M+nV1ExOjBE}OhSvk44;X*zxSO(Y%%J=kP|*<@?dW=6=hjp0XT*bd
z-2a~5yWd4H`6}Re8ny`n20KE(5ggvuRzQIeDgWa*UPOKc)XfhTr2>`x1dfBKKbPGF
zc?rh|%Dxv=q&h-pgC{z?--`%tre*}15okuB8G&X5nh|J5pc#Q?1ey_OM&M>5a7M3l
zT*OCCN;8_$hgV9pHjWa at JwEy8eKM`Rqjakxn0O^6w at u6QJCwXz%e-!RkCtg(MClGi
z#M646GR>zb at m%P?uC3Z6Uua1ZQERY4S2iU{)N5LWxUBPet=uVHKVDNub1q7|6mfrf
zt=x)UpU1P=y4K)%Ca>|kUE|Z6lagcna+{L5-ium~*ZOh!_|PfOr>^z!ja159E~b%E
zp3(W*&Hp=b*N^*Z(yy=ksHTr-I;-hPP08%=@bEym8!MIfg%gQrUo;W!iTCuz`{M_~
z-N&t5IBhyQBhs^PopvwQh$`(wA`$m!%Z$i at eIi>hOLO6qR;8M^OX0+Q(Krmchpm!x
zY*LGno~Ttgv`-8^GSF8}^z<gg at ka(KwNfb$ODs_JS4s>$GGLZUb|znHn0@#I1Mzxq
zt|xw=-wa2ivFbuKXO*ilEcK3=nS7*VJ61F+CMO1Z#pLinByj_!;n9JEH^?3xzp?q@
z!GVOB7^8wx196d`#Lv3w<*~Mx>LRP51zD!%RRLO9XNd*RPCgr{SOq)ldhmhLlMhoK
zeW2>svhSmR9v-|q&}$~#y&`|7+Y0p|zs|DGW7<fE??JcSzz^S-$~%(OB;|d^U)F2d
z{!{uM*{Cc_+cUjc9j@!18`PQWTGM6jN4+<x+UvWV5VZRLt5aM5<>|MM?Yf}r{S~Q$
zd-`?}x_wW_Q$xEi4t4z5(B|!d9c at nz(Vgrr-2OI+ at 8RYX2n62h*hYk0;t0fQ)k-X1
z$`)!lE0)0$^_a6zwyGj#mz`K;K879>acnF}x130#H&(H2N19-LH|0?`F#7w at aB}me
zqjo{Wpofm){%7x4Gmb3bEl~;RdZbM*We1NX?&B)`?CK#;_GjomXJu-0>rPgcC}>H2
zG+QpyWiyN-R?}l;z2QXX>3aCY>?ztjKrdfU<x37LNf7$DtcEc<Hl9+pSeBo&X2GM?
zSoN$`c5st4%1#9kUP at -swN30>fHTD at 4_Uh2nw2~$$jSr6T6lQHg;5IN4Kq`PK>kz?
zsjt<6z`RYEVa%4X=RlvAgq0HmTMMY7M$xPrW+6XUl1ivF86$(NWg~<>9=xZ#HB<s=
zC@#XWkWc6>LGBd0T03ufs5RWy{zPk_ZR>KYXx|BBSs|@$%dMRsY<(x?f^XXz4Yr|A
z#OCdy6+2~?7V at z|;bbvVHA}geRmUssl37qtxnlp4m35>LbF8Wplbu6l&Q%wRH78$)
zP2<@xRw~z=s=V4pwOq(M5qaTrr)<Hivv_G0FPY-XU(r4LG+GGG6e*5l495jwkVLQD
zi^Rz78NUiHgwP2K%ESx|7{<B=Ahx5aaE at x2KgN(LgxxNs8a8*-#ou5=r$v<ypW=_v
zAlJ&j56Gfyj(gE87TuOAA|!fRvakq1dlh+NYNaZ!F&_McED)mFviO3sqsAkim$=#~
zBOb at aT&(6FL$46$h<9CJ_syL6DDJ|j>q!$ERjTL|=A5WwK)9H*YqT%tkBFZw*rp@?
zmRM=?d5mBs7uH%|a{-zE5{c`I2}}G3h|6Lwe-br$mDqyfKi>f!+hXiu8GCzX(Sk)K
zMA<q&vK at jvv3}xIPY at 3h&;3H&f<fw{rw at o20ch40vxI&lhDbCFM6I_6;zK$Yy%o|=
zNOX7KBwk<jtI_i-fSl7UNtqRvziRJPBmH+EKPWl`&nx723}ElY5y1Yb_YWq)$tQ`V
zNATOo&oprI!_Qo)jGq%459=1scv0gsKKv|jDtE$H?(ax^r#ru3KYy<M at O+5zuS@;6
ziHmwZ!uUUdX;lA>&g);LpB-Z2=aTHgrH%Z&DRZ~G`x#kzD=t_7vljpOd#A*27d&ra
z{r3P5i7v4}nPf=PI=X8Zc()HvKp(>cWGa0%t`H&#d<U)z-*GD1TT0@%!RYY{7xHoP
z6AX!V?T7I{B>iBg;Bgn at pVfX?X8KjBk8-ttJWgc#?gsj&ab8r<i(3C4t^eu<`U$D8
zl|1Aq;X(9u-+4^|-yZA|@nq7YjrlX-4fYA11Wxhy$N8+pcZ+G=KH1rCY21Ikeh)aE
z*9G0q<+n!|eMaJJy+)U`{>+Y~1UYX12t2%|=5jyU0B>(;tp6_HJ6vlIldU+3sEvm@
zrabbFOZy4sL;~R9 at nb`S<9M#uGR9am9*-Z28*YA9?L{0vh+COW76QJiP7SM%vlwUa
z21>&z8W^FJF!VHxoNde%?2K73a*kc88fL97=w4f}94i-%H`Xv_;oUGR6?4JBgs`$8
zW-DgVGIF(Iae;;-Ym%(_I#qX2h5^;_!6PXnb##RGe;Sy_8mY7f(<8@)G4jEqgGa`O
z-P1lcIy#xc4$i@$@f0kqoava at 9D0m~Ir)-Nt6DiZ3Q$`zZ)#g;Qtq47n<WvRs%^|;
zY(kq*>7-Fj+HUFDvZ)NP=@J_)ja<Qy^Ew)4s+pQm&coERtJBq|O`12k<#c@|efwC~
zXUb+^7}!qBai$%!v|Dw(o<Xrxr-i_la;S5rT4mrwFUCO)_p#Fc*7cs?zbC<aU at 2M^
zv$7zY0UX?DlW&9lz}#fl?*_&R`*zvVZrXLV5K#;e9Ww*!R1}?O4v%@OQWjD9Isv1y
zC`OuPtKuwppiC`~o#y$Rh6abmA~g7klKQ+^ofpyELJ37E>Qq#Yep|9mFp!5fVUmI7
z$^}P6<%Nl2qc3>bvZ57Rw&$oduRG9u4z?^Q3)Pd91 at mxh7V}w at YQq<PqOt(x3>Q&E
z(V>gzry{D~zQ|JtPG=*}G-^6dC7-Ebn2j@{=@c&5tj)Zc$yBV9EMfn>#XMrlteK<g
zDq|Y!mTMW*Yt5m?)STCIzq?76-h1Magt3lFT`ft;@ZYcC_ntai>M~FCE*vzIVSE0&
z4E*;R!pQR`8qaxCKLoEm|9uAjyA5}HmBI5kfMJ?rc<p(dcpA?IN at 4lC_T#tz0J46F
zcbi=Q3;O&oX!~w$iqXDI{`#9h>0K_{^ZVY*Tz){=Q5}h8dw%bl2S%!F&+m^{bVd1n
zF;ryI?pPEb21oB|*?y)iDf4D at g}EHAKkG65HE7ejUzYj(Z(SQqNN;N~=K5<`oCiZy
zWqW?#d|BHsYDF%e?YUlmpzVjW9>2eyrhp;U6_M}L>CKSe{&T=6ChXrGCt>JFiQnrh
z>H7Bb8Dx0v!+M+**7h at OsHui&WGd5_ at awfdqwUXVg=Nb0B(`JdPr-QYc|1C=2Q}MR
zQB!~WeNx+V{CT`A!pfjW+cDwzvHX`{sC>5PzgN;1RvIIUxWE4Lzlj{LeLb9%y7jOm
z;w44gUw`@EK at O&-vJa3Fe~;n6YvPX=+cW(>Y&t#m{JrMs2zgs;FG^aI+5Tl at P}|Yn
z)t%4q->Koi=;r9QKd#psu%+{N?e+JXr5He at ZbjT*E|=+#kmI%IdDDuvPr8<hVLPTl
z7<=t`eBT{c`u^)hy57_dfP8WNc}L!UZQtcHNP3OIZ$mz*XmvN2?SIon6vOVA(%);L
zvi<f?YT#E`QTt($>0U5=ZAfL>OiInTZuldtDADWt|NY4KsYp$yR~h*0<<~vDf&CY>
zJ%2~k#a~y}!yDK?qwU|#7e+hqmv3r&e?6D!!HPuB7jI&FrUh;9)gk^Uy*xweR>b{f
zI|k|-*q_w)XIN2Fzdg;*{TQkKP}|dd+?#x&wB>u3SMSq at lq7fLg58S)@1xxQ%g>)J
hz<ePFf<!NjkVbu({_^pHtfBqrpfnd3d<H&I{4Z^v&`<yX

diff --git a/llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split-main__.dwo b/llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split-main__.dwo
deleted file mode 100644
index 4bb34ae7bd6bdf7b36994cb05dd6c764ae42808d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 10160
zcmbtad3=*q*1k7Q-j*ii?e at N<1Tct{z3jV|MGGPb3Mj~8Ow*)|q)AB91sp+8!3|||
z14U5=Hxy8ZaX}s2Kt*sFozZa}opD2*&vgXHndh9F<!#`<ufN}OpL@?;&bjBFyCmuI
z+G&$)Qi}AS6g47SN=t<pRF%z-=j?c)p{2jk7Z+adgqbrZT;QEGWnQg!_66tEdc7i%
ztcTnmZH^>G2=IDaeBtH*xYge%nj?u&LnKh|QB at Gtp{A)Wk at O`4-lWLpTG0Z6x at 5G~
zFM<t$B*;5uhIi7GX|?FW#Nvd&D84w_24l_CiYXz2t)cn=(pVfL1<@sxi26s5_6A!M
zeqSVr8pUd8PH9d}b at 6Z@k~K6OjWmcvXsNO;&gQ_%P$b0GvLGRpW=?64#Bo{^DQ#(P
zjwrn?83P+)-e at qG2+%yzxoAru9t=lYy}oz at 5b%k3puwB)wFFd&oa+sT67ZC-Av;A3
zs^*r>9B)xe+LUbOIICOI<D|INkNGy$!Q&V|$<!2MiiX3?u_a82ScEv33^fHrvWfEK
zRZt|=G2&M}BYxF|2d1 at 5r1~bK^`bu7To(?IFd4;)g`-MoGP+2~!h)BF>zmntwqTsJ
zC8IF1DbU19h)D^!2_EGP`T4l%re~>~hf)2FaZ(hki?hObs+>qdOrxUO>urcMd;M)~
zDU0gaB#+f{xQ5L1SZxirk1$o|^#<DffmkvWjd)|w(Z1xJH!C at KWIT{;j3Xj4b<-go
zp3`&i&`dQAREx05=_S1LPSkN&qSY6xojHA$H+P6xgR!?!DZ>6}q(#7g;i%t-#Zkn<
zP{J3EG&c$2SfdZ at k0j$^aDAu&`z4fUi2GuVV8nDF4(82C+#K;!eIn-b2f)p-7}vL{
zj>)L%kc_4)>cYOrqLlON19i<5{fd2c2~i(v!FjN_Ihw at Gn?zWZeRa`zQuxAr0(pI5
zST1nvw81i8(!01h<X;50atYDqOGZPKghgE<;KR~GgFo67!%-8AV028L2Efo*Cv*zN
z0|9|e9e{VjWCUpyO{!HB!Z^aG8;-LCGJK9KPLM$s#c^Mx9u})U2`(YlXeTg*6(Q0S
zOA<*;i~}F15l1}sWjHlcZ!K9AR%WmrG?7&IG&iR+!PMwDxaUnDoeAinu)h{@txnv@
z-e4 at 6z`VWbOseb;!#ja^Tm=2$XaXm0fVL_GQHX-!=0qbO-|7&@5L`kUjlm<q)aguT
zwmP{{0|(So$}O_zw%V1!Gz9{S1Ra+=WHNxs1Y6^wB(H&=7J{!Rgb^8%Qo~v(p+g#+
zpzxq0As&eMa8ktsxOV9NO5GJoS1Ju8>zd)JK(d87_g+b)nkh;)#eyO14lqW>W+#J0
zOM1R7sopJW2VmGp?szS!nWi~oREyG(q2qg|Ole6m;ugE5!Q13(L)0Vsy^(0d9~evl
zeWHpXh}v{ZT5sH+Lx*7HajYUFDF%>R5~CY2gd-uf<&jZ)zE$l_RHb*nYEF&Q=Rj-v
zAZSgW1nMxRHtDmVHGLSgrZ;_S<~T^1BCw6pCqt at Lx+bO5J8x((8f`(iMKP;TMDUC~
zxK|T6Wj%vORu8Hk?CE`aAd;LhD^(mYq&g5D-G|#(`(rWAcoVU3C^>+}sIG5~@>9rx
zv=ZnF^aT0<gMpF28NgIv4&VbCfe6qHECa3tt^+m#n}NH4dx71+v%t&1Yrs3eN5D70
zkHCKb2VQDAU;y2KUce||Ja8s36IcKQfi_?juo2h}>;xVMUIG3LybpW>`~>_4IBY_=
zfO5bM^Z at z;1A!4h4KN9q4$K9-KoDpGlE6}61#lIx2DlNp9k?5K0C)u03p@`T1l|Ka
z0loyj1C9bRPlygc8Q=zb0Rw^2z(n9YAOIwQoxnceN8l(R>_QX*2GAAg2 at C*+1E&GC
zz}digz(ODZM1U4x8L$di4{QRq0Na53fCqs`fhT|iz+vEh;P1d^z!BgFz=ojc02BeG
zKn2hZ=mGQw1_Hx at 8lV=K3Y-tj2mC+?hyks at a$ps318 at _t1=t4M59|W=08az^fkVLC
zz*oS(fTKX3244VWKxg12pb8iO3<bsl6M)IU4B$LqKHvjFz!KmxU=?sZuo2h{+zH$Z
z>;(1zPXf;Y2Y|!C+raz45#T%E7eMC2FF+;W0eS-iff2wsU@~wHZ~<^J5C>KQR|6Y>
zZNLuT1>ghVOW+6KHz2=2h+?1;I2q^%3<FLBCIK^mxquJ27)St at 0;_?wz^%Ym;9g)C
z at F?&&@G0;$5HdNe5L^ZF-?F>-MIM!VXFET8?AQ#$Rt2$i*p7+3AryUMk+_6|jsQ()
zGG7+tt0o<6$E0l*HFnyL*|LobML`}N8uI)f<xf)DJJ{n~`dP|?0326nbK1xEM8;`f
zLkr at x->`yd?OLXF4>7HOmubT{OdCt!7N`Bjo=i85VY-?8>$KnEWxBPIY13Aw&Cf91
z_E)Cc1!nEEZz*TGvj@{%<W8sk?paLR8kn}<!*t(1rX3$LJ at gCHuA&aq;o*~+9;sz|
zbS~2$7BTHv#`MQ^Opk42di+hMCq8C+@)xGPC51HDQ+=48K9}j4dZvA=n4a6h^!y&C
z7v5xg at d(p?yOX*fC}Vo5Khw*#Os`zXbg-4_)zwUgZecq70MlzvGrj&g(;J_HTz03t
z-bL(^+nI~xbIfi at _PFfbBss@r?=HzLF8e8x9OAO~PW9`P>erY16?%&<a&|b6&drYg
z`VRlpKf+*~!0-+e8z3+C)pa;mryL~T$H30Q;r~E0XW at v?m_{BYDjJ_(L^Q!*n%INs
z^ubJLjAN=jn`zQ~rpY0uGh3OaT*-9S2BxW7nWpVzn)4K>q}5qG>@6ynT>dH36<;&0
zD(XnWt4f)!sbX3)mTB!&rgig})`yrjv at vbm$8_V{OgDYSbo0+lx8&(G=B;H+n|d&9
z9>sL~nM_+2GTqV2v~?ZRwjE6OJjQhIvrPB>h3WoJm>!VDH1v+nOb-ra+Ic$Du7ylL
z#F>8D!1V7sn0}c}ZZ0{xlS{uo&-5Qh2?>9DlS}_S0&<lISxM5ex&ci75ln%pOu+?A
z4U3o>FJTH@%XIN3rbYKNg%2?`ea;m5l_^?UN<+tbF)cooDSi=CVkuK{JyY`zrj}Qj
zTK~q>_FtwYdKrzftdePYPo~R8Fs+!%v~oVv<%^iESju$e^-QZaF|B@(>8huhu702C
zn(vveb(WKcHRVh<^k7;$ifP?Uru7X>kFQ{Q;x?uyA7k2knCYo+h$_Yu8lcWI2Qtl?
z$~2n~#?I%@=F%KL(*<#+`74+ftYuobjp at Qin7q$2UGzGW?<1zVZ<+kRG1V90 at OO3&
zbYTh(Vrm%2)Ht0fv=Agp=~gYw(@KYfJJ^geM}e)VJdciWn=Z;7(<oDJHyn0bak)m<
ztF2U&7c@}@ZW5Z^Vb}8W?Rj){@HJu=rPR#nC^ubNS4nf!X*gjPX`kD;cn1|LwjnLu
zLDl(=P94o+&5^gCO0Q8uJ at mJbh>C+qwGxNDl4>iduUV at 7q(-7Torg2aG#8t#+i)4E
zu9f-7R=AKjsG(V|O|$X9)FWk-q0Le<QpSBd3%6OJtvgO?cGAAE*x#j6`<9DlXKk2V
zK}y$9!nvD~6Q%SD=u%Lvx$_Gu*CSss1k%deDA$wh>8kZn9eK(*z0Gb~Ps!FEqQNTO
zMC#yfCuuV+-F|}HqO|fD4NuxkkM{F%Uh1y>Co2=?$=X6SPqu(fC-=bxJx<YXQB~|u
zB{h3$<$1h>*>yClv_Oup^viH_h>9zbc6IdY)U6i<gy`0r$lk5bcE}65^(876C%O9%
z(Dt8j0JB<)pU65jynEmv?NE+|s>U3wHCZay826B&+AFz2bC_1GJUJFuoX)|-D_1!l
z<q8UE&v4C`jY{%@@Qlzd=5?Xy(kT(1k=o_CqEXtM+>WEQz3k#_M{|reJC9}U7eId&
z28hc2WX3 at xj@OZN8tXY#`!F+t at SLUv+N<C=5S|*Xsl7ER`8aLCiQ1dvwYe5IOvW?7
z8c@?vt{{^=6SO~Nw5y4m6SbwXjXH3Y{0=#xoo+9vTtS^knR$k`TyDx~QERt*CTZ{H
z7{k5I$=ZYRaJ%+ur)p<93d||m!;*GYR-LN!oTaVKx{+<6qA;gw-PI<dfEDI6El(9Q
zOQ2k1o~`A}9COqF(>0f>;9BmcDrRWKmI{s?RdJ3sFB at psN$1YgZnO$Kv$Wr52cwR{
zGh2H(D<UPrbDp*{D^jh_*WSvCRI54KZ&^{+h{Cx}`!V&-v!~u`4t}pWOAe~1!5ivn
z at V0syyr<p-pQ$&&=jt)=1w96wC10r*!V!8BbpO3vElb{^A at pbPn&1St<W6-3?owCa
zZgmAdtggUE=n53(1=<RE7j>~j$~=3qIbVB1@=zIhYP}a=y%%cx<a_Npr7ADXFF2W=
zl$`>epmQm0SFX_M;1fL>oR`}0va6t1rl-*r=G{Pv at Pu4yZ>ZA6u85^>kt=E`g<Xp+
zr6yO*Qi{0ZmQvJ}u#{r1q@}dj)odxnT`iVU!nM>=O1dt!l$u>Dv!%k8Q#y_*q3;RI
zHhsFf=BQSb9>Fx1=ruh{e?;bY`lK>Pu|BbUDQ}=NMEND0sVxvym+G@^<}!VTjgDQl
zy;Zm_*XOF}9FBLZs2GE^mwB1gQx^kEJu9Rh;BC(S^{kY7BU`76mrH#SE8?Pgh1AF7
zv6|a3n9d35Qd;j~HCvJP?z02wl~S+HtJsZPUmh~kN0_Um-t9PhS4(|f9zEaHg0ma?
zT_yF1O@&7PtEJx8rjveQUL*D8HjWNu+O<-jk;kS|BFyWgz95f21n3sw8mYUpYK3{d
z)bCV2r$JH&#tl+`z;beDE^lG3mHOSPdHZW!^j|0SGxFH7>;mZQkACZ=o=i=k%Lb{x
zz^9bCQR-F7lFX`!{x?c}zts6k_1q-&W?mQ8|1&-wh{|7)R?wV1H%omN&nr`_T;#b$
z>W}g<np0ukDs>|}Rbg(D`c5 at Vz9B6K>t?Cnqgt|i`G6|D1n0tSQa^{Ha9a6N-qzC*
zg`C0n8U1dT`qI=i%`H-&nU_68%sZrhQC`l;;<;1mF>a$GZL8D|a52Yl&s|b~l at E&C
zio2zL312^%3gOu%^<{h%Wo7&j-7ZV>OUL1uyH6UkOV32+URmC;(>=2P{nBvd>2n|v
z74(_N^MEvVaJaI}+#!vQ${VWupfrjtWzR#>_{h?Hr!<bKdq_3kC5`XYCVU2i>(7&(
zN~)@S2}uQg{4#e-<17`*yc9edwHBU-rSU5 at R_{-mlQ18V#$2U=M<iiqVLmF2lawBd
zF at KQ8)k?_j;4#fT(zxBmn|3}vZ&|{Xt1BrS%|A*bPqtUAbG7?1`8fP at y#6Po at tjh{
z-8eSM5 at 9|mjh`(w`=C@*yol7nliw?i12%3>9fkRnH11aB9X*kGbcUEu!z~skcX>t{
zHdfL9Ptxd?r>+WfpENF1tx`UERvI2<iN#0HNuw$&6z22NxIvXwT)rTU_1s()UzEni
zOi?N7zh4@!+EfU+56G9KvD2!y|I5;tDA|2Ft*<a&k;Wv82eXT=j_rfexJXrVjWXW-
zsyrl(-PwUTBsz;8ho!NHJm+~$8vA*}QX<UPrEybsUdlT24QVu3G;>t&BiejZ8cmkL
zmGIBfh~`+5dWXLyjijZ9!zpFx+ww2cc;|##+<%qtNaKU!^t>yLwiAt(`Z(}6`JOaB
zw)D!{U0Q|@#UDzuQ<=kKmJN8H-y0^rCLHhqKS at lpxLA~qLZgpm<)Dhwka0{zQc7$1
zk?homKgs=Fx~n{&NVk_)mfw?}Po+CxDgHycRT!w+e at eHyCROn>>AoY=Sf}p*gy(bV
zR<9G)<O}Im&kR-kQo7aaK^4D}?zYST!gEBr)r&#Zel6WAEw$fB_i9V=Tj{>eQv8>!
z97)}DPUve1;rT!5-ky;O&v(*&pQZS{tQ<z|R5*KnknYVi1yvNXMD|=+Q|8E9S+i^6
z%9`C1ap2g7i791coMWA~PWV<|$|?B5z}_9Qk at zCgQH2aXESw_HrN-%mD4+9AXASZN
z)uLoYO{q4%Q)FcgTF@}#@T*maj65ZrQbyv!(Gq36Rtp5R?1YhBoOMvP$VN&|MZ1pG
zGCSU>mDE*tupz~{HLE2mOGZ;qM1qM%DUJALqD+o}#iR*8ITcY8HPKNh8x at vHvzqKe
zL&uadrLIC}bubGRWK!iw7IcP>gxg|7rbm}*YHA&$E9r-foYpO+o>ZSi_rE8t(wSD-
z-7;!McyckT?U5clQ*p|ej0^Ft8d+GCZsVXSuwQyn!1S&{(kJT~{C3mV;8pIIwjtZ2
ze>)L=&9S%*uQxJZh-&_42(PcME*@y%A1qT6{3Ai?zl#z%VrwxJ2}V_!{_((9M??O<
z{-&Tey}EP%KJ2L^=jK%4m&kU1eNiIWAp9a_tr(vwNIHZqf9d{dM(lEb&}EipVnV9l
tksRaF{nBkmBa at P~>ksGiUlV-=X!*<SPvsN!-_%2Os--XWEq}TF{|A3}gvbB@

diff --git a/llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split.gsym b/llvm/test/tools/llvm-gsymutil/X86/Inputs/main_split.gsym
deleted file mode 100644
index c9e074bb3568d8f455ebc7bcf15af2940977cd79..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 520
zcmZvXze at u#6vtl$H-)<*f}1!9B9yBR(#;=3RVof$)S<7ryR;45U2Kxpc5`rW(@7j0
z926WK99+BkC#X|LN4p7v_^wb4#YaBm`$<BQw|7`BW?*6lU>(w$BF=~&@l)A)FI2t<
zz2t39&o&23Pxl@;r_Q6(cRrnYx9VQHw{G99W*gb<48Q@=AUec3aZNlB&%_JyN_-Gs
z1dYGKVrhSKqlBniKJMf^&ntK+q(+ellM4a}x#D%94OeJl3?i9u4gV}5h7#+M^jU<V
zkxC<Lb)cqL%rR`maTj7H62KZ=3>ZeJcq9X6IBLU;2=G{NNV769d>rs-wI*eo=CWDI
zr+ at O9<`@ZIG1VQOX^$GY8U>n{3A at Kd@(XK!lJbe=X<QidwK3lv^Qz@}$~TrP%8}*i
Mdv}&kQ*K)R3+R<;4*&oF

diff --git a/llvm/test/tools/llvm-gsymutil/X86/dwo-warning.test b/llvm/test/tools/llvm-gsymutil/X86/dwo-warning.test
deleted file mode 100644
index 0a57c8dfe8791..0000000000000
--- a/llvm/test/tools/llvm-gsymutil/X86/dwo-warning.test
+++ /dev/null
@@ -1,32 +0,0 @@
-$ cat > main.cpp
-#include <iostream>
-#include <unistd.h>
-
-void foo() {
-    std::cout << "This is foo" << std::endl;
-}
-
-int main() {
-    std::cout << "hello world" << std::endl;
-    foo();
-    std::cout << "after foo" << std::endl;
-    return 0;
-}
-
-$ clang++ -g -gdwarf-4 -gsplit-dwarf main.cpp -o main_split
-$ mv main_split-main.dwo main_split-main__.dwo
-
-// RUN: llvm-gsymutil --convert=%p/Inputs/main_split | FileCheck %s --check-prefix=WARNING
-// RUN: llvm-gsymutil --convert=%p/Inputs/main_split --quiet 2>&1 | FileCheck %s --check-prefix=WARNING-QUIET
-
-// WARNING: Input file:  {{.*\/main_split}}
-// WARNING: Output file (x86_64): {{.*\.gsym}}
-// WARNING: warning: Unable to retrieve DWO .debug_info section for main_split-main.dwo
-// WARNING: Loaded 0 functions from DWARF.
-// WARNING: Loaded 12 functions from symbol table.
-// WARNING: Pruned 0 functions, ended with 12 total
-
-// WARNING-QUIET: Input file: {{.*\/main_split}}
-// WARNING-QUIET: Output file (x86_64): {{.*\.gsym}}
-// WARNING-QUIET: warning: Unable to retrieve DWO .debug_info section for some object files. (Remove the --quiet flag for full output)
-// WARNING-QUIET: Pruned 0 functions, ended with 12 total
diff --git a/llvm/test/tools/llvm-gsymutil/X86/elf-dwo.yaml b/llvm/test/tools/llvm-gsymutil/X86/elf-dwo.yaml
new file mode 100644
index 0000000000000..109f2fe73e695
--- /dev/null
+++ b/llvm/test/tools/llvm-gsymutil/X86/elf-dwo.yaml
@@ -0,0 +1,565 @@
+## Test loading an ELF file with split DWARF.
+## First we make the ELF file and dwo file from yaml,
+## then we test converting the ELF file with and without a valid dwo
+
+## RUN: yaml2obj %s -o %t
+## RUN: llvm-gsymutil --convert=%t -o %t.gsym | FileCheck %s --check-prefix=WARNING
+## RUN: llvm-gsymutil --convert=%t -o %t.gsym --quiet | FileCheck %s --check-prefix=WARNING-QUIET
+
+## WARNING: Input file: {{.*\.yaml\.tmp}}
+## WARNING: Output file (x86_64): {{.*\.yaml\.tmp\.gsym}}
+## WARNING: warning: Unable to retrieve DWO .debug_info section for main_split-main.dwo
+## WARNING: Loaded 0 functions from DWARF.
+## WARNING: Loaded 10 functions from symbol table.
+## WARNING: Pruned 0 functions, ended with 10 total
+
+## WARNING-QUIET: Input file: {{.*\.yaml\.tmp}}
+## WARNING-QUIET: Output file (x86_64): {{.*\.yaml\.tmp\.gsym}}
+## WARNING-QUIET: warning: Unable to retrieve DWO .debug_info section for some object files. (Remove the --quiet flag for full output)
+## WARNING-QUIET: Pruned 0 functions, ended with 10 total
+
+
+
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x401020
+ProgramHeaders:
+  - Type:            PT_PHDR
+    Flags:           [ PF_R ]
+    VAddr:           0x400040
+    Align:           0x8
+  - Type:            PT_INTERP
+    Flags:           [ PF_R ]
+    FirstSec:        .interp
+    LastSec:         .interp
+    VAddr:           0x400318
+  - Type:            PT_LOAD
+    Flags:           [ PF_R ]
+    FirstSec:        .interp
+    LastSec:         .rela.dyn
+    VAddr:           0x400000
+    Align:           0x1000
+  - Type:            PT_LOAD
+    Flags:           [ PF_X, PF_R ]
+    FirstSec:        .init
+    LastSec:         .fini
+    VAddr:           0x401000
+    Align:           0x1000
+  - Type:            PT_LOAD
+    Flags:           [ PF_R ]
+    FirstSec:        .rodata
+    LastSec:         .eh_frame
+    VAddr:           0x402000
+    Align:           0x1000
+  - Type:            PT_LOAD
+    Flags:           [ PF_W, PF_R ]
+    FirstSec:        .init_array
+    LastSec:         .bss
+    VAddr:           0x403DF8
+    Align:           0x1000
+  - Type:            PT_DYNAMIC
+    Flags:           [ PF_W, PF_R ]
+    FirstSec:        .dynamic
+    LastSec:         .dynamic
+    VAddr:           0x403E08
+    Align:           0x8
+  - Type:            PT_NOTE
+    Flags:           [ PF_R ]
+    FirstSec:        .note.gnu.property
+    LastSec:         .note.gnu.property
+    VAddr:           0x400338
+    Align:           0x8
+  - Type:            PT_NOTE
+    Flags:           [ PF_R ]
+    FirstSec:        .note.gnu.build-id
+    LastSec:         .note.ABI-tag
+    VAddr:           0x400358
+    Align:           0x4
+  - Type:            PT_GNU_PROPERTY
+    Flags:           [ PF_R ]
+    FirstSec:        .note.gnu.property
+    LastSec:         .note.gnu.property
+    VAddr:           0x400338
+    Align:           0x8
+  - Type:            PT_GNU_EH_FRAME
+    Flags:           [ PF_R ]
+    FirstSec:        .eh_frame_hdr
+    LastSec:         .eh_frame_hdr
+    VAddr:           0x402010
+    Align:           0x4
+  - Type:            PT_GNU_STACK
+    Flags:           [ PF_W, PF_R ]
+    Align:           0x10
+  - Type:            PT_GNU_RELRO
+    Flags:           [ PF_R ]
+    FirstSec:        .init_array
+    LastSec:         .got.plt
+    VAddr:           0x403DF8
+Sections:
+  - Name:            .interp
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x400318
+    AddressAlign:    0x1
+    Content:         2F6C696236342F6C642D6C696E75782D7838362D36342E736F2E3200
+  - Name:            .note.gnu.property
+    Type:            SHT_NOTE
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x400338
+    AddressAlign:    0x8
+    Notes:
+      - Name:            GNU
+        Desc:            028000C0040000000300000000000000
+        Type:            NT_GNU_PROPERTY_TYPE_0
+  - Name:            .note.gnu.build-id
+    Type:            SHT_NOTE
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x400358
+    AddressAlign:    0x4
+    Notes:
+      - Name:            GNU
+        Desc:            250FD8246225C95E81C87BE2EEB38DD068A42DEE
+        Type:            NT_PRPSINFO
+  - Name:            .note.ABI-tag
+    Type:            SHT_NOTE
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x40037C
+    AddressAlign:    0x4
+    Notes:
+      - Name:            GNU
+        Desc:            '00000000030000000200000000000000'
+        Type:            NT_VERSION
+  - Name:            .gnu.hash
+    Type:            SHT_GNU_HASH
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x4003A0
+    Link:            .dynsym
+    AddressAlign:    0x8
+    Header:
+      SymNdx:          0x1
+      Shift2:          0x0
+    BloomFilter:     [ 0x0 ]
+    HashBuckets:     [ 0x0 ]
+    HashValues:      [  ]
+  - Name:            .dynsym
+    Type:            SHT_DYNSYM
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x4003C0
+    Link:            .dynstr
+    AddressAlign:    0x8
+  - Name:            .dynstr
+    Type:            SHT_STRTAB
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x400438
+    AddressAlign:    0x1
+  - Name:            .gnu.version
+    Type:            SHT_GNU_versym
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x4004CC
+    Link:            .dynsym
+    AddressAlign:    0x2
+    Entries:         [ 0, 2, 1, 1, 1 ]
+  - Name:            .gnu.version_r
+    Type:            SHT_GNU_verneed
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x4004D8
+    Link:            .dynstr
+    AddressAlign:    0x8
+    Dependencies:
+      - Version:         1
+        File:            libc.so.6
+        Entries:
+          - Name:            GLIBC_2.34
+            Hash:            110530996
+            Flags:           0
+            Other:           2
+  - Name:            .rela.dyn
+    Type:            SHT_RELA
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x4004F8
+    Link:            .dynsym
+    AddressAlign:    0x8
+    Relocations:
+      - Offset:          0x403FC8
+        Symbol:          __libc_start_main
+        Type:            R_X86_64_GLOB_DAT
+      - Offset:          0x403FD0
+        Symbol:          _ITM_deregisterTMCloneTable
+        Type:            R_X86_64_GLOB_DAT
+      - Offset:          0x403FD8
+        Symbol:          __gmon_start__
+        Type:            R_X86_64_GLOB_DAT
+      - Offset:          0x403FE0
+        Symbol:          _ITM_registerTMCloneTable
+        Type:            R_X86_64_GLOB_DAT
+  - Name:            .init
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x401000
+    AddressAlign:    0x4
+    Offset:          0x1000
+    Content:         F30F1EFA4883EC08488B05C92F00004885C07402FFD04883C408C3
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x401020
+    AddressAlign:    0x10
+    Content:         F30F1EFA31ED4989D15E4889E24883E4F050544531C031C948C7C720114000FF15832F0000F4662E0F1F840000000000F30F1EFAC3662E0F1F84000000000090488D3DA12F0000488D059A2F00004839F87415488B05562F00004885C07409FFE00F1F8000000000C30F1F8000000000488D3D712F0000488D356A2F00004829FE4889F048C1EE3F48C1F8034801C648D1FE7414488B05252F00004885C07408FFE0660F1F440000C30F1F8000000000F30F1EFA803D292F0000007513554889E5E87AFFFFFFC605172F0000015DC390C366662E0F1F8400000000000F1F4000F30F1EFAEB8A662E0F1F840000000000554889E55DC3662E0F1F840000000000554889E54883EC10C745FC00000000E8DCFFFFFF31C04883C4105DC3
+  - Name:            .fini
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x40113C
+    AddressAlign:    0x4
+    Content:         F30F1EFA4883EC084883C408C3
+  - Name:            .rodata
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x402000
+    AddressAlign:    0x8
+    Offset:          0x2000
+    Content:         '01000200000000000000000000000000'
+  - Name:            .eh_frame_hdr
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x402010
+    AddressAlign:    0x4
+    Content:         011B033B2C0000000400000010F0FFFF4800000040F0FFFF5C00000000F1FFFF7000000010F1FFFF90000000
+  - Name:            .eh_frame
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x402040
+    AddressAlign:    0x8
+    Content:         1400000000000000017A5200017810011B0C070890010000100000001C000000C0EFFFFF26000000004407101000000030000000DCEFFFFF05000000000000001C0000004400000088F0FFFF0600000000410E108602430D06410C07080000001C0000006400000078F0FFFF1C00000000410E108602430D06570C070800000000000000
+  - Name:            .init_array
+    Type:            SHT_INIT_ARRAY
+    Flags:           [ SHF_WRITE, SHF_ALLOC ]
+    Address:         0x403DF8
+    AddressAlign:    0x8
+    EntSize:         0x8
+    Offset:          0x2DF8
+    Content:         '0011400000000000'
+  - Name:            .fini_array
+    Type:            SHT_FINI_ARRAY
+    Flags:           [ SHF_WRITE, SHF_ALLOC ]
+    Address:         0x403E00
+    AddressAlign:    0x8
+    EntSize:         0x8
+    Content:         D010400000000000
+  - Name:            .dynamic
+    Type:            SHT_DYNAMIC
+    Flags:           [ SHF_WRITE, SHF_ALLOC ]
+    Address:         0x403E08
+    Link:            .dynstr
+    AddressAlign:    0x8
+    Entries:
+      - Tag:             DT_NEEDED
+        Value:           0x58
+      - Tag:             DT_NEEDED
+        Value:           0x67
+      - Tag:             DT_NEEDED
+        Value:           0x71
+      - Tag:             DT_NEEDED
+        Value:           0x7F
+      - Tag:             DT_INIT
+        Value:           0x401000
+      - Tag:             DT_FINI
+        Value:           0x40113C
+      - Tag:             DT_INIT_ARRAY
+        Value:           0x403DF8
+      - Tag:             DT_INIT_ARRAYSZ
+        Value:           0x8
+      - Tag:             DT_FINI_ARRAY
+        Value:           0x403E00
+      - Tag:             DT_FINI_ARRAYSZ
+        Value:           0x8
+      - Tag:             DT_GNU_HASH
+        Value:           0x4003A0
+      - Tag:             DT_STRTAB
+        Value:           0x400438
+      - Tag:             DT_SYMTAB
+        Value:           0x4003C0
+      - Tag:             DT_STRSZ
+        Value:           0x94
+      - Tag:             DT_SYMENT
+        Value:           0x18
+      - Tag:             DT_DEBUG
+        Value:           0x0
+      - Tag:             DT_RELA
+        Value:           0x4004F8
+      - Tag:             DT_RELASZ
+        Value:           0x60
+      - Tag:             DT_RELAENT
+        Value:           0x18
+      - Tag:             DT_VERNEED
+        Value:           0x4004D8
+      - Tag:             DT_VERNEEDNUM
+        Value:           0x1
+      - Tag:             DT_VERSYM
+        Value:           0x4004CC
+      - Tag:             DT_NULL
+        Value:           0x0
+      - Tag:             DT_NULL
+        Value:           0x0
+      - Tag:             DT_NULL
+        Value:           0x0
+      - Tag:             DT_NULL
+        Value:           0x0
+      - Tag:             DT_NULL
+        Value:           0x0
+      - Tag:             DT_NULL
+        Value:           0x0
+  - Name:            .got
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_WRITE, SHF_ALLOC ]
+    Address:         0x403FC8
+    AddressAlign:    0x8
+    EntSize:         0x8
+    Content:         '0000000000000000000000000000000000000000000000000000000000000000'
+  - Name:            .got.plt
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_WRITE, SHF_ALLOC ]
+    Address:         0x403FE8
+    AddressAlign:    0x8
+    EntSize:         0x8
+    Content:         '083E40000000000000000000000000000000000000000000'
+  - Name:            .data
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_WRITE, SHF_ALLOC ]
+    Address:         0x404000
+    AddressAlign:    0x1
+    Content:         '00000000'
+  - Name:            .bss
+    Type:            SHT_NOBITS
+    Flags:           [ SHF_WRITE, SHF_ALLOC ]
+    Address:         0x404004
+    AddressAlign:    0x1
+    Size:            0x4
+  - Name:            .comment
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x1
+    EntSize:         0x1
+    Content:         4743433A2028474E55292031312E342E312032303233303630352028526564204861742031312E342E312D3229004743433A2028474E55292031332E322E312032303233313131302028526564204861742031332E322E312D352900636C616E672076657273696F6E2031372E302E31202843656E744F532031372E302E312D322E656C392900
+  - Name:            .gnu.build.attributes
+    Type:            SHT_NOTE
+    Address:         0x406008
+    AddressAlign:    0x4
+    Notes:
+      - Name:            "GA$\x013a1"
+        Desc:            '20104000000000004610400000000000'
+        Type:            NT_GNU_BUILD_ATTRIBUTE_OPEN
+      - Name:            "GA$\x013a1"
+        Desc:            '55104000000000005510400000000000'
+        Type:            NT_GNU_BUILD_ATTRIBUTE_OPEN
+      - Name:            "GA$\x013a1"
+        Desc:            '00104000000000001610400000000000'
+        Type:            NT_GNU_BUILD_ATTRIBUTE_OPEN
+      - Name:            "GA$\x013a1"
+        Desc:            3C114000000000004411400000000000
+        Type:            NT_GNU_BUILD_ATTRIBUTE_OPEN
+      - Name:            "GA$\x013a1"
+        Desc:            '60104000000000000611400000000000'
+        Type:            NT_GNU_BUILD_ATTRIBUTE_OPEN
+      - Name:            "GA$\x013a1"
+        Desc:            3C114000000000003C11400000000000
+        Type:            NT_GNU_BUILD_ATTRIBUTE_OPEN
+      - Name:            "GA$\x013a1"
+        Desc:            3C114000000000003C11400000000000
+        Type:            NT_GNU_BUILD_ATTRIBUTE_OPEN
+      - Name:            "GA$\x013a1"
+        Desc:            16104000000000001B10400000000000
+        Type:            NT_GNU_BUILD_ATTRIBUTE_OPEN
+      - Name:            "GA$\x013a1"
+        Desc:            '44114000000000004911400000000000'
+        Type:            NT_GNU_BUILD_ATTRIBUTE_OPEN
+  - Name:            .debug_info
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x1
+    Content:         2C000000040000000000080100000000000000000E000000939F5FCB7816797B10114000000000002C00000000000000
+  - Name:            .debug_abbrev
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x1
+    Content:         01110010171B0EB44219B0420EB1420711011206B34217000000
+  - Name:            .debug_line
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x1
+    Content:         47000000040020000000010101FB0E0D000101010100000001000001006D61696E2E637070000000000000090210114000000000000105050A0B4B0500BD05050AE559060B2E0206000101
+  - Name:            .debug_addr
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x1
+    Content:         '10114000000000002011400000000000'
+  - Name:            .debug_gnu_pubnames
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x1
+    Content:         21000000020000000000300000001900000030666F6F0025000000306D61696E0000000000
+  - Name:            .debug_gnu_pubtypes
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x1
+    Content:         '17000000020000000000300000003400000090696E740000000000'
+Symbols:
+  - Name:            crt1.o
+    Type:            STT_FILE
+    Index:           SHN_ABS
+  - Name:            __abi_tag
+    Type:            STT_OBJECT
+    Section:         .note.ABI-tag
+    Value:           0x40037C
+    Size:            0x20
+  - Name:            crtstuff.c
+    Type:            STT_FILE
+    Index:           SHN_ABS
+  - Name:            deregister_tm_clones
+    Type:            STT_FUNC
+    Section:         .text
+    Value:           0x401060
+  - Name:            register_tm_clones
+    Type:            STT_FUNC
+    Section:         .text
+    Value:           0x401090
+  - Name:            __do_global_dtors_aux
+    Type:            STT_FUNC
+    Section:         .text
+    Value:           0x4010D0
+  - Name:            completed.0
+    Type:            STT_OBJECT
+    Section:         .bss
+    Value:           0x404004
+    Size:            0x1
+  - Name:            __do_global_dtors_aux_fini_array_entry
+    Type:            STT_OBJECT
+    Section:         .fini_array
+    Value:           0x403E00
+  - Name:            frame_dummy
+    Type:            STT_FUNC
+    Section:         .text
+    Value:           0x401100
+  - Name:            __frame_dummy_init_array_entry
+    Type:            STT_OBJECT
+    Section:         .init_array
+    Value:           0x403DF8
+  - Name:            main.cpp
+    Type:            STT_FILE
+    Index:           SHN_ABS
+  - Name:            'crtstuff.c (1)'
+    Type:            STT_FILE
+    Index:           SHN_ABS
+  - Name:            __FRAME_END__
+    Type:            STT_OBJECT
+    Section:         .eh_frame
+    Value:           0x4020C0
+  - Type:            STT_FILE
+    Index:           SHN_ABS
+  - Name:            __GNU_EH_FRAME_HDR
+    Section:         .eh_frame_hdr
+    Value:           0x402010
+  - Name:            _DYNAMIC
+    Type:            STT_OBJECT
+    Section:         .dynamic
+    Value:           0x403E08
+  - Name:            _GLOBAL_OFFSET_TABLE_
+    Type:            STT_OBJECT
+    Section:         .got.plt
+    Value:           0x403FE8
+  - Name:            _edata
+    Section:         .data
+    Binding:         STB_GLOBAL
+    Value:           0x404004
+  - Name:            data_start
+    Section:         .data
+    Binding:         STB_WEAK
+    Value:           0x404000
+  - Name:            _IO_stdin_used
+    Type:            STT_OBJECT
+    Section:         .rodata
+    Binding:         STB_GLOBAL
+    Value:           0x402000
+    Size:            0x4
+  - Name:            main
+    Type:            STT_FUNC
+    Section:         .text
+    Binding:         STB_GLOBAL
+    Value:           0x401120
+    Size:            0x1C
+  - Name:            __dso_handle
+    Type:            STT_OBJECT
+    Section:         .rodata
+    Binding:         STB_GLOBAL
+    Value:           0x402008
+    Other:           [ STV_HIDDEN ]
+  - Name:            _fini
+    Type:            STT_FUNC
+    Section:         .fini
+    Binding:         STB_GLOBAL
+    Value:           0x40113C
+    Other:           [ STV_HIDDEN ]
+  - Name:            '__libc_start_main at GLIBC_2.34'
+    Type:            STT_FUNC
+    Binding:         STB_GLOBAL
+  - Name:            _dl_relocate_static_pie
+    Type:            STT_FUNC
+    Section:         .text
+    Binding:         STB_GLOBAL
+    Value:           0x401050
+    Size:            0x5
+    Other:           [ STV_HIDDEN ]
+  - Name:            _start
+    Type:            STT_FUNC
+    Section:         .text
+    Binding:         STB_GLOBAL
+    Value:           0x401020
+    Size:            0x26
+  - Name:            _init
+    Type:            STT_FUNC
+    Section:         .init
+    Binding:         STB_GLOBAL
+    Value:           0x401000
+    Other:           [ STV_HIDDEN ]
+  - Name:            __TMC_END__
+    Type:            STT_OBJECT
+    Section:         .data
+    Binding:         STB_GLOBAL
+    Value:           0x404008
+    Other:           [ STV_HIDDEN ]
+  - Name:            __data_start
+    Section:         .data
+    Binding:         STB_GLOBAL
+    Value:           0x404000
+  - Name:            _end
+    Section:         .bss
+    Binding:         STB_GLOBAL
+    Value:           0x404008
+  - Name:            __bss_start
+    Section:         .bss
+    Binding:         STB_GLOBAL
+    Value:           0x404004
+  - Name:            _Z3foov
+    Type:            STT_FUNC
+    Section:         .text
+    Binding:         STB_GLOBAL
+    Value:           0x401110
+    Size:            0x6
+  - Name:            _ITM_deregisterTMCloneTable
+    Binding:         STB_WEAK
+  - Name:            __gmon_start__
+    Binding:         STB_WEAK
+  - Name:            _ITM_registerTMCloneTable
+    Binding:         STB_WEAK
+DynamicSymbols:
+  - Name:            __libc_start_main
+    Type:            STT_FUNC
+    Binding:         STB_GLOBAL
+  - Name:            _ITM_deregisterTMCloneTable
+    Binding:         STB_WEAK
+  - Name:            __gmon_start__
+    Binding:         STB_WEAK
+  - Name:            _ITM_registerTMCloneTable
+    Binding:         STB_WEAK
+DWARF:
+  debug_str:
+    - '/tmp/test_dwo'
+    - main_split-main.dwo
+...



More information about the llvm-commits mailing list