This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: Retry powerpc gold stub grouping when groups prove too large
- From: Alan Modra <amodra at gmail dot com>
- To: Markus Trippelsdorf <markus at trippelsdorf dot de>
- Cc: Cary Coutant <ccoutant at google dot com>, Binutils <binutils at sourceware dot org>
- Date: Thu, 4 Dec 2014 20:14:51 +1030
- Subject: Re: Retry powerpc gold stub grouping when groups prove too large
- Authentication-results: sourceware.org; auth=none
- References: <CAHACq4rr8Z6bKL74tmunhwZYUJx1s6md=+0vg5+oWVDjNr84bA at mail dot gmail dot com> <20141120111444 dot GB4477 at bubble dot grove dot modra dot org> <CAHACq4o9xRNgZ+ddfabhh_GTQU7AjcE0aydeU70JQ91cfThBHQ at mail dot gmail dot com> <20141126025831 dot GP4477 at bubble dot grove dot modra dot org> <20141204091156 dot GA344 at x4>
On Thu, Dec 04, 2014 at 10:11:56AM +0100, Markus Trippelsdorf wrote:
> When building the Linux kernel one gets many messages like:
>
> ld: stub group size is too large; retrying with 22020096
> ld: stub group size is too large; retrying with 16515072
>
> Do they really convey any useful information to the user?
They tell me I have some bugs to squash with the 32-bit support..
For instance:
bool
can_reach_stub(Address from, unsigned int off, unsigned int r_type)
{
unsigned long max_branch_offset = max_branch_delta(r_type);
if (max_branch_offset == 0)
return true;
gold_assert(from != invalid_address);
Address loc = off + this->stub_address();
return loc - from + max_branch_offset < 2 * max_branch_offset;
}
For 32-bit, "Address" is uint32_t, so when unsigned long is 64-bit we
have a problem when "loc" < "from".
--
Alan Modra
Australia Development Lab, IBM