According to Agner Fog, "...you must make sure that all calls
are matched with returns. Never jump out of a subroutine without
a return and never use a return as an indirect jump."

(see paragraph 3.15 in microarchitecture.pdf and
examples 3.5a and 3.5b in optimizing_assembly.pdf)

Basically this patch replaces
                call    .get_eip0
        .get_eip0:
                pop     eax

with

                call    .mov_eip_to_eax
        .get_eip0:

and

        .mov_eip_to_eax:
                mov eax, [esp]
                ret

Attachment: get_eip.diff
Description: Binary data

_______________________________________________
flac-dev mailing list
flac-dev@xiph.org
http://lists.xiph.org/mailman/listinfo/flac-dev

Reply via email to