I compiled an example using printf("a") with -S and got call putchar in the assembly code.
Looks like when you have only one char in the printf the compiler turns it into a putchar().
I did another example using printf("ab") and got call printf, with the text section in the %edi register.