Commit graph

47 commits

Author SHA1 Message Date
Davi Arnaut
bb036c93b4 Bug#42733: Type-punning warnings when compiling MySQL --
strict aliasing violations.

Essentially, the problem is that large parts of the server were
developed in simpler times (last decades, pre C99 standard) when
strict aliasing and compilers supporting such optimizations were
rare to non-existent. Thus, when compiling the server with a modern
compiler that uses strict aliasing rules to perform optimizations,
there are several places in the code that might trigger undefined
behavior.

As evinced by some recent bugs, GCC does a somewhat good of job
misoptimizing such code, but on the other hand also gives warnings
about suspicious code. One problem is that the warnings aren't
always accurate, yet we can't afford to just shut them off as we
might miss real cases. False-positive cases are aggravated mostly
by casts that are likely to trigger undefined behavior.

The solution is to start a cleanup process focused on fixing and
reducing the amount of strict-aliasing related warnings produced
by GCC and others compilers. A good deal of noise reduction can
be achieved by just removing useless casts that are product of
historical cruft and are likely to trigger undefined behavior if
dereferenced.
2010-06-10 17:16:43 -03:00
df@pippilotta.erinye.com
c78d616938 Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0-build
into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.1-build
2008-02-13 14:44:56 +01:00
df@pippilotta.erinye.com
72073063cb Make this build on Windows. 2008-02-11 18:02:37 +01:00
joerg@trift2.
5ffbbfcecc Merge trift2.:/MySQL/M51/mysql-5.1
into  trift2.:/MySQL/M51/push-5.1
2008-01-28 15:16:40 +01:00
joerg@trift2.
a6f257361e Merge trift2.:/MySQL/M50/mysql-5.0
into  trift2.:/MySQL/M50/push-5.0
2008-01-28 15:05:33 +01:00
cmiller@zippy.cornsilk.net
2d259302ea Merge zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-maint
into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.1-maint
2008-01-23 11:53:06 -05:00
cmiller@zippy.cornsilk.net
c13d726f5d Bug#27427: resolveip fails on hostnames with a leading digit
Patch by Kasper Dupont.  No CLA required for this size of patch.

"resolveip" program produces incorrect result if given a hostname
starting with a digit.  Someone seems to have thought that names 
can not have digits at the beginning.

Instead, use the resolver library to work out the rules of hostnames, 
as it will undoubtedly be better at it than we are.
2008-01-23 11:34:08 -05:00
kent@kent-amd64.(none)
05c7156a35 Merge mysql.com:/home/kent/bk/windows-cleanup/mysql-5.0-build
into  mysql.com:/home/kent/bk/windows-cleanup/mysql-5.1-build
2007-12-28 01:07:42 +01:00
kent@mysql.com/kent-amd64.(none)
18418ff8c5 make_win_bin_dist CMakeLists.txt resolveip.c Makefile.am:
Better Windows support in the scripts directory
mysql_config.pl.in, mysql_install_db.pl.in:
  New Perl version of Unix shell script, mainly for Windows
Many files in scripts directory:
  Use default Perl location "#!/usr/bin/perl" instead of the build host path
2007-12-28 01:02:28 +01:00
monty@mysql.com/narttu.mysql.fi
088e2395f1 WL#3817: Simplify string / memory area types and make things more consistent (first part)
The following type conversions was done:

- Changed byte to uchar
- Changed gptr to uchar*
- Change my_string to char *
- Change my_size_t to size_t
- Change size_s to size_t

Removed declaration of byte, gptr, my_string, my_size_t and size_s. 

Following function parameter changes was done:
- All string functions in mysys/strings was changed to use size_t
  instead of uint for string lengths.
- All read()/write() functions changed to use size_t (including vio).
- All protocoll functions changed to use size_t instead of uint
- Functions that used a pointer to a string length was changed to use size_t*
- Changed malloc(), free() and related functions from using gptr to use void *
  as this requires fewer casts in the code and is more in line with how the
  standard functions work.
- Added extra length argument to dirname_part() to return the length of the
  created string.
- Changed (at least) following functions to take uchar* as argument:
  - db_dump()
  - my_net_write()
  - net_write_command()
  - net_store_data()
  - DBUG_DUMP()
  - decimal2bin() & bin2decimal()
- Changed my_compress() and my_uncompress() to use size_t. Changed one
  argument to my_uncompress() from a pointer to a value as we only return
  one value (makes function easier to use).
- Changed type of 'pack_data' argument to packfrm() to avoid casts.
- Changed in readfrm() and writefrom(), ha_discover and handler::discover()
  the type for argument 'frmdata' to uchar** to avoid casts.
- Changed most Field functions to use uchar* instead of char* (reduced a lot of
  casts).
- Changed field->val_xxx(xxx, new_ptr) to take const pointers.

Other changes:
- Removed a lot of not needed casts
- Added a few new cast required by other changes
- Added some cast to my_multi_malloc() arguments for safety (as string lengths
  needs to be uint, not size_t).
- Fixed all calls to hash-get-key functions to use size_t*. (Needed to be done
  explicitely as this conflict was often hided by casting the function to
  hash_get_key).
- Changed some buffers to memory regions to uchar* to avoid casts.
- Changed some string lengths from uint to size_t.
- Changed field->ptr to be uchar* instead of char*. This allowed us to
  get rid of a lot of casts.
- Some changes from true -> TRUE, false -> FALSE, unsigned char -> uchar
- Include zlib.h in some files as we needed declaration of crc32()
- Changed MY_FILE_ERROR to be (size_t) -1.
- Changed many variables to hold the result of my_read() / my_write() to be
  size_t. This was needed to properly detect errors (which are
  returned as (size_t) -1).
- Removed some very old VMS code
- Changed packfrm()/unpackfrm() to not be depending on uint size
  (portability fix)
- Removed windows specific code to restore cursor position as this
  causes slowdown on windows and we should not mix read() and pread()
  calls anyway as this is not thread safe. Updated function comment to
  reflect this. Changed function that depended on original behavior of
  my_pwrite() to itself restore the cursor position (one such case).
- Added some missing checking of return value of malloc().
- Changed definition of MOD_PAD_CHAR_TO_FULL_LENGTH to avoid 'long' overflow.
- Changed type of table_def::m_size from my_size_t to ulong to reflect that
  m_size is the number of elements in the array, not a string/memory
  length.
- Moved THD::max_row_length() to table.cc (as it's not depending on THD).
  Inlined max_row_length_blob() into this function.
- More function comments
- Fixed some compiler warnings when compiled without partitions.
- Removed setting of LEX_STRING() arguments in declaration (portability fix).
- Some trivial indentation/variable name changes.
- Some trivial code simplifications:
  - Replaced some calls to alloc_root + memcpy to use
    strmake_root()/strdup_root().
  - Changed some calls from memdup() to strmake() (Safety fix)
  - Simpler loops in client-simple.c
2007-05-10 12:59:39 +03:00
kent@kent-amd64.(none)
be15e3bc15 Merge mysql.com:/home/kent/bk/main/mysql-5.0
into  mysql.com:/home/kent/bk/main/mysql-5.1
2006-12-23 20:20:40 +01:00
kent@mysql.com/kent-amd64.(none)
226a5c833f Many files:
Changed header to GPL version 2 only
2006-12-23 20:17:15 +01:00
brian@zim.(none)
6f986a344b UNIXWARE removal 2006-04-17 15:56:59 -07:00
monty@narttu.mysql.fi
4e4725377d Merge with 4.0 2003-11-04 09:40:36 +02:00
guilhem@mysql.com
c1f7f33960 4 small items in this:
- when we don't have in_addr_t, use uint32.
- a forgotten initialization of slave_proxy_id in sql/log_event.cc (was not really "forgot", was
"we needn't init it there", but there was one case where we needed...).
- made slave_proxy_id always meaningful in THD and Log_event, so we can
rely more on it (no need to test if it's meaningful). THD::slave_proxy_id
is equal to THD::thread_id except for the slave SQL thread.
- clean up the slave's temporary table (i.e. free their memory) when slave
server shuts down.
2003-10-31 23:20:23 +01:00
monty@narttu.mysql.fi
6056cfadfc Merge with 4.0.16 2003-10-07 15:42:26 +03:00
monty@narttu.mysql.fi
446d40e880 After merge fixes 2003-10-07 00:23:29 +03:00
monty@narttu.mysql.fi
fa823857d3 Merge with 3.23.58 2003-10-06 21:21:04 +03:00
monty@narttu.mysql.fi
0a241aa2ed Portability fix 2003-10-06 20:31:35 +03:00
lenz@mysql.com
ebfa41086d - backported compatibility fix for extra/resolveip.c from 4.0
to be able to compile on HP-UX 10.20 (which does not have in_add_t).
2003-09-11 13:36:08 +02:00
monty@narttu.mysql.fi
77a70a0a24 merge with 4.0.15 2003-08-29 13:44:35 +03:00
monty@narttu.mysql.fi
8a77f97079 Add detection of in_addr_t
Add pack_bits to pack_reclength for dynamic rows.  This solves buffer a possible buffer overflow on update.
(This will probably solve bug #563)
Fix test for available file descriptors in mysqltest
Fixed core dump bug in replication tests when running without transactional table support
2003-08-28 06:08:17 +03:00
serg@serg.mylan
e3a3d00c77 merged 2003-08-21 21:39:22 +02:00
guilhem@mysql.com
f26106fe64 Fix for 64-bit CPUs (u_long is 64 bit there, but in_addr_t is always uint32).
That's to make resolveip work on our FreeBSD-5.0/Sparc64 build host.
2003-08-18 20:01:38 +02:00
serg@serg.mylan
9f67e10d0d consistency fix - all help texts for command-line options should end with a dot. 2003-06-13 10:59:02 +02:00
root@home.(none)
5c6c54c09a system_charset_info has been moved to /sql directory
and isn't used in libraries any longer
2003-03-16 12:30:10 +04:00
monty@mashka.mysql.fi
023d6dd39b Merge with 4.0.11 2003-02-04 21:52:14 +02:00
monty@mashka.mysql.fi
689578a099 Fixes for Netware
Call pthread_mutex_destroy() on not used mutex.
Changed comments in .h and .c files from // -> /* */
Added detection of mutex on which one didn't call pthread_mutex_destroy()
Fixed bug in create_tmp_field() which causes a memory overrun in queries that uses "ORDER BY constant_expression"
Added optimisation for ORDER BY NULL
2003-01-28 08:38:28 +02:00
monty@hundin.mysql.fi
f0b28da6f9 merge with 4.0 2002-06-03 12:59:31 +03:00
monty@hundin.mysql.fi
544f95c451 merge with 3.23 2002-06-02 20:46:03 +03:00
monty@hundin.mysql.fi
e2a116411e Portability fixes for SCO and HPUX
Change TRUNCATE(number) to truncate towards zero for negative numbers
Fix NULL handling for DESCRIBE table_name
2002-05-31 15:22:38 +03:00
jani@hynda.(none)
c961494444 Added useful exit error code for programs using my_getopt in case
of an error in option handling. This can sometimes be useful in
scripts.

Changed some exit code names and corresponding numbers.

Fixed a bug in mysqld.cc, in replication related options.

Added a global flag in my_getopt, which can be set by any program
that is using my_getopt, which tells whether the client should
print the error message itself, or whether my_getopt should do it.
The default is that my_getopt will print the error messages.
2002-05-29 15:07:30 +03:00
monty@hundin.mysql.fi
bbebc75163 merge with 3.23.51 2002-05-27 23:52:21 +03:00
monty@hundin.mysql.fi
07886933b8 Split raid C function to separate file to make things more portable.
Fixed some portability things in my_gethostbyname_r
Portability fix for type_decimal.test
2002-05-27 10:02:00 +03:00
jani@hynda.(none)
a5ec0a90ea moved my_getopt.h under client_priv.h
Changed my_print_defaults, mysql_install, perror, resolve_stack_dump,
resolveip and pack_isam to use my_getopt.
2002-05-22 23:54:24 +03:00
bar@gw.udmsearch.izhnet.ru
b37ce8e769 New ctype functions/macros to support many charsets at a time 2002-03-12 21:37:58 +04:00
monty@hundin.mysql.fi
43f2238c72 Portability fix for SCO 2001-12-27 15:16:08 +02:00
monty@hundin.mysql.fi
61be9477ec Removed not used functions from sql_cache
Added new tests to testsuite.
2001-12-14 16:02:41 +02:00
monty@hundin.mysql.fi
b658662ae4 Update copyright
Fixed memory leak on shutdown (Affects the embedded version & MyODBC)
2001-12-06 14:10:51 +02:00
monty@hundin.mysql.fi
e4bdf26066 Small safety fix 2001-11-28 02:24:22 +02:00
monty@hundin.mysql.fi
d3288575de Patch for SCO
Update test results for MySQL 4.0
2001-11-26 03:52:23 +02:00
monty@hundin.mysql.fi
fd0780493d merge with 3.23.44 2001-11-04 16:14:09 +02:00
monty@hundin.mysql.fi
0716bf4d0e Portability fixes 2001-10-31 20:28:43 +02:00
monty@hundin.mysql.fi
d5fe1db868 One should not only have to include my_net.h to work with sockets.
This wrapper noew will include all the necessary, system specific files,
which makes all normal source files much easier to write and maintain.
Portability fixes.
2001-10-09 03:35:29 +03:00
monty@hundin.mysql.fi
7cadc6e711 Changed to use my_global.h
Fixed problem with LIKE with latin1_de
Added parsing support of UNSIGNED LONG LONG
2001-09-14 02:54:33 +03:00
tonu@x153.internalnet
451e3c8c3b Some warning fixes and some SSL testprograms check-in 2001-08-26 00:18:20 +08:00
bk@work.mysql.com
f4c589ff6c Import changeset 2000-07-31 21:29:14 +02:00