[PATCH] D70541: [DWARF][RISCV] Test resolving of RISC-V relocations

Luís Marques via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 5 02:39:40 PST 2019


luismarques marked an inline comment as done.
luismarques added inline comments.


================
Comment at: llvm/test/tools/llvm-dwarfdump/RISCV/riscv-relocs.yaml:19
+    # DW_AT_high_pc and DW_AT_stmt_list.
+    Content:         280000000400000000000801000000000C000000002F00000000000000000042000000000000000100000000280000000400000000000801000000000C000000002F00000000000000000042000000000000000200000000280000000400000000000801000000000C000000002F00000000000000000042000000000000000300000000280000000400000000000801000000000C000000002F00000000000000000042000000000000000400000000280000000400000000000801000000000C000000002F00000000000000000042000000000000000500000000280000000400000000000801000000000C000000002F00000000000000000042000000000000000600000000280000000400000000000801000000000C000000002F00000000000000000042000000000000000700000000280000000400000000000801000000000C000000002F00000000000000000042420000000000000800000000280000000400000000000801000000000C000000002F00000000000000000042420000000000000900000000280000000400000000000801000000000C000000002F00000000000000000042424242000000000A00000000280000000400000000000801000000000C000000002F00000000000000000042424242000000000B00000000280000000400000000000801000000000C000000002F00000000000000000042424242424242000C00000000280000000400000000000801000000000C000000002F00000000000000000042424242424242000D00000000280000000400000000000801000000000C000000002F00000000000000000042000000000000000e00000000
+  - Name:            .rela.debug_info
----------------
MaskRay wrote:
> luismarques wrote:
> > MaskRay wrote:
> > > luismarques wrote:
> > > > MaskRay wrote:
> > > > > For this test, I feel that the opaque content makes the YAML test worse than an assembly test. You can use llvm-readelf -r or llvm-readobj -r to check the presence of intended relocations.
> > > > It's not ideal but I don't think we can have an assembly test file we can process with all of the relocations we can resolve. (The goal is to check that they are correctly resolved, not that they are present).
> > > The opaque and length `Content` makes the test very difficult to modify. Neither does it explain what each octet does.
> > > 
> > > Assembly augmented with comments will be easier to understand and modify, e.g.
> > > 
> > > ```
> > > .byte 8  # Address size
> > > .byte 0  # Segment selector size
> > > .long 0  # Offset entry count
> > > ```
> > Changing the test to be an assembly file proved incompatible with adding all of the required relocations (if you know of a way to do it please say so). So instead I added an assembly file as a comment, which documents the binary blobs and allows people to easily recreate and extend the individual relocation tests below. Does that sufficiently address your concerns @MaskRay ?
> > Changing the test to be an assembly file proved incompatible with adding all of the required relocations (if you know of a way to do it please say so).
> 
> What relocation types cannot be represented by assembly? If there were any, I would think that psABI defined some relocation types that were not actually used in toolchains. If only one or two relocation types that cannot be represented but you do want to test them, how about just creating a separate test?
While some RISC-V relocations you can emit explicitly (e.g. `%pcrel_hi`) many of them you only get indirectly as the result of filling in some fields in debug sections and so on. Doing that doesn't seem to allow enough control over the contents of the ELF file (e.g. the base value to which relocations are applied on top of). I explored creating a `.rela.debug_info` section in the assembly file with the relocation entry fields manually specified but the assembler doesn't play nice, so that section isn't recognized as a proper relocation section. So that's what I meant, unlike when you use a yaml object file you can't just say (AFAIK) "have the value X here and apply the relocation Y on top of it". That's why it seems to me that the yaml file is the way to go, but if you know of a way to solve that then I have no problem with changing the test to use just an assembly file.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D70541/new/

https://reviews.llvm.org/D70541





More information about the llvm-commits mailing list