[lld] r230138 - [ELF][Writer] Use Path to create AtomSection.

Rui Ueyama ruiu at google.com
Thu Mar 5 12:56:54 PST 2015


So, why did you have to fix that FIXME in the first place? This patch
cannot fix anything if it didn't change any functionality.

On Thu, Mar 5, 2015 at 12:54 PM, Shankar Easwaran <shankare at codeaurora.org>
wrote:

> -  // FIXME: We really need the file path here in the SectionKey, when that
> -  // is available, replace the sectionKey that has outputSectionName to
> the
> -  // inputSectionName.
>
> Shankar Easwaran
>
>
> On 3/5/2015 2:51 PM, Rui Ueyama wrote:
>
>> What did you address? The commit message says that there's no
>> functionality
>> change by this commit.
>>
>> On Thu, Mar 5, 2015 at 12:41 PM, Shankar Easwaran <
>> shankare at codeaurora.org>
>> wrote:
>>
>>  Sorry, I missed your ping.
>>>
>>> There was a FIXME comment that I addressed as part of the commit.
>>> Previously I had to disable because of the RoundTripPasses.
>>>
>>> Shankar Easwaran
>>>
>>>
>>> On 3/5/2015 2:29 PM, Rui Ueyama wrote:
>>>
>>>  Ping. This added extra code but no additional functionality? I'll roll
>>>> this
>>>> back if it is so.
>>>>
>>>> On Wed, Feb 25, 2015 at 3:30 PM, Rui Ueyama <ruiu at google.com> wrote:
>>>>
>>>>   Ping?
>>>>
>>>>> On Sun, Feb 22, 2015 at 7:36 PM, Rui Ueyama <ruiu at google.com> wrote:
>>>>>
>>>>>   On Sat, Feb 21, 2015 at 7:49 AM, Shankar Easwaran <
>>>>>
>>>>>> shankare at codeaurora.org> wrote:
>>>>>>
>>>>>>   Author: shankare
>>>>>>
>>>>>>> Date: Sat Feb 21 09:49:34 2015
>>>>>>> New Revision: 230138
>>>>>>>
>>>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=230138&view=rev
>>>>>>> Log:
>>>>>>> [ELF][Writer] Use Path to create AtomSection.
>>>>>>>
>>>>>>> Now since the correct file path for atoms is available and not
>>>>>>> clobbered,
>>>>>>> commit r222309 which was reverted previously can be added back.
>>>>>>>
>>>>>>> No change in functionality.
>>>>>>>
>>>>>>>   Why do we need this new code if it doesn't change anything?
>>>>>>>
>>>>>>
>>>>>>   Modified:
>>>>>>
>>>>>>>       lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h
>>>>>>>       lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h
>>>>>>>
>>>>>>> Modified: lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h
>>>>>>> URL:
>>>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/
>>>>>>> DefaultLayout.h?rev=230138&r1=230137&r2=230138&view=diff
>>>>>>>
>>>>>>> ============================================================
>>>>>>> ==================
>>>>>>> --- lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h (original)
>>>>>>> +++ lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h Sat Feb 21
>>>>>>> 09:49:34
>>>>>>> 2015
>>>>>>> @@ -91,24 +91,26 @@ public:
>>>>>>>      // The sections are created using
>>>>>>>      // SectionName, contentPermissions
>>>>>>>      struct SectionKey {
>>>>>>> -    SectionKey(StringRef name, DefinedAtom::ContentPermissions
>>>>>>> perm)
>>>>>>> -        : _name(name), _perm(perm) {
>>>>>>> -    }
>>>>>>> +    SectionKey(StringRef name, DefinedAtom::ContentPermissions
>>>>>>> perm,
>>>>>>> +               StringRef path)
>>>>>>> +        : _name(name), _perm(perm), _path(path) {}
>>>>>>>
>>>>>>>        // Data members
>>>>>>>        StringRef _name;
>>>>>>>        DefinedAtom::ContentPermissions _perm;
>>>>>>> +    StringRef _path;
>>>>>>>      };
>>>>>>>
>>>>>>>      struct SectionKeyHash {
>>>>>>>        int64_t operator()(const SectionKey &k) const {
>>>>>>> -      return llvm::hash_combine(k._name, k._perm);
>>>>>>> +      return llvm::hash_combine(k._name, k._perm, k._path);
>>>>>>>        }
>>>>>>>      };
>>>>>>>
>>>>>>>      struct SectionKeyEq {
>>>>>>>        bool operator()(const SectionKey &lhs, const SectionKey &rhs)
>>>>>>> const
>>>>>>> {
>>>>>>> -      return ((lhs._name == rhs._name) && (lhs._perm == rhs._perm));
>>>>>>> +      return ((lhs._name == rhs._name) && (lhs._perm == rhs._perm)
>>>>>>> &&
>>>>>>> +              (lhs._path == rhs._path));
>>>>>>>        }
>>>>>>>      };
>>>>>>>
>>>>>>> @@ -181,9 +183,10 @@ public:
>>>>>>>      virtual StringRef getOutputSectionName(StringRef
>>>>>>> inputSectionName)
>>>>>>> const;
>>>>>>>
>>>>>>>      /// \brief Gets or creates a section.
>>>>>>> -  AtomSection<ELFT> *getSection(
>>>>>>> -      StringRef name, int32_t contentType,
>>>>>>> -      DefinedAtom::ContentPermissions contentPermissions);
>>>>>>> +  AtomSection<ELFT> *
>>>>>>> +  getSection(StringRef name, int32_t contentType,
>>>>>>> +             DefinedAtom::ContentPermissions contentPermissions,
>>>>>>> +             StringRef path);
>>>>>>>
>>>>>>>      /// \brief Gets the segment for a output section
>>>>>>>      virtual Layout::SegmentType getSegmentType(Section<ELFT>
>>>>>>> *section)
>>>>>>> const;
>>>>>>> @@ -530,22 +533,19 @@ AtomSection<ELFT> *DefaultLayout<ELFT>::
>>>>>>>    }
>>>>>>>
>>>>>>>    template <class ELFT>
>>>>>>> -AtomSection<ELFT> *DefaultLayout<ELFT>::getSection(
>>>>>>> -    StringRef sectionName, int32_t contentType,
>>>>>>> -    DefinedAtom::ContentPermissions permissions) {
>>>>>>> -  // FIXME: We really need the file path here in the SectionKey,
>>>>>>> when
>>>>>>> that
>>>>>>> -  // is available, replace the sectionKey that has outputSectionName
>>>>>>> to
>>>>>>> the
>>>>>>> -  // inputSectionName.
>>>>>>> -  StringRef outputSectionName = getOutputSectionName(sectionName);
>>>>>>> -  const SectionKey sectionKey(outputSectionName, permissions);
>>>>>>> +AtomSection<ELFT> *
>>>>>>> +DefaultLayout<ELFT>::getSection(StringRef sectionName, int32_t
>>>>>>> contentType,
>>>>>>> +                                DefinedAtom::ContentPermissions
>>>>>>> permissions,
>>>>>>> +                                StringRef path) {
>>>>>>> +  const SectionKey sectionKey(sectionName, permissions, path);
>>>>>>> +  SectionOrder sectionOrder =
>>>>>>> +      getSectionOrder(sectionName, contentType, permissions);
>>>>>>>      auto sec = _sectionMap.find(sectionKey);
>>>>>>>      if (sec != _sectionMap.end())
>>>>>>>        return sec->second;
>>>>>>> -  SectionOrder sectionOrder =
>>>>>>> -      getSectionOrder(sectionName, contentType, permissions);
>>>>>>>      AtomSection<ELFT> *newSec =
>>>>>>>          createSection(sectionName, contentType, permissions,
>>>>>>> sectionOrder);
>>>>>>> -  newSec->setOutputSectionName(outputSectionName);
>>>>>>> +  newSec->setOutputSectionName(getOutputSectionName(sectionName));
>>>>>>>      newSec->setOrder(sectionOrder);
>>>>>>>      _sections.push_back(newSec);
>>>>>>>      _sectionMap.insert(std::make_pair(sectionKey, newSec));
>>>>>>> @@ -565,8 +565,8 @@ ErrorOr<const lld::AtomLayout &> Default
>>>>>>>        const DefinedAtom::ContentType contentType =
>>>>>>> definedAtom->contentType();
>>>>>>>
>>>>>>>        StringRef sectionName = getInputSectionName(definedAtom);
>>>>>>> -    AtomSection<ELFT> *section =
>>>>>>> -        getSection(sectionName, contentType, permissions);
>>>>>>> +    AtomSection<ELFT> *section = getSection(
>>>>>>> +        sectionName, contentType, permissions,
>>>>>>> definedAtom->file().path());
>>>>>>>
>>>>>>>        // Add runtime relocations to the .rela section.
>>>>>>>        for (const auto &reloc : *definedAtom) {
>>>>>>>
>>>>>>> Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h
>>>>>>> URL:
>>>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/
>>>>>>> ReaderWriter/ELF/Mips/MipsTargetHandler.h?rev=
>>>>>>> 230138&r1=230137&r2=230138&view=diff
>>>>>>>
>>>>>>> ============================================================
>>>>>>> ==================
>>>>>>> --- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h
>>>>>>> (original)
>>>>>>> +++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h Sat Feb
>>>>>>> 21
>>>>>>> 09:49:34 2015
>>>>>>> @@ -67,6 +67,17 @@ public:
>>>>>>>        return *_gpDispAtom;
>>>>>>>      }
>>>>>>>
>>>>>>> +  /// \brief Return the section order for a input section
>>>>>>> +  virtual Layout::SectionOrder getSectionOrder(StringRef name,
>>>>>>> +                                               int32_t contentType,
>>>>>>> +                                               int32_t
>>>>>>> contentPermissions) {
>>>>>>> +    if ((contentType == DefinedAtom::typeStub) &&
>>>>>>> (name.startswith(".text")))
>>>>>>> +      return DefaultLayout<ELFType>::ORDER_TEXT;
>>>>>>> +
>>>>>>> +    return DefaultLayout<ELFType>::getSectionOrder(name,
>>>>>>> contentType,
>>>>>>> +
>>>>>>>   contentPermissions);
>>>>>>> +  }
>>>>>>> +
>>>>>>>    private:
>>>>>>>      llvm::BumpPtrAllocator _alloc;
>>>>>>>      MipsGOTSection<ELFType> *_gotSection;
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> llvm-commits mailing list
>>>>>>> llvm-commits at cs.uiuc.edu
>>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>>>>>>
>>>>>>>
>>>>>>>  --
>>> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted
>>> by the Linux Foundation
>>>
>>>
>>>
>
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted
> by the Linux Foundation
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150305/f97674a1/attachment.html>


More information about the llvm-commits mailing list