[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