HEADSUP: Python 2.7 upgrade
szgyg
szgyg@ludens.elte.hu
Sat Jan 26 23:22:00 GMT 2013
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.)
szgyg
More information about the Cygwin-apps
mailing list