Exported const objects
authorPedro Alves <palves@redhat.com>
Mon, 9 Feb 2015 13:22:27 +0000 (13:22 +0000)
committerPedro Alves <palves@redhat.com>
Fri, 27 Feb 2015 17:31:45 +0000 (17:31 +0000)
commit7cf99fb1c72769c17eed0a62951698bf56432108
treed5a1add0bce7cbe9b49fe34a4f88a1ba17f2010b
parent1424c16eab1a96de054991c346c2bbf3eac82dec
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.
gdb/ChangeLog
gdb/cp-valprint.c
gdb/features/feature_to_c.sh
gdb/guile/guile.c