Using C on x86-64, why emit .text for global data?
Bob Plantz
rgplantz@outlook.com
Sat Sep 28 02:50:00 GMT 2019
Thank you, Jim.
So I guess I can conclude that when writing directly in assembly language, I don't need that extra .text. I'm sure that if I do something wrong with the various directives (.section .rodata, .data, .globl, .comm, etc.) the assembler and loader will tell me. It's just that this is for a book I'm writing, so I wanted to make sure I understand the situation to avoid saying something stupid in print.
Bob
> -----Original Message-----
> From: Jim Wilson <jimw@sifive.com>
> Sent: Friday, September 27, 2019 6:57 PM
> To: Bob Plantz <rgplantz@outlook.com>
> Cc: gcc-help@gcc.gnu.org
> Subject: Re: Using C on x86-64, why emit .text for global data?
>
> On Fri, Sep 27, 2019 at 10:44 AM Bob Plantz <rgplantz@outlook.com> wrote:
> > Why does gcc emit an extra .text before the global data?
> >
> > .file "globalData.c"
> > .text
> > .globl x
> > .data
>
> Compile an empty file, and you will see that it starts with the same two lines.
> This probably just simplifies logic somewhere else in the compiler to force
> the assembler into a known state at the beginning, regardless of what is
> actually in the C file. There is no harm in emitting an extra unnecessary .text
> directive to the assembler.
>
> Jim
More information about the Gcc-help
mailing list