Subject: Re: libsa/loadfile.c (a.out not working)
To: Michael L. Hitch <email@example.com>
From: None <firstname.lastname@example.org>
Date: 07/16/2001 14:34:19
> > a_entry of netbsd.aout is 0x2e00. A dump of buff reveals the
> > first 0x2e12 bytes to be zero. MARK_ENTRY points to buff + 0x2e00.
> Hmm.... How are you defining ALIGNENTRY()?
As stolen from the news68k port's loadfile_machdep.h :
#define ALIGNENTRY(a) ((u_long)(a))
> On the amiga, I've got it
> defined as (0) for _STANDALONE (shamelesly copied from the hp300
> loadfile_machdep.h). I now remember that this was one of the things I had
> to figure out how it worked.
Aah. Thanks Michael. That is very helpful.
> I still don't completely understand exactly what the ALIGNENTRY()
> is supposed to do
From its name, I suspected that it aligned the entrypoint
so that it would be suitable as a jump address for the processor,
which might suspend or trap if asked to jump to an odd address.
If it is, in fact, the LOAD ADDRESS of the kernel, then
defining it as 0 makes sense, and would definately fix the problem.
If it is in fact the latter meaning, it may be nice if
there was a comment beside it's usage (and ideally, its definition
in each port's loadfile_machdep.h). e.g.:
- minp = maxp = ALIGNENTRY(entry);
+ minp = ALIGNENTRY(entry); /* Load address */
+ maxp = ~0;
+/* Contrary to its name, this is actually the load address */
-#define ALIGNENTRY(a) ((u_long)(a))
+#define ALIGNENTRY(a) (0)
Even better would be to rename it to LOADADDRESS(entry).
| Nigel Pearson, email@example.com | "Reality is that which, |
| Telstra NW-D, Sydney, Australia. | when you stop believing |
| Office: 9206 3468 Fax: 9212 6329 | in it, doesn't go away." |
| Mobile: 0408 664435 Home: 9792 6998 | Philip K. Dick - 'Valis.' |