Normally when I include a header like <iostream> I get a huge amount of code pulled in. If these are headers, why aren't they expanded like <iostream>?
There not files. They're markers to show where the definitions have come from. In a sophisticated build environment, it's not always clear what's defined where.
Well, you posted about what the CPP does and asked, "What are 'built-in' and 'command-line'?" and, "If these are headers, why aren't they expanded like <iostream>?". The link I gave you answers those questions directly. What exactly did I miss?
I read through it again but I don't see what I could gather from it. The lines in question do follow the form of #linenumber filename, but 'built-in' and 'command-line' aren't file names.
It also says that "all preprocessing directive lines have been replaced with blank lines". There are no blank lines corresponding to all the <built-in> and <command-line> #defines.
What you have, as explained at the bottom, are directives to the GCC explaining where to get information. This is the limit of my knowledge about it, but it is a very good starting point to learn more.
My guess is that you #include <iostream> , for example, and the CPP turns it into what you see. I'm not even going to bother testing my hypothesis, because right or wrong I just don't care more than that. You'll have to dig down in GCC documentation and/or source to learn more.