Tinco Andringa
2012-Nov-19 00:29 UTC
[LLVMdev] Emitting an extra section with meta-information
Hi LLVM developers, tldr: what kind of pass should I use when I want to read IR information + mangled names, that can add a section to the final object file? I have the following plan: collect all IR symbol information (global variables, public functions, types), serialize this into some nice protocol and then append it to assemblies in a section. The idea is to make it possible to link two of these IR-annotated assemblies without the need for language specific header files. So for Clang it might mean that if we introduce a new C keyword like "using 'object.o'" it would be able to link to object.o without the need for a header file. Now this is all fine, and probably way too ambitious and much work, but I'd like to start small and just find out how I could emit an extra section, and put some information about the code in there. I think I have to put this in a CodeGen pass, but it seems all CodeGen passes must inherit from MachineFunctionPass, which only gets called for MachineFunctions, which I think I don't want. Ideally my pass would be a ModulePass. All information I need is what public functions are there, what public variables/constants are there, what are their types, what are their names, and what are their mangled names (for looking them up in the symbol table, alternatively their relocatable addresses, but that would probably complicate things). So my question would be, what kind of pass would I have to define to read IR information + mangled names, and to write a new section to the object file? Thanks in advance, Tinco
Maybe Matching Threads
- [LLVMdev] [cfe-dev] RFC: A Great Renaming of Things (or: Let's Repaint ALL the Bikesheds!)
- [LLVMdev] [cfe-dev] RFC: A Great Renaming of Things (or: Let's Repaint ALL the Bikesheds!)
- storing MBB MCSymbol in custom section
- [LLVMdev] [cfe-dev] RFC: A Great Renaming of Things (or: Let's Repaint ALL the Bikesheds!)
- [LLVMdev] Emitting switch table data to section (previously - subclassing MCELFStreamer)