This is the mail archive of the cygwin-apps mailing list for the Cygwin 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: HEADSUP: Python 2.7 upgrade

On 1/26/2013 6:50 AM, marco atzeri wrote:
On 1/26/2013 1:08 AM, szgyg wrote:
Strip copies the whole .reloc section, including entries for removed
debug sections. This is documented in rebase/README. Rebase checks for
this condition in Relocations::relocate and silently ignores wrong
entries. Well, except in Marco's dict_snowball.dll.

probably the FixImage does no work as rebase is not applied to the stripped dll, but after the addittion of the .gnu_debuglink section. The section is small and usually it is not likely to be covered by the reloc table. Postgresql has 77 dll's and only 1 hit the problem.

Indeed. Rebase checks whether the base address in a relocation block points into an existing section. It does, because there is .gnu_debuglink, but this section is only 0x200 bytes while a relocation block covers 0x1000 bytes, so rebase segfaults if we have a relocation in this gap.

I also noted that using "gcc -shared" instead of "dllwrap" produce
a dict_snowball.dll without the reloc table covering the ".debug_*"

As workaround I will deploy a postgresql release without
debug symbols.

Changing the build system to not use dllwrap will
take some additional time, specially for the testing all
the 77 dll's behaviour.

Another workaround would be fixing .reloc between stripping and adding .gnu_debuglink. Running `make rebase.exe' in rebase/imagehelper creates a rebase which have an -f flag for this. (But it inserts a zero terminator block instead of changing VirtualSize, so it may or may not work.)


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