diff options
| author | Javed Absar <javed.absar@arm.com> | 2017-06-05 10:11:57 +0000 |
|---|---|---|
| committer | Javed Absar <javed.absar@arm.com> | 2017-06-05 10:11:57 +0000 |
| commit | 2a67c9ee39c3a2dd298a9a0aec96a1eff6349344 (patch) | |
| tree | 4ad76a7874c3308ece86e0e2b76b35f0ff1102df /clang/lib/CodeGen/CGDecl.cpp | |
| parent | b16d146838b8f4b34e072f34a5f194d9a4df4cc5 (diff) | |
| download | bcm5719-llvm-2a67c9ee39c3a2dd298a9a0aec96a1eff6349344.tar.gz bcm5719-llvm-2a67c9ee39c3a2dd298a9a0aec96a1eff6349344.zip | |
Add support for #pragma clang section
This patch provides a means to specify section-names for global variables,
functions and static variables, using #pragma directives.
This feature is only defined to work sensibly for ELF targets.
One can specify section names as:
#pragma clang section bss="myBSS" data="myData" rodata="myRodata" text="myText"
One can "unspecify" a section name with empty string e.g.
#pragma clang section bss="" data="" text="" rodata=""
Reviewers: Roger Ferrer, Jonathan Roelofs, Reid Kleckner
Differential Revision: https://reviews.llvm.org/D33412
llvm-svn: 304705
Diffstat (limited to 'clang/lib/CodeGen/CGDecl.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CGDecl.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGDecl.cpp b/clang/lib/CodeGen/CGDecl.cpp index d6abfa15e54..87bfa507a8c 100644 --- a/clang/lib/CodeGen/CGDecl.cpp +++ b/clang/lib/CodeGen/CGDecl.cpp @@ -406,6 +406,13 @@ void CodeGenFunction::EmitStaticVarDecl(const VarDecl &D, if (D.hasAttr<AnnotateAttr>()) CGM.AddGlobalAnnotations(&D, var); + if (auto *SA = D.getAttr<PragmaClangBSSSectionAttr>()) + var->addAttribute("bss-section", SA->getName()); + if (auto *SA = D.getAttr<PragmaClangDataSectionAttr>()) + var->addAttribute("data-section", SA->getName()); + if (auto *SA = D.getAttr<PragmaClangRodataSectionAttr>()) + var->addAttribute("rodata-section", SA->getName()); + if (const SectionAttr *SA = D.getAttr<SectionAttr>()) var->setSection(SA->getName()); |

