Re: mach-o section question
Re: mach-o section question
- Subject: Re: mach-o section question
- From: Andrew Myrick <email@hidden>
- Date: Mon, 21 Apr 2008 11:34:00 -0700
As a question is/are the people responsible for keeping "Mac OS X
ABI Mach-O
File Format Reference" and "Mach-O Programming Topics" on the list?
It
might help if/when I/we file bugs to be able to point out this whole
thread.
Since this is an unofficial, unsupported list, there isn't really any
way of knowing unless they speak up. It's probably best to include
the relevant points in any Radars you file anyway.
OK, that was what I thought was going on. The problem is that when
I first
saw the figure, I thought the following was happening:
--- Load commands
segment
segment
segment
section 1
section 2
section 3
--- Data
Hmmm... I guess the first bug I need to file is the need for some
fairly
complete examples of layouts of mach-o files (sans actual data/
code). I'll
do that tonight
otool (1) and nm (1) are also quite helpful.
Well, the only thing I'm thinking about is another long running mental
exercise I've had; I'm working out a new (hopefully better)
programming
language. If I go to the effort of reading/writing the mach-O file
format,
then I may as well take advantage of it and see if I can't write a
compiler
to put something into it! :D And, like Objective-C, I'm going to
need my
own runtime, so it would be nice to be able to do this.
I'm sure it's doable, though it may take some experimenting.
I believe that uuid_generate() simply ensures that the UUID is
sufficiently random, so you can likely put whatever you want in the
uuid_command with the understanding that if you are not actually
unique (as much as one can be in a finite namespace), dire
consequences may result.
Is there any way to determine if there is a collision besides 'dire
consequences'? I can think of a few ideas on how to protect against
problems, but they require the loader to be notified any time a new
mach-O
file is loaded onto the system so it can check, and, if necessary,
modify,
UUIDs for use on a particular system.
I'm just not familiar enough with how UUIDs are used to be of much
help on this. My guess is it doesn't matter too much, as long as you
aren't trying to load the same binary with different UUIDs. For
example, in kext land, presume you have 2 kexts, A and B, where B
depends on A. In the following scenario:
1) Load kext A
2) Change kext A on disk
3) Load kext B
the load will fail because we'll detect the UUID change and flag an
error. I would expect that userspace has some similar mechanism,
though probably much more complex :)
I agree, I'd like to release it someday (assuming I get anywhere
with it!)
Thanks,
Cem Karan
-Andrew
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden