Can you help me?

Brian Budge brian.budge@gmail.com
Fri Apr 15 12:12:00 GMT 2005


Rightio :)  I guess that's what 2 hours of sleep gets you ;)

On 4/15/05, Niko Matsakis <niko@alum.mit.edu> wrote:
> 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