Re: does the prebinding daemon change our libs ?
Re: does the prebinding daemon change our libs ?
- Subject: Re: does the prebinding daemon change our libs ?
- From: joshua portway <email@hidden>
- Date: Fri, 31 Oct 2003 23:16:17 +0000
does setting this flag stop the daemon on users machines, or just at
our build time ?
If our app is prebound already (we set the base addresses for the
frameworks, and it builds without any warnings about overlapping
libraries), can we be sure that the prebinding daemon of users machines
isn't going to touch it ? Or will it "fix" the prebinding on everything
if they upgrade their OS or something ?
It's pretty important to us, because if the frameworks and dylibs are
altered then the next time our users try to upgrade their app it'll
just break completely. Strangely enough, this hasn't happened during
our beta testing as far as I'm aware - we just realised today that it
would be a possibility.
Does the automatic prebinding thing on users machines only happen to
apps, or does it happen to frameworks and libraries too ? Our app is
actually a Java application that loads a large native library as a
jnilib dylib, and that in turn references 6 or 7 private frameworks
which in turn load their own dylib plugins - I'm wondering if the
reason we seem to have got away with it so far is because we don't
actually have a native launchable executable.
thanks for your help,
josh
On 31 Oct 2003, at 22:06, Matthew Formica wrote:
Yes, the fix_prebinding daemon does modify your libraries themselves.
There
is an environment variable you can set in dyld
(DYLD_NO_FIX_PREBINDING) to
tell dyld to not run fix_prebinding on your application, and you can
also
pass the -nofixprebinding ld flag at link time to set this up when
your app
is built. I believe that the changes aren't isolated to any one spot
in
your binary; prebinding affects the address of all symbols, so they
are all
modified.
- Matthew
On 10/31/03 9:04 AM, "joshua portway" <email@hidden> wrote:
Our app links quite a few private frameworks and plugins, which are
stored within the app bundle.
If a user installs this on a different OS version, or for some other
reason the pre-binding daemon sees fit to fix our app, does it
actually
modify the libraries themselves, or does it store this information
elsewhere ?
We have an automatic update mechanism which patches our libraries and
frameworks to update them when new releases are available, and the
problem we've just realised is that if the prebinding daemon has
messed
with our libraries in the meantime the patching process will almost
certainly mess up and produce a completely scrambled library as a
result.
If the daemon does change the lib, are the changes confined to an
easily identifiable portion of the file - if they were then maybe we
could change our patcher so that it always replaced that portion of
the
file, rather than patching it.
josh
_______________________________________________
xcode-users mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/xcode-users
Do not post admin requests to the list. They will be ignored.
_______________________________________________
xcode-users mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/xcode-users
Do not post admin requests to the list. They will be ignored.