[PATCH] D25127: [ARM][LLD] .ARM.exidx support for executables/shared libraries

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 3 17:13:46 PDT 2016


ruiu added inline comments.


> MarkLive.cpp:259
> +  if (Config->EMachine == EM_ARM) {
> +    bool ScanRequired = true;
> +    while (ScanRequired) {

I wonder if there's a better way to do this. How about adding

  TinyPtrVector<InputSection<ELFT> *> Successors;

to InputSection<ELFT> class, adding reverse edges from .ARM.exidx sections to other sections to that vector as a preprocess, then handle that vector elements as successors in forEachSucessor? Then it is guranteed to converge by calling `forEachSucessor<ELFT>(*Q.pop_back_val(), Enqueue)` just once.

https://reviews.llvm.org/D25127





More information about the llvm-commits mailing list