[llvm-commits] Update DefinedAtom::contentType
Michael Spencer
bigcheesegs at gmail.com
Thu Sep 27 14:04:45 PDT 2012
On Thu, Sep 27, 2012 at 12:59 PM, Sid Manning <sidneym at codeaurora.org> wrote:
> The original code was was not handling typeData.
>
> This changes DefinedAtom::contentType to align more-or-less with what
> ELF.h's getSymbolNMTypeChar does.
>
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by
> The Linux Foundation
> Index: ReaderELF.cpp
> ===================================================================
> --- ReaderELF.cpp (revision 164787)
> +++ ReaderELF.cpp (working copy)
> @@ -278,17 +278,36 @@
>
> virtual ContentType contentType() const {
>
> - if (_symbol->getType() == llvm::ELF::STT_FUNC)
> - return typeCode;
> + ContentType ret=typeUnknown;
Spaces around =.
>
> - if ((_symbol->getType() == llvm::ELF::STT_COMMON)
> - || _symbol->st_shndx == llvm::ELF::SHN_COMMON)
> - return typeZeroFill;
> -
> - if (_symbol->getType() == llvm::ELF::STT_OBJECT)
> - return typeData;
> -
> - return typeUnknown;
> + switch (_section->sh_type) {
> + case llvm::ELF::SHT_PROGBITS:
> + case llvm::ELF::SHT_DYNAMIC:
> + switch (_section->sh_flags) {
> + case (llvm::ELF::SHF_ALLOC | llvm::ELF::SHF_EXECINSTR):
> + ret = typeCode;
> + break;
> + case (llvm::ELF::SHF_ALLOC | llvm::ELF::SHF_WRITE):
> + ret = typeData;
> + break;
> + case llvm::ELF::SHF_ALLOC:
> + case (llvm::ELF::SHF_ALLOC | llvm::ELF::SHF_MERGE):
> + case (llvm::ELF::SHF_ALLOC | llvm::ELF::SHF_MERGE |
> + llvm::ELF::SHF_STRINGS):
> + ret = typeConstant;
> + break;
> + }
> + break;
> + case llvm::ELF::SHT_NOBITS:
> + ret = typeZeroFill;
> + break;
> + case llvm::ELF::SHT_NULL:
> + if ((_symbol->getType() == llvm::ELF::STT_COMMON)
> + || _symbol->st_shndx == llvm::ELF::SHN_COMMON)
> + ret=typeZeroFill;
Spaces around =.
> + break;
> + }
> + return ret;
> }
>
> virtual Alignment alignment() const {
>
Also, tests?
- Michael Spencer
More information about the llvm-commits
mailing list