Apart strict-aliasing warnings, fix the remaining warnings
generated by GCC 4.4.4 -Wall and -Wextra flags.
One major source of warnings was the in-house function my_bcmp
which (unconventionally) took pointers to unsigned characters
as the byte sequences to be compared. Since my_bcmp and bcmp
are deprecated functions whose only difference with memcmp is
the return value, every use of the function is replaced with
memcmp as the special return value wasn't actually being used
by any caller.
There were also various other warnings, mostly due to type
mismatches, missing return values, missing prototypes, dead
code (unreachable) and ignored return values.
BUILD/*: Add valgrind_configs=--with-valgrind.
BUILD/*: Remove -USAFEMALLOC from valgrind_flags.
configure.in: Add AC_ARG_WITH(valgrind) and HAVE_VALGRIND.
include/my_sys.h: Define a number of MEM_ wrappers for VALGRIND_ functions.
include/my_sys.h: Make TRASH do MEM_UNDEFINED().
include/m_string.h: Remove unused macro bzero_if_purify(A,B).
_mymalloc(): Declare MEM_UNDEFINED() on the allocated memory.
_myfree(): Declare MEM_NOACCESS() on the freed memory.
storage/innobase/include/univ.i: Enable UNIV_DEBUG_VALGRIND based on
HAVE_VALGRIND rather than HAVE_purify.
Possible things to do:
* In my_global.h, remove the defined(HAVE_purify) condition
from the _WIN32 uint3korr().
* In my_global.h *int*korr(), use | instead of +
in order to keep the Valgrind V bits accurate
* Consider replacing HAVE_purify with HAVE_VALGRIND
* Use VALGRIND_CREATE_BLOCK, VALGRIND_DISCARD in mem_root and similar places
The convert_constant_item function converts a constant to integer using
field for condition like 'field = a_constant'. In some cases the
convert_constant_item is called for a subquery when outer select is already
being executed, so convert_constant_item saves field's value to prevent its
corruption. For EXPLAIN and at the prepare phase field's value isn't
initialized yet, thus when convert_constant_item tries to restore saved
value it fails assertion.
Now the convert_constant_item doesn't save/restore field's value if it's
haven't been read yet. Outer constant values are always saved.
since this flag was explicitly removed in pushbuild for GCOV builds.
BUILD_CMD => ['sh', '-c', 'perl -i.bak -pe "s/ \\\\\$static_link//" ' .
'BUILD/compile-pentium-gcov; BUILD/compile-pentium-gcov'],
Moving $static_link to SETUP.sh broke this, and is now fixed.
Should this flag be needed on some platforms,
the proper location is compile-<platform>-gcov
Tested the amd64 and pentium64 build fine without it, and can run NDB tests.
This patch provides compile helper scripts only,
no server logic is affected.
Before this patch, GCOV and GPROF build scripts were only provided for
pentium platforms.
With this patch, pentium, pentium64 and amd64 platforms have associated
helper build scripts.
The GCOV and GPROF specific compilation flags are set once in SETUP.sh,
to avoid code duplication.
---
Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.1-build-work-20013
into pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.1-build
---
reorder lines from BUG#20013 to resemble order in 5.0
Removed a lot of compiler warnings
Removed not used variables, functions and labels
Initialize some variables that could be used unitialized (fatal bugs)
%ll -> %l
- Removed not used variables and functions
- Added #ifdef around code that is not used
- Renamed variables and functions to avoid conflicts
- Removed some not used arguments
Fixed some class/struct warnings in ndb
Added define IS_LONGDATA() to simplify code in libmysql.c
I did run gcov on the changes and added 'purecov' comments on almost all lines that was not just variable name changes
(Mostly in DBUG_PRINT() and unused arguments)
Fixed bug in query cache when used with traceing (--with-debug)
Fixed memory leak in mysqldump
Removed warnings from mysqltest scripts (replaced -- with #)
argument can be either "pedantic" or "old" (actually, or anything
else). In case of "pedantic" mode, use -ansi -pedantic compilation
flags. Fix the build to compile in pedantic mode. (Version 3 of
the patch, with after-review fixes)
"make test" != "mysql-test-run && mysql-test-run --ps-protocol". "make test" is what should be used;
had it been, the failure would have been noticed earlier. Putting back cxx flags I had by accident removed.
Disclaimer: 5.1-new is in a sorry state: log_tables and some ndb* fail, mysqlslap test crashes randomly in a row-based replication assertion (sql_class.cc:2207).