You Need to define all segments as public. Only then will they combine.
They are declared as public. The weird thing is the various types of text segments. From the map file,
Segment Class Group Address Size
======= ===== ===== ======= ====
TEXT32 CODE CGROUP 0001:00000000 009fe590
________TEXT CODE CGROUP 0001:009fe590 00000000
text CODE AUTO 0002:00000000 000ca2cb
DATA32 DATA DGROUP 0003:00000000 0001d990
Aout gives,
TEXT32 CODE CGROUP 0001:00000000 00bd1560
________TEXT CODE CGROUP 0001:00bd1560 00000000
DATA32 DATA DGROUP 0002:00000000 00015a20
Note that the DGROUP ends up in segment 0003.
The other question is, does it matter?
It does not seem to matter. At least the AVCODE65 that I use has only 2 segments: a CODE segment and a DATA segment.
You can check with THESEUS: System->Modules->AVCODE65->double click one MTE @
The AVCODE65 that I used was installed via RPM from the Netlabs repo.
But you can also enforce that differents segments go into the same group:
CGROUP GROUP ________TEXT,TEXT32,text
put that in an assembler file that is linked, preferably the one for the first obejct file to be linked.
You might get warnings like the one you posted but if it is the FIRST object file to be linked it will take precedence over everything that follows :-)
By the way: I very much doubt that our OS/2 tools can do anything else but the OMF and the AOUT format. I used nasm without the -f switch and that worked right out of the box. Which means that in this case it produces OMF format.