home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 8
/
FreshFishVol8-CD1.bin
/
gnu
/
man
/
cat1
/
hunk2gcc.0
< prev
next >
Wrap
Text File
|
1993-12-07
|
4KB
|
83 lines
Although I always said, I'll never provide BLINK support for gnu-ld, I sort
of did now. This converter (hunk2gcc) allows you to
o convert object files in hunk form into a.out object files
o convert ALINK style (ie. concatenated) libraries into a collection of
a.out files, that you later can move into an archive with `ar'
Since I don't yet have a 3rd edition of the AmigaDOS manual (sigh, I wonder
whether our dear book stores manage to get a copy still this year;-() [they
didn't, it's now April'92 ;-((] I didn't have documentation for the new
hunk types dealing with base relative addressing. I tried to implement
them based on how the non base relative types work, don't know if I did it
right. Ld does now support base relative symbols, but since I don't have
any hunk format object files containing base relative relocs, I can't
really verify that hunk2gcc translates them correctly (I doubt it does...).
If you find out what needs to be changed, please tell me, I'd like hunk2gcc
to be able to convert small data libraries just as well as it can now
convert large data libraries.
I wrote this converter mainly because I didn't like the idea of
disassembling and reassembling amiga.lib, and I really wanted to use those
commodities support functions;-) I tested the converter on amiga.lib, and
(besides generating huge disk traffic...) it seemed to work, at least those
programs I used the library with seem to work as they should.
However, I really don't have the necessary amount of object files and
libraries in this format to decide whether I missed one or two cases, so
please tell me about bugs you find.
For the new HUNK_INDEX and HUNK_LIB types: I asked a friend (that
amazingly got his copy of the 3rd edition somewhere from outer space I
guess;-)) just how I should skip them cleanly.. It turned out that those
hunks are not just additions to the existing hunks, they really replace the
old style hunks, and I just didn't see a reason why I should support this
ugly (IMHO) construction, overall librarians that generate such libraries
should be able to generate oldstyle ALINK libraries as well.
How to use this tool
--------------------
Best thing is, make a new directory where you want your converted object
files to go, cd into it, and enter
hunk2gcc commo:amiga.lib [..further libs if you like..]
This generats an a.out object file for every program unit present in the
hunk file (in this case, from amiga.lib).
I first wanted to use the name of the program unit for the name of the
object file, but soon saw that those names are rarely to never useful, they
often aren't even set, and sometimes (hi SAS..) even contain `.c' names,
not right what you usually want as object file;-) Names that are used now
start with `obj.', followed by a serial number, followed by a pattern
built from the task address, such that the generated name is unique and
doesn't overwrite any existing file.
As the final step convert all those files into an a.out style library by
issuing:
ar qc libamiga.a obj.*
ranlib libamiga.a
The ranlib run builds a symbol table in the archive, and makes accesses to
the library much faster.
If you just want to convert a single object file, you might give it a
nicer name after the conversion ;-)
So... all you SAS users, switching to gcc was never easier! You can still
use your libraries, just take the large-model/non-regpar libraries, convert
them with oml into oldstyle libraries or just extract all files and run
hunk2gcc over them with `hunk2gcc *'. You can then start to use the new
driver that calls ld instead of ln (or blink, if you used the BuRP driver),
and got your proper gcc environment.
HAVE FUN!
Markus Wild
PS: Please read the header of hunk2gcc.c for copyright/disclaimer.
You can reach me as <wild@nessie.cs.id.ethz.ch>.