I'm reading the glibc source code, trying to debug a deadlock.
In my stack trace, I see:
#0 0x00007ff58b449eec in __lll_lock_wait_private () from /lib64/libc.so.6
#1 0x00007ff58b3bda31 in _L_lock_423 () from /lib64/libc.so.6
#2 0x00007ff58b3bbca8 in __GI__IO_link_in () from /lib64/libc.so.6
#3 0x00007ff58b3bab92 in __GI__IO_file_init () from /lib64/libc.so.6
But looking through the code, the only reference to _L_lock_
is in the macro lll_lock
in lowlevellock.h
.
There I see a string inside an inline assembly statement:
".type _L_lock_%=, @function\n"
This somehow becomes the function _L_lock_423
in my call stack. Where does the 423
appear from? What is the %=
notation? what does %= mean in assembly?