[llvm] r184469 - [yaml2obj][ELF] Add support for st_value and st_size.

Renato Golin renato.golin at linaro.org
Fri Jun 21 04:10:59 PDT 2013


Hi Sean,

I think this test needs proper target/triple handling, or move it to an x86
specific directory:

http://lab.llvm.org:8011/builders/clang-native-arm-cortex-a9/builds/8946/steps/check-all/logs/LLVM%3A%3Ayaml2obj-elf-symbol-basic.yaml

thanks,
--renato


On 20 June 2013 21:59, Sean Silva <silvas at purdue.edu> wrote:

> Author: silvas
> Date: Thu Jun 20 15:59:47 2013
> New Revision: 184469
>
> URL: http://llvm.org/viewvc/llvm-project?rev=184469&view=rev
> Log:
> [yaml2obj][ELF] Add support for st_value and st_size.
>
> After this patch, the ELF file produced by
> `yaml2obj-elf-symbol-basic.yaml`, when linked and executed on x86_64
> (under SysV ABI, obviously; I tested on Linux), produces a working
> executable that goes into an infinite loop!
>
> Modified:
>     llvm/trunk/include/llvm/Object/ELFYAML.h
>     llvm/trunk/lib/Object/ELFYAML.cpp
>     llvm/trunk/test/Object/yaml2obj-elf-symbol-basic.yaml
>     llvm/trunk/tools/yaml2obj/yaml2elf.cpp
>
> Modified: llvm/trunk/include/llvm/Object/ELFYAML.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ELFYAML.h?rev=184469&r1=184468&r2=184469&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Object/ELFYAML.h (original)
> +++ llvm/trunk/include/llvm/Object/ELFYAML.h Thu Jun 20 15:59:47 2013
> @@ -58,6 +58,8 @@ struct Symbol {
>    ELF_STB Binding;
>    ELF_STT Type;
>    StringRef Section;
> +  llvm::yaml::Hex64 Value;
> +  llvm::yaml::Hex64 Size;
>  };
>  struct Section {
>    StringRef Name;
>
> Modified: llvm/trunk/lib/Object/ELFYAML.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/ELFYAML.cpp?rev=184469&r1=184468&r2=184469&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Object/ELFYAML.cpp (original)
> +++ llvm/trunk/lib/Object/ELFYAML.cpp Thu Jun 20 15:59:47 2013
> @@ -316,6 +316,8 @@ void MappingTraits<ELFYAML::Symbol>::map
>    IO.mapOptional("Binding", Symbol.Binding, ELFYAML::ELF_STB(0));
>    IO.mapOptional("Type", Symbol.Type, ELFYAML::ELF_STT(0));
>    IO.mapOptional("Section", Symbol.Section, StringRef());
> +  IO.mapOptional("Value", Symbol.Value, Hex64(0));
> +  IO.mapOptional("Size", Symbol.Size, Hex64(0));
>  }
>
>  void MappingTraits<ELFYAML::Section>::mapping(IO &IO,
>
> Modified: llvm/trunk/test/Object/yaml2obj-elf-symbol-basic.yaml
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/yaml2obj-elf-symbol-basic.yaml?rev=184469&r1=184468&r2=184469&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Object/yaml2obj-elf-symbol-basic.yaml (original)
> +++ llvm/trunk/test/Object/yaml2obj-elf-symbol-basic.yaml Thu Jun 20
> 15:59:47 2013
> @@ -1,4 +1,5 @@
>  # RUN: yaml2obj -format=elf %s | llvm-readobj -symbols - | FileCheck %s
> +# RUN: yaml2obj -format=elf %s | llvm-objdump -d -no-show-raw-insn - |
> FileCheck %s --check-prefix=DISASSEMBLY
>  !ELF
>  FileHeader:
>    Class: ELFCLASS64
> @@ -9,6 +10,13 @@ Sections:
>    - Name: .text
>      Type: SHT_PROGBITS
>      Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
> +    Content: "90EBFE" # x86 machine code
> +                      #   NOP ; To make main's `Value` non-zero (for
> testing).
> +                      # main:
> +                      #   JMP -2 ; (infloop)
> +                      # This YAML file is a valid relocatable object that,
> +                      # when linked and run on x86_64, will go into an
> +                      # infloop.
>    - Name: .symtab
>      Type: SHT_SYMTAB
>      Symbols:
> @@ -16,12 +24,20 @@ Sections:
>        Binding: STB_GLOBAL
>        Type: STT_FUNC
>        Section: .text
> +      Value: 0x1
> +      Size: 2
>
>  # CHECK:      Symbols [
>  # CHECK-NEXT:   Symbol {
>  # CHECK-NEXT:     Name:  (0)
>  # CHECK:        Symbol {
>  # CHECK-NEXT:     Name: main
> +# CHECK-NEXT:     Value: 0x1
> +# CHECK-NEXT:     Size: 2
>  # CHECK:          Binding: Global
>  # CHECK-NEXT:     Type: Function
>  # CHECK:          Section: .text
> +
> +# DISASSEMBLY:      Disassembly of section .text:
> +# DISASSEMBLY-NEXT: main:
> +# DISASSEMBLY-NEXT:        1:       jmp     -2
>
> Modified: llvm/trunk/tools/yaml2obj/yaml2elf.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/yaml2obj/yaml2elf.cpp?rev=184469&r1=184468&r2=184469&view=diff
>
> ==============================================================================
> --- llvm/trunk/tools/yaml2obj/yaml2elf.cpp (original)
> +++ llvm/trunk/tools/yaml2obj/yaml2elf.cpp Thu Jun 20 15:59:47 2013
> @@ -206,6 +206,8 @@ static void handleSymtabSectionHeader(
>        exit(1);
>      }
>      Symbol.st_shndx = Index;
> +    Symbol.st_value = Sym.Value;
> +    Symbol.st_size = Sym.Size;
>      Syms.push_back(Symbol);
>    }
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130621/18628133/attachment.html>


More information about the llvm-commits mailing list