¿Es posible llamar a una función y almacenar su valor de retorno en el siguiente marco de pila?
Entonces:
call foo(); // int foo();
store return value of foo in next stack frame;
call bar(int);
Ciertamente, puedes hacer tal cosa si controlas dónde se insertan los valores en la pila, lo que supongo que no es el caso.
Si no lo haces, entonces depende del código de foo y bar, ya que son los que ejecutan el código. Si están escritas correctamente, deberían ser independientes y usted no puede hacerlo.
Sin embargo, puede intentar encontrar gadgets que le permitan acceder al valor de retorno ya introducido de foo () e intentar copiarlo en el lugar adecuado antes de llamar a la barra ().