aboutsummaryrefslogtreecommitdiff
path: root/libctf
diff options
context:
space:
mode:
authorNick Alcock <nick.alcock@oracle.com>2020-07-30 17:43:12 +0100
committerNick Alcock <nick.alcock@oracle.com>2020-08-27 13:14:10 +0100
commit987cf30ad80c7c13f713aa8e4ca3e1dbf08e9d63 (patch)
treeccae55789b8106b42c0dd97d9635e1caa8f5709c /libctf
parent514b4e191d5f46de8e142fe216e677a35fa9c4bb (diff)
downloadbinutils-987cf30ad80c7c13f713aa8e4ca3e1dbf08e9d63.zip
binutils-987cf30ad80c7c13f713aa8e4ca3e1dbf08e9d63.tar.gz
binutils-987cf30ad80c7c13f713aa8e4ca3e1dbf08e9d63.tar.bz2
libctf, binutils: initial work towards libctf gettextization
We gettextize under our package name, which we change to a more reasonable 'libctf'. Our internationalization support is mostly provided by ctf-intl.h, which is a copy of opcodes/opintl.h with the non-gettext_noop N_() expansion debracketed to avoid pedantic compiler warnings. The libctf error strings returned by ctf_errmsg are marked up for internationalization. (We also adjust binutils's Makefile a tiny bit to allow for the fact that libctf now uses functions from libintl.) binutils/ChangeLog 2020-08-27 Nick Alcock <nick.alcock@oracle.com> * Makefile.am (readelf_LDADD): Move $(LIBINTL) after $(LIBCTF_NOBFD). * Makefile.in: Regenerated. libctf/ChangeLog 2020-08-27 Nick Alcock <nick.alcock@oracle.com> * configure.ac: Adjust package name to simply 'libctf': arbitrarily declare this to be version 1.2.0. * Makefile.am (AM_CPPFLAGS): Add @INCINTL@. * Makefile.in: Regenerated. * configure: Regenerated. * ctf-intl.h: New file, lightly modified from opcodes/opintl.h. * ctf-impl.h: Include it. * ctf-error.r (_ctf_errlist_t): Mark strings as noop-translatable. (ctf_errmsg): Actually translate them.
Diffstat (limited to 'libctf')
-rw-r--r--libctf/ChangeLog12
-rw-r--r--libctf/Makefile.am2
-rw-r--r--libctf/Makefile.in2
-rwxr-xr-xlibctf/configure28
-rw-r--r--libctf/configure.ac2
-rw-r--r--libctf/ctf-error.c4
-rw-r--r--libctf/ctf-impl.h1
-rw-r--r--libctf/ctf-intl.h68
8 files changed, 100 insertions, 19 deletions
diff --git a/libctf/ChangeLog b/libctf/ChangeLog
index bbd807d..34671a7 100644
--- a/libctf/ChangeLog
+++ b/libctf/ChangeLog
@@ -1,3 +1,15 @@
+2020-08-27 Nick Alcock <nick.alcock@oracle.com>
+
+ * configure.ac: Adjust package name to simply 'libctf': arbitrarily
+ declare this to be version 1.2.0.
+ * Makefile.am (AM_CPPFLAGS): Add @INCINTL@.
+ * Makefile.in: Regenerated.
+ * configure: Regenerated.
+ * ctf-intl.h: New file, lightly modified from opcodes/opintl.h.
+ * ctf-impl.h: Include it.
+ * ctf-error.r (_ctf_errlist_t): Mark strings as noop-translatable.
+ (ctf_errmsg): Actually translate them.
+
2020-07-26 Eli Zaretskii <eliz@gnu.org>
PR binutils/25155:
diff --git a/libctf/Makefile.am b/libctf/Makefile.am
index 8b8f0a8..d762b0a 100644
--- a/libctf/Makefile.am
+++ b/libctf/Makefile.am
@@ -28,7 +28,7 @@ ZLIB = @zlibdir@ -lz
ZLIBINC = @zlibinc@
INCDIR = $(srcdir)/../include
-AM_CPPFLAGS = -D_GNU_SOURCE -I$(srcdir) -I$(srcdir)/../include -I$(srcdir)/../bfd -I../bfd
+AM_CPPFLAGS = -D_GNU_SOURCE -I$(srcdir) -I$(srcdir)/../include -I$(srcdir)/../bfd -I../bfd @INCINTL@
AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @WERROR@ $(ZLIBINC)
if INSTALL_LIBBFD
diff --git a/libctf/Makefile.in b/libctf/Makefile.in
index 78de09b..f43c095 100644
--- a/libctf/Makefile.in
+++ b/libctf/Makefile.in
@@ -447,7 +447,7 @@ AUTOMAKE_OPTIONS = foreign no-texinfo.tex
ZLIB = @zlibdir@ -lz
ZLIBINC = @zlibinc@
INCDIR = $(srcdir)/../include
-AM_CPPFLAGS = -D_GNU_SOURCE -I$(srcdir) -I$(srcdir)/../include -I$(srcdir)/../bfd -I../bfd
+AM_CPPFLAGS = -D_GNU_SOURCE -I$(srcdir) -I$(srcdir)/../include -I$(srcdir)/../bfd -I../bfd @INCINTL@
AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @WERROR@ $(ZLIBINC)
@INSTALL_LIBBFD_TRUE@lib_LTLIBRARIES = libctf.la libctf-nobfd.la
@INSTALL_LIBBFD_FALSE@include_HEADERS =
diff --git a/libctf/configure b/libctf/configure
index a1f5b7f..b7ca7cd 100755
--- a/libctf/configure
+++ b/libctf/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libctf library 1.2.0-pre.
+# Generated by GNU Autoconf 2.69 for libctf 1.2.0.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -585,10 +585,10 @@ MFLAGS=
MAKEFLAGS=
# Identity of this package.
-PACKAGE_NAME='libctf library'
-PACKAGE_TARNAME='libctf-library'
-PACKAGE_VERSION='1.2.0-pre'
-PACKAGE_STRING='libctf library 1.2.0-pre'
+PACKAGE_NAME='libctf'
+PACKAGE_TARNAME='libctf'
+PACKAGE_VERSION='1.2.0'
+PACKAGE_STRING='libctf 1.2.0'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1349,7 +1349,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libctf library 1.2.0-pre to adapt to many kinds of systems.
+\`configure' configures libctf 1.2.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1397,7 +1397,7 @@ Fine tuning of the installation directories:
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root [DATAROOTDIR/doc/libctf-library]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/libctf]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
@@ -1419,7 +1419,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libctf library 1.2.0-pre:";;
+ short | recursive ) echo "Configuration of libctf 1.2.0:";;
esac
cat <<\_ACEOF
@@ -1532,7 +1532,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libctf library configure 1.2.0-pre
+libctf configure 1.2.0
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1943,7 +1943,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libctf library $as_me 1.2.0-pre, which was
+It was created by libctf $as_me 1.2.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -4185,8 +4185,8 @@ fi
# Define the identity of the package.
- PACKAGE='libctf-library'
- VERSION='1.2.0-pre'
+ PACKAGE='libctf'
+ VERSION='1.2.0'
cat >>confdefs.h <<_ACEOF
@@ -13944,7 +13944,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libctf library $as_me 1.2.0-pre, which was
+This file was extended by libctf $as_me 1.2.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -14010,7 +14010,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libctf library config.status 1.2.0-pre
+libctf config.status 1.2.0
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/libctf/configure.ac b/libctf/configure.ac
index f5ed973..575da46 100644
--- a/libctf/configure.ac
+++ b/libctf/configure.ac
@@ -19,7 +19,7 @@ dnl <http://www.gnu.org/licenses/>.
dnl
AC_PREREQ(2.64)
-AC_INIT([libctf library], 1.2.0-pre)
+AC_INIT([libctf], 1.2.0)
AC_CONFIG_SRCDIR(ctf-impl.h)
AC_CONFIG_MACRO_DIR(../config)
AC_CONFIG_MACRO_DIR(../bfd)
diff --git a/libctf/ctf-error.c b/libctf/ctf-error.c
index 20971f4..9611e36 100644
--- a/libctf/ctf-error.c
+++ b/libctf/ctf-error.c
@@ -45,7 +45,7 @@ static const union _ctf_errlist_t
} _ctf_errlist =
{
{
-#define _CTF_STR(n, s) s,
+#define _CTF_STR(n, s) N_(s),
#include "ctf-error.h"
#undef _CTF_STR
}
@@ -70,7 +70,7 @@ ctf_errmsg (int error)
else
str = (const char *) strerror (error);
- return (str ? str : "Unknown error");
+ return (str ? gettext (str) : _("Unknown error"));
}
int
diff --git a/libctf/ctf-impl.h b/libctf/ctf-impl.h
index 35320d4..faee039 100644
--- a/libctf/ctf-impl.h
+++ b/libctf/ctf-impl.h
@@ -36,6 +36,7 @@
#include <elf.h>
#include <bfd.h>
#include "hashtab.h"
+#include "ctf-intl.h"
#ifdef __cplusplus
extern "C"
diff --git a/libctf/ctf-intl.h b/libctf/ctf-intl.h
new file mode 100644
index 0000000..af74872
--- /dev/null
+++ b/libctf/ctf-intl.h
@@ -0,0 +1,68 @@
+/* ctf-intl.h - libctf specific header for gettext code.
+ Copyright (C) 1998-2020 Free Software Foundation, Inc.
+
+ Written by Tom Tromey <tromey@cygnus.com>
+
+ This file is part of libctf.
+
+ This library is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ It is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this file; see the file COPYING. If not, write to the
+ Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+#ifndef _CTF_INTL_H
+#define _CTF_INTL_H
+
+#ifdef ENABLE_NLS
+# include <libintl.h>
+/* Note the redefinition of gettext and ngettext here to use PACKAGE.
+
+ This is because the code in this directory is used to build a
+ library which will be linked with code in other directories to form
+ programs. We want to maintain a separate translation file for this
+ directory however, rather than being forced to merge it with that
+ of any program linked to libopcodes. This is a library, so it
+ cannot depend on the catalog currently loaded.
+
+ In order to do this, we have to make sure that when we extract
+ messages we use the LIBCTF domain rather than the domain of the
+ program that included the opcodes library, (eg OBJDUMP). Hence we
+ use dgettext (PACKAGE, String) and define PACKAGE to be 'libctf'.
+ (See the code in configure). */
+# undef gettext
+# define gettext(Msgid) dgettext (PACKAGE, Msgid)
+# undef ngettext
+# define ngettext(Msgid1, Msgid2, n) dngettext (PACKAGE, Msgid1, Msgid2, n)
+# define _(String) gettext (String)
+# ifdef gettext_noop
+# define N_(String) gettext_noop (String)
+# else
+# define N_(String) String
+# endif
+#else
+# define gettext(Msgid) (Msgid)
+# define dgettext(Domainname, Msgid) (Msgid)
+# define dcgettext(Domainname, Msgid, Category) (Msgid)
+# define ngettext(Msgid1, Msgid2, n) \
+ (n == 1 ? Msgid1 : Msgid2)
+# define dngettext(Domainname, Msgid1, Msgid2, n) \
+ (n == 1 ? Msgid1 : Msgid2)
+# define dcngettext(Domainname, Msgid1, Msgid2, n, Category) \
+ (n == 1 ? Msgid1 : Msgid2)
+# define textdomain(Domainname) do {} while (0)
+# define bindtextdomain(Domainname, Dirname) do {} while (0)
+# define _(String) (String)
+# define N_(String) String
+#endif
+
+#endif /* _CTF_INTL_H */