[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Incorrect code in SPARC shared libraries



On Sat, 2009-01-03 at 01:13 +0000, Ben Hutchings wrote:
> Bug #506713 in gcc-4.3, which has just been fixed in unstable, results
> in incorrect code generation in SPARC shared libraries.  I identified
> this as the cause of bug #490999 in kicker, but it presumably affects
> other shared libraries and will require binNMUs to fix.  However, doing
> a binNMU for every package that builds a shared library would obviously
> take a lot of buildd time and would likely make a mess of dependencies.
> 
> I do not know exactly what is the general pattern for the wrongly
> generated code, but I will try scanning for shared libraries containing
> the pattern:
> 
>         save %sp, offset1, %sp
>         /* up to 10 instructions */
>         ld [ %sp + offset2 ], reg
> 
> where offset1 + offset2 < 0 and reg is any register.

After I removed cases where the intermediate instructions included a
restore, return, or store to the stack location, there were only two
matches.  One we already knew about; the other was:

Package: libstlport5.1ldbl
Source: stlport5.1
File: usr/lib/libstlport.so.5.1.5
Function: stlp_std::basic_ios<wchar_t, stlp_std::char_traits<wchar_t> >::_M_handle_exception(int)

(It's conceivable that this code is actually valid due to oddities of
the exception-handling ABI.  However I didn't see any other instance in
exception-handling code.)

So I think we need to:
1. Upgrade gcc-4.3 on sparc buildds
2. Schedule binNMU of qt-x11-free and stlport5.1 on sparc
3. Unblock the binNMU'd packages (these packages currently have the same
source versions in lenny and sid, so no additional changes would be
involved)

Ben.

-- 
Ben Hutchings
The world is coming to an end.  Please log off.

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: