From: Anton Korobeynikov Date: Wed, 9 Jul 2008 13:22:17 +0000 (+0000) Subject: Print entity size for mergeable sections X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=6d8294209287eb36951f8445abe1129e015cd312;p=oota-llvm.git Print entity size for mergeable sections git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53303 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Target/TargetAsmInfo.h b/include/llvm/Target/TargetAsmInfo.h index 0cd7f8d7a5e..4e7d23d5001 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 c900ac9e77c..b0c6f1cb533 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; }