[devel] I: welcome fresh toolchain

Damir Shayhutdinov damir на altlinux.org
Чт Май 21 11:51:54 MSD 2009


> -c sockmisc.c  -fPIC -DPIC -o .libs/sockmisc.o
> cc1: warnings being treated as errors
> sockmisc.c: In function 'recvfromto':
> sockmisc.c:407: error: dereferencing pointer 'ss.37' does break strict-aliasing rules
> sockmisc.c:407: note: initialized from here
> make[1]: *** [sockmisc.lo] Error 1
>
> Чтение вышеприведенных ссылок и гугленние ясности не принесли.
> Строка, на которой отваливается сборка:
>
>  sin->sin_port = ((struct sockaddr_in *)&ss)->sin_port;
>
> Знающие, подскажите, пожалуйста, как это правильно объехать?
> Неиспользование '-Werror' -- только как самый крайний вариант ...

Объявить ss  как union {
  <текущий тип ss> ss;
  struct sockaddr_in sin;
};

Далее там где требуется текущий тип ss (не знаю какой), использовать ss.ss,
а ту строчку, на которую ругается компилятор, заменить на

sin->sin_port = ss.sin.sin_port;


Подробная информация о списке рассылки Devel