Getting the instruction pointer on a per arch basis

From: Nick Desaulniers
Date: Tue Jul 31 2018 - 18:32:45 EST


I'm currently looking into cleaning up the code duplication between
current_text_addr() and _THIS_IP_, virtually every implementation of
current_text_addr() and _THIS_IP_ itself are basically:

#define _THIS_IP_ ({ __label__ _l; _l: &&_l; })

For a few arch's, they have inline assembly instead (for
current_text_addr()). Examples:
* s390
* sh
* ia64
* x86 (um and 32b)
* c6x
* sparc

I have a patch that cuts down on the duplication, but I don't
understand why the few arch specific implementations are necessary. I
could reduce the duplication further if it's ok to just use the
statement expression.

Does anyone know why this is the case?
--
Thanks,
~Nick Desaulniers