I have some gnu assembler code for the x86_64 architecture generated by a tool and there are these instructions:
movq %rsp, %rbp
leaq str(%rip), %rdi
callq
callq refers to a relocatable call in shared libraries/dynamic libraries. The idea is push 0, then push the symbol of to search then call a function so search for it on the first call. In the relocatable table of the program, it replaces the call to the actual location of the function on the first call of the function. Subsequent calls refer to the relocation table that was created at run time.