File: end-overflow-check.test

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (74 lines) | stat: -rw-r--r-- 2,331 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
REQUIRES: x86

# RUN: rm -rf %t && split-file %s %t
# RUN: llvm-mc -filetype=obj -triple=x86_64 %t/a.s -o %t/a.o

## The error should be triggered only for the second test where the overflow really exists.

RUN: ld.lld %t/a.o -T %t/b.lds -o /dev/null 2>&1
RUN: not ld.lld %t/a.o -T %t/c.lds -o /dev/null 2>&1 | FileCheck --check-prefix=ERROR %s

# ERROR: error: section '_abss' will not fit in region 'SRAM0': overflowed by 1024 bytes
# ERROR: error: section '.c.bss' will not fit in region 'SRAM0': overflowed by 1024 bytes
# ERROR: error: section '.text' will not fit in region 'SRAM0': overflowed by 1025 bytes

#--- a.s
.section .a.bss, "aw", %nobits
.globl abss
abss:
.zero 0xDF0
.size abss, 0xDF0

.section .c.bss, "aw", %nobits
.globl cbss

.text
.globl _start
_start:
nop

#--- b.lds
MEMORY
{
    SRAM0 (rw) : ORIGIN = 0x20000400, LENGTH = 10K
}

SECTIONS
{
    _abss ALIGN(REGION1__PRE_ALIGNMENT) :
    {
        REGION1__BEGIN = .; REGION1__ALIGNED_BEGIN = .; REGION1_ALIGNED_BEGIN = .;
        *(.a.bss)
        REGION1__END = .; . = ALIGN(REGION1__POST_ALIGNMENT); REGION1_ALIGNED_END = .;
    } > SRAM0
}

REGION1__PRE_ALIGNMENT = 0x00000800;
REGION1__PADDED_XOR = ((ABSOLUTE(REGION1__ALIGNED_BEGIN) | (ABSOLUTE(REGION1__END) - 1)) & ~(ABSOLUTE(REGION1__ALIGNED_BEGIN) & (ABSOLUTE(REGION1__END) - 1)));
REGION1__PADDED_REGION_SHIFT = LOG2CEIL(REGION1__PADDED_XOR);
REGION1__PADDED_SR_SHIFT = REGION1__PADDED_REGION_SHIFT - 3;
REGION1__PADDED_SR_SIZE = MAX(1 << REGION1__PADDED_SR_SHIFT, 32);
REGION1__POST_ALIGNMENT = REGION1__PADDED_SR_SIZE;

#--- c.lds
MEMORY
{
    SRAM0 (rw) : ORIGIN = 0x20000400, LENGTH = 4K
}

SECTIONS
{
    _abss ALIGN(REGION1__PRE_ALIGNMENT) :
    {
        REGION1__BEGIN = .; REGION1__ALIGNED_BEGIN = .; REGION1_ALIGNED_BEGIN = .;
        *(.a.bss)
        REGION1__END = .; . = ALIGN(REGION1__POST_ALIGNMENT); REGION1_ALIGNED_END = .;
    } > SRAM0
}

REGION1__PRE_ALIGNMENT = 0x00000800;
REGION1__PADDED_XOR = ((ABSOLUTE(REGION1__ALIGNED_BEGIN) | (ABSOLUTE(REGION1__END) - 1)) & ~(ABSOLUTE(REGION1__ALIGNED_BEGIN) & (ABSOLUTE(REGION1__END) - 1)));
REGION1__PADDED_REGION_SHIFT = LOG2CEIL(REGION1__PADDED_XOR);
REGION1__PADDED_SR_SHIFT = REGION1__PADDED_REGION_SHIFT - 3;
REGION1__PADDED_SR_SIZE = MAX(1 << REGION1__PADDED_SR_SHIFT, 32);
REGION1__POST_ALIGNMENT = REGION1__PADDED_SR_SIZE;