Re: [PATCHES] UW 713UP3 patch
--On Wednesday, November 05, 2003 04:23:35 -0500 Bruce Momjian <[EMAIL PROTECTED]> wrote: Peter Eisentraut wrote: Larry Rosenman writes: > You can reduce the example down to > >extern char *strcpy(char *, const char *); > >static void f(char *p, int n){ > strcpy(p+n,""); >} >void g(void){ > f(0, 0); >} > > compile with cc -O -Kinline I've installed a test based on this and checked off UnixWare on the supported platforms list. Another idea would have been to just grep the include file for the version define. :-) It's not in an include, it's done automagiclly by the compiler. LER -- Bruce Momjian| http://candle.pha.pa.us [EMAIL PROTECTED] | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup.| Newtown Square, Pennsylvania 19073 -- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 972-414-9812 E-Mail: [EMAIL PROTECTED] US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749 pgp0.pgp Description: PGP signature
Re: [PATCHES] UW 713UP3 patch
Peter Eisentraut wrote: > Larry Rosenman writes: > > > You can reduce the example down to > > > > extern char *strcpy(char *, const char *); > > > > static void f(char *p, int n){ > >strcpy(p+n,""); > > } > > void g(void){ > >f(0, 0); > > } > > > > compile with cc -O -Kinline > > I've installed a test based on this and checked off UnixWare on the > supported platforms list. Another idea would have been to just grep the include file for the version define. :-) -- Bruce Momjian| http://candle.pha.pa.us [EMAIL PROTECTED] | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup.| Newtown Square, Pennsylvania 19073 ---(end of broadcast)--- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]
Re: [PATCHES] UW 713UP3 patch
Larry Rosenman writes: > You can reduce the example down to > > extern char *strcpy(char *, const char *); > > static void f(char *p, int n){ > strcpy(p+n,""); > } > void g(void){ > f(0, 0); > } > > compile with cc -O -Kinline I've installed a test based on this and checked off UnixWare on the supported platforms list. -- Peter Eisentraut [EMAIL PROTECTED] ---(end of broadcast)--- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faqs/FAQ.html
Re: [PATCHES] UW 713UP3 patch
--On Monday, November 03, 2003 23:24:19 +0100 Peter Eisentraut <[EMAIL PROTECTED]> wrote: Larry Rosenman writes: > I'll try and write the patch as you suggest. Here's a patch as you suggested: Isn't there a way to write a test that actually triggers the bug we're trying to work around? Here is what the SCO Folks said when I reported this back in August: You can reduce the example down to extern char *strcpy(char *, const char *); static void f(char *p, int n){ strcpy(p+n,""); } void g(void){ f(0, 0); } compile with cc -O -Kinline that will trip it. I still think that using the __SCO_VERSION__ preprocessor symbol is the better idea. -- Peter Eisentraut [EMAIL PROTECTED] -- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 972-414-9812 E-Mail: [EMAIL PROTECTED] US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749 pgp0.pgp Description: PGP signature
Re: [PATCHES] UW 713UP3 patch
Larry Rosenman writes: > > I'll try and write the patch as you suggest. > Here's a patch as you suggested: Isn't there a way to write a test that actually triggers the bug we're trying to work around? -- Peter Eisentraut [EMAIL PROTECTED] ---(end of broadcast)--- TIP 8: explain analyze is your friend
Re: [PATCHES] UW 713UP3 patch
--On Monday, November 03, 2003 23:24:19 +0100 Peter Eisentraut <[EMAIL PROTECTED]> wrote: Larry Rosenman writes: > I'll try and write the patch as you suggest. Here's a patch as you suggested: Isn't there a way to write a test that actually triggers the bug we're trying to work around? Not that I'm aware of (it was the following entry from SCO's fix list: 141. A bug was repaired in which an inlined function call, having been passed a null pointer, would trigger an internal C compiler error when this parameter was the target of a strcpy() or strncpy() call. fz528141 If you want to write a test, fine, but I think I've done my part which is report the bug to SCO, get a fix released, and then change our stuff to detect it. See the discussion referenced in the template file (7-8/AUG/2003 on -Hackers). -- Peter Eisentraut [EMAIL PROTECTED] -- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 972-414-9812 E-Mail: [EMAIL PROTECTED] US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749 pgp0.pgp Description: PGP signature
Re: [PATCHES] UW 713UP3 patch
--On Sunday, November 02, 2003 17:23:59 -0600 Larry Rosenman <[EMAIL PROTECTED]> wrote: --On Sunday, November 02, 2003 18:17:26 -0500 Tom Lane <[EMAIL PROTECTED]> wrote: Larry Rosenman <[EMAIL PROTECTED]> writes: +# version check for the 7.1.3UP3 compiler (version 401200310): +cat >conftest.c <<__EOF__ +int main(int argc, char **argv) +#if __SCO_VERSION__ >=3D 401200310 +#error good compiler +#else +#error bad compiler +#endif +__EOF__ + $CC conftest.c 2>conftest.err 1>&2 + grep -q good conftest.err + if test $? =3D 0; then +CFLAGS=3D"-O -Kinline" + else +CFLAGS=3D"-O -Kinline,no_host" + fi Couldn't this be simplified to +cat >conftest.c <<__EOF__ +int main(int argc, char **argv) +{ +#if __SCO_VERSION__ < 401200310 +#error bad compiler +#endif +} +__EOF__ + $CC conftest.c >/dev/null 2>&1 + if test $? = 0; then +CFLAGS="-O -Kinline" + else +CFLAGS="-O -Kinline,no_host" + fi regards, tom lane How about this? ( I needed to make it valid C): OOOPPPSS. Yes, Tom, yours will work just fine. I missed the fact that you put the #if inside the braces. -- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 972-414-9812 E-Mail: [EMAIL PROTECTED] US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749 pgp0.pgp Description: PGP signature
Re: [PATCHES] UW 713UP3 patch
--On Sunday, November 02, 2003 18:17:26 -0500 Tom Lane <[EMAIL PROTECTED]> wrote: Larry Rosenman <[EMAIL PROTECTED]> writes: +# version check for the 7.1.3UP3 compiler (version 401200310): +cat >conftest.c <<__EOF__ +int main(int argc, char **argv) +#if __SCO_VERSION__ >=3D 401200310 +#error good compiler +#else +#error bad compiler +#endif +__EOF__ + $CC conftest.c 2>conftest.err 1>&2 + grep -q good conftest.err + if test $? =3D 0; then +CFLAGS=3D"-O -Kinline" + else +CFLAGS=3D"-O -Kinline,no_host" + fi Couldn't this be simplified to +cat >conftest.c <<__EOF__ +int main(int argc, char **argv) +{ +#if __SCO_VERSION__ < 401200310 +#error bad compiler +#endif +} +__EOF__ + $CC conftest.c >/dev/null 2>&1 + if test $? = 0; then +CFLAGS="-O -Kinline" + else +CFLAGS="-O -Kinline,no_host" + fi regards, tom lane How about this? ( I needed to make it valid C): Index: src/template/unixware === RCS file: /projects/cvsroot/pgsql-server/src/template/unixware,v retrieving revision 1.27 diff -u -r1.27 unixware --- src/template/unixware 25 Oct 2003 15:32:11 - 1.27 +++ src/template/unixware 2 Nov 2003 23:22:21 - @@ -1,13 +1,27 @@ if test "$GCC" = yes; then THREAD_CPPFLAGS="-pthread" else -# the -Kno_host is temporary for a bug in the compiler. See -hackers +# the -Kno_host is for a bug in the compiler. See -hackers # discussion on 7-8/Aug/2003. -# when the 7.1.3UP3 or later compiler is out, we can do a version check. - CFLAGS="-O -Kinline,no_host" +# version check for the 7.1.3UP3 compiler (version 401200310): +cat >conftest.c <<__EOF__ +#if __SCO_VERSION__ < 401200310 +#error bad compiler +#endif +int main(int argc,char **argv) +{ +} + +__EOF__ + $CC conftest.c >/dev/null 2>&1 + if test $? = 0; then +CFLAGS="-O -Kinline" + else +CFLAGS="-O -Kinline,no_host" + fi + rm conftest.* THREAD_CPPFLAGS="-K pthread" fi - THREAD_SUPPORT=yes NEED_REENTRANT_FUNCS=no # verified 7.1.3 2003-09-03 THREAD_CPPFLAGS="$THREAD_CPPFLAGS -D_REENTRANT" -- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 972-414-9812 E-Mail: [EMAIL PROTECTED] US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749 unixware.up3.patch3 Description: Binary data pgp0.pgp Description: PGP signature
Re: [PATCHES] UW 713UP3 patch
Larry Rosenman <[EMAIL PROTECTED]> writes: > +# version check for the 7.1.3UP3 compiler (version 401200310): > +cat >conftest.c <<__EOF__ > +int main(int argc, char **argv) > +#if __SCO_VERSION__ >=3D 401200310 > +#error good compiler > +#else > +#error bad compiler > +#endif > +__EOF__ > + $CC conftest.c 2>conftest.err 1>&2 > + grep -q good conftest.err > + if test $? =3D 0; then > +CFLAGS=3D"-O -Kinline" > + else > +CFLAGS=3D"-O -Kinline,no_host" > + fi Couldn't this be simplified to +cat >conftest.c <<__EOF__ +int main(int argc, char **argv) +{ +#if __SCO_VERSION__ < 401200310 +#error bad compiler +#endif +} +__EOF__ + $CC conftest.c >/dev/null 2>&1 + if test $? = 0; then +CFLAGS="-O -Kinline" + else +CFLAGS="-O -Kinline,no_host" + fi regards, tom lane ---(end of broadcast)--- TIP 8: explain analyze is your friend
Re: [PATCHES] UW 713UP3 patch
--On Sunday, November 02, 2003 15:29:37 -0600 Larry Rosenman <[EMAIL PROTECTED]> wrote: I'll try and write the patch as you suggest. Here's a patch as you suggested: Index: src/template/unixware === RCS file: /projects/cvsroot/pgsql-server/src/template/unixware,v retrieving revision 1.27 diff -u -r1.27 unixware --- src/template/unixware 25 Oct 2003 15:32:11 - 1.27 +++ src/template/unixware 2 Nov 2003 21:53:33 - @@ -1,13 +1,27 @@ if test "$GCC" = yes; then THREAD_CPPFLAGS="-pthread" else -# the -Kno_host is temporary for a bug in the compiler. See -hackers +# the -Kno_host is for a bug in the compiler. See -hackers # discussion on 7-8/Aug/2003. -# when the 7.1.3UP3 or later compiler is out, we can do a version check. - CFLAGS="-O -Kinline,no_host" +# version check for the 7.1.3UP3 compiler (version 401200310): +cat >conftest.c <<__EOF__ +int main(int argc, char **argv) +#if __SCO_VERSION__ >= 401200310 +#error good compiler +#else +#error bad compiler +#endif +__EOF__ + $CC conftest.c 2>conftest.err 1>&2 + grep -q good conftest.err + if test $? = 0; then +CFLAGS="-O -Kinline" + else +CFLAGS="-O -Kinline,no_host" + fi + rm conftest.* THREAD_CPPFLAGS="-K pthread" fi - THREAD_SUPPORT=yes NEED_REENTRANT_FUNCS=no # verified 7.1.3 2003-09-03 THREAD_CPPFLAGS="$THREAD_CPPFLAGS -D_REENTRANT" -- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 972-414-9812 E-Mail: [EMAIL PROTECTED] US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749 unixware.up3.patch2 Description: Binary data pgp0.pgp Description: PGP signature
Re: [PATCHES] UW 713UP3 patch
--On Sunday, November 02, 2003 23:05:21 +0100 Peter Eisentraut <[EMAIL PROTECTED]> wrote: Larry Rosenman writes: The problem is MOST people will **NOT** be able to get the fixed compiler as it's on the Upgrade Pack path (PAY FOR), and **NOT** the Maintenance Pack path (Free). Why did they upgrade to the broken compiler in the first place, and why doesn't SCO provide free fixes for broken products? The "Broken Compiler" is in EVERY version prior to the UP3 compiler. We just started tripping it with the changes in 7.4. I don't know why they didn't/haven't put this fix in the MP path, and I can't change that decision, therefore, we need to work around it. It's not that big of a deal. See the patch I posted that SHOULD meet your requirements. -- Peter Eisentraut [EMAIL PROTECTED] -- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 972-414-9812 E-Mail: [EMAIL PROTECTED] US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749 pgp0.pgp Description: PGP signature
Re: [PATCHES] UW 713UP3 patch
Larry Rosenman writes: > The problem is MOST people will **NOT** be able to get the fixed compiler > as it's on the Upgrade Pack path (PAY FOR), and **NOT** the Maintenance > Pack path (Free). Why did they upgrade to the broken compiler in the first place, and why doesn't SCO provide free fixes for broken products? -- Peter Eisentraut [EMAIL PROTECTED] ---(end of broadcast)--- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]
Re: [PATCHES] UW 713UP3 patch
--On Sunday, November 02, 2003 22:26:40 +0100 Peter Eisentraut <[EMAIL PROTECTED]> wrote: Larry Rosenman writes: Since peter objects to my methods, what is an ACCEPTABLE way to detect the 7.1.3UP3 compiler? One POSSIBLE way to do this properly is to write a test that 1) Uses $CC, $CFLAGS, and related variables rather than hardcoding 'cc -O'. 2) Names any test files conftest.*, so configure cleans up automatically. 3) Doesn't execute any compiled programs. See the __FAST_MATH__ test for an example. However, I still think that we should not bother testing for this. Considering that the condition first occurred a couple of months ago and is already fixed, this isn't a big issue. Think about what would happen if we had to develop and maintain fixes for every buggy GCC compiler every released. The problem is MOST people will **NOT** be able to get the fixed compiler as it's on the Upgrade Pack path (PAY FOR), and **NOT** the Maintenance Pack path (Free). I'll try and write the patch as you suggest. -- Peter Eisentraut [EMAIL PROTECTED] -- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 972-414-9812 E-Mail: [EMAIL PROTECTED] US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749 pgp0.pgp Description: PGP signature
Re: [PATCHES] UW 713UP3 patch
Larry Rosenman writes: > Since peter objects to my methods, what is an ACCEPTABLE way to detect > the 7.1.3UP3 compiler? One POSSIBLE way to do this properly is to write a test that 1) Uses $CC, $CFLAGS, and related variables rather than hardcoding 'cc -O'. 2) Names any test files conftest.*, so configure cleans up automatically. 3) Doesn't execute any compiled programs. See the __FAST_MATH__ test for an example. However, I still think that we should not bother testing for this. Considering that the condition first occurred a couple of months ago and is already fixed, this isn't a big issue. Think about what would happen if we had to develop and maintain fixes for every buggy GCC compiler every released. -- Peter Eisentraut [EMAIL PROTECTED] ---(end of broadcast)--- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]