diff options
author | Anton Korobeynikov <asl@math.spbu.ru> | 2008-07-09 13:22:17 +0000 |
---|---|---|
committer | Anton Korobeynikov <asl@math.spbu.ru> | 2008-07-09 13:22:17 +0000 |
commit | 6d8294209287eb36951f8445abe1129e015cd312 (patch) | |
tree | 04bf731cc3c38f031d5e3079bacf76d9ea843a1b | |
parent | f447e3d31128a68e3028019385eb9ecfedb8e4e6 (diff) |
Print entity size for mergeable sections
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53303 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Target/TargetAsmInfo.h | 26 | ||||
-rw-r--r-- | lib/Target/X86/X86TargetAsmInfo.cpp | 3 |
2 files changed, 20 insertions, 9 deletions
diff --git a/include/llvm/Target/TargetAsmInfo.h b/include/llvm/Target/TargetAsmInfo.h index 0cd7f8d7a5..4e7d23d500 100644 --- a/include/llvm/Target/TargetAsmInfo.h +++ b/include/llvm/Target/TargetAsmInfo.h @@ -45,15 +45,25 @@ namespace llvm { namespace SectionFlags { enum Flags { None = 0, - Code = 1 << 0, ///< Section contains code - Writeable = 1 << 1, ///< Section is writeable - BSS = 1 << 2, ///< Section contains only zeroes - Mergeable = 1 << 3, ///< Section contains mergeable data - Strings = 1 << 4, ///< Section contains null-terminated strings - TLS = 1 << 5, ///< Section contains thread-local data - Debug = 1 << 6, ///< Section contains debug data - Linkonce = 1 << 7 ///< Section is linkonce + Code = 1 << 0, ///< Section contains code + Writeable = 1 << 1, ///< Section is writeable + BSS = 1 << 2, ///< Section contains only zeroes + Mergeable = 1 << 3, ///< Section contains mergeable data + Strings = 1 << 4, ///< Section contains null-terminated strings + TLS = 1 << 5, ///< Section contains thread-local data + Debug = 1 << 6, ///< Section contains debug data + Linkonce = 1 << 7, ///< Section is linkonce + // Some gap for future flags + EntitySize = 0xFF << 24 ///< Entity size for mergeable sections }; + + static inline unsigned getEntitySize(unsigned flags) { + return (flags >> 24) & 0xFF; + } + + static inline unsigned setEntitySize(unsigned flags, unsigned size) { + return ((flags & ~EntitySize) | ((size & 0xFF) << 24)); + } } class TargetMachine; diff --git a/lib/Target/X86/X86TargetAsmInfo.cpp b/lib/Target/X86/X86TargetAsmInfo.cpp index c900ac9e77..b0c6f1cb53 100644 --- a/lib/Target/X86/X86TargetAsmInfo.cpp +++ b/lib/Target/X86/X86TargetAsmInfo.cpp @@ -337,7 +337,8 @@ std::string X86ELFTargetAsmInfo::PrintSectionFlags(unsigned flags) const { else Flags += ",@progbits"; - // FIXME: entity size for mergeable sections + if (unsigned entitySize = SectionFlags::getEntitySize(flags)) + Flags += "," + utostr(entitySize); return Flags; } |