[binutils-gdb] Exported const objects

sergiodj+buildbot@redhat.com sergiodj+buildbot@redhat.com
Sat Feb 28 06:58:00 GMT 2015


*** TEST RESULTS FOR COMMIT 7cf99fb1c72769c17eed0a62951698bf56432108 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 7cf99fb1c72769c17eed0a62951698bf56432108

Exported const objects
const works different in C vs C++.  In C++, a global "const" variable
has internal linkage by default, resulting in link errors like:

  ...
  extension.o: In function `get_ext_lang_defn(extension_language)':
  gdb/extension.c:126: undefined reference to `extension_language_guile'
  gdb/extension.c:124: undefined reference to `extension_language_guile'
  ...

The fix is to define exported const objects with "extern const".  But
that in C would not be a definition.  So we need to #ifdef C vs C++ in
this case.

EXPORTED_CONST comes from include/ansidecl.h, but in the
feature_to_c.sh case I think it's better to leave the script with no
dependencies.

gdb/ChangeLog:
2015-02-27  Pedro Alves  <palves@redhat.com>

	* cp-valprint.c (vtbl_ptr_name): Use EXPORTED_CONST.
	* guile/guile.c (extension_language_guile): Use EXPORTED_CONST.
	* features/feature_to_c.sh: Tag the generated xml_builtin array
	with extern const in C++ mode.



More information about the Gdb-testers mailing list