This is the mail archive of the cygwin mailing list for the Cygwin 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: Assembly language exit() syscall does not return correct value


On 15/03/2010 16:56, Christopher Faylor wrote:
> On Mon, Mar 15, 2010 at 04:23:39PM +0000, Brandon Chase wrote:
>> The following program is supposed to return a value of 222 when echo $? 
>> run, but I get 127 every time, no matter what I change. I have looked 
>> around but cannot seem to find out if this is an error or a 
>> cygwin-specific value.

> # %ebx is the status code for the exit system call
> # and it already has the maximum number
> 	movl $1, %eax			#1 is the exit() syscall
> 
> If, in theory, I got this right then, on linux it SEGVs.  I would
> not expect anything different on Cygwin.  It seems like you need
> to actually call exit() if you want this to exit.

  Yeah, this looks like it was Linux assembly code and the "int 0x80" has just
been removed.  What you said.  Also, it should probably define '_main' rather
than '_start'.  And use the gcc driver to assemble and link it so as to get
the necessary startup code.

  Brandon, Cygwin isn't compatible with Linux at the assembler-code level, in
particular Cygwin isn't a real kernel, so it doesn't have a syscall interface;
you just call system functions as if they were ordinary functions.

    cheers,
      DaveK

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


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