plotfi added a comment. So, @compnerd and I have discussed and we'd like to propose a yaml schema that can express what we need for ifsos for the Sections and the Symbols.
For the Symbols we want: Symbols: - Name: _dataA Type: STT_OBJECT Section: .data Binding: STB_GLOBAL - Name: __ZN3qux3barEii Type: STT_FUNC Section: .text Binding: STB_GLOBAL Because this expresses the bare minimum of the symbol name, whether its a function or an exported object, which section it belongs to, and if it is bound globally or locally or weakly. For the sections, this yaml schema gives us what we need to set the name, type and flags properly: Sections: - Name: .text Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - Name: .data Type: SHT_PROGBITS Flags: [ SHF_WRITE, SHF_ALLOC ] We also think that the existing FileHeader works for emitting ELF ifsos: FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 I could see us compacting this (something like "Kind: ELF_64_LSB_X86-64") but I don't see why we'd want to deviate from what ELF already lays out. The file type is important because ET_REL vs ET_DYN can be used to denote if this is an ifso artifact that is meant to be merged or if it is already merged. I think we could have one stage that does the merging of the ET_RELs and one that assembles the final binary from a merged ET_DYN ifso. We looked at other formats like TBD, and the major thing we also want to add is: --- !ifso-elf-v1 at the beginning of the yaml to denote that this is an ifso specifically for ELF and to denote the versioning. I think the versioning could be used to direct how we read the FileHeader. So the yaml ifso file syntax: --- !ifso-elf-<version> FileHeader: Class: <ELFCLASS64 | ELFCLASS32> Data: <ELFDATA2LSB | ELFDATA2MSB> Type: <ET_REL, ET_DYN, etc> Machine: <machine> Sections: # One or more of these: - Name: <section name> Type: <SHT_ section type> Flags: [ <section flags> ] Symbols: # One or more of these: - Name: <symbol name> Type: <STT_ symbol type, ie STT_OBJECT, STT_FUNC etc> Section: <section> Binding: <STB_ symbol binding, ie STB_GLOBAL, STB_WEAK etc> How does this sound? PL Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D60974/new/ https://reviews.llvm.org/D60974 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits