aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-12-29 14:14:06 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-12-29 14:14:06 +0000
commitb2624eda5ad0ead99ec5ab7ead47b586c96d1109 (patch)
treea290f67cbb44544dff0284c119a70db091d5be42
parentdd061b317711d4165e01f30e8be4798c832819b8 (diff)
MC/Mach-O/Thumb: Set the thumb bit in the symbol table.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122630 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/MC/MCMachOSymbolFlags.h1
-rw-r--r--lib/MC/MCMachOStreamer.cpp8
-rw-r--r--test/MC/MachO/darwin-Thumb-reloc.s2
3 files changed, 8 insertions, 3 deletions
diff --git a/include/llvm/MC/MCMachOSymbolFlags.h b/include/llvm/MC/MCMachOSymbolFlags.h
index 7871312455..696436dffa 100644
--- a/include/llvm/MC/MCMachOSymbolFlags.h
+++ b/include/llvm/MC/MCMachOSymbolFlags.h
@@ -34,6 +34,7 @@ namespace llvm {
SF_ReferenceTypePrivateUndefinedLazy = 0x0005,
// Other 'desc' flags.
+ SF_ThumbFunc = 0x0008,
SF_NoDeadStrip = 0x0020,
SF_WeakReference = 0x0040,
SF_WeakDefinition = 0x0080,
diff --git a/lib/MC/MCMachOStreamer.cpp b/lib/MC/MCMachOStreamer.cpp
index 0e21f4d00c..7e1cda25b6 100644
--- a/lib/MC/MCMachOStreamer.cpp
+++ b/lib/MC/MCMachOStreamer.cpp
@@ -140,12 +140,16 @@ void MCMachOStreamer::EmitAssemblerFlag(MCAssemblerFlag Flag) {
}
}
-void MCMachOStreamer::EmitThumbFunc(MCSymbol *Func) {
+void MCMachOStreamer::EmitThumbFunc(MCSymbol *Symbol) {
// FIXME: Flag the function ISA as thumb with DW_AT_APPLE_isa.
// Remember that the function is a thumb function. Fixup and relocation
// values will need adjusted.
- getAssembler().setIsThumbFunc(Func);
+ getAssembler().setIsThumbFunc(Symbol);
+
+ // Mark the thumb bit on the symbol.
+ MCSymbolData &SD = getAssembler().getOrCreateSymbolData(*Symbol);
+ SD.setFlags(SD.getFlags() | SF_ThumbFunc);
}
void MCMachOStreamer::EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) {
diff --git a/test/MC/MachO/darwin-Thumb-reloc.s b/test/MC/MachO/darwin-Thumb-reloc.s
index 200b859379..567573d9ef 100644
--- a/test/MC/MachO/darwin-Thumb-reloc.s
+++ b/test/MC/MachO/darwin-Thumb-reloc.s
@@ -98,7 +98,7 @@ L_.str:
@ CHECK: (('n_strx', 1)
@ CHECK: ('n_type', 0xf)
@ CHECK: ('n_sect', 1)
-@ CHECK-FIXME: ('n_desc', 8)
+@ CHECK: ('n_desc', 8)
@ CHECK: ('n_value', 0)
@ CHECK: ('_string', '_main')
@ CHECK: ),