Patch proposal: ARM MC relocations

Hi all,

I did some changes to the AsmPrinter in order to print relocation information in GAS format compatible with ARM ELF. It doesn’t look like the best solution, but there were some problems and the fact that this is my first attempt to change LLVM.

My original assumption was that, changing MCExpr to accept relocation information, we could propagate that down later to whatever gets written from it. To change that, one needs to overwrite the LowerConstant function in AsmPrinter, but that’s a static function that rely on other static functions in the same file. Also, ARMMCInstLower (my first guess) seems to have not being used to generate anything.

I know that MC is radically changing the area as we speak, so I also didn’t want to spend too much time on something that will disappear in a few months. I’m happy to conform to the new specifications if there is one and it works for ARM.

In the end, the change I had to do was simpler, less generic and a bit hacky, so I’m sending this patch to the list (instead of the patch list directly) to request for comments. The patch applies to the trunk (a few minutes ago).



arm-relocation.patch (3.15 KB)


Is there any interest in this patch? Is there any better way of doing this (that will be accepted mainstream)?

I noticed my cast check was wrong (LLVM cast asserts, rather than return a null pointer). Also, including ARMMCRelocation.h, that defines the relocation types (missing from last patch, sorry).



arm-relocations.patch (3.24 KB)

ARMMCRelocation.h (1.94 KB)