2

I'm using LLVM and Clang to generate assembly listing from .c file. Instructions are printed correctly, but in the beginning and in the end LLVM-Clang inserts default directives incompatible with my architecture. I overrode AsmPrinter class to get own directives, but I succeeded only in adding new directives not in replacing them. For instance:

MyAsmPrinter.c:

class MyAsmPrinter : public AsmPrinter { 
...
    void EmitStartOfAsmFile(Module &M) override;
    void EmitEndOfAsmFile(Module &M) override;
...
}

void MyAsmPrinter::EmitStartOfAsmFile(Module &M) {
    <--- insert something (A)
}

void MyAsmPrinter::EmitEndOfAsmFile(Module &M) {
    <--- insert something (B)
}

clangtest.c:

int main() 
{
  int a, b;
  b = 3;
  a = b*b;
  return a;
}

I type:

./bin/clang -target mytarget -S clangtest.c -o test.s

And get

.text
<--- (A goes here)
.file   "clangtest.c"
.globl  main
.type   main,@function
    main:
    (correct asm code here)
.Ltmp0:
    .size   main, .Ltmp0-main


.ident  "clang version 3.6.0 ..."
.section    ".note.GNU-stack","",@progbits
<--- (B goes here)

But I want to get rid of ".text", ".file" and ".ident" at all. Where they get inserted anyway? I tried googling it, greping source code for other targets and LLVM source code, but found nothing. So, could anyone give me a hint how to do this?

Cœur
  • 37,241
  • 25
  • 195
  • 267
  • Related: Matt Godbolt has written nice filters to filter out "boring" asm lines, instead of modifying compilers to not print them in the first place.[How to remove “noise” from GCC/clang assembly output?](https://stackoverflow.com/questions/38552116/how-to-remove-noise-from-gcc-clang-assembly-output) – Peter Cordes Apr 09 '18 at 06:13

0 Answers0