This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]