[LLVMdev] [lld] Modeling ELF FileNodes/ControlNodes (Group's) in lld

Shankar Easwaran shankare at codeaurora.org
Thu Sep 5 11:58:31 PDT 2013


On 9/5/2013 1:40 PM, Nick Kledzik wrote:
> The way darwin works with the current scheme is that the files are added to InputFiles in command line order, then forEachInitialAtom() walks the whole list but only operates on the non-library (i.e. object files) and searchLibraries() only operates on library files.
>
> If we have the Resolver walk the graph, then either:
> 1) We need some option for darwin and gnu to work differently, or
> 2) Have the darwin driver construct the graph with all libraries in one group at the end.  As long as that is straight forward to do, it seems simpler and also captures the darwin difference that all libraries are always repeatedly searched.
>
> -Nick
One way, I can think of this being done is to get all the libraries that 
are specified in the command line and create a group node, and add it 
after the command line is processed to the inputGraph.

PS : Does Darwin have a command line option to handle files in the order 
specified in the command line for libraries ? If so, then the above 
would break

I am planning to support other operations too like

inputElement->setPosition(InputGraph::Top)
inputElement->setPosition(InputGraph::Last)
inputElement->setPosition(InputGraph::Position, <value>)

The user has to explicitly call a seperate api so that the elements are 
ordered according to whatever the user wants.

inputGraph->insertInputElementAt(InputGraph::Top, 
std::vector<std::unique_ptr<InputElement>>&)
inputGraph->insertInputElementAt(InputGraph::Last, 
std::vector<std::unique_ptr<InputElement>>&)
inputGraph->insertInputElementAt(InputGraph::Position, element, 
std::vector<std::unique_ptr<InputElement>>&)

The user has to explicitly call a seperate api so that the elements for 
ordinals to be set appropriately.

Thanks

Shankar Easwaran

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation




More information about the llvm-dev mailing list