There was a POTENTIAL RISK for your HARDDISKS with the previous
patch because it updated the concat_image_t object (BX_SPLIT_HD is on
by default). The behaviour of BX_SPLIT_HD is to open all filenames
incrementing the last letter. Guess what follows /dev/hda ?
You may now access block devices from within bochs, only
if --disable-split-hd is configured.
It has only been tested on linux and a WinNT guest.
There are issues with the current bios CHS translating scheme and
the guest OS translating scheme. For example my compaq system translates
a physical 38792/16/63 20GiB harddrive to
a logical 2586/240/63, which does not follow the bitshift algorithm.
I had to find a different PCHS that would translate in a compatible LCHS
I still have to investigate further, but I'm afraid everything I can do
will break some systems or the others.
Those issues should be explained in the documentation.
instead of ".dll.a". The way I did this is NOT good because
it affects libltdl/libtool too, but I only wanted to affect config.h.
But I haven't found any other way...
target names so that both sets of rules can coexist in the same file.
The configure script selects which one to use.
- use patterns to build plugins.
- remove Makefile, which was specific to win32.
to do if they cannot be found.
- in try_dlopen, after find_handle() is called and returns 0 over
and over, it was ignoring the return value of tryall_dlopen. As
a result, sometimes the dlopen would fail and return 1 or more
errors but nobody would notice. The handle would be returned as
if the open had succeed, then any use of the handle would segfault
because handle->loader was NULL. I have solved this problem by
capturing the return value in errors, and then checking if errors>0
in the next if statement.
- fix faulty boolean logic in lt_dlopenext that caused it to only
search for libraries ending with .la. Now it says: if try_dlopen
created a nonzero handle, return it. Otherwise, if there were
any errors OTHER THAN file-not-found, return the NULL handle. If
the only errors were file-not-found, continue to search.
- just before loading the module in tryall_dlopen, do one final
call to access() to check for existence of the file. Without
this check, you sometimes get the "can't load module" error
when in fact the problem is "file not found".
before including <ltdl.h>. Otherwise it tries to export some symbols
from main.cc, which then conflict with the real ltdl when it gets linked.
- on win32 I am not using libtool to build the libraries, so I need to
use a different format string for module names. On win32 use "%s.dll".
- call lt_dlopenext() instead of lt_dlopen() because it searches for
filenames using various extensions including the libtool extension .la
and also the system's native library name (.so or whatever).