Subject: Re: Assembly Language Programs
To: Alessandro Coppelli <coppelli@dsea.unipi.it>
From: der Mouse <mouse@Rodents.Montreal.QC.CA>
List: tech-kern
Date: 04/12/2006 05:06:01
[I was going to move this to tech-userlevel, since it is mostly a
userlevel issue, but it seems the kernel is involved in that emulations
appear to be relevant.  So I'm just adding tech-userlevel; please
remove one or the other if you're replying to just one aspect.]

> I am interested to developing a little
> assembly language programs.

> I [read] the article written by Thomas Sommers
> ( http://user.nj.net/~tms/hello.html )
> I followed author's instructions but at the end of compilation

>    as -o <name>.o <name>.s
>    ld -o <name> <name>.o

> what I have is

>   #./<name>
>   #  Segmentation fault ( core dumped )

>   Someone knows what is happenig ?

The article says it's for FreeBSD, but you're using NetBSD.  This
strikes me as the most likely underlying problem.

Looking at the code, there is nothing obviously wrong with it, though.
I find that when I try it, it simply exits, without a coredump.
Running it under ktrace reveals that it is being mistaken for a Linux
executable:

 12754 ktrace   CALL  execve(0xbfbfd4ac,0xbfbfd938,0xbfbfd940)
 12754 ktrace   NAMI  "./z"
 12754 z        EMUL  "linux"
 12754 z        RET   oldolduname -1 errno -2 No such file or directory
 12754 z        CALL  write(0xbfbfdff0,0,0)
 12754 z        RET   write -1 errno -9 Bad file descriptor
 12754 z        CALL  exit(0xbfbfdff0)

Why it isn't behaving this way for you is a good question.  Perhaps
it's a NetBSD version difference (what version are you using?), perhaps
it's your kernel (do you ahve COMPAT_LINUX turned on?)....

I suspect there may be missing .note sections or some such.

/~\ The ASCII				der Mouse
\ / Ribbon Campaign
 X  Against HTML	       mouse@rodents.montreal.qc.ca
/ \ Email!	     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B