I am trying to use this code to allocate a slice of code to a independent section:
#ifdef _MSC_VER #pragma section(".evil",execute) #pragma code_seg(".evil") #endif #ifdef __GNUC__ static __attribute__((section (".evil"))) #elif defined _MSC_VER static __declspec(allocate(".evil")) #endif void __invoke__start() {//... But that does not work and the compiler says
The __declspec( allocate()) syntax can be used for static data only.
I do this because I have to write some code to a new file ,and that file is a executable file.
Actually I can not find a way to get the exact address of a function in the memory when the program is running,if the program is compiled with MS VC++ debug mode For a full example,please see this code : full example
Now, the above problem has been solved, but I still want to make it clear that if it is possible to put some code to a independent section. There's other benefit when it is possible for my work, after all.
When I link two object file (COFF format), how can I make sure different code from different obj file will be in different section? Or is there another way to do this?
I am so sorry for my poor English.