diff options
author | Nick Alcock <nick.alcock@oracle.com> | 2019-09-30 15:04:05 +0100 |
---|---|---|
committer | Nick Alcock <nick.alcock@oracle.com> | 2020-06-26 15:56:39 +0100 |
commit | 094e34f22146ad53eb93da22e480cab428bd23b5 (patch) | |
tree | 67dcb4257f8436adcde9d021bd8f99c774de47d8 /binutils | |
parent | 1776e3e59ca6200dff981894361b8b49cb453766 (diff) | |
download | gdb-094e34f22146ad53eb93da22e480cab428bd23b5.zip gdb-094e34f22146ad53eb93da22e480cab428bd23b5.tar.gz gdb-094e34f22146ad53eb93da22e480cab428bd23b5.tar.bz2 |
binutils, ld: work with --disable-libctf
This unfortunately means conditionalizing out all the libctf code, but
the result is not too unbearably ugly, if a bit repetitive. I have
stubbed out code in the !ENABLE_LIBCTF path to avoid extra redundant
ifdefs where it seems that might be helpful. (The stubs are not too
disruptive, but I've tried to keep them on one line where possible to
avoid filling up the screen with stubs that nobody would care about.
If this is too much of a coding style violation I can change it.)
Changes since v2: use GCC_ENABLE rather than repeating all the
AC_ARG_ENABLE stuff over and over again.
ld/
* configure.ac [--enable-libctf]: New, default yes.
Set ENABLE_LIBCTF accordingly.
* Makefile.am [!ENABLE_LIBCTF]: Empty LIBCTF.
* configure: Regenerate.
* config.in: Regenerate.
* Makefile.in: Regenerate.
* aclocal.m4: Regenerate.
* ldlang.c (ctf_output): Conditionalize on ENABLE_LIBCTF.
(ldlang_open_ctf): Likewise.
(lang_merge_ctf): Likewise.
(ldlang_ctf_apply_strsym): Likewise.
(lang_write_ctf): Likewise.
(ldlang_write_ctf_late): Likewise.
(ldlang_open_ctf) [!ENABLE_LIBCTF]: Warn about the presence of CTF
sections.
(lang_merge_ctf) [!ENABLE_LIBCTF]: New stub.
(ldlang_ctf_apply_strsym) [!ENABLE_LIBCTF]: Likewise.
(lang_write_ctf) [!ENABLE_LIBCTF]: Likewise.
(ldlang_write_ctf_late) [!ENABLE_LIBCTF]: Likewise.
* ldelfgen.c (ldelf_emit_ctf_early): Conditionalize on
ENABLE_LIBCTF.
(struct ctf_strsym_iter_cb_arg): Likewise.
(ldelf_ctf_strtab_iter_cb): Likewise.
(ldelf_ctf_symbols_iter_cb): Likewise.
(ldelf_examine_strtab_for_ctf): Likewise.
(ldelf_emit_ctf_early) [!ENABLE_LIBCTF]: New stub.
(ldelf_examine_strtab_for_ctf) [!ENABLE_LIBCTF]: New stub.
binutils/
* configure.ac [--enable-libctf]: New, default yes.
Set ENABLE_LIBCTF accordingly.
* Makefile.am [!ENABLE_LIBCTF]: Empty LIBCTF and LIBCTF_NOBFD.
* configure: Regenerate.
* config.in: Regenerate.
* Makefile.in: Regenerate.
* aclocal.m4: Regenerate.
* objdump.c (usage): Conditionalize portions on ENABLE_LIBCTF.
(option_values): Likewise.
(long_options): Likewise.
(main): Likewise.
(dump_ctf_indent_lines): Conditionalize out when !ENABLE_LIBCTF.
(make_ctfsect): Likewise.
(dump_ctf_archive_member): Likewise.
(dump_ctf) [ENABLE_LIBCTF]: Likewise.
(dump_ctf) [!ENABLE_LIBCTF]: New empty stub.
* readelf.c (options): Conditionalize portions on ENABLE_LIBCTF.
(usage): Likewise.
(process_section_contents): Likewise.
(shdr_to_ctf_sect): Conditionalize out when !ENABLE_LIBCTF.
(dump_ctf_indent_lines): Likewise.
(dump_section_as_ctf) [ENABLE_LIBCTF]: Likewise.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/ChangeLog | 25 | ||||
-rw-r--r-- | binutils/Makefile.am | 5 | ||||
-rw-r--r-- | binutils/Makefile.in | 9 | ||||
-rw-r--r-- | binutils/aclocal.m4 | 1 | ||||
-rw-r--r-- | binutils/config.in | 3 | ||||
-rwxr-xr-x | binutils/configure | 39 | ||||
-rw-r--r-- | binutils/configure.ac | 6 | ||||
-rw-r--r-- | binutils/doc/Makefile.in | 1 | ||||
-rw-r--r-- | binutils/objdump.c | 27 | ||||
-rw-r--r-- | binutils/readelf.c | 8 |
10 files changed, 117 insertions, 7 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 6db2be3..1532a37 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,28 @@ +2020-06-26 Nick Alcock <nick.alcock@oracle.com> + + * configure.ac [--enable-libctf]: New, default yes. + Set ENABLE_LIBCTF accordingly. + * Makefile.am [!ENABLE_LIBCTF]: Empty LIBCTF and LIBCTF_NOBFD. + * configure: Regenerate. + * config.in: Regenerate. + * Makefile.in: Regenerate. + * aclocal.m4: Regenerate. + * objdump.c (usage): Conditionalize portions on ENABLE_LIBCTF. + (option_values): Likewise. + (long_options): Likewise. + (main): Likewise. + (dump_ctf_indent_lines): Conditionalize out when !ENABLE_LIBCTF. + (make_ctfsect): Likewise. + (dump_ctf_archive_member): Likewise. + (dump_ctf) [ENABLE_LIBCTF]: Likewise. + (dump_ctf) [!ENABLE_LIBCTF]: New empty stub. + * readelf.c (options): Conditionalize portions on ENABLE_LIBCTF. + (usage): Likewise. + (process_section_contents): Likewise. + (shdr_to_ctf_sect): Conditionalize out when !ENABLE_LIBCTF. + (dump_ctf_indent_lines): Likewise. + (dump_section_as_ctf) [ENABLE_LIBCTF]: Likewise. + 2020-06-26 Jan Beulich <jbeulich@suse.com> * doc/binutils.texi: Adjust description of x86's -Msuffix. Drop diff --git a/binutils/Makefile.am b/binutils/Makefile.am index e5cf563..2ee1196 100644 --- a/binutils/Makefile.am +++ b/binutils/Makefile.am @@ -164,8 +164,13 @@ BFDLIB = ../bfd/libbfd.la OPCODES = ../opcodes/libopcodes.la +if ENABLE_LIBCTF LIBCTF = ../libctf/libctf.la LIBCTF_NOBFD = ../libctf/libctf-nobfd.la +else +LIBCTF = +LIBCTF_NOBFD = +endif LIBIBERTY = ../libiberty/libiberty.a diff --git a/binutils/Makefile.in b/binutils/Makefile.in index ee6f267..7ef2af4 100644 --- a/binutils/Makefile.in +++ b/binutils/Makefile.in @@ -122,6 +122,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../bfd/acinclude.m4 \ $(top_srcdir)/../bfd/warning.m4 $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/depstand.m4 \ + $(top_srcdir)/../config/enable.m4 \ $(top_srcdir)/../config/gettext-sister.m4 \ $(top_srcdir)/../config/iconv.m4 \ $(top_srcdir)/../config/largefile.m4 \ @@ -222,6 +223,7 @@ objcopy_LDADD = $(LDADD) am_objdump_OBJECTS = objdump.$(OBJEXT) dwarf.$(OBJEXT) prdbg.$(OBJEXT) \ $(am__objects_3) $(am__objects_1) $(am__objects_2) objdump_OBJECTS = $(am_objdump_OBJECTS) +@ENABLE_LIBCTF_TRUE@am__DEPENDENCIES_2 = ../libctf/libctf.la am_ranlib_OBJECTS = ar.$(OBJEXT) is-ranlib.$(OBJEXT) arparse.$(OBJEXT) \ arlex.$(OBJEXT) arsup.$(OBJEXT) rename.$(OBJEXT) \ binemul.$(OBJEXT) emul_$(EMULATION).$(OBJEXT) $(am__objects_1) @@ -229,6 +231,7 @@ ranlib_OBJECTS = $(am_ranlib_OBJECTS) am_readelf_OBJECTS = readelf.$(OBJEXT) version.$(OBJEXT) \ unwind-ia64.$(OBJEXT) dwarf.$(OBJEXT) $(am__objects_2) readelf_OBJECTS = $(am_readelf_OBJECTS) +@ENABLE_LIBCTF_TRUE@am__DEPENDENCIES_3 = ../libctf/libctf-nobfd.la am_size_OBJECTS = size.$(OBJEXT) $(am__objects_1) size_OBJECTS = $(am_size_OBJECTS) size_LDADD = $(LDADD) @@ -658,8 +661,10 @@ BULIBS = bucomm.c version.c filemode.c ELFLIBS = elfcomm.c BFDLIB = ../bfd/libbfd.la OPCODES = ../opcodes/libopcodes.la -LIBCTF = ../libctf/libctf.la -LIBCTF_NOBFD = ../libctf/libctf-nobfd.la +@ENABLE_LIBCTF_FALSE@LIBCTF = +@ENABLE_LIBCTF_TRUE@LIBCTF = ../libctf/libctf.la +@ENABLE_LIBCTF_FALSE@LIBCTF_NOBFD = +@ENABLE_LIBCTF_TRUE@LIBCTF_NOBFD = ../libctf/libctf-nobfd.la LIBIBERTY = ../libiberty/libiberty.a POTFILES = $(CFILES) $(DEBUG_SRCS) $(HFILES) EXPECT = expect diff --git a/binutils/aclocal.m4 b/binutils/aclocal.m4 index 4fa32ff..8bf2e9e 100644 --- a/binutils/aclocal.m4 +++ b/binutils/aclocal.m4 @@ -1189,6 +1189,7 @@ m4_include([../bfd/acinclude.m4]) m4_include([../bfd/warning.m4]) m4_include([../config/acx.m4]) m4_include([../config/depstand.m4]) +m4_include([../config/enable.m4]) m4_include([../config/gettext-sister.m4]) m4_include([../config/iconv.m4]) m4_include([../config/largefile.m4]) diff --git a/binutils/config.in b/binutils/config.in index 703f7b1..3adc32b 100644 --- a/binutils/config.in +++ b/binutils/config.in @@ -21,6 +21,9 @@ /* Should strings use -a behavior by default? */ #undef DEFAULT_STRINGS_ALL +/* Handle .ctf type-info sections */ +#undef ENABLE_LIBCTF + /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS diff --git a/binutils/configure b/binutils/configure index 782fffa..bdc93e0 100755 --- a/binutils/configure +++ b/binutils/configure @@ -684,6 +684,8 @@ WARN_WRITE_STRINGS NO_WERROR WARN_CFLAGS_FOR_BUILD WARN_CFLAGS +ENABLE_LIBCTF_FALSE +ENABLE_LIBCTF_TRUE LIBDEBUGINFOD OTOOL64 OTOOL @@ -815,6 +817,7 @@ enable_targets enable_deterministic_archives enable_default_strings_all with_debuginfod +enable_libctf enable_werror enable_build_warnings enable_nls @@ -1472,6 +1475,7 @@ Optional Features: ar and ranlib default to -D behavior --disable-default-strings-all strings defaults to --data behavior + --enable-libctf Handle .ctf type-info sections [default=yes] --enable-werror treat compile warnings as errors --enable-build-warnings enable build-time compiler warnings --disable-nls do not use Native Language Support @@ -11529,7 +11533,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11532 "configure" +#line 11536 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11635,7 +11639,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11638 "configure" +#line 11642 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -12331,6 +12335,33 @@ cat >>confdefs.h <<_ACEOF _ACEOF + # Check whether --enable-libctf was given. +if test "${enable_libctf+set}" = set; then : + enableval=$enable_libctf; + case "$enableval" in + yes|no) ;; + *) as_fn_error $? "Argument to enable/disable libctf must be yes or no" "$LINENO" 5 ;; + esac + +else + enable_libctf=yes +fi + + +if test "${enable_libctf}" = yes; then + +$as_echo "#define ENABLE_LIBCTF 1" >>confdefs.h + +fi + if test "${enable_libctf}" = yes; then + ENABLE_LIBCTF_TRUE= + ENABLE_LIBCTF_FALSE='#' +else + ENABLE_LIBCTF_TRUE='#' + ENABLE_LIBCTF_FALSE= +fi + + # Set the 'development' global. . $srcdir/../bfd/development.sh @@ -15413,6 +15444,10 @@ else am__EXEEXT_FALSE= fi +if test -z "${ENABLE_LIBCTF_TRUE}" && test -z "${ENABLE_LIBCTF_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_LIBCTF\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/binutils/configure.ac b/binutils/configure.ac index 385ab01..4ac1f34 100644 --- a/binutils/configure.ac +++ b/binutils/configure.ac @@ -69,6 +69,12 @@ AC_DEBUGINFOD AC_DEFINE_UNQUOTED(DEFAULT_STRINGS_ALL, $default_strings_all, [Should strings use -a behavior by default?]) +GCC_ENABLE([libctf], [yes], [], [Handle .ctf type-info sections]) +if test "${enable_libctf}" = yes; then + AC_DEFINE(ENABLE_LIBCTF, 1, [Handle .ctf type-info sections]) +fi +AM_CONDITIONAL(ENABLE_LIBCTF, test "${enable_libctf}" = yes) + AM_BINUTILS_WARNINGS AC_CONFIG_HEADERS(config.h:config.in) diff --git a/binutils/doc/Makefile.in b/binutils/doc/Makefile.in index b00260b..e925b81 100644 --- a/binutils/doc/Makefile.in +++ b/binutils/doc/Makefile.in @@ -111,6 +111,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../bfd/acinclude.m4 \ $(top_srcdir)/../bfd/warning.m4 $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/depstand.m4 \ + $(top_srcdir)/../config/enable.m4 \ $(top_srcdir)/../config/gettext-sister.m4 \ $(top_srcdir)/../config/iconv.m4 \ $(top_srcdir)/../config/largefile.m4 \ diff --git a/binutils/objdump.c b/binutils/objdump.c index c582feb..93508e2 100644 --- a/binutils/objdump.c +++ b/binutils/objdump.c @@ -235,7 +235,13 @@ usage (FILE *stream, int status) =gdb_index,=trace_info,=trace_abbrev,=trace_aranges,\n\ =addr,=cu_index,=links,=follow-links]\n\ Display DWARF info in the file\n\ +")); +#ifdef ENABLE_LIBCTF + fprintf (stream, _("\ --ctf=SECTION Display CTF info from SECTION\n\ +")); +#endif + fprintf (stream, _("\ -t, --syms Display the contents of the symbol table(s)\n\ -T, --dynamic-syms Display the contents of the dynamic symbol table\n\ -r, --reloc Display the relocation entries in the file\n\ @@ -284,9 +290,12 @@ usage (FILE *stream, int status) --dwarf-depth=N Do not display DIEs at depth N or greater\n\ --dwarf-start=N Display DIEs starting with N, at the same depth\n\ or deeper\n\ - --dwarf-check Make additional dwarf internal consistency checks.\ - \n\ - --ctf-parent=SECTION Use SECTION as the CTF parent\n\ + --dwarf-check Make additional dwarf internal consistency checks.\n")); +#ifdef ENABLE_LIBCTF + fprintf (stream, _("\ + --ctf-parent=SECTION Use SECTION as the CTF parent\n")); +#endif + fprintf (stream, _("\ --visualize-jumps Visualize jumps by drawing ASCII art lines\n\ --visualize-jumps=color Use colors in the ASCII art\n\ --visualize-jumps=extended-color Use extended 8-bit color codes\n\ @@ -328,8 +337,10 @@ enum option_values OPTION_NO_RECURSE_LIMIT, OPTION_INLINES, OPTION_SOURCE_COMMENT, +#ifdef ENABLE_LIBCTF OPTION_CTF, OPTION_CTF_PARENT, +#endif OPTION_VISUALIZE_JUMPS }; @@ -375,8 +386,10 @@ static struct option long_options[]= {"special-syms", no_argument, &dump_special_syms, 1}, {"include", required_argument, NULL, 'I'}, {"dwarf", optional_argument, NULL, OPTION_DWARF}, +#ifdef ENABLE_LIBCTF {"ctf", required_argument, NULL, OPTION_CTF}, {"ctf-parent", required_argument, NULL, OPTION_CTF_PARENT}, +#endif {"stabs", no_argument, NULL, 'G'}, {"start-address", required_argument, NULL, OPTION_START_ADDRESS}, {"stop-address", required_argument, NULL, OPTION_STOP_ADDRESS}, @@ -4026,6 +4039,7 @@ dump_bfd_header (bfd *abfd) } +#ifdef ENABLE_LIBCTF /* Formatting callback function passed to ctf_dump. Returns either the pointer it is passed, or a pointer to newly-allocated storage, in which case dump_ctf() will free it when it no longer needs it. */ @@ -4167,6 +4181,11 @@ dump_ctf (bfd *abfd, const char *sect_name, const char *parent_name) free (parentdata); free (ctfdata); } +#else +static void +dump_ctf (bfd *abfd ATTRIBUTE_UNUSED, const char *sect_name ATTRIBUTE_UNUSED, + const char *parent_name ATTRIBUTE_UNUSED) {} +#endif static void @@ -5348,6 +5367,7 @@ main (int argc, char **argv) case OPTION_DWARF_CHECK: dwarf_check = TRUE; break; +#ifdef ENABLE_LIBCTF case OPTION_CTF: dump_ctf_section_info = TRUE; dump_ctf_section_name = xstrdup (optarg); @@ -5356,6 +5376,7 @@ main (int argc, char **argv) case OPTION_CTF_PARENT: dump_ctf_parent_name = xstrdup (optarg); break; +#endif case 'G': dump_stab_section_info = TRUE; seenflag = TRUE; diff --git a/binutils/readelf.c b/binutils/readelf.c index 25f0e23..2f0cd77 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -4502,11 +4502,13 @@ static struct option options[] = {"dwarf-start", required_argument, 0, OPTION_DWARF_START}, {"dwarf-check", no_argument, 0, OPTION_DWARF_CHECK}, +#ifdef ENABLE_LIBCTF {"ctf", required_argument, 0, OPTION_CTF_DUMP}, {"ctf-symbols", required_argument, 0, OPTION_CTF_SYMBOLS}, {"ctf-strings", required_argument, 0, OPTION_CTF_STRINGS}, {"ctf-parent", required_argument, 0, OPTION_CTF_PARENT}, +#endif {"version", no_argument, 0, 'v'}, {"wide", no_argument, 0, 'W'}, @@ -4558,6 +4560,7 @@ usage (FILE * stream) --dwarf-depth=N Do not display DIEs at depth N or greater\n\ --dwarf-start=N Display DIEs starting with N, at the same depth\n\ or deeper\n")); +#ifdef ENABLE_LIBCTF fprintf (stream, _("\ --ctf=<number|name> Display CTF info from section <number|name>\n\ --ctf-parent=<number|name>\n\ @@ -4566,6 +4569,7 @@ usage (FILE * stream) Use section <number|name> as the CTF external symtab\n\n\ --ctf-strings=<number|name>\n\ Use section <number|name> as the CTF external strtab\n\n")); +#endif #ifdef SUPPORT_DISASSEMBLY fprintf (stream, _("\ @@ -14132,6 +14136,7 @@ dump_section_as_bytes (Elf_Internal_Shdr * section, return FALSE; } +#ifdef ENABLE_LIBCTF static ctf_sect_t * shdr_to_ctf_sect (ctf_sect_t *buf, Elf_Internal_Shdr *shdr, Filedata *filedata) { @@ -14292,6 +14297,7 @@ dump_section_as_ctf (Elf_Internal_Shdr * section, Filedata * filedata) free (strdata); return ret; } +#endif static bfd_boolean load_specific_debug_section (enum dwarf_section_display_enum debug, @@ -14777,11 +14783,13 @@ process_section_contents (Filedata * filedata) res = FALSE; } +#ifdef ENABLE_LIBCTF if (dump & CTF_DUMP) { if (! dump_section_as_ctf (section, filedata)) res = FALSE; } +#endif } /* Check to see if the user requested a |