Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ELF] Do not try to assign a memory region to a non-allocatable section
Non-allocatable sections are not part of the memory image of the program, so there is no need to find memory regions for them either matching properties or handling explicit assignments. The early test and return help to simplify LinkerScript::findMemoryRegion() a bit. Differential Revision: https://reviews.llvm.org/D113768
- Loading branch information
1 parent
7cf887b
commit 66691de
Showing
2 changed files
with
59 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
REQUIRES: x86 | ||
|
||
RUN: split-file %s %ts | ||
RUN: llvm-mc -filetype=obj -triple=x86_64 %ts/s -o %t.o | ||
|
||
## Check that a non-allocatable section is not assigned to a memory region by | ||
## matching the section/region properties. Previously, that could lead to an | ||
## "error: section '.nonalloc' will not fit in region 'RAM'". | ||
|
||
RUN: ld.lld %t.o -T %ts/t --fatal-warnings -o /dev/null | ||
|
||
## Check that an explicit assignment is ignored for a non-allocatable section. | ||
## Previously, that also could lead to the same error. | ||
|
||
RUN: ld.lld %t.o -T %ts/t2 -o /dev/null 2>&1 | FileCheck %s --check-prefix=WARN | ||
|
||
WARN: warning: ignoring memory region assignment for non-allocatable section '.nonalloc' | ||
|
||
#--- s | ||
.global _start | ||
_start: | ||
|
||
## Note: a "writable" section is used because lld does not fully support | ||
## memory region attribute "r" at the moment. | ||
.section .nonalloc,"w" | ||
.zero 0x1000 | ||
|
||
#--- t | ||
MEMORY | ||
{ | ||
RAM (rwx) : ORIGIN = 0x8000, LENGTH = 0x100 | ||
} | ||
|
||
SECTIONS | ||
{ | ||
.nonalloc : { *(.nonalloc) } | ||
} | ||
|
||
#--- t2 | ||
MEMORY | ||
{ | ||
RAM (rwx) : ORIGIN = 0x8000, LENGTH = 0x100 | ||
} | ||
|
||
SECTIONS | ||
{ | ||
.nonalloc : { *(.nonalloc) } > RAM | ||
} |