Can you help me?

Niko Matsakis niko@alum.mit.edu
Fri Apr 15 12:06:00 GMT 2005


I think he is asking if you could point out the file in the gcc source 
code which contains the code which causes the "sub" instruction which 
establishes the stack frame to be inserted.

To wyj-me: I don't know the answer, but I doubt there will be one file. 
  Probably there is some file which computes the size that the stack 
frame for the function ought to be, taking into account all variables 
and determines where on that stack frame they lie, and a separate file 
that emits the prologue for the function.   Or at least separate 
subroutines.


Niko

On Apr 15, 2005, at 12:52 PM, Brian Budge wrote:

> Hi there -
>
> I could be wrong, but in this case the variable "buf" is being placed
> on the stack.  The sub instruction is being used to move the stack
> pointer.  No library call is being made.
>
>   Brian
>
> On 4/15/05, wyj-me <wyj3390@ercist.iscas.ac.cn> wrote:
>> Dear friend,
>>         First of all, thank you for reading my letter.
>>         I am a student.When I do researches about the buffer 
>> overflow, I meet a question and want to get your help.Please permit 
>> me to illustrate it with the following example:
>>         First, provided we have such a simple program named as 
>> test001.c.
>> -------------------------------
>> int main()
>> {
>>         char buf[10];
>>         int  i;
>>
>>     i=0;
>>         return 1;
>> }
>> -------------------------------
>>         If we compile the program with the command: gcc -S test001.s 
>> test001.c, show the content of the test001.s, we can get the 
>> following:
>> -------------------------------
>>         .file   'test001.c'
>>         .text
>> .globl  main
>>         .type main,@function
>> main:
>>         pushl   %ebp
>>         movl    %esp,%ebp
>>         subl    $40,%esp
>>         andl    $-16,%esp
>>         movl    $0,%eax
>>         subl    %eax,%esp
>>         movl    $0,-28(%ebp)
>>         movl    $1,%eax
>>         leave
>>         ret
>> .Lfel:
>>         .size main,.Lfel-main
>>         .ident  'GCC(GNU)3.2.2 20030222(Red Hat Linux(3.2.2-5)'
>> --------------------------------
>>         From the above, we can know that the instruction 'subl 
>> $40,%esp' is used to allocate the space for the buf[] and i. My 
>> trouble is that I don't know in which function the 'subl $40,%esp' is 
>> introduced. Now I want to add some instructions before
>> the 'subl $40,%esp' to set some flags to indicate the end of the 
>> string. I hope you can tell me which sourcecode file I should look 
>> through among so many sourcecode files with the gcc tool.
>>         Thanks again.
>>         Look forward to your answer.
>> Sincerely,
>>                                                                       
>>                                                                       
>>             Yejun Wang
>>
>>
>> wyj-me
>> wyj3390@ercis.iscas.ac.cn
>> 2005-04-15
>>



More information about the Gcc-help mailing list