This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: Strip broke for me in 2.15...
Hi David,
The file that fails is about 30MB. So my naive guess is that something
is overflowing somewhere when stripping large files. I am not sure that
it would be the most productive use of my time to try to find the
smallest case that makes it fail.
I would gladly make the offending file available to anyone that wants to
try to fix the problem.
If you can post a URL for the test code - and assuming that there are no
NDAs that need to be signed before the code can be downloaded, then I
will try to have a look at the problem. No promises though - I tend to
get swamped by other stuff.
Alternatively I would be happy to try to fix it. But would appreciate
some pointers about where to look.
Since this was working in 2.14 and is now broken in 2.15 an obvious
place to start would be to run a diff between the two sets of sources
and look for possible changes to the alignment handling code.
In particular functions to look at are:
bfd/elfcode.h:elf_swap_phdr_in [where the alignment is read in]
bfd/elfcode.h:elf_swap_phdr_out [where the alignment is written out]
bfd/elf.c:assign_file_positions_for_segments [where new alignments
are calculated]
I would concentrate on the value of the p_align field in the segment
header and the value of the alignment_power field in the asection
structure. My guess is that somewhere there is a mismatch between the
value stored in p_align (a straight integer alignment value) and the
value stored in alignment_power (log2 of the alignment power).
Cheers
Nick