On Mon, Dec 6, 2010 at 4:05 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>>
>> Without slim lto you never know if a duplicate symbol is a mistake
>> of the programmer or just the "fat lto" copy. Also ELF semantics
>> like weak are hard if you have multiple copies.
>>
>
> It isn't easy, but doable.
>

Here is my proposal.  Any comments?

Thanks.


-- 
H.J.
---
• 2 kinds of object files
        ○ non-IR object file has
                § non-IR sections
        ○ IR object file has
                § IR sections
                § non-IR sections
• The output of "ld -r" with mixed IR/non-IR objects should work with:
        ○ Compilers/linkers with IR support.
        ○ Compilers/linkers without IR support.
• Add the mixed object file has
        ○ IR sections
        ○ non-IR sections:
                § Object codes from IR sections.
                § Object codes from non-IR object files.
        ○ Object-only section:
                § Section name won't be generated by any tools, something like
".objectonly\004".
                § Contains non-IR object file.
                § Input is discarded after link.
• Linker action:
        ○ Classify each input object file:
                □ If there is a ".objectonly\004" section, it is a mixed object 
file.
                □ If there is a IR section, it is an IR object file.
                □ Otherwise, it is a non-IR object file.
        ○ Relocatable link:
                § Prepare for an object-only output.
                § Prepare for a regular output.
                § For each mixed object file,
                        □ Add IR and non-IR sections to the regular output.
                        □ For object-only section:
                                ® Extract object only file.
                                ® Add it to the object-only output.
                                ® Discard object-only section.
                § For each IR object file,
                        □ Add IR and non-IR sections to the regular output.
                § For each non-IR object file,
                        □ Add non-IR sections to the regular output.
                        □ Add non-IR sections to the object-only output.
                § Final output:
                        □ If there are IR objects, non-IR objects and the 
object-only
output isn't empty:
                                ® Put the object-only output into the 
object-only section.
                                ® Add the object-only section to the regular 
output.
                        □ Remove the object-only output.
        ○ Normal link
                § Prepare for output.
                § For each mixed object file,
                        □ Compile and add IR sections to the output.
                        □ For object-only section:
                                ® Extract object only file.
                                ® Add it to the output.
                                ® Discard object-only section.
                § For each IR object file,
                        □ Compile and add IR sections to the output.
                § For each non-IR object file,
                        □ Add non-IR sections to the output.

Reply via email to