aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-07-17 20:46:40 +0000
committerChris Lattner <sabre@nondot.org>2009-07-17 20:46:40 +0000
commite2cf37b88c089a71727b3ecd466856f0cd638813 (patch)
tree5519e3da8fc3474c49728b80a86d5c9f76f57db2 /include
parent092a9dda2d13918a6410db26f41c7b5aa97ff989 (diff)
downloadexternal_llvm-e2cf37b88c089a71727b3ecd466856f0cd638813.zip
external_llvm-e2cf37b88c089a71727b3ecd466856f0cd638813.tar.gz
external_llvm-e2cf37b88c089a71727b3ecd466856f0cd638813.tar.bz2
Untangle a snarl that I discovered when updating the mangler,
starting in getCurrentFunctionEHName. Among other problems, we would try to privative a "foo.eh" label, but end up emitting the label as _Lfoo.eh instead of L_foo.eh on darwin. This is really bad, and the linker has always tolerated these labels existing. For now, just emit them as _foo.eh. This patch also fixes problems with ".eh" labels on unnamed functions and eliminates two strangely defined TargetAsmInfo hooks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76231 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/CodeGen/AsmPrinter.h6
-rw-r--r--include/llvm/Target/TargetAsmInfo.h16
2 files changed, 7 insertions, 15 deletions
diff --git a/include/llvm/CodeGen/AsmPrinter.h b/include/llvm/CodeGen/AsmPrinter.h
index a9b0b3b..fcedef2 100644
--- a/include/llvm/CodeGen/AsmPrinter.h
+++ b/include/llvm/CodeGen/AsmPrinter.h
@@ -170,11 +170,9 @@ namespace llvm {
/// Should be overridden if an indirect reference should be used.
virtual void EmitExternalGlobal(const GlobalVariable *GV);
- /// getCurrentFunctionEHName - Called to return (and cache) the
- /// CurrentFnEHName.
+ /// getCurrentFunctionEHName - Called to return the CurrentFnEHName.
///
- const std::string &getCurrentFunctionEHName(const MachineFunction *MF,
- std::string &FuncEHName) const;
+ std::string getCurrentFunctionEHName(const MachineFunction *MF) const;
protected:
/// getAnalysisUsage - Record analysis usage.
diff --git a/include/llvm/Target/TargetAsmInfo.h b/include/llvm/Target/TargetAsmInfo.h
index 721edfd..3604e9a 100644
--- a/include/llvm/Target/TargetAsmInfo.h
+++ b/include/llvm/Target/TargetAsmInfo.h
@@ -480,9 +480,9 @@ namespace llvm {
/// encode inline subroutine information.
bool DwarfUsesInlineInfoSection; // Defaults to false.
- /// NonLocalEHFrameLabel - If set, the EH_frame label needs to be non-local.
- ///
- bool NonLocalEHFrameLabel; // Defaults to false.
+ /// Is_EHSymbolPrivate - If set, the "_foo.eh" is made private so that it
+ /// doesn't show up in the symbol table of the object file.
+ bool Is_EHSymbolPrivate; // Defaults to true.
/// GlobalEHDirective - This is the directive used to make exception frame
/// tables globally visible.
@@ -714,12 +714,6 @@ namespace llvm {
const char *getPrivateGlobalPrefix() const {
return PrivateGlobalPrefix;
}
- /// EHGlobalPrefix - Prefix for EH_frame and the .eh symbols.
- /// This is normally PrivateGlobalPrefix, but some targets want
- /// these symbols to be visible.
- virtual const char *getEHGlobalPrefix() const {
- return PrivateGlobalPrefix;
- }
const char *getLessPrivateGlobalPrefix() const {
return LessPrivateGlobalPrefix;
}
@@ -876,8 +870,8 @@ namespace llvm {
bool doesDwarfUsesInlineInfoSection() const {
return DwarfUsesInlineInfoSection;
}
- bool doesRequireNonLocalEHFrameLabel() const {
- return NonLocalEHFrameLabel;
+ bool is_EHSymbolPrivate() const {
+ return Is_EHSymbolPrivate;
}
const char *getGlobalEHDirective() const {
return GlobalEHDirective;