2007-10-17 Zack Weinberg <zack@codesourcery.com>
* ldlang.c (lang_check_section_addresses): Also report size of overflow for any overflowed memory regions. (os_region_check): Diagnose an overflowed region only once per region. Do not reset region->current on overflow. 2007-10-17 Zack Weinberg <zack@codesourcery.com> Daniel Jacobowitz <dan@codesourcery.com> Mark Shinwell <shinwell@codesourcery.com> Joseph Myers <joseph@codesourcery.com> * ld-scripts/rgn-over.exp: New driver. * ld-scripts/rgn-over.s: New file. * ld-scripts/rgn-over1.d, ld-scripts/rgn-over1.t, ld-scripts/rgn-over2.d, ld-scripts/rgn-over2.t, ld-scripts/rgn-over3.d, ld-scripts/rgn-over3.t, ld-scripts/rgn-over4.d, ld-scripts/rgn-over4.t, ld-scripts/rgn-over5.d, ld-scripts/rgn-over5.t, ld-scripts/rgn-over6.d, ld-scripts/rgn-over6.t, ld-scripts/rgn-over7.d, ld-scripts/rgn-over7.t: New test cases.
This commit is contained in:
parent
499ac35361
commit
20e5635130
@ -1,3 +1,10 @@
|
||||
2007-10-17 Zack Weinberg <zack@codesourcery.com>
|
||||
|
||||
* ldlang.c (lang_check_section_addresses): Also report size of
|
||||
overflow for any overflowed memory regions.
|
||||
(os_region_check): Diagnose an overflowed region only once per
|
||||
region. Do not reset region->current on overflow.
|
||||
|
||||
2007-10-04 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR linker/4844
|
||||
|
30
ld/ldlang.c
30
ld/ldlang.c
@ -4120,7 +4120,8 @@ sort_sections_by_lma (const void *arg1, const void *arg2)
|
||||
|
||||
/* Check to see if any allocated sections overlap with other allocated
|
||||
sections. This can happen if a linker script specifies the output
|
||||
section addresses of the two sections. */
|
||||
section addresses of the two sections. Also check whether any memory
|
||||
region has overflowed. */
|
||||
|
||||
static void
|
||||
lang_check_section_addresses (void)
|
||||
@ -4133,6 +4134,7 @@ lang_check_section_addresses (void)
|
||||
bfd_vma os_start;
|
||||
bfd_vma os_end;
|
||||
bfd_size_type amt;
|
||||
lang_memory_region_type *m;
|
||||
|
||||
if (bfd_count_sections (output_bfd) <= 1)
|
||||
return;
|
||||
@ -4181,6 +4183,20 @@ lang_check_section_addresses (void)
|
||||
}
|
||||
|
||||
free (sections);
|
||||
|
||||
/* If any memory region has overflowed, report by how much.
|
||||
We do not issue this diagnostic for regions that had sections
|
||||
explicitly placed outside their bounds; os_region_check's
|
||||
diagnostics are adequate for that case.
|
||||
|
||||
FIXME: It is conceivable that m->current - (m->origin + m->length)
|
||||
might overflow a 32-bit integer. There is, alas, no way to print
|
||||
a bfd_vma quantity in decimal. */
|
||||
for (m = lang_memory_region_list; m; m = m->next)
|
||||
if (m->had_full_message)
|
||||
einfo (_("%X%P: region %s overflowed by %ld bytes\n"),
|
||||
m->name, (long)(m->current - (m->origin + m->length)));
|
||||
|
||||
}
|
||||
|
||||
/* Make sure the new address is within the region. We explicitly permit the
|
||||
@ -4208,15 +4224,15 @@ os_region_check (lang_output_section_statement_type *os,
|
||||
os->bfd_section->name,
|
||||
region->name);
|
||||
}
|
||||
else
|
||||
else if (!region->had_full_message)
|
||||
{
|
||||
einfo (_("%X%P: region %s is full (%B section %s)\n"),
|
||||
region->name,
|
||||
region->had_full_message = TRUE;
|
||||
|
||||
einfo (_("%X%P: %B section %s will not fit in region %s\n"),
|
||||
os->bfd_section->owner,
|
||||
os->bfd_section->name);
|
||||
os->bfd_section->name,
|
||||
region->name);
|
||||
}
|
||||
/* Reset the region pointer. */
|
||||
region->current = region->origin;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,19 @@
|
||||
2007-10-17 Zack Weinberg <zack@codesourcery.com>
|
||||
Daniel Jacobowitz <dan@codesourcery.com>
|
||||
Mark Shinwell <shinwell@codesourcery.com>
|
||||
Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* ld-scripts/rgn-over.exp: New driver.
|
||||
* ld-scripts/rgn-over.s: New file.
|
||||
* ld-scripts/rgn-over1.d, ld-scripts/rgn-over1.t,
|
||||
ld-scripts/rgn-over2.d, ld-scripts/rgn-over2.t,
|
||||
ld-scripts/rgn-over3.d, ld-scripts/rgn-over3.t,
|
||||
ld-scripts/rgn-over4.d, ld-scripts/rgn-over4.t,
|
||||
ld-scripts/rgn-over5.d, ld-scripts/rgn-over5.t,
|
||||
ld-scripts/rgn-over6.d, ld-scripts/rgn-over6.t,
|
||||
ld-scripts/rgn-over7.d, ld-scripts/rgn-over7.t:
|
||||
New test cases.
|
||||
|
||||
2007-10-16 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* lf-elfcomm/elfcomm.exp: Add tests of STT_COMMON symbol
|
||||
|
46
ld/testsuite/ld-scripts/rgn-over.exp
Normal file
46
ld/testsuite/ld-scripts/rgn-over.exp
Normal file
@ -0,0 +1,46 @@
|
||||
# Test for proper diagnosis of overflowed memory regions.
|
||||
# Copyright 2007 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of the GNU Binutils.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
# MA 02110-1301, USA.
|
||||
|
||||
if ![is_elf_format] {
|
||||
return
|
||||
}
|
||||
|
||||
load_lib ld-lib.exp
|
||||
|
||||
set test_list [lsort [glob -nocomplain $srcdir/$subdir/rgn-over*.d]]
|
||||
foreach test_file $test_list {
|
||||
set test_name [file rootname $test_file]
|
||||
set map_file "tmpdir/[file tail $test_name].map"
|
||||
verbose $test_name
|
||||
run_dump_test $test_name
|
||||
|
||||
set testname "[file tail $test_name] (map check)"
|
||||
if [file exists $map_file] {
|
||||
# compare the map file to the expectations in the .d file
|
||||
# (run_dump_test can't do that).
|
||||
if [regexp_diff $map_file $test_file] {
|
||||
fail $testname
|
||||
} else {
|
||||
pass $testname
|
||||
}
|
||||
} else {
|
||||
untested $testname
|
||||
}
|
||||
}
|
9
ld/testsuite/ld-scripts/rgn-over.s
Normal file
9
ld/testsuite/ld-scripts/rgn-over.s
Normal file
@ -0,0 +1,9 @@
|
||||
.section .txt, "ax", "progbits"
|
||||
.4byte 0x11223344
|
||||
.4byte 0x55667788
|
||||
.4byte 0x99aabbcc
|
||||
|
||||
.section .dat, "aw", "progbits"
|
||||
.4byte 0x01020304
|
||||
.4byte 0x05060708
|
||||
.4byte 0x090a0b0c
|
34
ld/testsuite/ld-scripts/rgn-over1.d
Normal file
34
ld/testsuite/ld-scripts/rgn-over1.d
Normal file
@ -0,0 +1,34 @@
|
||||
# name: rgn-over1
|
||||
# source: rgn-over.s
|
||||
# ld: -T rgn-over1.t -Map tmpdir/rgn-over1.map
|
||||
# error: \A[^ \n]*?ld[^:\n]*?: [^\n]*?section \.text will not fit in region r1\n[^ \n]*?ld[^:\n]*?: region r1 overflowed by 16 bytes\Z
|
||||
|
||||
Discarded input sections
|
||||
#...
|
||||
Memory\s+Configuration
|
||||
|
||||
Name\s+Origin\s+Length\s+Attributes
|
||||
bss\s+0x0+0000\s+0x0+0000\s+xrw
|
||||
r1\s+0x0+1000\s+0x0+0008\s+xrw
|
||||
\*default\*\s+0x0+0000\s+0xf+ffff
|
||||
|
||||
Linker\s+script\s+and\s+memory\s+map
|
||||
|
||||
\s*0x0+1000\s+_start\s+=\s+0x1000
|
||||
|
||||
\s*\.bss\s+0x0+0000\s+0x0
|
||||
\s*\*\(\.bss\)
|
||||
\s*\.bss\s+0x0+0000\s+0x0\s+.*?
|
||||
|
||||
\s*\.text\s+0x0+1000\s+0xc
|
||||
\s*\*\(\.txt\)
|
||||
\s*\.txt\s+0x0+1000\s+0xc\s+.*?
|
||||
|
||||
\s*\.data\s+0x0+100c\s+0xc
|
||||
\s*\*\(\.dat\)
|
||||
\s*\.dat\s+0x0+100c\s+0xc\s+.*?
|
||||
|
||||
/DISCARD/
|
||||
\*\(\*\)
|
||||
LOAD\s+.*?
|
||||
OUTPUT\(.*?\)
|
13
ld/testsuite/ld-scripts/rgn-over1.t
Normal file
13
ld/testsuite/ld-scripts/rgn-over1.t
Normal file
@ -0,0 +1,13 @@
|
||||
/* Memory region overflow tests: one region, first output sect doesn't fit. */
|
||||
|
||||
MEMORY {
|
||||
bss (rwx) : ORIGIN = 0, LENGTH = 0
|
||||
r1 (rwx) : ORIGIN = 0x1000, LENGTH = 8
|
||||
}
|
||||
_start = 0x1000;
|
||||
SECTIONS {
|
||||
.bss : { *(.bss) } > bss
|
||||
.text : { *(.txt) } > r1
|
||||
.data : { *(.dat) } > r1
|
||||
/DISCARD/ : { *(*) }
|
||||
}
|
34
ld/testsuite/ld-scripts/rgn-over2.d
Normal file
34
ld/testsuite/ld-scripts/rgn-over2.d
Normal file
@ -0,0 +1,34 @@
|
||||
# name: rgn-over2
|
||||
# source: rgn-over.s
|
||||
# ld: -T rgn-over2.t -Map tmpdir/rgn-over2.map
|
||||
# error: \A[^ \n]*?ld[^:\n]*?: [^\n]*?section \.data will not fit in region r1\n[^ \n]*?ld[^:\n]*?: region r1 overflowed by 4 bytes\Z
|
||||
|
||||
Discarded input sections
|
||||
#...
|
||||
Memory\s+Configuration
|
||||
|
||||
Name\s+Origin\s+Length\s+Attributes
|
||||
bss\s+0x0+0000\s+0x0+0000\s+xrw
|
||||
r1\s+0x0+1000\s+0x0+0014\s+xrw
|
||||
\*default\*\s+0x0+0000\s+0xf+ffff
|
||||
|
||||
Linker\s+script\s+and\s+memory\s+map
|
||||
|
||||
\s*0x0+1000\s+_start\s+=\s+0x1000
|
||||
|
||||
\s*\.bss\s+0x0+0000\s+0x0
|
||||
\s*\*\(\.bss\)
|
||||
\s*\.bss\s+0x0+0000\s+0x0\s+.*?
|
||||
|
||||
\s*\.text\s+0x0+1000\s+0xc
|
||||
\s*\*\(\.txt\)
|
||||
\s*\.txt\s+0x0+1000\s+0xc\s+.*?
|
||||
|
||||
\s*\.data\s+0x0+100c\s+0xc
|
||||
\s*\*\(\.dat\)
|
||||
\s*\.dat\s+0x0+100c\s+0xc\s+.*?
|
||||
|
||||
/DISCARD/
|
||||
\*\(\*\)
|
||||
LOAD\s+.*?
|
||||
OUTPUT\(.*?\)
|
14
ld/testsuite/ld-scripts/rgn-over2.t
Normal file
14
ld/testsuite/ld-scripts/rgn-over2.t
Normal file
@ -0,0 +1,14 @@
|
||||
/* Memory region overflow tests: one region, first output sect fits,
|
||||
second doesn't. */
|
||||
|
||||
MEMORY {
|
||||
bss (rwx) : ORIGIN = 0, LENGTH = 0
|
||||
r1 (rwx) : ORIGIN = 0x1000, LENGTH = 20
|
||||
}
|
||||
_start = 0x1000;
|
||||
SECTIONS {
|
||||
.bss : { *(.bss) } > bss
|
||||
.text : { *(.txt) } > r1
|
||||
.data : { *(.dat) } > r1
|
||||
/DISCARD/ : { *(*) }
|
||||
}
|
35
ld/testsuite/ld-scripts/rgn-over3.d
Normal file
35
ld/testsuite/ld-scripts/rgn-over3.d
Normal file
@ -0,0 +1,35 @@
|
||||
# name: rgn-over3
|
||||
# source: rgn-over.s
|
||||
# ld: -T rgn-over3.t -Map tmpdir/rgn-over3.map
|
||||
# error: \A[^ \n]*?ld[^:\n]*?: [^\n]*?section \.text will not fit in region r1\n[^ \n]*?ld[^:\n]*?: [^\n]*?section \.data will not fit in region r2\n[^ \n]*?ld[^:\n]*?: region r1 overflowed by 4 bytes\n[^ \n]*?ld[^:\n]*?: region r2 overflowed by 4 bytes\Z
|
||||
|
||||
Discarded input sections
|
||||
#...
|
||||
Memory\s+Configuration
|
||||
|
||||
Name\s+Origin\s+Length\s+Attributes
|
||||
bss\s+0x0+0000\s+0x0+0000\s+xrw
|
||||
r1\s+0x0+1000\s+0x0+0008\s+xrw
|
||||
r2\s+0x0+2000\s+0x0+0008\s+xrw
|
||||
\*default\*\s+0x0+0000\s+0xf+ffff
|
||||
|
||||
Linker\s+script\s+and\s+memory\s+map
|
||||
|
||||
\s*0x0+1000\s+_start\s+=\s+0x1000
|
||||
|
||||
\s*\.bss\s+0x0+0000\s+0x0
|
||||
\s*\*\(\.bss\)
|
||||
\s*\.bss\s+0x0+0000\s+0x0\s+.*?
|
||||
|
||||
\s*\.text\s+0x0+1000\s+0xc
|
||||
\s*\*\(\.txt\)
|
||||
\s*\.txt\s+0x0+1000\s+0xc\s+.*?
|
||||
|
||||
\s*\.data\s+0x0+2000\s+0xc
|
||||
\s*\*\(\.dat\)
|
||||
\s*\.dat\s+0x0+2000\s+0xc\s+.*?
|
||||
|
||||
/DISCARD/
|
||||
\*\(\*\)
|
||||
LOAD\s+.*?
|
||||
OUTPUT\(.*?\)
|
15
ld/testsuite/ld-scripts/rgn-over3.t
Normal file
15
ld/testsuite/ld-scripts/rgn-over3.t
Normal file
@ -0,0 +1,15 @@
|
||||
/* Memory region overflow tests: two regions, each too small for the single
|
||||
section placed there. */
|
||||
|
||||
MEMORY {
|
||||
bss (rwx) : ORIGIN = 0, LENGTH = 0
|
||||
r1 (rwx) : ORIGIN = 0x1000, LENGTH = 8
|
||||
r2 (rwx) : ORIGIN = 0x2000, LENGTH = 8
|
||||
}
|
||||
_start = 0x1000;
|
||||
SECTIONS {
|
||||
.bss : { *(.bss) } > bss
|
||||
.text : { *(.txt) } > r1
|
||||
.data : { *(.dat) } > r2
|
||||
/DISCARD/ : { *(*) }
|
||||
}
|
35
ld/testsuite/ld-scripts/rgn-over4.d
Normal file
35
ld/testsuite/ld-scripts/rgn-over4.d
Normal file
@ -0,0 +1,35 @@
|
||||
# name: rgn-over4
|
||||
# source: rgn-over.s
|
||||
# ld: -T rgn-over4.t -Map tmpdir/rgn-over4.map
|
||||
# error: \A[^ \n]*?ld[^:\n]*?: [^:\n]*?section \.text will not fit in region r1\n[^ \n]*?ld[^:\n]*?: region r1 overflowed by 16 bytes\Z
|
||||
|
||||
Discarded input sections
|
||||
#...
|
||||
Memory\s+Configuration
|
||||
|
||||
Name\s+Origin\s+Length\s+Attributes
|
||||
bss\s+0x0+0000\s+0x0+0000\s+xrw
|
||||
r1\s+0x0+1000\s+0x0+0008\s+xrw
|
||||
v1\s+0x0+2000\s+0x0+0018\s+xrw
|
||||
\*default\*\s+0x0+0000\s+0xf+ffff
|
||||
|
||||
Linker\s+script\s+and\s+memory\s+map
|
||||
|
||||
\s*0x0+1000\s+_start\s+=\s+0x1000
|
||||
|
||||
\s*\.bss\s+0x0+0000\s+0x0
|
||||
\s*\*\(\.bss\)
|
||||
\s*\.bss\s+0x0+0000\s+0x0\s+.*?
|
||||
|
||||
\s*\.text\s+0x0+1000\s+0xc\s+load\s+address\s+0x0+2000
|
||||
\s*\*\(\.txt\)
|
||||
\s*\.txt\s+0x0+1000\s+0xc\s+.*?
|
||||
|
||||
\s*\.data\s+0x0+100c\s+0xc\s+load\s+address\s+0x0+200c
|
||||
\s*\*\(\.dat\)
|
||||
\s*\.dat\s+0x0+100c\s+0xc\s+.*?
|
||||
|
||||
/DISCARD/
|
||||
\*\(\*\)
|
||||
LOAD\s+.*?
|
||||
OUTPUT\(.*?\)
|
14
ld/testsuite/ld-scripts/rgn-over4.t
Normal file
14
ld/testsuite/ld-scripts/rgn-over4.t
Normal file
@ -0,0 +1,14 @@
|
||||
/* Memory region overflow tests: overflow VMA but not LMA. */
|
||||
|
||||
MEMORY {
|
||||
bss (rwx) : ORIGIN = 0, LENGTH = 0
|
||||
r1 (rwx) : ORIGIN = 0x1000, LENGTH = 8
|
||||
v1 (rwx) : ORIGIN = 0x2000, LENGTH = 24
|
||||
}
|
||||
_start = 0x1000;
|
||||
SECTIONS {
|
||||
.bss : { *(.bss) } > bss
|
||||
.text : { *(.txt) } > r1 AT> v1
|
||||
.data : { *(.dat) } > r1 AT> v1
|
||||
/DISCARD/ : { *(*) }
|
||||
}
|
35
ld/testsuite/ld-scripts/rgn-over5.d
Normal file
35
ld/testsuite/ld-scripts/rgn-over5.d
Normal file
@ -0,0 +1,35 @@
|
||||
# name: rgn-over5
|
||||
# source: rgn-over.s
|
||||
# ld: -T rgn-over5.t -Map tmpdir/rgn-over5.map
|
||||
# error: \A[^ \n]*?ld[^:\n]*?: [^\n]*?section \.text will not fit in region v1\n[^ \n]*?ld[^:\n]*?: region v1 overflowed by 16 bytes\Z
|
||||
|
||||
Discarded input sections
|
||||
#...
|
||||
Memory\s+Configuration
|
||||
|
||||
Name\s+Origin\s+Length\s+Attributes
|
||||
bss\s+0x0+0000\s+0x0+0000\s+xrw
|
||||
r1\s+0x0+1000\s+0x0+0018\s+xrw
|
||||
v1\s+0x0+2000\s+0x0+0008\s+xrw
|
||||
\*default\*\s+0x0+0000\s+0xf+ffff
|
||||
|
||||
Linker\s+script\s+and\s+memory\s+map
|
||||
|
||||
\s*0x0+1000\s+_start\s+=\s+0x1000
|
||||
|
||||
\s*\.bss\s+0x0+0000\s+0x0
|
||||
\s*\*\(\.bss\)
|
||||
\s*\.bss\s+0x0+0000\s+0x0\s+.*?
|
||||
|
||||
\s*\.text\s+0x0+1000\s+0xc\s+load\s+address\s+0x0+2000
|
||||
\s*\*\(\.txt\)
|
||||
\s*\.txt\s+0x0+1000\s+0xc\s+.*?
|
||||
|
||||
\s*\.data\s+0x0+100c\s+0xc\s+load\s+address\s+0x0+200c
|
||||
\s*\*\(\.dat\)
|
||||
\s*\.dat\s+0x0+100c\s+0xc\s+.*?
|
||||
|
||||
/DISCARD/
|
||||
\*\(\*\)
|
||||
LOAD\s+.*?
|
||||
OUTPUT\(.*?\)
|
14
ld/testsuite/ld-scripts/rgn-over5.t
Normal file
14
ld/testsuite/ld-scripts/rgn-over5.t
Normal file
@ -0,0 +1,14 @@
|
||||
/* Memory region overflow tests: overflow LMA but not VMA. */
|
||||
|
||||
MEMORY {
|
||||
bss (rwx) : ORIGIN = 0, LENGTH = 0
|
||||
r1 (rwx) : ORIGIN = 0x1000, LENGTH = 24
|
||||
v1 (rwx) : ORIGIN = 0x2000, LENGTH = 8
|
||||
}
|
||||
_start = 0x1000;
|
||||
SECTIONS {
|
||||
.bss : { *(.bss) } > bss
|
||||
.text : { *(.txt) } > r1 AT> v1
|
||||
.data : { *(.dat) } > r1 AT> v1
|
||||
/DISCARD/ : { *(*) }
|
||||
}
|
35
ld/testsuite/ld-scripts/rgn-over6.d
Normal file
35
ld/testsuite/ld-scripts/rgn-over6.d
Normal file
@ -0,0 +1,35 @@
|
||||
# name: rgn-over6
|
||||
# source: rgn-over.s
|
||||
# ld: -T rgn-over6.t -Map tmpdir/rgn-over6.map
|
||||
# error: \A[^ \n]*?ld[^:\n]*?: [^\n]*?section \.text will not fit in region r1\n[^ \n]*?ld[^:\n]*?: [^\n]*?section \.text will not fit in region v1\n[^ \n]*?ld[^:\n]*?: region r1 overflowed by 16 bytes\n[^ \n]*?ld[^:\n]*?: region v1 overflowed by 16 bytes\Z
|
||||
|
||||
Discarded input sections
|
||||
#...
|
||||
Memory\s+Configuration
|
||||
|
||||
Name\s+Origin\s+Length\s+Attributes
|
||||
bss\s+0x0+0000\s+0x0+0000\s+xrw
|
||||
r1\s+0x0+1000\s+0x0+0008\s+xrw
|
||||
v1\s+0x0+2000\s+0x0+0008\s+xrw
|
||||
\*default\*\s+0x0+0000\s+0xf+ffff
|
||||
|
||||
Linker\s+script\s+and\s+memory\s+map
|
||||
|
||||
\s*0x0+1000\s+_start\s+=\s+0x1000
|
||||
|
||||
\s*\.bss\s+0x0+0000\s+0x0
|
||||
\s*\*\(\.bss\)
|
||||
\s*\.bss\s+0x0+0000\s+0x0\s+.*?
|
||||
|
||||
\s*\.text\s+0x0+1000\s+0xc\s+load\s+address\s+0x0+2000
|
||||
\s*\*\(\.txt\)
|
||||
\s*\.txt\s+0x0+1000\s+0xc\s+.*?
|
||||
|
||||
\s*\.data\s+0x0+100c\s+0xc\s+load\s+address\s+0x0+200c
|
||||
\s*\*\(\.dat\)
|
||||
\s*\.dat\s+0x0+100c\s+0xc\s+.*?
|
||||
|
||||
/DISCARD/
|
||||
\*\(\*\)
|
||||
LOAD\s+.*?
|
||||
OUTPUT\(.*?\)
|
14
ld/testsuite/ld-scripts/rgn-over6.t
Normal file
14
ld/testsuite/ld-scripts/rgn-over6.t
Normal file
@ -0,0 +1,14 @@
|
||||
/* Memory region overflow tests: overflow LMA and VMA. */
|
||||
|
||||
MEMORY {
|
||||
bss (rwx) : ORIGIN = 0, LENGTH = 0
|
||||
r1 (rwx) : ORIGIN = 0x1000, LENGTH = 8
|
||||
v1 (rwx) : ORIGIN = 0x2000, LENGTH = 8
|
||||
}
|
||||
_start = 0x1000;
|
||||
SECTIONS {
|
||||
.bss : { *(.bss) } > bss
|
||||
.text : { *(.txt) } > r1 AT> v1
|
||||
.data : { *(.dat) } > r1 AT> v1
|
||||
/DISCARD/ : { *(*) }
|
||||
}
|
35
ld/testsuite/ld-scripts/rgn-over7.d
Normal file
35
ld/testsuite/ld-scripts/rgn-over7.d
Normal file
@ -0,0 +1,35 @@
|
||||
# name: rgn-over7
|
||||
# source: rgn-over.s
|
||||
# ld: -T rgn-over7.t -Map tmpdir/rgn-over7.map
|
||||
# error: \A[^ \n]*?ld[^:\n]*?: [^\n]*?section \.text will not fit in region r1\n[^ \n]*?ld[^:\n]*?: section \.data \[0+1008 -> 0+1013\] overlaps section \.text \[0+1000 -> 0+100b\]\n[^ \n]*?ld[^:\n]*?: region r1 overflowed by 4 bytes\Z
|
||||
|
||||
Discarded input sections
|
||||
#...
|
||||
Memory\s+Configuration
|
||||
|
||||
Name\s+Origin\s+Length\s+Attributes
|
||||
bss\s+0x0+0000\s+0x0+0000\s+xrw
|
||||
r1\s+0x0+1000\s+0x0+0008\s+xrw
|
||||
r2\s+0x0+1008\s+0x0+000c\s+xrw
|
||||
\*default\*\s+0x0+0000\s+0xf+ffff
|
||||
|
||||
Linker\s+script\s+and\s+memory\s+map
|
||||
|
||||
\s*0x0+1000\s+_start\s+=\s+0x1000
|
||||
|
||||
\s*\.bss\s+0x0+0000\s+0x0
|
||||
\s*\*\(\.bss\)
|
||||
\s*\.bss\s+0x0+0000\s+0x0\s+.*?
|
||||
|
||||
\s*\.text\s+0x0+1000\s+0xc
|
||||
\s*\*\(\.txt\)
|
||||
\s*\.txt\s+0x0+1000\s+0xc\s+.*?
|
||||
|
||||
\s*\.data\s+0x0+1008\s+0xc
|
||||
\s*\*\(\.dat\)
|
||||
\s*\.dat\s+0x0+1008\s+0xc\s+.*?
|
||||
|
||||
/DISCARD/
|
||||
\*\(\*\)
|
||||
LOAD\s+.*?
|
||||
OUTPUT\(.*?\)
|
14
ld/testsuite/ld-scripts/rgn-over7.t
Normal file
14
ld/testsuite/ld-scripts/rgn-over7.t
Normal file
@ -0,0 +1,14 @@
|
||||
/* Memory region overflow tests: overflow r1 plus text/data collision. */
|
||||
|
||||
MEMORY {
|
||||
bss (rwx) : ORIGIN = 0, LENGTH = 0
|
||||
r1 (rwx) : ORIGIN = 0x1000, LENGTH = 8
|
||||
r2 (rwx) : ORIGIN = 0x1008, LENGTH = 12
|
||||
}
|
||||
_start = 0x1000;
|
||||
SECTIONS {
|
||||
.bss : { *(.bss) } > bss
|
||||
.text : { *(.txt) } > r1
|
||||
.data : { *(.dat) } > r2
|
||||
/DISCARD/ : { *(*) }
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user