You know you can just do "CFLAGS += -O0" rather than this?
It really seems strange though, are any other OS packages of epic4/5 built
that way?
--
Sent from a phone, apologies for poor formatting.
On 16 April 2022 08:13:12 Mikhail <mp39590@gmail.com> wrote:
> On Thu, Apr 14, 2022 at 06:49:12PM +0100, Stuart Henderson wrote:
>> On 2022/04/08 22:14, Mikhail wrote:
>> > On Fri, Apr 08, 2022 at 08:03:14PM +0100, Stuart Henderson wrote:
>> > > It's too late for 7.1 release.
>> > >
>> > > Re: the -O2 issue, does setting -std=c89 fix the problem?
>> >
>> > I think epic developers won't take the risk, the software has very old
>> > history and we didn't receive any random crashes reports while being
>> > simply with '-O' (epic4 and epic5 are still actively maintained, all
>> > efforts are on the later, though).
>> >
>> > I've plans to submit net/epic5 port, because it has gained pledge/unveil
>> > support, does -O will be considered as an issue by committers?
>>
>> - don't set MODPY_MAJOR_VERSION
>
> Thanks for review. Fixed.
>
>> - my previous comments about the CFLAGS handing stand:
>>
>> # You must not try to compile epic with "gcc -O2" because -O2 will
>> # generate bad code that leads to random crashes. When you use -O2, gcc
>> # assumes the source is conformant to ISO C99's requirements about
>> # alias-safety, and EPIC, being a C90 program, does not conform, so the
>> # result is undefined behavior (which means it crashes randomly.)
>> CFLAGS:= ${CFLAGS:C/-O2/-O/g}
>>
>> --snip--
>> My thinking is that, if the code has behaviour which is considered
>> undefined by the C standard assumed by the compiler, no level of
>> optimization is safe. Maybe now you get lucky and -O works (on whichever
>> architecture you've tested) but I don't think it's reasonable to assume
>> that this is the case everywhere, or will be the case following compiler
>> updates.
>>
>> (Of course on many OpenBSD architectures the relevant compiler is not
>> GCC anyway).
>> --snip--
>
> I've changed -O to -O0.
>
>> and your proposal doesn't work if the user builds from ports with CFLAGS=-O3
>
> Such change has to go to net/epic4 too, because currently it builds with
> -O2, so I added such lines to Makefile:
> CFLAGS:= ${CFLAGS:C/-O1/-O0/g}
> CFLAGS:= ${CFLAGS:C/-O2/-O0/g}
> CFLAGS:= ${CFLAGS:C/-O3/-O0/g}
> CFLAGS:= ${CFLAGS:C/-O4/-O0/g}
> CFLAGS:= ${CFLAGS:C/-Ofast/-O0/g}
> CFLAGS:= ${CFLAGS:C/-Os/-O0/g}
> CFLAGS:= ${CFLAGS:C/-Oz/-O0/g}
>
> New tgz is attached.
No comments:
Post a Comment