如何在LLVM中实现这一点?

时间:2015-07-29 02:10:13

标签: pointers compilation llvm elf

我需要LLVM在特定区域为我更新一些指针。假设我可以使用pragma为这些区域的编译器提供附加信息。在生成输出(共享对象/可执行文件)时,LLVM可以将以下逻辑修改为第二个片段吗?

原始摘录:

char A[100];
....
char B[100];    
.....

#pragma CHANGE_A_TO_B

A[1] = 1;
A[100] = 100;

输出应该等于

的逻辑
char A[100];
....
char B[100];    
.....

/* LLVM must copy the contents and update pointers of A to B */    
strcpy(B,A); 

B[1] = 1;
B[100] = 100;

1 个答案:

答案 0 :(得分:0)

可以吗? 可以做到。

你将被取代 %store i32 1, %A 或类似的一些bitcast版本 %store i32 1, %B

查看一些基本的llvm传递来更改和创建IR指令。

如果依赖项并不复杂,你可以使用一些脚本(perl或其他东西)来替换正则表达式。