| delorie.com/archives/browse.cgi | search |
| X-Recipient: | archive-cygwin AT delorie DOT com |
| X-Spam-Check-By: | sourceware.org |
| From: | "Dave Korn" <dave DOT korn AT artimi DOT com> |
| To: | <cygwin AT cygwin DOT com> |
| References: | <6910a60806020741t7ff86d8bgbb7866e62acf1c09 AT mail DOT gmail DOT com> <484411AA DOT AF8A9011 AT dessent DOT net> |
| Subject: | RE: rebase not compilable |
| Date: | Mon, 2 Jun 2008 18:11:05 +0100 |
| Message-ID: | <026f01c8c4d3$a4309510$2708a8c0@CAM.ARTIMI.COM> |
| MIME-Version: | 1.0 |
| X-Mailer: | Microsoft Office Outlook 11 |
| In-Reply-To: | <484411AA.AF8A9011@dessent.net> |
| Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
| List-Id: | <cygwin.cygwin.com> |
| List-Unsubscribe: | <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com> |
| List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
| List-Archive: | <http://sourceware.org/ml/cygwin/> |
| List-Post: | <mailto:cygwin AT cygwin DOT com> |
| List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
| Sender: | cygwin-owner AT cygwin DOT com |
| Mail-Followup-To: | cygwin AT cygwin DOT com |
| Delivered-To: | mailing list cygwin AT cygwin DOT com |
Brian Dessent wrote on 02 June 2008 16:29:
> Is this really a good direction to move in? The long term plan, as I
> understood it, was to simply build everything with
> --enable-auto-image-base and avoid forever the problem of having to
> manually rebase ever.
--enable-auto-image-base isn't magic. We'll still get collisions. There
are only so many <handwave> possible image bases to choose from. Hang on a
mo, ...
static unsigned long
compute_dll_image_base (const char *ofile)
{
unsigned long hash = strhash (ofile);
return 0x61300000 + ((hash << 16) & 0x0FFC0000);
}
#endif
There are only 1024 possible image bases to choose from, and any DLL >=
256kB in size will span several of them. Collisions are an inevitability,
no? I think we'll probably still have a need for rebase until the whole
world goes 64bit and we've got room for a few more hash buckets[*].
>> g++ -O2 -c -o sections.o sections.cc
>> sections.cc: In member function `bool Relocations::check()':
>> sections.cc:288: error: ISO C++ forbids cast to non-reference type
>> used as lvalue
>> sections.cc: In member function `bool Relocations::fix()':
>> sections.cc:331: error: ISO C++ forbids cast to non-reference type
>> used as lvalue
>> sections.cc: In member function `bool Relocations::relocate(int)':
>> sections.cc:366: error: ISO C++ forbids cast to non-reference type
>> used as lvalue
>> make: *** [sections.o] Error 1
>
> The cast-as-lvalue was a nonstandard gcc extension that was disabled in
> C++ mode (and deprecated for C mode) starting with gcc 3.4.x. Likely
> this package is so old that it was last built with gcc 3.3.x which still
> allowed the construct. So, one workaround is to temporarily install the
> [prev] version of gcc-g++ and gcc-core which are the 3.3 versions.
Sounds like a fairly horrible bodge to me, the better way would be to fix
the code, which was of dubious legality even in K'n'R days.
cheers,
DaveK
[*] - Noooo they be hashin' my bukket!
--
Can't think of a witty .sigline today....
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |