To avoid misunderstandings, I'll try to explain what I meant.
The test1.exe is supposed to contain debugging information, which it does, that is ok.
The test2.exe is in my oppinion is also supposed to contain debugging information, it 'sort of' does, but there is some problem with it.
The test3.exe is not supposed to contain any debugging information, it doesn't and that is ok.
I looked inside the .exe files, I am not that familiar with tcc internals, but if I understand it correctly, then in test2.exe the debugging information section (symbol table) is present but for some reason it is empty.