Silent relocation truncations considered harmful

Corinna Vinschen corinna-cygwin@cygwin.com
Tue Feb 16 16:29:00 GMT 2016


Hi Mark,

On Feb 15 18:23, Mark Geisert wrote:
> This follows up from my msg re GMP-ECM failing its 'make check' on the main
> list https://cygwin.com/ml/cygwin/2016-02/msg00147.html .
> 
> There's an error that ought to be reported during dynamic linking if the
> linked-to address is too far from the relocation site.  However the error is
> not reported if __OPTIMIZE__ was #defined when building the Cygwin DLL.  I
> can't see why optimization settings should affect this,
> so I suggest:
> 
> /oss/src/winsup/cygwin diff -u pseudo-reloc.cc.safe pseudo-reloc.cc
> --- pseudo-reloc.cc.safe        2016-01-26 20:08:06.000000000 -0800
> +++ pseudo-reloc.cc     2016-02-15 17:54:20.475963800 -0800
> @@ -342,7 +342,7 @@
>           __write_memory ((void *) reloc_target, &reldata, 2);
>           break;
>         case 32:
> -#if defined (__CYGWIN__) && defined (__x86_64__) && !defined (__OPTIMIZE__)
> +#if defined (__CYGWIN__) && defined (__x86_64__)
>           if (reldata > (ptrdiff_t) __INT32_MAX__
>               || reldata < -((ptrdiff_t) __INT32_MAX__) - 1)
>             __report_error ("Invalid relocation.  Offset %p at address %p "
> 
> If the truncation is not reported here, which kills the program with a
> Cygwin runtime error, you get hard to diagnose SIGSEGVs at some later time
> when the app tries to call a function at an address relocated off in the
> weeds somewhere.

Patch is ok, but it doesn't apply cleanly.  Can you please send the
patch as created by `git format-patch' or at least in git diff format?


Thanks,
Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-developers/attachments/20160216/ac2ad5a8/attachment.sig>


More information about the Cygwin-developers mailing list