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