It has a directive, .unixorder, that GAS doesn't know (nor do I)...
JJ
/bin/as
> It has a directive, .unixorder, that GAS doesn't know (nor do I)...
>
man as
I would not use gas to assemble Coherent kernel assemble sources.
Although build makefiles contain gcc calls, and one could try to build
kernel using command :
make gcc
instead of
idbld
but I have never succeeded to build working kernel with it.
But good luck.
I think that the default assembler (the one used by the C compiler,
whichever it is) has the same path in nearly all UNIX-like OSs (in my Linux
system, GAS command is accessible at /usr/bin/as, though)...
This doesn't help very much, however...
Anyway, I've discovered that it is called "Coherent Macro Assembler"...
>> It has a directive, .unixorder, that GAS doesn't know (nor do I)...
>
> man as
GAS doesn't understand that directive.
And it's not GAS syntax. In GAS syntax, comments start by #, but in the
assembly source files of the kernel, comments start by /.
And the syntax for symbolic constants, macros, etc, is very different to
the one that GAS uses...
> instead of
>
> idbld
I don't know this command...
A Search using the Google told me that it's Coherent-specific...
> but I have never succeeded to build working kernel with it.
> But good luck.
Have you ever succeeded to build a working kernel in any operating system
other than Coherent? (I know that first I would need to re-target gcc, and
binutils so that they created coff binaries - something that I've not done yet)
If not, then what version of coherent do you usually run, and what's the
processor of the machine where you usually run it and compile the kernel...
Now, another point, where did you get the kernel sources? I found them in
http://www.tliquest.net/unix/Other/Coherent/ ...
I've been studying those sources. There is something that doesn't make
sense to me... Go to the file i386/k0.s. There are many symbols referenced
by this file that are not defined anywhere else... One of them is
"syscall_386" which is the system call entry point and is vital... (the
routine can be easily re-written, but it's not the only one that is absent)
Your rescue floppy has a file with a symbol map in the root. That symbol
map lists the symbol...
JJ
Joao,
Coherent assembler is in the file /bin/as .Basta.
It is not true , that assembler has the same path in nearly all UNIX .
Linux is not UNIX first off all, but can be considered Unix like. In
Solaris , which is true UNIX (in the sense of Open Group certfication
,yes it requires certification to be able to use UNIX word) the
assembler is in /usr/ccs/bin or something like that etc.
In fact it does not matter where it is located, it is enough it is in
PATH usually .
But You can copy /bin/as to /usr/bin if You want.
It is not called Macro assembler but Mark Williams 80386 assembler(see :
as -V). Of course it has support for macro facilities.
>
>>>It has a directive, .unixorder, that GAS doesn't know (nor do I)...
>>
>>man as
>
>
> GAS doesn't understand that directive.
Why should gas understand it ?
> And it's not GAS syntax.
Of course, it is Coherent as syntax.
In GAS syntax, comments start by #, but in the
> assembly source files of the kernel, comments start by /.
So You know now , they are different.
It means You have to modify assembler sources if You want to use gas.
If there is a special reason You want to use gas.
> And the syntax for symbolic constants, macros, etc, is very different to
> the one that GAS uses...
>
Had You read the manual (man as) You would notice, that it is obvious.
Coherent as is not compatible to gas.
Why should GAS understand Coherent as directives ?. Coherent as is
rather old and older than gas and "was trying" to be comaptible to unix
dialects at that time, and for sure not to Linux.
gas came later and as You know Linux had never an ambition to be true
UNIX, at least in the past,ask Linus and GNU people for competent
answer.It was IBM and Novell or SiliconGraphics which made Linux more
Unix, see the SCO problem.
Notice, that gas is a part of GNU binutils, and GNU means N(NOT)U(UNIX).
>
>>instead of
>>
>>idbld
>
>
> I don't know this command...
> A Search using the Google told me that it's Coherent-specific...
Of course it is Coherent specific, but it does not matter.
I thought that we are talking about something specific , namely Coherent.
I thought You are really using Coherent.BTW I have mentioned this
command in the special post in this group recently. You should first of
all search this group and then Google.
In any case if You want to build Coherent kernel, it is the best command
to do it.Better than idmkcoh mentioned in manual.
>
>
>>but I have never succeeded to build working kernel with it.
>>But good luck.
>
>
> Have you ever succeeded to build a working kernel in any operating system
> other than Coherent?
In the past for Linux , yes , many times with lot of pain, for RedHat
mostly.And of course for NetBSD many times, as I used it once , I was
building it many times from sources, it works fine.Now we can do it with
OpenSolaris, I have not tried it yet.
(I know that first I would need to re-target gcc, and
> binutils so that they created coff binaries - something that I've not done yet)
Wait a moment. It would suggest , that You are not using Coherent ?
You are probably meaning cross-compile , it is quite another song.
I was meaning building Coherent kernel using gcc(for example 2.56/9 from
MWC), but under running Coherent system, not in another OS like Linux.
Because Coherent build makefiles contain gcc calls, it means MWC has
tried to do it , but under Coherent itself, not in the cross-compile
environment.
It means using gcc is possible also under Coherent, and not only in
cross-compile environment, as You suggest, You do not need to re-target
gcc,it is already one(but old) available.
But of course cross-compile development is possible.It is not extremely
difficult in principle.
I have a working experience with it, but I have not tried to do it with
Coherent kernel.If You want to try then good luck.
You will have to rewrite assembler code for example or replace it with C
code.
> If not, then what version of coherent do you usually run, and what's the
> processor of the machine where you usually run it and compile the kernel...
>
I have described it many times in this group :
check
http://www.landibase.com/coherent.html
http://main3.amu.edu.pl/~apopiele/embed.html
I am using only 4.2.10
>
> Now, another point, where did you get the kernel sources? I found them in
> http://www.tliquest.net/unix/Other/Coherent/ ...
These are the last sold version 4.2.14.
I cannot say nothing where they come from and what is their status.
I have original 4.2.10/12 sources from Bob Swartz.
He sent a post recently, You can try to contact him.
> I've been studying those sources. There is something that doesn't make
> sense to me... Go to the file i386/k0.s. There are many symbols referenced
> by this file that are not defined anywhere else...
It makes all sense. You should be simply more careful in reading.
For sure they are defined somewhere.
Do not be afraid, one day You will find it.
Sorry I do not have time to help You in Your understanding the Coherent
sources.
One of them is
> "syscall_386" which is the system call entry point and is vital... (the
> routine can be easily re-written, but it's not the only one that is absent)
> Your rescue floppy has a file with a symbol map in the root. That symbol
> map lists the symbol...
All symbols in the map must be defined somewhere, otherwise the kernel
build would crash.
>
> JJ
Have a fun with a Coherent.I wish I had more time for it.There are so
many other very interesting things around.
Andrzej
>
>
> These are the last sold version 4.2.14.
Not quite true, the last sold version was 4.2.12.
4.2.14 was being prepared to be released. So there is no warranty, that
it is production ready. I suspect not.
There were some posts in this group in the past concerning
problems/solutions with building kernel and using system built with this
source tree.
Andrzej