This is an archive of the discontinued LLVM Phabricator instance.

[ELF] - Linkerscript: allow add MergeInputSection to regular OutputSection.
AbandonedPublic

Authored by grimar on Aug 26 2016, 8:29 AM.

Details

Reviewers
ruiu
rafael
Summary

Before this patch SHF_MERGE sections were always proccessed as regular
ones when script layouting was used.

That was done because we create single output section
for each list of inputsections when have SECTIONS command. Since there was
no way to handle the case when there were mixed section types in that list
(mergeable vs non-mergeable), functionality was temporarily disabled.

This is the case that can be observed in FreeBSD, which has a mix of attributes
for .rodata:

[ 6] .rodata PROGBITS ffffffff80c87c8c 00c86c8c

00000000000e6e4d  0000000000000001 AMS       0     0     1

[ 7] .rodata PROGBITS ffffffff80d6eae0 00d6dae0

0000000000246f00  0000000000000000   A       0     0     32

[ 8] .rodata PROGBITS ffffffff80fb59e0 00fb49e0

00000000000001f0  0000000000000010  AM       0     0     16

[ 9] .rodata PROGBITS ffffffff80fb5bd0 00fb4bd0

00000000000002a0  0000000000000004 AMS       0     0     16

[10] .rodata PROGBITS ffffffff80fb5e70 00fb4e70

0000000000000108  0000000000000008  AM       0     0     8

[11] .rodata PROGBITS ffffffff80fb5f78 00fb4f78

000000000000000c  0000000000000004 AMS       0     0     4

[12] .rodata PROGBITS ffffffff80fb5f88 00fb4f88

0000000000001158  0000000000000001 AMS       0     0     8

Patch adds ability to add MergeInputSections to regular OutputSections.

Patch itself would not be so big, but it is heavily based on D23866 which removes
dependency on OutputSectionFactory for linkerscript. So largest changes belongs to D23866 here.

Diff Detail

Event Timeline

grimar updated this revision to Diff 69380.Aug 26 2016, 8:29 AM
grimar retitled this revision from to [ELF] - Linkerscript: allow add MergeInputSection to regular OutputSection..
grimar updated this object.
grimar added reviewers: rafael, ruiu.
grimar updated this object.
grimar added subscribers: llvm-commits, grimar, davide and 2 others.
grimar updated this revision to Diff 69382.Aug 26 2016, 8:48 AM
  • Restored OffsetMap variable removed by mistake right before uploading diff.
grimar abandoned this revision.Aug 31 2016, 5:34 AM

We are not going to do that.