Patch to do reorder text and data sections according to a user specified sequence.

Sriraman Tallam tmsriram@google.com
Wed Jun 30 23:00:00 GMT 2010
On Wed, Jun 30, 2010 at 3:31 PM, Taras Glek <tglek@mozilla.com> wrote:
> Hi,
> I noticed weird "** fill"ing behavior while looking at mapfiles. Ian says
> this is a bug, so I'm sending this to the list.
>
> When compiling with -ffunction-sections, many sections usually have some
> fill after them. I'm not sure why that's needed..but a more interesting
> problem is that once you order those sections, the remaining fill gets
> lumped together like this:

Does this lumping happen when you re-order with linker scripts or with
--section-ordering-file, or both ? Could this fill be for alignment
purposes ?

>
> .rel.dyn        0x0007c21c   0x18eaf0
>  ** dynamic relocs
>                0x0007c21c   0x18eaf0
>
> .rel.plt        0x0020ad0c     0xb0d0
>  ** dynamic relocs
>                0x0020ad0c     0xb0d0
>
> .text           0x00215de0   0xb35709
>  ** fill        0x00215de0        0xa
>  ** fill        0x00215dea        0x1
>  ** fill        0x00215deb        0x1
>  ** fill        0x00215dec        0x2
>  ** fill        0x00215dee        0x1
>  ** fill        0x00215def        0x1
>  ** fill        0x00215df0        0x1
>  ** fill        0x00215df1        0x1
>  ** fill        0x00215df2        0x1
>  ** fill        0x00215df3        0x1
>  ** fill        0x00215df4        0x1
>  ** fill        0x00215df5        0x1
>  ** fill        0x00215df6        0x2
>  ** fill        0x00215df8        0x1
>  ** fill        0x00215df9        0x1
>  ** fill        0x00215dfa        0x1
>  ** fill        0x00215dfb        0x1
>  ** fill        0x00215dfc        0x1
>  ** fill        0x00215dfd        0x1
>  ** fill        0x00215dfe        0x1
>  ** fill        0x00215dff        0x1
>
> This keeps going, in my binary I ended up with 50K of "** fill". Before
> ordering the fill found among sections like so:
>  .text._Z11IsSameCCMapPtS_
>                0x002163f6       0x43 nsCompressedCharMap.o
>                0x002163f6                _Z11IsSameCCMapPtS_
>  ** fill        0x00216439        0x1
>  .text._ZN19nsCompressedCharMap9FillCCMapEPt
>                0x0021643a       0x23 nsCompressedCharMap.o
>                0x0021643a
>  _ZN19nsCompressedCharMap9FillCCMapEPt
>  ** fill        0x0021645d        0x1
>  .text._ZN19nsCompressedCharMapD2Ev
>                0x0021645e       0x41 nsCompressedCharMap.o
>                0x0021645e                _ZN19nsCompressedCharMapD2Ev
>                0x0021645e                _ZN19nsCompressedCharMapD1Ev
>  ** fill        0x0021649f        0x1
>  .text._ZN19nsCompressedCharMapC2Ev
>                0x002164a0       0x7e nsCompressedCharMap.o
>                0x002164a0                _ZN19nsCompressedCharMapC2Ev
>                0x002164a0                _ZN19nsCompressedCharMapC1Ev
>  .text._ZN19nsCompressedCharMap7SetCharEj
>                0x0021651e      0x137 nsCompressedCharMap.o
>                0x0021651e                _ZN19nsCompressedCharMap7SetCharEj
>  ** fill        0x00216655        0x1
>  .text._ZN19nsCompressedCharMap8SetCharsEtPj
>                0x00216656      0x121 nsCompressedCharMap.o
>                0x00216656
>  _ZN19nsCompressedCharMap8SetCharsEtPj
>  ** fill        0x00216777        0x1
>  .text._ZN19nsCompressedCharMap8SetCharsEPt
>                0x00216778      0x175 nsCompressedCharMap.o
>                0x00216778
>  _ZN19nsCompressedCharMap8SetCharsEPt
>  ** fill        0x002168ed        0x1
>  .text._ZN19nsCompressedCharMap8SetCharsEPj
>                0x002168ee       0x2d nsCompressedCharMap.o
>                0x002168ee
>  _ZN19nsCompressedCharMap8SetCharsEPj
>  .text._Z10MapToCCMapPj
>                0x0021691b       0x84 nsCompressedCharMap.o
>                0x0021691b                _Z10MapToCCMapPj
>  .text._Z13MapperToCCMapP20nsICharRepresentable
>                0x0021699f       0x45 nsCompressedCharMap.o
>                0x0021699f
>  _Z13MapperToCCMapP20nsICharRepresentable
>  .text._Z13MapToCCMapExtPjPS_j
>                0x002169e4      0x1f5 nsCompressedCharMap.o
>                0x002169e4                _Z13MapToCCMapExtPjPS_j
>  ** fill        0x00216bd9        0x1
>  .text._ZN19nsCompressedCharMap8NewCCMapEv
>                0x00216bda       0x75 nsCompressedCharMap.o
>                0x00216bda                _ZN19nsCompressedCharMap8NewCCMapEv
>  ** fill        0x00216c4f        0x1
>
>
> On 06/03/2010 11:01 AM, Sriraman Tallam wrote:
>>
>> Thanks. I committed the patch.
>>
>> 2010-06-03  Sriraman Tallam<tmsriram@google.com>
>>
>>        PR gold/11658
>>        * output.cc
>>
>>  (Output_section::Input_section_sort_entry::compare_section_ordering):
>>        Change to return non-zero correctly.
>>        (Output_section::Input_section_sort_section_order_index_compare
>>        ::operator()): Change to fix ambiguity in comparisons.
>>
>> On Thu, Jun 3, 2010 at 8:55 AM, Ian Lance Taylor<iant@google.com>  wrote:
>>
>>>
>>> Sriraman Tallam<tmsriram@google.com>  writes:
>>>
>>>
>>>>
>>>>       * output.cc
>>>>
>>>> (Output_section::Input_section_sort_entry::compare_section_ordering):
>>>>       Change to return non-zero correctly.
>>>>
>>>> (Output_section::Input_section_sort_section_order_index_compare::operator()):
>>>>         Change to fix ambiguity in comparisons.
>>>>
>>>
>>> This is OK.
>>>
>>> Thanks.
>>>
>>> Ian
>>>
>>>
>>
>>
>
>



More information about the Binutils mailing list