Subject: pkg/15477: sparc64 codegen bug causes problems for Open Motif
To: None <gnats-bugs@gnats.netbsd.org>
From: Lloyd Parkes <lloyd@must-have-coffee.gen.nz>
List: netbsd-bugs
Date: 02/04/2002 15:47:25
>Number:         15477
>Category:       pkg
>Synopsis:       sparc64 codegen bug causes problems for Open Motif
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Feb 03 19:07:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Lloyd Parkes
>Release:        NetBSD 1.5ZA
>Organization:
Must Have Coffee
>Environment:
System: NetBSD archangel.must-have-coffee.gen.nz 1.5ZA NetBSD 1.5ZA (GENERIC.PROF) #0: Wed Dec 26 16:56:07 NZDT 2001 lloyd@archangel.must-have-coffee.gen.nz:/usr/src/sys/arch/sparc64/compile/GENERIC.PROF sparc64
Architecture: sparc64
Machine: sparc64
>Description:

If I find that this compiler bug isn't already in the toolchain PRs, I will
submit it there as well, with the code examples, but without the fix, so that we
have a record of the compiler bug itself, not just the Open Motif workaround.

Open Motif is unable to set the correct string values for label widgets because
of a bug in the gcc 2.95.3 optimiser. Open Motif contains the following two code
fragments

[motif/lib/Xm/Label.c]
  ... if (lw->label._label == NULL)   
    {
      lw->label._label = XmeGetLocalizedString ((char *) NULL, /* reserved */
                                                (Widget) lw,
                                                XmNlabelString,
                                                lw->core.name);
    }
  else if (XmeStringIsValid(lw->label._label))
    {
      lw->label._label= XmStringCopy(lw->label._label);
    }
  else
    {
      XmeWarning((Widget) lw, CS_STRING_MESSAGE);
      lw->label._label = XmStringCreateLocalized(lw->core.name);
    }
    
[motif/lib/Xm/String.c]
Boolean 
XmeStringIsValid(
        XmString string )
{
  if (string == NULL) return(FALSE);
  return(TRUE);
}


Obviously the expected result is

	if (_LABEL == NULL)
	{
		_LABEL = SOMETHING_UGLY_BUT_USEFUL;
	}
	else if (_LABEL != NULL)
	{
		_LABEL = COPY (_LABEL);
	}
	else
	{
		COMPLAIN_BITTERLY ();
	}
	

The logic that should fall out of this is that COMPLAIN_BITTERLY() is never
reached. If Open Motif is compiled with optimisation switched on, then the Motif
does COMPLAIN_BITTERLY (when it shouldn't). Without optimisation Motif seems to
work (more) correctly.

>How-To-Repeat:
Build Open Motif and then build nedit. Nedit comes up without correct labels on
its menus.

>Fix:
As a workaround for this compiler bug I have patched the created/altered pkg
patches so that 1) Imake.cf can recognise a sparc64 machine, and 2) the
NetBSD.cf file now sets -O0 which causes the default of -O2 to not be used.
This also tidies up one or two inconsistencies in the cf files as well.

A uuencoded bziped tar file follows that contains a replacement for pkg patch
patch-ap and a new patch, patch-as.

begin 644 om.tar.bz2
M0EIH.3%!629365:E?R@`(27_A?XP((#]_________O____X``2````A@&+[P
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
I=78>P0,LFC+?#"$RVE]7VS+_8$4)!@?/$3+5WQ$_\7<D4X4)!6I7\H!Q
`
end
>Release-Note:
>Audit-Trail:
>Unformatted:
 Late December 2001 NetBSD-current.