From: David Engster <deng@randomsample.de>
To: Eli Zaretskii <eliz@gnu.org>
Cc: chengang31@gmail.com, emacs-devel@gnu.org
Subject: Re: Using stpcpy
Date: Sat, 27 Dec 2014 21:03:10 +0100 [thread overview]
Message-ID: <878uhsvp1d.fsf@engster.org> (raw)
In-Reply-To: <83bnmolvkb.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 27 Dec 2014 21:52:20 +0200")
Eli Zaretskii writes:
>> From: cg <chengang31@gmail.com>
>> Date: Sat, 27 Dec 2014 19:57:07 +0800
>>
>
>> On 12/27/2014 3:45 PM, Eli Zaretskii wrote:
>> >
>> > Sorry, I don't understand this: there's no call to stpcpy on line 350
>> > of ntlib.c, or anywhere else in ntlib.c, actually. That line calls
>> >
>>
>> Yes, I was confused by the error message too, and found ntlib.c
>> didin't use stpcpy at all. It looks like it has something to do with
>> compiler optimization.
>>
>> So I tried to use different optimization flags, and this error only
>> happens when -O2 or -Ofast is used as CFLAGS:
>>
>> ./autogen.sh
>> export CFLASG=-O0 # no error
>> #export CFLASG=-O1 # no error
>> #export CFLASG=-O2 # error!
>> #export CFLASG=-Ofast # error!
>> ./confgure
>> make
>>
>> I am using msys2.
>
> Incredible as it sounds, in an optimized build, GCC (sometimes?) calls
> stpcpy even though the source calls strcpy, provided that the
> prototype of stpcpy is in scope. In this case, ntlib.c includes
> windows.h, which includes string.h, which comes from lib/string.h,
> which declares the prototype of stpcpy, and that is enough to trigger
> this misfeature.
>
> I fixed this by switching the order of the libraries, as suggested,
> but only because doing so is TRT in general.
Yes, it seems gcc optimizes this because of the following strlen
call. You can disable this optimization with -fno-optimize-strlen.
-David
next prev parent reply other threads:[~2014-12-27 20:03 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-22 16:41 Using stpcpy Dmitry Antipov
2014-12-23 6:47 ` Paul Eggert
2014-12-23 10:39 ` Dmitry Antipov
2014-12-25 12:25 ` Paul Eggert
2014-12-25 17:42 ` Dmitry Antipov
2014-12-25 23:44 ` Paul Eggert
2014-12-26 17:06 ` Dani Moncayo
2014-12-26 21:24 ` Eli Zaretskii
2014-12-26 22:01 ` Dani Moncayo
2014-12-27 5:56 ` cg
2014-12-27 7:45 ` Eli Zaretskii
2014-12-27 10:26 ` Dani Moncayo
2014-12-27 10:39 ` Eli Zaretskii
2014-12-27 10:54 ` Dani Moncayo
2014-12-27 11:57 ` cg
2014-12-27 19:52 ` Eli Zaretskii
2014-12-27 20:03 ` David Engster [this message]
2014-12-27 20:17 ` Eli Zaretskii
2014-12-27 20:25 ` Eli Zaretskii
2014-12-27 20:49 ` David Engster
2014-12-28 3:36 ` Eli Zaretskii
2014-12-28 23:57 ` Richard Stallman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=878uhsvp1d.fsf@engster.org \
--to=deng@randomsample.de \
--cc=chengang31@gmail.com \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.