Hi, I am trying to understand a particular program-crash i am looking at now, coming from libpthread.so library in ARM. I am using NPTL and glibc 4.2.1 >From stack-trace , i figured that pthread_self() is being called. >From source, I saw that this calls __builtin_thread_pointer(). This function has been synthesized in gcc-source by a macro. The assembly of the function __builtin_thread_pointer() ( from objdump of lib ) looks like mvn r0, 0xF000 sub pc, r0, 0x1F8 This does not make sense. I thought of the possibility thagt maybe this is a address-value which gets relocated, but this is text-region of a shared library ( libpthread) and so is not relocated. I have 2 questions - a) What is the meaning of the above asm code ? b) As the program branches to invalid address 0xE8 somewhere after pthread_self( ), what could be wrong ? I guess this is some kind of TLS-data corruption. I would be reading about TLS in ARM tomorrow. Thanks