[Bug 210855] benchmarks/bonnie++ : use of volatile char messes up EOF comparison; more (armv6 with -mcpu=cortex-a7 for/on rpi2)

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Tue Jul 5 20:56:56 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=210855

            Bug ID: 210855
           Summary: benchmarks/bonnie++ : use of volatile char messes up
                    EOF comparison; more (armv6 with -mcpu=cortex-a7
                    for/on rpi2)
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: kuriyama at FreeBSD.org
          Reporter: markmi at dsl-only.net
             Flags: maintainer-feedback?(kuriyama at FreeBSD.org)
          Assignee: kuriyama at FreeBSD.org

The main report is from what the building compiler reported:

getc_putc.cpp:210:47: warning: comparison of constant -1 with expression of
type 'volatile char' is always false
[-Wtautological-constant-out-of-range-compare]
  TEST_FUNC_READ("getc()", if( (c = getc(fp)) == EOF), res[Getc]);
                               ~~~~~~~~~~~~~~ ^  ~~~
./getc_putc.h:26:31: note: expanded from macro 'TEST_FUNC_READ'
  TEST_FUNC("Reading", XNAME, XCODE, XRES)
                              ^~~~~
./getc_putc.h:13:5: note: expanded from macro 'TEST_FUNC'
    XCODE \
    ^~~~~
getc_putc.cpp:225:65: warning: comparison of constant -1 with expression of
type 'volatile char' is always false
[-Wtautological-constant-out-of-range-compare]
  TEST_FUNC_READ("getc_unlocked()", if( (c = getc_unlocked(fp)) == EOF),
res[GetcUnlocked]);
                                        ~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~
./getc_putc.h:26:31: note: expanded from macro 'TEST_FUNC_READ'
  TEST_FUNC("Reading", XNAME, XCODE, XRES)
                              ^~~~~
./getc_putc.h:13:5: note: expanded from macro 'TEST_FUNC'
    XCODE \
    ^~~~~

getc_putc_helper.cpp:48:57: warning: comparison of constant -1 with expression
of type 'volatile char' is always false
[-Wtautological-constant-out-of-range-com
pare]
  TEST_FUNC_READ("getc() no thread", if( (c = getc(fp)) == EOF), res[1]);
                                         ~~~~~~~~~~~~~~ ^  ~~~
./getc_putc.h:26:31: note: expanded from macro 'TEST_FUNC_READ'
  TEST_FUNC("Reading", XNAME, XCODE, XRES)
                              ^~~~~
./getc_putc.h:13:5: note: expanded from macro 'TEST_FUNC'
    XCODE \
    ^~~~~



getc returns a wider type than char variants and signed even if char is not: it
returns an int. This is part of enabling the EOF test protocol without
reserving character values.



bon_io.cpp:161:76: warning: format specifies type 'long' but the argument has
type 'off_t' (aka 'long long') [-Wformat]
    sprintf(m_buf, "Error in lseek to chunk %d(" OFF_T_PRINTF ")", offset,
real_offset);
                                                                          
^~~~~~~~~~~


The width mismatch leads to big-endian vs. little-endian (vs. pdp-endian)
issues. powerpc, for example, being big-endian but 32 bit could have problems
with just the "high half" being used here.




Side notes:

bonnie++.cpp:709:57: warning: comparison of integers of different signs:
'unsigned int' and 'int' [-Wsign-compare]
  if(globals.ram && directory_size * MaxDataPerFile * 2 > (globals.ram << 10))
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-ports-bugs mailing list