Bug #7389 Linking mysqld fails because of undefined references in InnoDB
Submitted: 17 Dec 2004 17:27 Modified: 3 Jan 2005 12:57
Reporter: Lenz Grimmer Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Compiling Severity:S1 (Critical)
Version:5.0.3-pre OS:FreeBSD (FreeBSD, Linux/sparc and others)
Assigned to: Marko Mäkelä CPU Architecture:Any

[17 Dec 2004 17:27] Lenz Grimmer
Description:
The compilation of mysqld currently fails with the following error:

04290: gcc -DMYSQL_SERVER -DDEFAULT_MYSQL_HOME="\"/usr/local/mysql\"" -DDATADIR="\"/usr/local/mysql/data\"" -DSHAREDIR="\"/usr/local/mysql/share/mysql\"" -DHAVE_CONFIG_H -I. -I. -I.. -I../innobase/include -I../include -I../regex -I.  -I../extra    -g -O -DSAFE_MUTEX    -fno-implicit-templates -fno-exceptions -fno-rtti -DMYSQLD_NET_RETRY_COUNT=1000000 -DHAVE_BROKEN_REALPATH -c -o ha_tina.o `test -f 'examples/ha_tina.cc' || echo './'`examples/ha_tina.cc
04291: /usr/local/bin/bash ../libtool --preserve-dup-deps --mode=link gcc  -g -O -DSAFE_MUTEX    -fno-implicit-templates -fno-exceptions -fno-rtti -DMYSQLD_NET_RETRY_COUNT=1000000 -DHAVE_BROKEN_REALPATH   -o mysqld  sql_lex.o sql_handler.o item.o item_sum.o item_buff.o item_func.o item_cmpfunc.o item_strfunc.o item_timefunc.o thr_malloc.o item_create.o item_subselect.o item_row.o item_geofunc.o field.o strfunc.o key.o sql_class.o sql_list.o net_serv.o protocol.o sql_state.o lock.o my_lock.o sql_string.o sql_manager.o sql_map.o mysqld.o password.o hash_filo.o hostname.o set_var.o sql_parse.o sql_yacc.o sql_base.o table.o sql_select.o sql_insert.o sql_prepare.o sql_error.o sql_update.o sql_delete.o uniques.o sql_do.o procedure.o item_uniq.o sql_test.o log.o log_event.o init.o derror.o sql_acl.o unireg.o des_key_file.o discover.o time.o opt_range.o opt_sum.o records.o filesort.o handler.o ha_heap.o ha_myisam.o ha_myisammrg.o ha_berkeley.o ha_innodb.o ha_ndbcluster.o sql_db.o sql_table.o sql_rename.o sql_crypt.o sql_load.o mf_iocache.o field_conv.o sql_show.o sql_udf.o sql_analyse.o sql_cache.o slave.o sql_repl.o sql_union.o sql_derived.o client.o sql_client.o mini_client_errors.o pack.o stacktrace.o repl_failsafe.o sql_olap.o sql_view.o gstream.o spatial.o sql_help.o protocol_cursor.o tztime.o my_time.o sp_head.o sp_pcontext.o sp_rcontext.o sp.o sp_cache.o parse_file.o sql_trigger.o ha_example.o ha_archive.o ha_tina.o ../innobase/usr/libusr.a ../innobase/srv/libsrv.a ../innobase/dict/libdict.a ../innobase/que/libque.a ../innobase/srv/libsrv.a ../innobase/ibuf/libibuf.a ../innobase/row/librow.a ../innobase/pars/libpars.a ../innobase/btr/libbtr.a ../innobase/trx/libtrx.a ../innobase/read/libread.a ../innobase/usr/libusr.a ../innobase/buf/libbuf.a ../innobase/ibuf/libibuf.a ../innobase/eval/libeval.a ../innobase/log/liblog.a ../innobase/fsp/libfsp.a ../innobase/fut/libfut.a ../innobase/fil/libfil.a ../innobase/lock/liblock.a ../innobase/mtr/libmtr.a ../innobase/page/libpage.a ../innobase/rem/librem.a ../innobase/thr/libthr.a ../innobase/sync/libsync.a ../innobase/data/libdata.a ../innobase/mach/libmach.a ../innobase/ha/libha.a ../innobase/dyn/libdyn.a ../innobase/mem/libmem.a ../innobase/sync/libsync.a ../innobase/ut/libut.a ../innobase/os/libos.a ../innobase/ut/libut.a ../myisam/libmyisam.a ../myisammrg/libmyisammrg.a ../heap/libheap.a ../vio/libvio.a ../mysys/libmysys.a ../dbug/libdbug.a ../regex/libregex.a ../strings/libmystrings.a -lz       -lcrypt -lm  -pthread 
04292: gcc -g -O -DSAFE_MUTEX -fno-implicit-templates -fno-exceptions -fno-rtti -DMYSQLD_NET_RETRY_COUNT=1000000 -DHAVE_BROKEN_REALPATH -o mysqld sql_lex.o sql_handler.o item.o item_sum.o item_buff.o item_func.o item_cmpfunc.o item_strfunc.o item_timefunc.o thr_malloc.o item_create.o item_subselect.o item_row.o item_geofunc.o field.o strfunc.o key.o sql_class.o sql_list.o net_serv.o protocol.o sql_state.o lock.o my_lock.o sql_string.o sql_manager.o sql_map.o mysqld.o password.o hash_filo.o hostname.o set_var.o sql_parse.o sql_yacc.o sql_base.o table.o sql_select.o sql_insert.o sql_prepare.o sql_error.o sql_update.o sql_delete.o uniques.o sql_do.o procedure.o item_uniq.o sql_test.o log.o log_event.o init.o derror.o sql_acl.o unireg.o des_key_file.o discover.o time.o opt_range.o opt_sum.o records.o filesort.o handler.o ha_heap.o ha_myisam.o ha_myisammrg.o ha_berkeley.o ha_innodb.o ha_ndbcluster.o sql_db.o sql_table.o sql_rename.o sql_crypt.o sql_load.o mf_iocache.o field_conv.o sql_show.o sql_udf.o sql_analyse.o sql_cache.o slave.o sql_repl.o sql_union.o sql_derived.o client.o sql_client.o mini_client_errors.o pack.o stacktrace.o repl_failsafe.o sql_olap.o sql_view.o gstream.o spatial.o sql_help.o protocol_cursor.o tztime.o my_time.o sp_head.o sp_pcontext.o sp_rcontext.o sp.o sp_cache.o parse_file.o sql_trigger.o ha_example.o ha_archive.o ha_tina.o -pthread  ../innobase/usr/libusr.a ../innobase/srv/libsrv.a ../innobase/dict/libdict.a ../innobase/que/libque.a ../innobase/srv/libsrv.a ../innobase/ibuf/libibuf.a ../innobase/row/librow.a ../innobase/pars/libpars.a ../innobase/btr/libbtr.a ../innobase/trx/libtrx.a ../innobase/read/libread.a ../innobase/usr/libusr.a ../innobase/buf/libbuf.a ../innobase/ibuf/libibuf.a ../innobase/eval/libeval.a ../innobase/log/liblog.a ../innobase/fsp/libfsp.a ../innobase/fut/libfut.a ../innobase/fil/libfil.a ../innobase/lock/liblock.a ../innobase/mtr/libmtr.a ../innobase/page/libpage.a ../innobase/rem/librem.a ../innobase/thr/libthr.a ../innobase/sync/libsync.a ../innobase/data/libdata.a ../innobase/mach/libmach.a ../innobase/ha/libha.a ../innobase/dyn/libdyn.a ../innobase/mem/libmem.a ../innobase/sync/libsync.a ../innobase/ut/libut.a ../innobase/os/libos.a ../innobase/ut/libut.a ../myisam/libmyisam.a ../myisammrg/libmyisammrg.a ../heap/libheap.a ../vio/libvio.a ../mysys/libmysys.a ../dbug/libdbug.a ../regex/libregex.a ../strings/libmystrings.a -lz -lcrypt -lm
04293: ../innobase/dict/libdict.a(dict0crea.o): In function `dict_create_index_tree_step':
04294: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/dict/dict0crea.c(.text+0x1349): undefined reference to `page_is_comp'
04295: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/dict/dict0crea.c(.text+0x151d): undefined reference to `page_is_comp'
04296: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/dict/dict0crea.c(.text+0x195d): undefined reference to `page_is_comp'
04297: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/dict/dict0crea.c(.text+0x1a45): undefined reference to `page_is_comp'
04298: ../innobase/dict/libdict.a(dict0load.o): In function `dict_get_first_table_name_in_db':
04299: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/dict/../include/page0page.ic:167: undefined reference to `page_is_comp'
04300: ../innobase/dict/libdict.a(dict0load.o):/usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/dict/../include/page0page.ic:185: more undefined references to `page_is_comp' follow
04301: ../innobase/ibuf/libibuf.a(ibuf0ibuf.o): In function `ibuf_insert_to_index_page':
04302: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/ibuf/ibuf0ibuf.c(.text+0xd17d): undefined reference to `rec_get_status'
04303: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/ibuf/ibuf0ibuf.c(.text+0xd19c): undefined reference to `dict_index_get_n_fields'
04304: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/ibuf/ibuf0ibuf.c(.text+0xd1b0): undefined reference to `dict_index_get_n_unique_in_tree'
04305: ../innobase/ibuf/libibuf.a(ibuf0ibuf.o): In function `ibuf_merge_or_delete_for_page':
04306: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/ibuf/ibuf0ibuf.c(.text+0xee93): undefined reference to `page_is_comp'
04307: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/ibuf/ibuf0ibuf.c(.text+0xef7b): undefined reference to `page_is_comp'
04308: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/ibuf/ibuf0ibuf.c(.text+0xf373): undefined reference to `page_is_comp'
04309: ../innobase/ibuf/libibuf.a(ibuf0ibuf.o): In function `ibuf_delete_for_discarded_space':
04310: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/ibuf/ibuf0ibuf.c(.text+0xf96b): undefined reference to `page_is_comp'
04311: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/ibuf/ibuf0ibuf.c(.text+0xfa53): undefined reference to `page_is_comp'
04312: ../innobase/ibuf/libibuf.a(ibuf0ibuf.o)(.text+0xfb8f):/usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/ibuf/ibuf0ibuf.c: more undefined references to `page_is_comp' follow
04313: ../innobase/row/librow.a(row0ins.o): In function `row_ins_index_entry_low':
04314: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/row/row0ins.c:2058: undefined reference to `rec_get_status'
04315: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/row/row0ins.c:2058: undefined reference to `dict_index_get_n_fields'
04316: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/row/row0ins.c:2058: undefined reference to `dict_index_get_n_unique_in_tree'
04317: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/row/row0ins.c:2058: undefined reference to `page_is_comp'
04318: ../innobase/row/librow.a(row0row.o): In function `row_search_on_row_ref':
04319: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/row/../include/page0page.ic:167: undefined reference to `page_is_comp'
04320: ../innobase/row/librow.a(row0row.o): In function `row_search_index_entry':
04321: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/row/row0row.c(.text+0x161c): undefined reference to `page_is_comp'
04322: ../innobase/row/librow.a(row0sel.o): In function `row_sel_get_clust_rec':
04323: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/row/row0sel.c:859: undefined reference to `page_is_comp'
04324: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/row/row0sel.c:859: undefined reference to `page_is_comp'
04325: ../innobase/row/librow.a(row0sel.o):/usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/row/row0sel.c:1168: more undefined references to `page_is_comp' follow
04326: ../innobase/btr/libbtr.a(btr0cur.o): In function `btr_cur_optimistic_update':
04327: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/btr0cur.c:229: undefined reference to `rec_offs_n_fields'
04328: ../innobase/btr/libbtr.a(btr0cur.o): In function `btr_cur_pess_upd_restore_supremum':
04329: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/../include/page0page.ic:167: undefined reference to `page_is_comp'
04330: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/../include/page0page.ic:185: undefined reference to `page_is_comp'
04331: ../innobase/btr/libbtr.a(btr0cur.o): In function `btr_cur_pessimistic_update':
04332: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/btr0cur.c(.text+0x8e2f): undefined reference to `page_is_comp'
04333: ../innobase/btr/libbtr.a(btr0cur.o): In function `btr_cur_optimistic_delete':
04334: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/btr0cur.c(.text+0xa97c): undefined reference to `rec_offs_n_fields'
04335: ../innobase/btr/libbtr.a(btr0cur.o): In function `btr_cur_pessimistic_delete':
04336: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/btr0cur.c(.text+0xb30c): undefined reference to `page_is_comp'
04337: ../innobase/btr/libbtr.a(btr0cur.o): In function `btr_estimate_number_of_different_key_vals':
04338: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/btr0cur.c:2976: undefined reference to `page_is_comp'
04339: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/btr0cur.c:2976: undefined reference to `page_is_comp'
04340: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/btr0cur.c:2976: undefined reference to `page_is_comp'
04341: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/btr0cur.c:2976: undefined reference to `page_is_comp'
04342: ../innobase/btr/libbtr.a(btr0pcur.o):/usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/../include/page0page.ic:185: more undefined references to `page_is_comp' follow
04343: ../innobase/btr/libbtr.a(btr0sea.o): In function `btr_search_drop_page_hash_index':
04344: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/btr0sea.c(.text+0x4a7c): undefined reference to `rec_get_status'
04345: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/btr0sea.c(.text+0x4c6c): undefined reference to `rec_get_status'
04346: ../innobase/btr/libbtr.a(btr0sea.o): In function `btr_search_build_page_hash_index':
04347: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/btr0sea.c(.text+0x636a): undefined reference to `page_is_comp'
04348: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/btr0sea.c(.text+0x6394): undefined reference to `page_is_comp'
04349: ../innobase/btr/libbtr.a(btr0sea.o): In function `btr_search_update_hash_on_insert':
04350: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/../include/page0page.ic:185: undefined reference to `page_is_comp'
04351: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/../include/page0page.ic:167: undefined reference to `page_is_comp'
04352: /usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/btr/../include/page0page.ic:185: undefined reference to `page_is_comp'
04353: ../innobase/lock/liblock.a(lock0lock.o)(.text+0x1375):/usr/home/mysqldev/cane/mysql-5.0.3-alpha/innobase/lock/lock0lock.c: more undefined references to `page_is_comp' follow
04354: gmake[4]: *** [mysqld] Error 1
04355: gmake[4]: Leaving directory `/usr/home/mysqldev/cane/mysql-5.0.3-alpha/sql'

How to repeat:
Try to compile, observe the error above.
[17 Dec 2004 21:23] Heikki Tuuri
Lenz, Marko,

in hundin, compile-pentium succeeds. You probably have a different gcc version.

I moved now this inline function before its use in page0page.ic. Please bk pull 5.0, and try compilation again!

Marko, it is safest to use an inline function only after it has been defined in a file.

Regards,

Heikki

/****************************************************************
Determine whether the page is in new-style compact format. */
UNIV_INLINE
ibool
page_is_comp(
/*=========*/
                        /* out: TRUE if the page is in compact format
                        FALSE if it is in old-style format */
        page_t* page)   /* in: index page */
{
        return(!!(page_header_get_field(page, PAGE_N_HEAP) & 0x8000));
}
[3 Jan 2005 12:57] Marko Mäkelä
A similar bug (#7464) was reported a while ago, and the problems were fixed by changing the order of some inline function definitions and by removing two inline functions. Now it appears to work.