diff options
| -rw-r--r-- | lld/lib/ReaderWriter/ELF/SectionChunks.h | 2 | ||||
| -rw-r--r-- | lld/test/elf/Hexagon/Inputs/sdata1.c | 3 | ||||
| -rw-r--r-- | lld/test/elf/Hexagon/Inputs/sdata1.o | bin | 0 -> 684 bytes | |||
| -rw-r--r-- | lld/test/elf/Hexagon/Inputs/sdata2.c | 6 | ||||
| -rw-r--r-- | lld/test/elf/Hexagon/Inputs/sdata2.o | bin | 0 -> 829 bytes | |||
| -rw-r--r-- | lld/test/elf/Hexagon/zerofillquick-sdata.test | 18 |
6 files changed, 28 insertions, 1 deletions
diff --git a/lld/lib/ReaderWriter/ELF/SectionChunks.h b/lld/lib/ReaderWriter/ELF/SectionChunks.h index f6ac670ae32..1f32bba283b 100644 --- a/lld/lib/ReaderWriter/ELF/SectionChunks.h +++ b/lld/lib/ReaderWriter/ELF/SectionChunks.h @@ -288,6 +288,7 @@ const lld::AtomLayout &AtomSection<ELFT>::appendAtom(const Atom *atom) { case DefinedAtom::typeConstant: case DefinedAtom::typeData: case DefinedAtom::typeDataFast: + case DefinedAtom::typeZeroFillFast: case DefinedAtom::typeGOT: case DefinedAtom::typeStub: case DefinedAtom::typeResolver: @@ -312,7 +313,6 @@ const lld::AtomLayout &AtomSection<ELFT>::appendAtom(const Atom *atom) { break; case DefinedAtom::typeThreadZeroFill: case DefinedAtom::typeZeroFill: - case DefinedAtom::typeZeroFillFast: _atoms.push_back(new (_alloc) lld::AtomLayout(atom, mOffset, 0)); this->_msize = mOffset + definedAtom->size(); break; diff --git a/lld/test/elf/Hexagon/Inputs/sdata1.c b/lld/test/elf/Hexagon/Inputs/sdata1.c new file mode 100644 index 00000000000..77c2a54c36a --- /dev/null +++ b/lld/test/elf/Hexagon/Inputs/sdata1.c @@ -0,0 +1,3 @@ +static int a = 0; + +int b = 10; diff --git a/lld/test/elf/Hexagon/Inputs/sdata1.o b/lld/test/elf/Hexagon/Inputs/sdata1.o Binary files differnew file mode 100644 index 00000000000..bf908fed27e --- /dev/null +++ b/lld/test/elf/Hexagon/Inputs/sdata1.o diff --git a/lld/test/elf/Hexagon/Inputs/sdata2.c b/lld/test/elf/Hexagon/Inputs/sdata2.c new file mode 100644 index 00000000000..96b37271d77 --- /dev/null +++ b/lld/test/elf/Hexagon/Inputs/sdata2.c @@ -0,0 +1,6 @@ +int sdata1 = 10; +int sdata2 = 20; +int sdata3 = 30; + +int sbss1 = 0; + diff --git a/lld/test/elf/Hexagon/Inputs/sdata2.o b/lld/test/elf/Hexagon/Inputs/sdata2.o Binary files differnew file mode 100644 index 00000000000..e4ec810866e --- /dev/null +++ b/lld/test/elf/Hexagon/Inputs/sdata2.o diff --git a/lld/test/elf/Hexagon/zerofillquick-sdata.test b/lld/test/elf/Hexagon/zerofillquick-sdata.test new file mode 100644 index 00000000000..54703e144f0 --- /dev/null +++ b/lld/test/elf/Hexagon/zerofillquick-sdata.test @@ -0,0 +1,18 @@ +# This tests that a typeZeroFillFast atom is associated with a section that has +# the correct memory size. + +RUN: lld -flavor gnu -target hexagon %p/Inputs/sdata1.o %p/Inputs/sdata2.o \ +RUN: -o %t --noinhibit-exec -static +RUN: llvm-readobj -sections %t | FileCheck -check-prefix=CHECKSECTIONSANDSIZE %s + +CHECKSECTIONSANDSIZE: Section { +CHECKSECTIONSANDSIZE: Name: .sdata (13) +CHECKSECTIONSANDSIZE: Address: 0x1000 +CHECKSECTIONSANDSIZE: Offset: 0x1000 +CHECKSECTIONSANDSIZE: Size: 20 +CHECKSECTIONSANDSIZE: } +CHECKSECTIONSANDSIZE: Section { +CHECKSECTIONSANDSIZE: Name: .bss (20) +CHECKSECTIONSANDSIZE: Address: 0x1018 +CHECKSECTIONSANDSIZE: Offset: 0x1018 +CHECKSECTIONSANDSIZE: } |

