[PATCH] [MC] report error instead of assertion for non-zero initializer in .bss section
Weiming Zhao
weimingz at codeaurora.org
Fri Jun 20 13:46:56 PDT 2014
Hi Rafael,
Thanks for reviewing. The new patch is based on your suggestion.
http://reviews.llvm.org/D4199
Files:
lib/MC/MCAssembler.cpp
test/MC/ELF/ARM/bss-non-zero-value.s
Index: lib/MC/MCAssembler.cpp
===================================================================
--- lib/MC/MCAssembler.cpp
+++ lib/MC/MCAssembler.cpp
@@ -27,6 +27,7 @@
#include "llvm/Support/LEB128.h"
#include "llvm/Support/TargetRegistry.h"
#include "llvm/Support/raw_ostream.h"
+#include "llvm/MC/MCSectionELF.h"
#include <tuple>
using namespace llvm;
@@ -782,8 +783,15 @@
assert(DF.fixup_begin() == DF.fixup_end() &&
"Cannot have fixups in virtual section!");
for (unsigned i = 0, e = DF.getContents().size(); i != e; ++i)
- assert(DF.getContents()[i] == 0 &&
- "Invalid data value for virtual section!");
+ if (DF.getContents()[i]) {
+ if (SD->getSection().getVariant() == MCSection::SV_ELF)
+ report_fatal_error("non-zero initializer found in section '" +
+ dyn_cast<const MCSectionELF>
+ (&(SD->getSection()))->getSectionName() + "'");
+ else
+ report_fatal_error("non-zero initializer found in virtual section");
+
+ }
break;
}
case MCFragment::FT_Align:
Index: test/MC/ELF/ARM/bss-non-zero-value.s
===================================================================
--- /dev/null
+++ test/MC/ELF/ARM/bss-non-zero-value.s
@@ -0,0 +1,9 @@
+// RUN: not llvm-mc -filetype=obj -triple arm-linux-gnu %s -o %t 2>%t.out
+// RUN: FileCheck --input-file=%t.out %s
+// CHECK: non-zero initializer found in section '.bss'
+ .bss
+ .globl a
+ .align 2
+a:
+ .long 1
+ .size a, 4
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D4199.10705.patch
Type: text/x-patch
Size: 1565 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140620/73a98c3e/attachment.bin>
More information about the llvm-commits
mailing list