Binutils objcopy bug (was Re: rebase segfault)

marco atzeri marco.atzeri@gmail.com
Fri Jan 25 15:12:00 GMT 2013


On 1/25/2013 4:00 PM, Corinna Vinschen wrote:
> On Jan 25 14:19, Kai Tietz wrote:
>> 2013/1/25 marco atzeri <marco.atzeri@gmail.com>:
>>> On 1/24/2013 11:00 AM, Corinna Vinschen wrote:
>>>
>>>> I already explained why:  The SEGV happens during relocation.
>>>> The file header has been changed already.  If you call the
>>>> same rebase, it will try to rebase the file to the same new
>>>> address.  If current file base address == requested file base
>>>> address, rebase will return without performing any action.
>>>>
>>>
>>> Hi Corinna,
>>> I would like your opinion on this .reloc strange issue of
>>> dict_snowball, as I have the impression I found the root cause.
>>> [...]
>>> Questions:
>>> - Is it anomalous to have a .reloc portion addressing the
>>> debug_* sections (so the original build file is broken)
>>> - or should strip recognize and remove reloc portion not
>>> anymore relevant ?
>>>
>>> rebase is choking on this portion of the .reloc table
>>>
>>>>
>>>> Corinna
>>>>
>>>
>>> Thansk in advance
>>> Marco
>>
>> Well, here are my 2-cents about that issue.  In general it is a flaw
>> to have an base-relocation in debug-section, as this means such a
>> section can't be moved into a separate debug-file anymore, due that
>> has no relocation-information.
>> Nevertheless it would be good, if objcopy gets adjusted to eliminated
>> base-relocations of stripped sections.
>
> But the tool generating these debug relocs is gas, isn't it?  Why
> on earth does it do that?!?
>
> I still think rebase is not to blame here.  It has to assume that
> the relocation info is correct, doesn't it?

rebase is not to blame. I agree ;-)
Someone else is incorrectly managing the reloc table,
and also objcopy seems innocent ...

Postgresql dll's are built in this way:

gcc -ggdb -O2 -pipe 
-fdebug-prefix-map=/pub/devel/postgresql/postgresql-9.2.2-1/build=/usr/src/debug/postgresql-9.2.2-1 
-fdebug-prefix-map=/pub/devel/postgresql/postgresql-9.2.2-1/src/postgresql-9.2.2=/usr/src/debug/postgresql-9.2.2-1 
-Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement 
-Wendif-labels -Wmissing-format-attribute -Wformat-security 
-fno-strict-aliasing -fwrapv -fexcess-precision=standard 
-I/pub/devel/postgresql/postgresql-9.2.2-1/src/postgresql-9.2.2/src/include/snowball 
 
-I/pub/devel/postgresql/postgresql-9.2.2-1/src/postgresql-9.2.2/src/include/snowball/libstemmer 
-I../../../src/include 
-I/pub/devel/postgresql/postgresql-9.2.2-1/src/postgresql-9.2.2/src/include 
   -c -o dict_snowball.o 
/pub/devel/postgresql/postgresql-9.2.2-1/src/postgresql-9.2.2/src/backend/snowball/dict_snowball.c


dllwrap -o dict_snowball.dll --dllname dict_snowball.dll  --def 
libdict_snowballdll.def dict_snowball.o api.o utilities.o 
stem_ISO_8859_1_danish.o  stem_ISO_8859_1_dutch.o 
stem_ISO_8859_1_english.o  stem_ISO_8859_1_finnish.o 
stem_ISO_8859_1_french.o  stem_ISO_8859_1_german.o 
stem_ISO_8859_1_hungarian.o  stem_ISO_8859_1_italian.o 
stem_ISO_8859_1_norwegian.o  stem_ISO_8859_1_porter.o 
stem_ISO_8859_1_portuguese.o  stem_ISO_8859_1_spanish.o 
stem_ISO_8859_1_swedish.o  stem_ISO_8859_2_romanian.o 
stem_KOI8_R_russian.o  stem_UTF_8_danish.o  stem_UTF_8_dutch.o 
stem_UTF_8_english.o  stem_UTF_8_finnish.o  stem_UTF_8_french.o 
stem_UTF_8_german.o  stem_UTF_8_hungarian.o  stem_UTF_8_italian.o 
stem_UTF_8_norwegian.o  stem_UTF_8_porter.o  stem_UTF_8_portuguese.o 
stem_UTF_8_romanian.o  stem_UTF_8_russian.o  stem_UTF_8_spanish.o 
stem_UTF_8_swedish.o  stem_UTF_8_turkish.o -L../../../src/port 
-Wl,--allow-multiple-definition -Wl,--enable-auto-import 
-L/usr/local/lib -Wl,--as-needed   -L../../../src/backend -lpostgres


> Corinna

Marco




--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list