<div dir="ltr">Looks like that's what gold prepared for.</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 11, 2017 at 6:11 PM, Rafael Avila de Espindola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">Rui Ueyama via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> writes:<br>
<br>
> Author: ruiu<br>
> Date: Sun Sep 24 22:30:39 2017<br>
> New Revision: 314095<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=314095&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=314095&view=rev</a><br>
> Log:<br>
> Do not sort CU vectors.<br>
><br>
> We used to sort and uniquify CU vectors, but looks like CU vectors in<br>
> .gdb_index sections created by gold are not guaranteed to be sorted.<br>
><br>
> Modified:<br>
>     lld/trunk/ELF/<wbr>SyntheticSections.cpp<br>
><br>
> Modified: lld/trunk/ELF/<wbr>SyntheticSections.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SyntheticSections.cpp?rev=314095&r1=314094&r2=314095&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lld/trunk/ELF/<wbr>SyntheticSections.cpp?rev=<wbr>314095&r1=314094&r2=314095&<wbr>view=diff</a><br>
> ==============================<wbr>==============================<wbr>==================<br>
> --- lld/trunk/ELF/<wbr>SyntheticSections.cpp (original)<br>
> +++ lld/trunk/ELF/<wbr>SyntheticSections.cpp Sun Sep 24 22:30:39 2017<br>
> @@ -1797,16 +1797,17 @@ std::vector<std::vector<<wbr>uint32_t>> GdbIn<br>
>          Off += Ent.Name.size() + 1;<br>
>          Ret.push_back({});<br>
>        }<br>
> -      Ret[Sym->CuVectorIndex].push_<wbr>back((Ent.Type << 24) | Idx);<br>
> +<br>
> +      // gcc 5.4.1 produces a buggy .debug_gnu_pubnames that contains<br>
> +      // duplicate entries, so we want to dedup them.<br>
> +      std::vector<uint32_t> &Vec = Ret[Sym->CuVectorIndex];<br>
> +      uint32_t Val = (Ent.Type << 24) | Idx;<br>
> +      if (Vec.empty() || Vec.back() != Val)<br>
> +        Vec.push_back(Val);<br>
<br>
</div></div>Are the duplicates always (or at lest frequently) adjacent?<br>
<br>
Cheers,<br>
Rafael<br>
</blockquote></div><br></div>