3106 Marko Mäkelä 2010-05-19
Merge a change from mysql-5.1-innodb:
------------------------------------------------------------
revno: 3472
revision-id: marko.makela@strippedyf1g7v6pfysidt
parent: marko.makela@stripped0519080152-h3555oqmu3wo95so
committer: Marko Mäkelä <marko.makela@stripped>
branch nick: 5.1-innodb
timestamp: Wed 2010-05-19 11:07:43 +0300
message:
Make UNIV_DEBUG Valgrind friendly. Use | instead of +,
and mask out the dont-care bits in debug assertions.
modified:
storage/innobase/include/mach0data.ic
3105 Marko Mäkelä 2010-05-19
Merge a change from mysql-5.1-innodb:
------------------------------------------------------------
revno: 3471
revision-id: marko.makela@strippedm-20100519080152-h3555oqmu3wo95so
parent: marko.makela@stripped
committer: Marko Mäkelä <marko.makela@stripped>
branch nick: 5.1-innodb
timestamp: Wed 2010-05-19 11:01:52 +0300
message:
Silence some more bogus Valgrind warnings on non-32-bit systems. (Bug #53307)
modified:
storage/innobase/buf/buf0buddy.c
storage/innobase/buf/buf0lru.c
storage/innobase/page/page0zip.c
3104 Inaam Rana 2010-05-18
Initialize block->is_hashed to avoid valgrind warning.
modified:
storage/innobase/buf/buf0buf.c
=== modified file 'storage/innobase/buf/buf0buddy.c'
--- a/storage/innobase/buf/buf0buddy.c revid:inaam.rana@stripped5302-ovf5fqn6a0u212rc
+++ b/storage/innobase/buf/buf0buddy.c revid:marko.makela@strippedn6fkhtst
@@ -502,7 +502,12 @@ success:
mutex_exit(mutex);
} else if (i == buf_buddy_get_slot(sizeof(buf_page_t))) {
/* This must be a buf_page_t object. */
+#if UNIV_WORD_SIZE == 4
+ /* On 32-bit systems, there is no padding in
+ buf_page_t. On other systems, Valgrind could complain
+ about uninitialized pad bytes. */
UNIV_MEM_ASSERT_RW(src, size);
+#endif
if (buf_buddy_relocate_block(src, dst)) {
goto success;
=== modified file 'storage/innobase/buf/buf0lru.c'
--- a/storage/innobase/buf/buf0lru.c revid:inaam.rana@stripped-ovf5fqn6a0u212rc
+++ b/storage/innobase/buf/buf0lru.c revid:marko.makela@strippedst
@@ -1578,8 +1578,13 @@ alloc:
ut_ad(prev_b->in_LRU_list);
ut_ad(buf_page_in_file(prev_b));
+#if UNIV_WORD_SIZE == 4
+ /* On 32-bit systems, there is no
+ padding in buf_page_t. On other
+ systems, Valgrind could complain about
+ uninitialized pad bytes. */
UNIV_MEM_ASSERT_RW(prev_b, sizeof *prev_b);
-
+#endif
UT_LIST_INSERT_AFTER(LRU, buf_pool->LRU,
prev_b, b);
=== modified file 'storage/innobase/include/mach0data.ic'
--- a/storage/innobase/include/mach0data.ic revid:inaam.rana@strippeda0u212rc
+++ b/storage/innobase/include/mach0data.ic revid:marko.makela@stripped
@@ -36,7 +36,7 @@ mach_write_to_1(
ulint n) /*!< in: ulint integer to be stored, >= 0, < 256 */
{
ut_ad(b);
- ut_ad(n <= 0xFFUL);
+ ut_ad((n | 0xFFUL) <= 0xFFUL);
b[0] = (byte)n;
}
@@ -65,7 +65,7 @@ mach_write_to_2(
ulint n) /*!< in: ulint integer to be stored */
{
ut_ad(b);
- ut_ad(n <= 0xFFFFUL);
+ ut_ad((n | 0xFFFFUL) <= 0xFFFFUL);
b[0] = (byte)(n >> 8);
b[1] = (byte)(n);
@@ -81,10 +81,7 @@ mach_read_from_2(
/*=============*/
const byte* b) /*!< in: pointer to 2 bytes */
{
- ut_ad(b);
- return( ((ulint)(b[0]) << 8)
- + (ulint)(b[1])
- );
+ return(((ulint)(b[0]) << 8) | (ulint)(b[1]));
}
/********************************************************//**
@@ -129,7 +126,7 @@ mach_write_to_3(
ulint n) /*!< in: ulint integer to be stored */
{
ut_ad(b);
- ut_ad(n <= 0xFFFFFFUL);
+ ut_ad((n | 0xFFFFFFUL) <= 0xFFFFFFUL);
b[0] = (byte)(n >> 16);
b[1] = (byte)(n >> 8);
@@ -148,8 +145,8 @@ mach_read_from_3(
{
ut_ad(b);
return( ((ulint)(b[0]) << 16)
- + ((ulint)(b[1]) << 8)
- + (ulint)(b[2])
+ | ((ulint)(b[1]) << 8)
+ | (ulint)(b[2])
);
}
@@ -183,9 +180,9 @@ mach_read_from_4(
{
ut_ad(b);
return( ((ulint)(b[0]) << 24)
- + ((ulint)(b[1]) << 16)
- + ((ulint)(b[2]) << 8)
- + (ulint)(b[3])
+ | ((ulint)(b[1]) << 16)
+ | ((ulint)(b[2]) << 8)
+ | (ulint)(b[3])
);
}
@@ -721,7 +718,7 @@ mach_read_from_2_little_endian(
/*===========================*/
const byte* buf) /*!< in: from where to read */
{
- return((ulint)(*buf) + ((ulint)(*(buf + 1))) * 256);
+ return((ulint)(buf[0]) | ((ulint)(buf[1]) << 8));
}
/*********************************************************//**
=== modified file 'storage/innobase/page/page0zip.c'
--- a/storage/innobase/page/page0zip.c revid:inaam.rana@oracle.com-20100518165302-ovf5fqn6a0u212rc
+++ b/storage/innobase/page/page0zip.c revid:marko.makela@stripped519093721-tjpgfv9in6fkhtst
@@ -3117,8 +3117,13 @@ page_zip_validate_low(
temp_page_zip in a debugger when running valgrind --db-attach. */
VALGRIND_GET_VBITS(page, temp_page, UNIV_PAGE_SIZE);
UNIV_MEM_ASSERT_RW(page, UNIV_PAGE_SIZE);
+# if UNIV_WORD_SIZE == 4
VALGRIND_GET_VBITS(page_zip, &temp_page_zip, sizeof temp_page_zip);
+ /* On 32-bit systems, there is no padding in page_zip_des_t.
+ On other systems, Valgrind could complain about uninitialized
+ pad bytes. */
UNIV_MEM_ASSERT_RW(page_zip, sizeof *page_zip);
+# endif
VALGRIND_GET_VBITS(page_zip->data, temp_page,
page_zip_get_size(page_zip));
UNIV_MEM_ASSERT_RW(page_zip->data, page_zip_get_size(page_zip));
Attachment: [text/bzr-bundle] bzr/marko.makela@oracle.com-20100519093721-tjpgfv9in6fkhtst.bundle
| Thread |
|---|
| • bzr push into mysql-trunk-innodb branch (marko.makela:3104 to 3106) | marko.makela | 19 May |