Open wuyao721 opened 1 year ago
`template
if(start) goto Start;
//This line of code will not be executed.
//The purpose of the code is to allow the compiler to generate the assembly code that calls the constructor.
{
T();
Call_dtor:
;;
}
Start:
//The address of the line of code T() obtained by assembly
char p = (char)&&Call_dtor;//https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
//CALL rel32
void ret = 0;
char pos;
char call = 0xe8;
do{
pos = p;
if(pos == call)
{
ret = p + 5 + ((int)(p+1));
}
}while(!ret&&(--p));
return ret;
} `
这只支持x86是吧。arm的call指令不是0xe8吧。
是的,只支持x86 @wuyao721
arm platform contructor stub across segmentation fault
test for windows + docker, success test for mac(arm) + docker, fails, segment fault when contructor called
I guess function get_dtor_addr may have bug.