4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-01-18 04:19:21 +08:00
Corinna Vinschen 264b5e137e Move definition of wsadata into wsock_init
The problem this patch fixes showed up after updating to gcc-5.3.0.  The
cuplrit is a change in gcc when emitting section attributes.  It only
shows up when building without optimization.  Effect in Cygwin: ws2_32
functions failed to load.

In the original code the definition of "NO_COPY wsadata" was preceeding
an __asm__ block (the definition of the _wsock_init wrapper), while the
definition of "NO_COPY here" immediately follows the same assembler
block.  When gcc-5.3.0 emits assembler code for the wsadata definition,
it emits the .data_cygwin_nocopy section attribute.

Next it emits the assembler output for the __asm_ block, entirely ignoring
its content.  The __asm__ block adds a .text section definition.

Eventually gcc emits assembler code for the here definition.  However,
apparently gcc still "knows" that it just emitted the .data_cygwin_nocopy
section attribute and so doesn't redefine it.  Remember the __asm__?  It
changed the section to .text.

So with gcc-4.9.3 we got:

    .section .data_cygwin_nocopy,"w"
  wsadata:

  __asm__ block:
    .text

    .section .data_cygwin_nocopy,"w"
  here:

With gcc 5.3.0 we now get:

    .section .data_cygwin_nocopy,"w"
  wsadata:

  __asm__ block:
    .text

  here:

So "here" is now in the .text segment which is read-only.  Hilarity ensues.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-09 22:55:28 +01:00
..
2016-03-08 13:56:40 +01:00
2013-04-30 23:43:08 +00:00
2013-04-23 09:44:36 +00:00
2012-11-23 13:22:47 +00:00
2013-04-23 09:44:36 +00:00
2016-01-07 13:23:05 +01:00
2014-01-04 23:58:32 +00:00
2016-01-07 13:23:05 +01:00
2016-03-08 13:56:40 +01:00
2013-04-23 09:44:36 +00:00
2013-04-23 09:44:36 +00:00
2015-04-23 21:57:12 +02:00
2015-04-23 21:57:12 +02:00
2014-04-26 17:38:22 +00:00
2015-07-29 13:45:46 +02:00
2013-04-23 09:44:36 +00:00
2014-01-27 20:04:35 +00:00
2016-02-12 12:08:40 -06:00
2015-11-05 18:31:36 +01:00
2016-03-08 13:56:40 +01:00
2016-03-08 13:56:40 +01:00
2015-12-03 13:30:51 +01:00
2015-03-03 12:58:34 +00:00
2013-04-23 09:44:36 +00:00
2013-04-23 09:44:36 +00:00
2013-04-23 09:44:36 +00:00
2015-11-18 19:09:47 +01:00
2015-02-24 20:52:57 +00:00
2016-03-08 13:56:40 +01:00
2014-08-14 17:36:24 +00:00
2015-08-17 11:05:43 +02:00
2013-04-23 09:44:36 +00:00
2013-04-23 09:44:36 +00:00
2016-01-27 15:39:11 +01:00
2013-04-23 09:44:36 +00:00
2013-04-23 09:44:36 +00:00
2015-07-29 13:45:46 +02:00
2013-04-23 09:44:36 +00:00
2016-03-08 13:56:40 +01:00
2016-03-08 13:56:40 +01:00
2016-03-08 13:56:40 +01:00
2015-07-29 13:45:46 +02:00
2013-04-23 09:44:36 +00:00
2015-07-29 13:45:46 +02:00
2013-04-23 09:44:36 +00:00
2013-04-23 09:44:36 +00:00
2015-08-29 09:32:00 +02:00
2013-04-23 09:44:36 +00:00
2013-04-23 09:44:36 +00:00
2013-04-23 09:44:36 +00:00
2016-02-13 16:03:15 +01:00
2016-02-13 16:03:15 +01:00
2015-04-23 21:57:07 +02:00
2015-04-23 22:04:24 +02:00
2015-02-24 20:52:57 +00:00
2013-04-23 09:44:36 +00:00
2013-05-13 19:25:35 +00:00