Как я понял, неправильно генерится функции, из которой вызывается виртуальная (девиртуализованная), раз перед ret rsp не равен rsp на входе. Затиранием стека этого не добьёшьс...
"Выяснил, что на фрейме этой функции есть две инструкции sub $8,%rsp и только одна add $8,%rsp." А push и pop?
Что вы уже знаете и на какой версии стандарта хотите потом писать? Насколько глубоко хотите разобраться? Нужно ли метапрограммирование? Нужна ли книга по стандартной библиотек...
а что вообще в этой функции есть? только печать строчки?