This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Output sections


Mohamed Shafi wrote:
> 2009/8/1 Dave Korn <dave.korn.cygwin@googlemail.com>:
>> Mohamed Shafi wrote:
>>> I am looking for adding something to the end of each section in the
>>> generated .s file. Using TARGET_ASM_NAMED_SECTION i will be able to
>>> keep track of the sections that are being emitted. But from
>>> TARGET_ASM_FILE_END hook how can i re-enter into each section. Are the
>>> sections stored in some global variable?
>>  I'm not sure I understand the question.  You "enter a section" simply by
>> emitting the correct .section directive into the asm output.  You re-enter it by
>> the same method.

> Ok, Then i don't understand your solution.

  Ah, it looks like I didn't quite understand your problem.

>>> you could use the TARGET_ASM_FILE_END hook to output
>>> directives that re-enter each used section and then output your new directive.
> 
> if i want to do the following in the assembly output
> 
> section .code
> .....
> .....
> ......
> section_end

  I thought you just wanted to have

   .section .code
   section_end
   .section .data
   section_end

... etc. for all used sections, at the very end of the file; after all, all the
contributions to a section get concatenated in the assembler.  Now you seem to
be saying that you want to have multiple section_end directives throughout the
file, every time the current section changes.

> you are saying that if i emit a section directive the compiler will
> switch to the previously emitted section and then i have to somehow
> seek to the end of that section and emit my 'section_end' directive?

  I think you may need to re-read the assembler manual about sections, you are a
little confused about the concepts.  The compiler doesn't really "switch"
anything; the compiler emits ".section" directives, in response to which the
*assembler* switches to emit code in the chosen section.  The compiler doesn't
keep track of sections; it just randomly emits directives for whichever one it
wants the assembly output to go into at any given time, according to whether
it's generating the assembly for a function or a variable or other data object.

    cheers,
      DaveK


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]