www.digitalmars.com         C & C++   DMDScript  

c++.dos.16-bits - Problem with optlink/dmc and absolute segments

reply Carlos Rodriguez <Carlos_member pathlink.com> writes:
Hello, I'm trying to build an almost-ROMable program, but I have some trouble
linking it: optlink says:
"Error 18: GROUP cannot be both relocatale and absolute : DGROUP"

I have written a custom startup module, where all segments are defined with
desired absolute addresses, and it is the first file input to the linker; I also
have a couple more files written in assembler, and there is no problem with
them.

But when it tries to link an obj file generated from a C source, that error
appears, so I think I'm missing something with the compiler; the command line
I'm using is:
dmc -3 -c -A -msuw -a1 -r -R -Nc -Ns -NL -HS -Mc -ostartup_c.obj startup_c.c

As you can see, standard libraries are omitted, as in the linker:
link -BINARY -DOSSEG -NOD -FIXED ....

So, simplifying: how can I set up the compiler so it generates non-relocatable
code?

Thanks..
Jul 31 2003
parent reply "Walter" <walter digitalmars.com> writes:
The easiest way is go ahead and generate an 'MZ' executable which contains
relocation information, and then run a 'locater' program on the result,
which will bind it to a particular address and output the data in a form
suitable for downloading to a ROM programmer.

"Carlos Rodriguez" <Carlos_member pathlink.com> wrote in message
news:bgcetl$26ul$1 digitaldaemon.com...
 Hello, I'm trying to build an almost-ROMable program, but I have some

 linking it: optlink says:
 "Error 18: GROUP cannot be both relocatale and absolute : DGROUP"

 I have written a custom startup module, where all segments are defined

 desired absolute addresses, and it is the first file input to the linker;

 have a couple more files written in assembler, and there is no problem

 them.

 But when it tries to link an obj file generated from a C source, that

 appears, so I think I'm missing something with the compiler; the command

 I'm using is:
 dmc -3 -c -A -msuw -a1 -r -R -Nc -Ns -NL -HS -Mc -ostartup_c.obj

 As you can see, standard libraries are omitted, as in the linker:
 link -BINARY -DOSSEG -NOD -FIXED ....

 So, simplifying: how can I set up the compiler so it generates

 code?

 Thanks..

Jul 31 2003
parent reply Carlos Rodriguez <Carlos_member pathlink.com> writes:
Ok, I have only found Paradigm's locater, but I'm not sure the evaluation
version will work as I expect... (maybe it is too limited) do you know any other
locaters I could use? (while waiting for Paradigm to send me their eval.
package)

BTW, I know GNU's linker, ld, can do this, but I'm almost sure it cannot handle
16 bit code, am I right?

Thanks again!

In article <bgcj5c$2aqq$1 digitaldaemon.com>, Walter says...
The easiest way is go ahead and generate an 'MZ' executable which contains
relocation information, and then run a 'locater' program on the result,
which will bind it to a particular address and output the data in a form
suitable for downloading to a ROM programmer.

"Carlos Rodriguez" <Carlos_member pathlink.com> wrote in message
news:bgcetl$26ul$1 digitaldaemon.com...
 Hello, I'm trying to build an almost-ROMable program, but I have some

 linking it: optlink says:
 "Error 18: GROUP cannot be both relocatale and absolute : DGROUP"

 I have written a custom startup module, where all segments are defined

 desired absolute addresses, and it is the first file input to the linker;

 have a couple more files written in assembler, and there is no problem

 them.

 But when it tries to link an obj file generated from a C source, that

 appears, so I think I'm missing something with the compiler; the command

 I'm using is:
 dmc -3 -c -A -msuw -a1 -r -R -Nc -Ns -NL -HS -Mc -ostartup_c.obj

 As you can see, standard libraries are omitted, as in the linker:
 link -BINARY -DOSSEG -NOD -FIXED ....

 So, simplifying: how can I set up the compiler so it generates

 code?

 Thanks..


Aug 01 2003
parent "Walter" <walter digitalmars.com> writes:
"Carlos Rodriguez" <Carlos_member pathlink.com> wrote in message
news:bgdj5d$7r3$1 digitaldaemon.com...
 Ok, I have only found Paradigm's locater, but I'm not sure the evaluation
 version will work as I expect... (maybe it is too limited) do you know any

 locaters I could use? (while waiting for Paradigm to send me their eval.
 package)

Datalight used to sell one called 'Blaze'. I have no idea if I have a copy left anymore <g>.
 BTW, I know GNU's linker, ld, can do this, but I'm almost sure it cannot

 16 bit code, am I right?

Yup.
 Thanks again!

You're welcome.
Aug 01 2003