2019-04-24 18:49:48 +08:00
|
|
|
# Makefile.in generated by automake 1.15.1 from Makefile.am.
|
|
|
|
# @configure_input@
|
|
|
|
|
|
|
|
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
|
|
|
|
|
|
|
# This Makefile.in is free software; the Free Software Foundation
|
|
|
|
# gives unlimited permission to copy and/or distribute it,
|
|
|
|
# with or without modifications, as long as this notice is preserved.
|
|
|
|
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
|
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
|
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
|
|
# PARTICULAR PURPOSE.
|
|
|
|
|
|
|
|
@SET_MAKE@
|
|
|
|
|
|
|
|
#
|
|
|
|
# Copyright (C) 2019 Free Software Foundation, Inc.
|
|
|
|
#
|
|
|
|
# This file 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 2 of the License, or
|
|
|
|
# (at your option) any later version.
|
|
|
|
#
|
|
|
|
# This program 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 program; see the file COPYING. If not see
|
|
|
|
# <http://www.gnu.org/licenses/>.
|
|
|
|
#
|
|
|
|
|
|
|
|
VPATH = @srcdir@
|
|
|
|
am__is_gnu_make = { \
|
|
|
|
if test -z '$(MAKELEVEL)'; then \
|
|
|
|
false; \
|
|
|
|
elif test -n '$(MAKE_HOST)'; then \
|
|
|
|
true; \
|
|
|
|
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
|
|
|
true; \
|
|
|
|
else \
|
|
|
|
false; \
|
|
|
|
fi; \
|
|
|
|
}
|
|
|
|
am__make_running_with_option = \
|
|
|
|
case $${target_option-} in \
|
|
|
|
?) ;; \
|
|
|
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
|
|
|
"target option '$${target_option-}' specified" >&2; \
|
|
|
|
exit 1;; \
|
|
|
|
esac; \
|
|
|
|
has_opt=no; \
|
|
|
|
sane_makeflags=$$MAKEFLAGS; \
|
|
|
|
if $(am__is_gnu_make); then \
|
|
|
|
sane_makeflags=$$MFLAGS; \
|
|
|
|
else \
|
|
|
|
case $$MAKEFLAGS in \
|
|
|
|
*\\[\ \ ]*) \
|
|
|
|
bs=\\; \
|
|
|
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
|
|
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
|
|
|
esac; \
|
|
|
|
fi; \
|
|
|
|
skip_next=no; \
|
|
|
|
strip_trailopt () \
|
|
|
|
{ \
|
|
|
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
|
|
|
}; \
|
|
|
|
for flg in $$sane_makeflags; do \
|
|
|
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
|
|
|
case $$flg in \
|
|
|
|
*=*|--*) continue;; \
|
|
|
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
|
|
|
-*I?*) strip_trailopt 'I';; \
|
|
|
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
|
|
|
-*O?*) strip_trailopt 'O';; \
|
|
|
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
|
|
|
-*l?*) strip_trailopt 'l';; \
|
|
|
|
-[dEDm]) skip_next=yes;; \
|
|
|
|
-[JT]) skip_next=yes;; \
|
|
|
|
esac; \
|
|
|
|
case $$flg in \
|
|
|
|
*$$target_option*) has_opt=yes; break;; \
|
|
|
|
esac; \
|
|
|
|
done; \
|
|
|
|
test $$has_opt = yes
|
|
|
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
|
|
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
|
|
|
pkgdatadir = $(datadir)/@PACKAGE@
|
|
|
|
pkgincludedir = $(includedir)/@PACKAGE@
|
|
|
|
pkglibdir = $(libdir)/@PACKAGE@
|
|
|
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
|
|
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
|
|
|
install_sh_DATA = $(install_sh) -c -m 644
|
|
|
|
install_sh_PROGRAM = $(install_sh) -c
|
|
|
|
install_sh_SCRIPT = $(install_sh) -c
|
|
|
|
INSTALL_HEADER = $(INSTALL_DATA)
|
|
|
|
transform = $(program_transform_name)
|
|
|
|
NORMAL_INSTALL = :
|
|
|
|
PRE_INSTALL = :
|
|
|
|
POST_INSTALL = :
|
|
|
|
NORMAL_UNINSTALL = :
|
|
|
|
PRE_UNINSTALL = :
|
|
|
|
POST_UNINSTALL = :
|
2019-06-03 21:02:09 +08:00
|
|
|
@NEED_CTF_QSORT_R_TRUE@am__append_1 = ctf-qsort_r.c
|
2019-04-24 18:49:48 +08:00
|
|
|
subdir = .
|
|
|
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
|
|
|
am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
|
|
|
|
$(top_srcdir)/../config/lead-dot.m4 \
|
|
|
|
$(top_srcdir)/../config/override.m4 \
|
libctf: fix a number of build problems found on Solaris and NetBSD
- Use of nonportable <endian.h>
- Use of qsort_r
- Use of zlib without appropriate magic to pull in the binutils zlib
- Use of off64_t without checking (fixed by dropping the unused fields
that need off64_t entirely)
- signedness problems due to long being too short a type on 32-bit
platforms: ctf_id_t is now 'unsigned long', and CTF_ERR must be
used only for functions that return ctf_id_t
- One lingering use of bzero() and of <sys/errno.h>
All fixed, using code from gnulib where possible.
Relatedly, set cts_size in a couple of places it was missed
(string table and symbol table loading upon ctf_bfdopen()).
binutils/
* objdump.c (make_ctfsect): Drop cts_type, cts_flags, and
cts_offset.
* readelf.c (shdr_to_ctf_sect): Likewise.
include/
* ctf-api.h (ctf_sect_t): Drop cts_type, cts_flags, and cts_offset.
(ctf_id_t): This is now an unsigned type.
(CTF_ERR): Cast it to ctf_id_t. Note that it should only be used
for ctf_id_t-returning functions.
libctf/
* Makefile.am (ZLIB): New.
(ZLIBINC): Likewise.
(AM_CFLAGS): Use them.
(libctf_a_LIBADD): New, for LIBOBJS.
* configure.ac: Check for zlib, endian.h, and qsort_r.
* ctf-endian.h: New, providing htole64 and le64toh.
* swap.h: Code style fixes.
(bswap_identity_64): New.
* qsort_r.c: New, from gnulib (with one added #include).
* ctf-decls.h: New, providing a conditional qsort_r declaration,
and unconditional definitions of MIN and MAX.
* ctf-impl.h: Use it. Do not use <sys/errno.h>.
(ctf_set_errno): Now returns unsigned long.
* ctf-util.c (ctf_set_errno): Adjust here too.
* ctf-archive.c: Use ctf-endian.h.
(ctf_arc_open_by_offset): Use memset, not bzero. Drop cts_type,
cts_flags and cts_offset.
(ctf_arc_write): Drop debugging dependent on the size of off_t.
* ctf-create.c: Provide a definition of roundup if not defined.
(ctf_create): Drop cts_type, cts_flags and cts_offset.
(ctf_add_reftype): Do not check if type IDs are below zero.
(ctf_add_slice): Likewise.
(ctf_add_typedef): Likewise.
(ctf_add_member_offset): Cast error-returning ssize_t's to size_t
when known error-free. Drop CTF_ERR usage for functions returning
int.
(ctf_add_member_encoded): Drop CTF_ERR usage for functions returning
int.
(ctf_add_variable): Likewise.
(enumcmp): Likewise.
(enumadd): Likewise.
(membcmp): Likewise.
(ctf_add_type): Likewise. Cast error-returning ssize_t's to size_t
when known error-free.
* ctf-dump.c (ctf_is_slice): Drop CTF_ERR usage for functions
returning int: use CTF_ERR for functions returning ctf_type_id.
(ctf_dump_label): Likewise.
(ctf_dump_objts): Likewise.
* ctf-labels.c (ctf_label_topmost): Likewise.
(ctf_label_iter): Likewise.
(ctf_label_info): Likewise.
* ctf-lookup.c (ctf_func_args): Likewise.
* ctf-open.c (upgrade_types): Cast to size_t where appropriate.
(ctf_bufopen): Likewise. Use zlib types as needed.
* ctf-types.c (ctf_member_iter): Drop CTF_ERR usage for functions
returning int.
(ctf_enum_iter): Likewise.
(ctf_type_size): Likewise.
(ctf_type_align): Likewise. Cast to size_t where appropriate.
(ctf_type_kind_unsliced): Likewise.
(ctf_type_kind): Likewise.
(ctf_type_encoding): Likewise.
(ctf_member_info): Likewise.
(ctf_array_info): Likewise.
(ctf_enum_value): Likewise.
(ctf_type_rvisit): Likewise.
* ctf-open-bfd.c (ctf_bfdopen): Drop cts_type, cts_flags and
cts_offset.
(ctf_simple_open): Likewise.
(ctf_bfdopen_ctfsect): Likewise. Set cts_size properly.
* Makefile.in: Regenerate.
* aclocal.m4: Likewise.
* config.h: Likewise.
* configure: Likewise.
2019-05-31 17:10:51 +08:00
|
|
|
$(top_srcdir)/../config/warnings.m4 \
|
|
|
|
$(top_srcdir)/../config/zlib.m4 $(top_srcdir)/configure.ac
|
2019-04-24 18:49:48 +08:00
|
|
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|
|
|
$(ACLOCAL_M4)
|
|
|
|
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
|
|
|
|
$(am__configure_deps) $(am__DIST_COMMON)
|
|
|
|
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
|
|
|
configure.lineno config.status.lineno
|
|
|
|
mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
|
|
|
|
CONFIG_HEADER = config.h
|
|
|
|
CONFIG_CLEAN_FILES =
|
|
|
|
CONFIG_CLEAN_VPATH_FILES =
|
|
|
|
LIBRARIES = $(noinst_LIBRARIES)
|
|
|
|
ARFLAGS = cru
|
|
|
|
AM_V_AR = $(am__v_AR_@AM_V@)
|
|
|
|
am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
|
|
|
|
am__v_AR_0 = @echo " AR " $@;
|
|
|
|
am__v_AR_1 =
|
|
|
|
libctf_a_AR = $(AR) $(ARFLAGS)
|
2019-06-03 21:02:09 +08:00
|
|
|
libctf_a_LIBADD =
|
|
|
|
am__libctf_a_SOURCES_DIST = ctf-archive.c ctf-dump.c ctf-create.c \
|
|
|
|
ctf-decl.c ctf-error.c ctf-hash.c ctf-labels.c ctf-lookup.c \
|
libctf: deduplicate and sort the string table
ctf.h states:
> [...] the CTF string table does not contain any duplicated strings.
Unfortunately this is entirely untrue: libctf has before now made no
attempt whatsoever to deduplicate the string table. It computes the
string table's length on the fly as it adds new strings to the dynamic
CTF file, and ctf_update() just writes each string to the table and
notes the current write position as it traverses the dynamic CTF file's
data structures and builds the final CTF buffer. There is no global
view of the strings and no deduplication.
Fix this by erasing the ctf_dtvstrlen dead-reckoning length, and adding
a new dynhash table ctf_str_atoms that maps unique strings to a list
of references to those strings: a reference is a simple uint32_t * to
some value somewhere in the under-construction CTF buffer that needs
updating to note the string offset when the strtab is laid out.
Adding a string is now a simple matter of calling ctf_str_add_ref(),
which adds a new atom to the atoms table, if one doesn't already exist,
and adding the location of the reference to this atom to the refs list
attached to the atom: this works reliably as long as one takes care to
only call ctf_str_add_ref() once the final location of the offset is
known (so you can't call it on a temporary structure and then memcpy()
that structure into place in the CTF buffer, because the ref will still
point to the old location: ctf_update() changes accordingly).
Generating the CTF string table is a matter of calling
ctf_str_write_strtab(), which counts the length and number of elements
in the atoms table using the ctf_dynhash_iter() function we just added,
populating an array of pointers into the atoms table and sorting it into
order (to help compressors), then traversing this table and emitting it,
updating the refs to each atom as we go. The only complexity here is
arranging to keep the null string at offset zero, since a lot of code in
libctf depends on being able to leave strtab references at 0 to indicate
'no name'. Once the table is constructed and the refs updated, we know
how long it is, so we can realloc() the partial CTF buffer we allocated
earlier and can copy the table on to the end of it (and purge the refs
because they're not needed any more and have been invalidated by the
realloc() call in any case).
The net effect of all this is a reduction in uncompressed strtab sizes
of about 30% (perhaps a quarter to a half of all strings across the
Linux kernel are eliminated as duplicates). Of course, duplicated
strings are highly redundant, so the space saving after compression is
only about 20%: when the other non-strtab sections are factored in, CTF
sizes shrink by about 10%.
No change in externally-visible API or file format (other than the
reduction in pointless redundancy).
libctf/
* ctf-impl.h: (struct ctf_strs_writable): New, non-const version of
struct ctf_strs.
(struct ctf_dtdef): Note that dtd_data.ctt_name is unpopulated.
(struct ctf_str_atom): New, disambiguated single string.
(struct ctf_str_atom_ref): New, points to some other location that
references this string's offset.
(struct ctf_file): New members ctf_str_atoms and ctf_str_num_refs.
Remove member ctf_dtvstrlen: we no longer track the total strlen
as we add strings.
(ctf_str_create_atoms): Declare new function in ctf-string.c.
(ctf_str_free_atoms): Likewise.
(ctf_str_add): Likewise.
(ctf_str_add_ref): Likewise.
(ctf_str_purge_refs): Likewise.
(ctf_str_write_strtab): Likewise.
(ctf_realloc): Declare new function in ctf-util.c.
* ctf-open.c (ctf_bufopen): Create the atoms table.
(ctf_file_close): Destroy it.
* ctf-create.c (ctf_update): Copy-and-free it on update. No longer
special-case the position of the parname string. Construct the
strtab by calling ctf_str_add_ref and ctf_str_write_strtab after the
rest of each buffer element is constructed, not via open-coding:
realloc the CTF buffer and append the strtab to it. No longer
maintain ctf_dtvstrlen. Sort the variable entry table later, after
strtab construction.
(ctf_copy_membnames): Remove: integrated into ctf_copy_{s,l,e}members.
(ctf_copy_smembers): Drop the string offset: call ctf_str_add_ref
after buffer element construction instead.
(ctf_copy_lmembers): Likewise.
(ctf_copy_emembers): Likewise.
(ctf_create): No longer maintain the ctf_dtvstrlen.
(ctf_dtd_delete): Likewise.
(ctf_dvd_delete): Likewise.
(ctf_add_generic): Likewise.
(ctf_add_enumerator): Likewise.
(ctf_add_member_offset): Likewise.
(ctf_add_variable): Likewise.
(membadd): Likewise.
* ctf-util.c (ctf_realloc): New, wrapper around realloc that aborts
if there are active ctf_str_num_refs.
(ctf_strraw): Move to ctf-string.c.
(ctf_strptr): Likewise.
* ctf-string.c: New file, strtab manipulation.
* Makefile.am (libctf_a_SOURCES): Add it.
* Makefile.in: Regenerate.
2019-06-27 20:51:10 +08:00
|
|
|
ctf-open.c ctf-open-bfd.c ctf-string.c ctf-subr.c ctf-types.c \
|
|
|
|
ctf-util.c ctf-qsort_r.c
|
2019-06-03 21:02:09 +08:00
|
|
|
@NEED_CTF_QSORT_R_TRUE@am__objects_1 = ctf-qsort_r.$(OBJEXT)
|
2019-04-24 18:49:48 +08:00
|
|
|
am_libctf_a_OBJECTS = ctf-archive.$(OBJEXT) ctf-dump.$(OBJEXT) \
|
|
|
|
ctf-create.$(OBJEXT) ctf-decl.$(OBJEXT) ctf-error.$(OBJEXT) \
|
|
|
|
ctf-hash.$(OBJEXT) ctf-labels.$(OBJEXT) ctf-lookup.$(OBJEXT) \
|
libctf: deduplicate and sort the string table
ctf.h states:
> [...] the CTF string table does not contain any duplicated strings.
Unfortunately this is entirely untrue: libctf has before now made no
attempt whatsoever to deduplicate the string table. It computes the
string table's length on the fly as it adds new strings to the dynamic
CTF file, and ctf_update() just writes each string to the table and
notes the current write position as it traverses the dynamic CTF file's
data structures and builds the final CTF buffer. There is no global
view of the strings and no deduplication.
Fix this by erasing the ctf_dtvstrlen dead-reckoning length, and adding
a new dynhash table ctf_str_atoms that maps unique strings to a list
of references to those strings: a reference is a simple uint32_t * to
some value somewhere in the under-construction CTF buffer that needs
updating to note the string offset when the strtab is laid out.
Adding a string is now a simple matter of calling ctf_str_add_ref(),
which adds a new atom to the atoms table, if one doesn't already exist,
and adding the location of the reference to this atom to the refs list
attached to the atom: this works reliably as long as one takes care to
only call ctf_str_add_ref() once the final location of the offset is
known (so you can't call it on a temporary structure and then memcpy()
that structure into place in the CTF buffer, because the ref will still
point to the old location: ctf_update() changes accordingly).
Generating the CTF string table is a matter of calling
ctf_str_write_strtab(), which counts the length and number of elements
in the atoms table using the ctf_dynhash_iter() function we just added,
populating an array of pointers into the atoms table and sorting it into
order (to help compressors), then traversing this table and emitting it,
updating the refs to each atom as we go. The only complexity here is
arranging to keep the null string at offset zero, since a lot of code in
libctf depends on being able to leave strtab references at 0 to indicate
'no name'. Once the table is constructed and the refs updated, we know
how long it is, so we can realloc() the partial CTF buffer we allocated
earlier and can copy the table on to the end of it (and purge the refs
because they're not needed any more and have been invalidated by the
realloc() call in any case).
The net effect of all this is a reduction in uncompressed strtab sizes
of about 30% (perhaps a quarter to a half of all strings across the
Linux kernel are eliminated as duplicates). Of course, duplicated
strings are highly redundant, so the space saving after compression is
only about 20%: when the other non-strtab sections are factored in, CTF
sizes shrink by about 10%.
No change in externally-visible API or file format (other than the
reduction in pointless redundancy).
libctf/
* ctf-impl.h: (struct ctf_strs_writable): New, non-const version of
struct ctf_strs.
(struct ctf_dtdef): Note that dtd_data.ctt_name is unpopulated.
(struct ctf_str_atom): New, disambiguated single string.
(struct ctf_str_atom_ref): New, points to some other location that
references this string's offset.
(struct ctf_file): New members ctf_str_atoms and ctf_str_num_refs.
Remove member ctf_dtvstrlen: we no longer track the total strlen
as we add strings.
(ctf_str_create_atoms): Declare new function in ctf-string.c.
(ctf_str_free_atoms): Likewise.
(ctf_str_add): Likewise.
(ctf_str_add_ref): Likewise.
(ctf_str_purge_refs): Likewise.
(ctf_str_write_strtab): Likewise.
(ctf_realloc): Declare new function in ctf-util.c.
* ctf-open.c (ctf_bufopen): Create the atoms table.
(ctf_file_close): Destroy it.
* ctf-create.c (ctf_update): Copy-and-free it on update. No longer
special-case the position of the parname string. Construct the
strtab by calling ctf_str_add_ref and ctf_str_write_strtab after the
rest of each buffer element is constructed, not via open-coding:
realloc the CTF buffer and append the strtab to it. No longer
maintain ctf_dtvstrlen. Sort the variable entry table later, after
strtab construction.
(ctf_copy_membnames): Remove: integrated into ctf_copy_{s,l,e}members.
(ctf_copy_smembers): Drop the string offset: call ctf_str_add_ref
after buffer element construction instead.
(ctf_copy_lmembers): Likewise.
(ctf_copy_emembers): Likewise.
(ctf_create): No longer maintain the ctf_dtvstrlen.
(ctf_dtd_delete): Likewise.
(ctf_dvd_delete): Likewise.
(ctf_add_generic): Likewise.
(ctf_add_enumerator): Likewise.
(ctf_add_member_offset): Likewise.
(ctf_add_variable): Likewise.
(membadd): Likewise.
* ctf-util.c (ctf_realloc): New, wrapper around realloc that aborts
if there are active ctf_str_num_refs.
(ctf_strraw): Move to ctf-string.c.
(ctf_strptr): Likewise.
* ctf-string.c: New file, strtab manipulation.
* Makefile.am (libctf_a_SOURCES): Add it.
* Makefile.in: Regenerate.
2019-06-27 20:51:10 +08:00
|
|
|
ctf-open.$(OBJEXT) ctf-open-bfd.$(OBJEXT) ctf-string.$(OBJEXT) \
|
|
|
|
ctf-subr.$(OBJEXT) ctf-types.$(OBJEXT) ctf-util.$(OBJEXT) \
|
|
|
|
$(am__objects_1)
|
2019-04-24 18:49:48 +08:00
|
|
|
libctf_a_OBJECTS = $(am_libctf_a_OBJECTS)
|
|
|
|
AM_V_P = $(am__v_P_@AM_V@)
|
|
|
|
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
|
|
|
am__v_P_0 = false
|
|
|
|
am__v_P_1 = :
|
|
|
|
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
|
|
|
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
|
|
|
am__v_GEN_0 = @echo " GEN " $@;
|
|
|
|
am__v_GEN_1 =
|
|
|
|
AM_V_at = $(am__v_at_@AM_V@)
|
|
|
|
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
|
|
|
am__v_at_0 = @
|
|
|
|
am__v_at_1 =
|
|
|
|
DEFAULT_INCLUDES = -I.@am__isrc@
|
|
|
|
depcomp = $(SHELL) $(top_srcdir)/../depcomp
|
|
|
|
am__depfiles_maybe = depfiles
|
|
|
|
am__mv = mv -f
|
|
|
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
|
|
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
|
|
|
AM_V_CC = $(am__v_CC_@AM_V@)
|
|
|
|
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
|
|
|
am__v_CC_0 = @echo " CC " $@;
|
|
|
|
am__v_CC_1 =
|
|
|
|
CCLD = $(CC)
|
|
|
|
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
|
|
|
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
|
|
|
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
|
|
|
am__v_CCLD_0 = @echo " CCLD " $@;
|
|
|
|
am__v_CCLD_1 =
|
|
|
|
SOURCES = $(libctf_a_SOURCES)
|
2019-06-03 21:02:09 +08:00
|
|
|
DIST_SOURCES = $(am__libctf_a_SOURCES_DIST)
|
2019-04-24 18:49:48 +08:00
|
|
|
am__can_run_installinfo = \
|
|
|
|
case $$AM_UPDATE_INFO_DIR in \
|
|
|
|
n|no|NO) false;; \
|
|
|
|
*) (install-info --version) >/dev/null 2>&1;; \
|
|
|
|
esac
|
|
|
|
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
|
|
|
|
$(LISP)config.h.in
|
|
|
|
# Read a list of newline-separated strings from the standard input,
|
|
|
|
# and print each of them once, without duplicates. Input order is
|
|
|
|
# *not* preserved.
|
|
|
|
am__uniquify_input = $(AWK) '\
|
|
|
|
BEGIN { nonempty = 0; } \
|
|
|
|
{ items[$$0] = 1; nonempty = 1; } \
|
|
|
|
END { if (nonempty) { for (i in items) print i; }; } \
|
|
|
|
'
|
|
|
|
# Make sure the list of sources is unique. This is necessary because,
|
|
|
|
# e.g., the same source file might be shared among _SOURCES variables
|
|
|
|
# for different programs/libraries.
|
|
|
|
am__define_uniq_tagged_files = \
|
|
|
|
list='$(am__tagged_files)'; \
|
|
|
|
unique=`for i in $$list; do \
|
|
|
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|
|
|
done | $(am__uniquify_input)`
|
|
|
|
ETAGS = etags
|
|
|
|
CTAGS = ctags
|
|
|
|
CSCOPE = cscope
|
|
|
|
AM_RECURSIVE_TARGETS = cscope
|
|
|
|
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
|
|
|
$(top_srcdir)/../ar-lib $(top_srcdir)/../compile \
|
|
|
|
$(top_srcdir)/../depcomp $(top_srcdir)/../install-sh \
|
libctf: fix a number of build problems found on Solaris and NetBSD
- Use of nonportable <endian.h>
- Use of qsort_r
- Use of zlib without appropriate magic to pull in the binutils zlib
- Use of off64_t without checking (fixed by dropping the unused fields
that need off64_t entirely)
- signedness problems due to long being too short a type on 32-bit
platforms: ctf_id_t is now 'unsigned long', and CTF_ERR must be
used only for functions that return ctf_id_t
- One lingering use of bzero() and of <sys/errno.h>
All fixed, using code from gnulib where possible.
Relatedly, set cts_size in a couple of places it was missed
(string table and symbol table loading upon ctf_bfdopen()).
binutils/
* objdump.c (make_ctfsect): Drop cts_type, cts_flags, and
cts_offset.
* readelf.c (shdr_to_ctf_sect): Likewise.
include/
* ctf-api.h (ctf_sect_t): Drop cts_type, cts_flags, and cts_offset.
(ctf_id_t): This is now an unsigned type.
(CTF_ERR): Cast it to ctf_id_t. Note that it should only be used
for ctf_id_t-returning functions.
libctf/
* Makefile.am (ZLIB): New.
(ZLIBINC): Likewise.
(AM_CFLAGS): Use them.
(libctf_a_LIBADD): New, for LIBOBJS.
* configure.ac: Check for zlib, endian.h, and qsort_r.
* ctf-endian.h: New, providing htole64 and le64toh.
* swap.h: Code style fixes.
(bswap_identity_64): New.
* qsort_r.c: New, from gnulib (with one added #include).
* ctf-decls.h: New, providing a conditional qsort_r declaration,
and unconditional definitions of MIN and MAX.
* ctf-impl.h: Use it. Do not use <sys/errno.h>.
(ctf_set_errno): Now returns unsigned long.
* ctf-util.c (ctf_set_errno): Adjust here too.
* ctf-archive.c: Use ctf-endian.h.
(ctf_arc_open_by_offset): Use memset, not bzero. Drop cts_type,
cts_flags and cts_offset.
(ctf_arc_write): Drop debugging dependent on the size of off_t.
* ctf-create.c: Provide a definition of roundup if not defined.
(ctf_create): Drop cts_type, cts_flags and cts_offset.
(ctf_add_reftype): Do not check if type IDs are below zero.
(ctf_add_slice): Likewise.
(ctf_add_typedef): Likewise.
(ctf_add_member_offset): Cast error-returning ssize_t's to size_t
when known error-free. Drop CTF_ERR usage for functions returning
int.
(ctf_add_member_encoded): Drop CTF_ERR usage for functions returning
int.
(ctf_add_variable): Likewise.
(enumcmp): Likewise.
(enumadd): Likewise.
(membcmp): Likewise.
(ctf_add_type): Likewise. Cast error-returning ssize_t's to size_t
when known error-free.
* ctf-dump.c (ctf_is_slice): Drop CTF_ERR usage for functions
returning int: use CTF_ERR for functions returning ctf_type_id.
(ctf_dump_label): Likewise.
(ctf_dump_objts): Likewise.
* ctf-labels.c (ctf_label_topmost): Likewise.
(ctf_label_iter): Likewise.
(ctf_label_info): Likewise.
* ctf-lookup.c (ctf_func_args): Likewise.
* ctf-open.c (upgrade_types): Cast to size_t where appropriate.
(ctf_bufopen): Likewise. Use zlib types as needed.
* ctf-types.c (ctf_member_iter): Drop CTF_ERR usage for functions
returning int.
(ctf_enum_iter): Likewise.
(ctf_type_size): Likewise.
(ctf_type_align): Likewise. Cast to size_t where appropriate.
(ctf_type_kind_unsliced): Likewise.
(ctf_type_kind): Likewise.
(ctf_type_encoding): Likewise.
(ctf_member_info): Likewise.
(ctf_array_info): Likewise.
(ctf_enum_value): Likewise.
(ctf_type_rvisit): Likewise.
* ctf-open-bfd.c (ctf_bfdopen): Drop cts_type, cts_flags and
cts_offset.
(ctf_simple_open): Likewise.
(ctf_bfdopen_ctfsect): Likewise. Set cts_size properly.
* Makefile.in: Regenerate.
* aclocal.m4: Likewise.
* config.h: Likewise.
* configure: Likewise.
2019-05-31 17:10:51 +08:00
|
|
|
$(top_srcdir)/../missing $(top_srcdir)/../mkinstalldirs \
|
2019-06-03 21:02:09 +08:00
|
|
|
ChangeLog
|
2019-04-24 18:49:48 +08:00
|
|
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
|
|
|
distdir = $(PACKAGE)-$(VERSION)
|
|
|
|
top_distdir = $(distdir)
|
|
|
|
am__remove_distdir = \
|
|
|
|
if test -d "$(distdir)"; then \
|
|
|
|
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
|
|
|
&& rm -rf "$(distdir)" \
|
|
|
|
|| { sleep 5 && rm -rf "$(distdir)"; }; \
|
|
|
|
else :; fi
|
|
|
|
am__post_remove_distdir = $(am__remove_distdir)
|
|
|
|
DIST_ARCHIVES = $(distdir).tar.gz
|
|
|
|
GZIP_ENV = --best
|
|
|
|
DIST_TARGETS = dist-gzip
|
|
|
|
distuninstallcheck_listfiles = find . -type f -print
|
|
|
|
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
|
|
|
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
|
|
|
distcleancheck_listfiles = find . -type f -print
|
|
|
|
ACLOCAL = @ACLOCAL@
|
|
|
|
AMTAR = @AMTAR@
|
|
|
|
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
|
|
|
AR = @AR@
|
|
|
|
AUTOCONF = @AUTOCONF@
|
|
|
|
AUTOHEADER = @AUTOHEADER@
|
|
|
|
AUTOMAKE = @AUTOMAKE@
|
|
|
|
AWK = @AWK@
|
|
|
|
CC = @CC@
|
|
|
|
CCDEPMODE = @CCDEPMODE@
|
|
|
|
CFLAGS = @CFLAGS@
|
|
|
|
CPP = @CPP@
|
|
|
|
CPPFLAGS = @CPPFLAGS@
|
|
|
|
CYGPATH_W = @CYGPATH_W@
|
|
|
|
DEFS = @DEFS@
|
|
|
|
DEPDIR = @DEPDIR@
|
|
|
|
ECHO_C = @ECHO_C@
|
|
|
|
ECHO_N = @ECHO_N@
|
|
|
|
ECHO_T = @ECHO_T@
|
|
|
|
EGREP = @EGREP@
|
|
|
|
EXEEXT = @EXEEXT@
|
|
|
|
GREP = @GREP@
|
|
|
|
INSTALL = @INSTALL@
|
|
|
|
INSTALL_DATA = @INSTALL_DATA@
|
|
|
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
|
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
|
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
|
|
|
LDFLAGS = @LDFLAGS@
|
|
|
|
LIBOBJS = @LIBOBJS@
|
|
|
|
LIBS = @LIBS@
|
|
|
|
LTLIBOBJS = @LTLIBOBJS@
|
|
|
|
MAINT = @MAINT@
|
|
|
|
MAKEINFO = @MAKEINFO@
|
|
|
|
MKDIR_P = @MKDIR_P@
|
|
|
|
OBJEXT = @OBJEXT@
|
|
|
|
PACKAGE = @PACKAGE@
|
|
|
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|
|
|
PACKAGE_NAME = @PACKAGE_NAME@
|
|
|
|
PACKAGE_STRING = @PACKAGE_STRING@
|
|
|
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
|
|
|
PACKAGE_URL = @PACKAGE_URL@
|
|
|
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
|
|
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
|
|
|
RANLIB = @RANLIB@
|
|
|
|
SET_MAKE = @SET_MAKE@
|
|
|
|
SHELL = @SHELL@
|
|
|
|
STRIP = @STRIP@
|
|
|
|
VERSION = @VERSION@
|
|
|
|
WARN_PEDANTIC = @WARN_PEDANTIC@
|
|
|
|
WERROR = @WERROR@
|
|
|
|
abs_builddir = @abs_builddir@
|
|
|
|
abs_srcdir = @abs_srcdir@
|
|
|
|
abs_top_builddir = @abs_top_builddir@
|
|
|
|
abs_top_srcdir = @abs_top_srcdir@
|
|
|
|
ac_ct_AR = @ac_ct_AR@
|
|
|
|
ac_ct_CC = @ac_ct_CC@
|
|
|
|
ac_libctf_warn_cflags = @ac_libctf_warn_cflags@
|
|
|
|
am__include = @am__include@
|
|
|
|
am__leading_dot = @am__leading_dot@
|
|
|
|
am__quote = @am__quote@
|
|
|
|
am__tar = @am__tar@
|
|
|
|
am__untar = @am__untar@
|
|
|
|
bindir = @bindir@
|
|
|
|
build_alias = @build_alias@
|
|
|
|
builddir = @builddir@
|
|
|
|
c_warn = @c_warn@
|
|
|
|
datadir = @datadir@
|
|
|
|
datarootdir = @datarootdir@
|
|
|
|
docdir = @docdir@
|
|
|
|
dvidir = @dvidir@
|
|
|
|
exec_prefix = @exec_prefix@
|
|
|
|
host_alias = @host_alias@
|
|
|
|
htmldir = @htmldir@
|
|
|
|
includedir = @includedir@
|
|
|
|
infodir = @infodir@
|
|
|
|
install_sh = @install_sh@
|
|
|
|
libdir = @libdir@
|
|
|
|
libexecdir = @libexecdir@
|
|
|
|
localedir = @localedir@
|
|
|
|
localstatedir = @localstatedir@
|
|
|
|
mandir = @mandir@
|
|
|
|
mkdir_p = @mkdir_p@
|
|
|
|
oldincludedir = @oldincludedir@
|
|
|
|
pdfdir = @pdfdir@
|
|
|
|
prefix = @prefix@
|
|
|
|
program_transform_name = @program_transform_name@
|
|
|
|
psdir = @psdir@
|
|
|
|
sbindir = @sbindir@
|
|
|
|
sharedstatedir = @sharedstatedir@
|
|
|
|
srcdir = @srcdir@
|
|
|
|
sysconfdir = @sysconfdir@
|
|
|
|
target_alias = @target_alias@
|
|
|
|
top_build_prefix = @top_build_prefix@
|
|
|
|
top_builddir = @top_builddir@
|
|
|
|
top_srcdir = @top_srcdir@
|
|
|
|
warn = @warn@
|
libctf: fix a number of build problems found on Solaris and NetBSD
- Use of nonportable <endian.h>
- Use of qsort_r
- Use of zlib without appropriate magic to pull in the binutils zlib
- Use of off64_t without checking (fixed by dropping the unused fields
that need off64_t entirely)
- signedness problems due to long being too short a type on 32-bit
platforms: ctf_id_t is now 'unsigned long', and CTF_ERR must be
used only for functions that return ctf_id_t
- One lingering use of bzero() and of <sys/errno.h>
All fixed, using code from gnulib where possible.
Relatedly, set cts_size in a couple of places it was missed
(string table and symbol table loading upon ctf_bfdopen()).
binutils/
* objdump.c (make_ctfsect): Drop cts_type, cts_flags, and
cts_offset.
* readelf.c (shdr_to_ctf_sect): Likewise.
include/
* ctf-api.h (ctf_sect_t): Drop cts_type, cts_flags, and cts_offset.
(ctf_id_t): This is now an unsigned type.
(CTF_ERR): Cast it to ctf_id_t. Note that it should only be used
for ctf_id_t-returning functions.
libctf/
* Makefile.am (ZLIB): New.
(ZLIBINC): Likewise.
(AM_CFLAGS): Use them.
(libctf_a_LIBADD): New, for LIBOBJS.
* configure.ac: Check for zlib, endian.h, and qsort_r.
* ctf-endian.h: New, providing htole64 and le64toh.
* swap.h: Code style fixes.
(bswap_identity_64): New.
* qsort_r.c: New, from gnulib (with one added #include).
* ctf-decls.h: New, providing a conditional qsort_r declaration,
and unconditional definitions of MIN and MAX.
* ctf-impl.h: Use it. Do not use <sys/errno.h>.
(ctf_set_errno): Now returns unsigned long.
* ctf-util.c (ctf_set_errno): Adjust here too.
* ctf-archive.c: Use ctf-endian.h.
(ctf_arc_open_by_offset): Use memset, not bzero. Drop cts_type,
cts_flags and cts_offset.
(ctf_arc_write): Drop debugging dependent on the size of off_t.
* ctf-create.c: Provide a definition of roundup if not defined.
(ctf_create): Drop cts_type, cts_flags and cts_offset.
(ctf_add_reftype): Do not check if type IDs are below zero.
(ctf_add_slice): Likewise.
(ctf_add_typedef): Likewise.
(ctf_add_member_offset): Cast error-returning ssize_t's to size_t
when known error-free. Drop CTF_ERR usage for functions returning
int.
(ctf_add_member_encoded): Drop CTF_ERR usage for functions returning
int.
(ctf_add_variable): Likewise.
(enumcmp): Likewise.
(enumadd): Likewise.
(membcmp): Likewise.
(ctf_add_type): Likewise. Cast error-returning ssize_t's to size_t
when known error-free.
* ctf-dump.c (ctf_is_slice): Drop CTF_ERR usage for functions
returning int: use CTF_ERR for functions returning ctf_type_id.
(ctf_dump_label): Likewise.
(ctf_dump_objts): Likewise.
* ctf-labels.c (ctf_label_topmost): Likewise.
(ctf_label_iter): Likewise.
(ctf_label_info): Likewise.
* ctf-lookup.c (ctf_func_args): Likewise.
* ctf-open.c (upgrade_types): Cast to size_t where appropriate.
(ctf_bufopen): Likewise. Use zlib types as needed.
* ctf-types.c (ctf_member_iter): Drop CTF_ERR usage for functions
returning int.
(ctf_enum_iter): Likewise.
(ctf_type_size): Likewise.
(ctf_type_align): Likewise. Cast to size_t where appropriate.
(ctf_type_kind_unsliced): Likewise.
(ctf_type_kind): Likewise.
(ctf_type_encoding): Likewise.
(ctf_member_info): Likewise.
(ctf_array_info): Likewise.
(ctf_enum_value): Likewise.
(ctf_type_rvisit): Likewise.
* ctf-open-bfd.c (ctf_bfdopen): Drop cts_type, cts_flags and
cts_offset.
(ctf_simple_open): Likewise.
(ctf_bfdopen_ctfsect): Likewise. Set cts_size properly.
* Makefile.in: Regenerate.
* aclocal.m4: Likewise.
* config.h: Likewise.
* configure: Likewise.
2019-05-31 17:10:51 +08:00
|
|
|
zlibdir = @zlibdir@
|
|
|
|
zlibinc = @zlibinc@
|
2019-04-24 18:49:48 +08:00
|
|
|
ACLOCAL_AMFLAGS = -I .. -I ../config
|
|
|
|
AUTOMAKE_OPTIONS = foreign no-texinfo.tex
|
libctf: fix a number of build problems found on Solaris and NetBSD
- Use of nonportable <endian.h>
- Use of qsort_r
- Use of zlib without appropriate magic to pull in the binutils zlib
- Use of off64_t without checking (fixed by dropping the unused fields
that need off64_t entirely)
- signedness problems due to long being too short a type on 32-bit
platforms: ctf_id_t is now 'unsigned long', and CTF_ERR must be
used only for functions that return ctf_id_t
- One lingering use of bzero() and of <sys/errno.h>
All fixed, using code from gnulib where possible.
Relatedly, set cts_size in a couple of places it was missed
(string table and symbol table loading upon ctf_bfdopen()).
binutils/
* objdump.c (make_ctfsect): Drop cts_type, cts_flags, and
cts_offset.
* readelf.c (shdr_to_ctf_sect): Likewise.
include/
* ctf-api.h (ctf_sect_t): Drop cts_type, cts_flags, and cts_offset.
(ctf_id_t): This is now an unsigned type.
(CTF_ERR): Cast it to ctf_id_t. Note that it should only be used
for ctf_id_t-returning functions.
libctf/
* Makefile.am (ZLIB): New.
(ZLIBINC): Likewise.
(AM_CFLAGS): Use them.
(libctf_a_LIBADD): New, for LIBOBJS.
* configure.ac: Check for zlib, endian.h, and qsort_r.
* ctf-endian.h: New, providing htole64 and le64toh.
* swap.h: Code style fixes.
(bswap_identity_64): New.
* qsort_r.c: New, from gnulib (with one added #include).
* ctf-decls.h: New, providing a conditional qsort_r declaration,
and unconditional definitions of MIN and MAX.
* ctf-impl.h: Use it. Do not use <sys/errno.h>.
(ctf_set_errno): Now returns unsigned long.
* ctf-util.c (ctf_set_errno): Adjust here too.
* ctf-archive.c: Use ctf-endian.h.
(ctf_arc_open_by_offset): Use memset, not bzero. Drop cts_type,
cts_flags and cts_offset.
(ctf_arc_write): Drop debugging dependent on the size of off_t.
* ctf-create.c: Provide a definition of roundup if not defined.
(ctf_create): Drop cts_type, cts_flags and cts_offset.
(ctf_add_reftype): Do not check if type IDs are below zero.
(ctf_add_slice): Likewise.
(ctf_add_typedef): Likewise.
(ctf_add_member_offset): Cast error-returning ssize_t's to size_t
when known error-free. Drop CTF_ERR usage for functions returning
int.
(ctf_add_member_encoded): Drop CTF_ERR usage for functions returning
int.
(ctf_add_variable): Likewise.
(enumcmp): Likewise.
(enumadd): Likewise.
(membcmp): Likewise.
(ctf_add_type): Likewise. Cast error-returning ssize_t's to size_t
when known error-free.
* ctf-dump.c (ctf_is_slice): Drop CTF_ERR usage for functions
returning int: use CTF_ERR for functions returning ctf_type_id.
(ctf_dump_label): Likewise.
(ctf_dump_objts): Likewise.
* ctf-labels.c (ctf_label_topmost): Likewise.
(ctf_label_iter): Likewise.
(ctf_label_info): Likewise.
* ctf-lookup.c (ctf_func_args): Likewise.
* ctf-open.c (upgrade_types): Cast to size_t where appropriate.
(ctf_bufopen): Likewise. Use zlib types as needed.
* ctf-types.c (ctf_member_iter): Drop CTF_ERR usage for functions
returning int.
(ctf_enum_iter): Likewise.
(ctf_type_size): Likewise.
(ctf_type_align): Likewise. Cast to size_t where appropriate.
(ctf_type_kind_unsliced): Likewise.
(ctf_type_kind): Likewise.
(ctf_type_encoding): Likewise.
(ctf_member_info): Likewise.
(ctf_array_info): Likewise.
(ctf_enum_value): Likewise.
(ctf_type_rvisit): Likewise.
* ctf-open-bfd.c (ctf_bfdopen): Drop cts_type, cts_flags and
cts_offset.
(ctf_simple_open): Likewise.
(ctf_bfdopen_ctfsect): Likewise. Set cts_size properly.
* Makefile.in: Regenerate.
* aclocal.m4: Likewise.
* config.h: Likewise.
* configure: Likewise.
2019-05-31 17:10:51 +08:00
|
|
|
|
|
|
|
# This is where we get zlib from. zlibdir is -L../zlib and zlibinc is
|
|
|
|
# -I../zlib, unless we were configured with --with-system-zlib, in which
|
|
|
|
# case both are empty.
|
|
|
|
ZLIB = @zlibdir@ -lz
|
|
|
|
ZLIBINC = @zlibinc@
|
2019-04-24 18:49:48 +08:00
|
|
|
AM_CPPFLAGS = -D_GNU_SOURCE -I$(top_srcdir) -I$(top_srcdir)/../include -I$(top_srcdir)/../bfd -I../bfd
|
libctf: fix a number of build problems found on Solaris and NetBSD
- Use of nonportable <endian.h>
- Use of qsort_r
- Use of zlib without appropriate magic to pull in the binutils zlib
- Use of off64_t without checking (fixed by dropping the unused fields
that need off64_t entirely)
- signedness problems due to long being too short a type on 32-bit
platforms: ctf_id_t is now 'unsigned long', and CTF_ERR must be
used only for functions that return ctf_id_t
- One lingering use of bzero() and of <sys/errno.h>
All fixed, using code from gnulib where possible.
Relatedly, set cts_size in a couple of places it was missed
(string table and symbol table loading upon ctf_bfdopen()).
binutils/
* objdump.c (make_ctfsect): Drop cts_type, cts_flags, and
cts_offset.
* readelf.c (shdr_to_ctf_sect): Likewise.
include/
* ctf-api.h (ctf_sect_t): Drop cts_type, cts_flags, and cts_offset.
(ctf_id_t): This is now an unsigned type.
(CTF_ERR): Cast it to ctf_id_t. Note that it should only be used
for ctf_id_t-returning functions.
libctf/
* Makefile.am (ZLIB): New.
(ZLIBINC): Likewise.
(AM_CFLAGS): Use them.
(libctf_a_LIBADD): New, for LIBOBJS.
* configure.ac: Check for zlib, endian.h, and qsort_r.
* ctf-endian.h: New, providing htole64 and le64toh.
* swap.h: Code style fixes.
(bswap_identity_64): New.
* qsort_r.c: New, from gnulib (with one added #include).
* ctf-decls.h: New, providing a conditional qsort_r declaration,
and unconditional definitions of MIN and MAX.
* ctf-impl.h: Use it. Do not use <sys/errno.h>.
(ctf_set_errno): Now returns unsigned long.
* ctf-util.c (ctf_set_errno): Adjust here too.
* ctf-archive.c: Use ctf-endian.h.
(ctf_arc_open_by_offset): Use memset, not bzero. Drop cts_type,
cts_flags and cts_offset.
(ctf_arc_write): Drop debugging dependent on the size of off_t.
* ctf-create.c: Provide a definition of roundup if not defined.
(ctf_create): Drop cts_type, cts_flags and cts_offset.
(ctf_add_reftype): Do not check if type IDs are below zero.
(ctf_add_slice): Likewise.
(ctf_add_typedef): Likewise.
(ctf_add_member_offset): Cast error-returning ssize_t's to size_t
when known error-free. Drop CTF_ERR usage for functions returning
int.
(ctf_add_member_encoded): Drop CTF_ERR usage for functions returning
int.
(ctf_add_variable): Likewise.
(enumcmp): Likewise.
(enumadd): Likewise.
(membcmp): Likewise.
(ctf_add_type): Likewise. Cast error-returning ssize_t's to size_t
when known error-free.
* ctf-dump.c (ctf_is_slice): Drop CTF_ERR usage for functions
returning int: use CTF_ERR for functions returning ctf_type_id.
(ctf_dump_label): Likewise.
(ctf_dump_objts): Likewise.
* ctf-labels.c (ctf_label_topmost): Likewise.
(ctf_label_iter): Likewise.
(ctf_label_info): Likewise.
* ctf-lookup.c (ctf_func_args): Likewise.
* ctf-open.c (upgrade_types): Cast to size_t where appropriate.
(ctf_bufopen): Likewise. Use zlib types as needed.
* ctf-types.c (ctf_member_iter): Drop CTF_ERR usage for functions
returning int.
(ctf_enum_iter): Likewise.
(ctf_type_size): Likewise.
(ctf_type_align): Likewise. Cast to size_t where appropriate.
(ctf_type_kind_unsliced): Likewise.
(ctf_type_kind): Likewise.
(ctf_type_encoding): Likewise.
(ctf_member_info): Likewise.
(ctf_array_info): Likewise.
(ctf_enum_value): Likewise.
(ctf_type_rvisit): Likewise.
* ctf-open-bfd.c (ctf_bfdopen): Drop cts_type, cts_flags and
cts_offset.
(ctf_simple_open): Likewise.
(ctf_bfdopen_ctfsect): Likewise. Set cts_size properly.
* Makefile.in: Regenerate.
* aclocal.m4: Likewise.
* config.h: Likewise.
* configure: Likewise.
2019-05-31 17:10:51 +08:00
|
|
|
AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @WERROR@ $(ZLIBINC)
|
2019-04-24 18:49:48 +08:00
|
|
|
noinst_LIBRARIES = libctf.a
|
2019-06-03 21:02:09 +08:00
|
|
|
libctf_a_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c ctf-decl.c \
|
|
|
|
ctf-error.c ctf-hash.c ctf-labels.c ctf-lookup.c ctf-open.c \
|
libctf: deduplicate and sort the string table
ctf.h states:
> [...] the CTF string table does not contain any duplicated strings.
Unfortunately this is entirely untrue: libctf has before now made no
attempt whatsoever to deduplicate the string table. It computes the
string table's length on the fly as it adds new strings to the dynamic
CTF file, and ctf_update() just writes each string to the table and
notes the current write position as it traverses the dynamic CTF file's
data structures and builds the final CTF buffer. There is no global
view of the strings and no deduplication.
Fix this by erasing the ctf_dtvstrlen dead-reckoning length, and adding
a new dynhash table ctf_str_atoms that maps unique strings to a list
of references to those strings: a reference is a simple uint32_t * to
some value somewhere in the under-construction CTF buffer that needs
updating to note the string offset when the strtab is laid out.
Adding a string is now a simple matter of calling ctf_str_add_ref(),
which adds a new atom to the atoms table, if one doesn't already exist,
and adding the location of the reference to this atom to the refs list
attached to the atom: this works reliably as long as one takes care to
only call ctf_str_add_ref() once the final location of the offset is
known (so you can't call it on a temporary structure and then memcpy()
that structure into place in the CTF buffer, because the ref will still
point to the old location: ctf_update() changes accordingly).
Generating the CTF string table is a matter of calling
ctf_str_write_strtab(), which counts the length and number of elements
in the atoms table using the ctf_dynhash_iter() function we just added,
populating an array of pointers into the atoms table and sorting it into
order (to help compressors), then traversing this table and emitting it,
updating the refs to each atom as we go. The only complexity here is
arranging to keep the null string at offset zero, since a lot of code in
libctf depends on being able to leave strtab references at 0 to indicate
'no name'. Once the table is constructed and the refs updated, we know
how long it is, so we can realloc() the partial CTF buffer we allocated
earlier and can copy the table on to the end of it (and purge the refs
because they're not needed any more and have been invalidated by the
realloc() call in any case).
The net effect of all this is a reduction in uncompressed strtab sizes
of about 30% (perhaps a quarter to a half of all strings across the
Linux kernel are eliminated as duplicates). Of course, duplicated
strings are highly redundant, so the space saving after compression is
only about 20%: when the other non-strtab sections are factored in, CTF
sizes shrink by about 10%.
No change in externally-visible API or file format (other than the
reduction in pointless redundancy).
libctf/
* ctf-impl.h: (struct ctf_strs_writable): New, non-const version of
struct ctf_strs.
(struct ctf_dtdef): Note that dtd_data.ctt_name is unpopulated.
(struct ctf_str_atom): New, disambiguated single string.
(struct ctf_str_atom_ref): New, points to some other location that
references this string's offset.
(struct ctf_file): New members ctf_str_atoms and ctf_str_num_refs.
Remove member ctf_dtvstrlen: we no longer track the total strlen
as we add strings.
(ctf_str_create_atoms): Declare new function in ctf-string.c.
(ctf_str_free_atoms): Likewise.
(ctf_str_add): Likewise.
(ctf_str_add_ref): Likewise.
(ctf_str_purge_refs): Likewise.
(ctf_str_write_strtab): Likewise.
(ctf_realloc): Declare new function in ctf-util.c.
* ctf-open.c (ctf_bufopen): Create the atoms table.
(ctf_file_close): Destroy it.
* ctf-create.c (ctf_update): Copy-and-free it on update. No longer
special-case the position of the parname string. Construct the
strtab by calling ctf_str_add_ref and ctf_str_write_strtab after the
rest of each buffer element is constructed, not via open-coding:
realloc the CTF buffer and append the strtab to it. No longer
maintain ctf_dtvstrlen. Sort the variable entry table later, after
strtab construction.
(ctf_copy_membnames): Remove: integrated into ctf_copy_{s,l,e}members.
(ctf_copy_smembers): Drop the string offset: call ctf_str_add_ref
after buffer element construction instead.
(ctf_copy_lmembers): Likewise.
(ctf_copy_emembers): Likewise.
(ctf_create): No longer maintain the ctf_dtvstrlen.
(ctf_dtd_delete): Likewise.
(ctf_dvd_delete): Likewise.
(ctf_add_generic): Likewise.
(ctf_add_enumerator): Likewise.
(ctf_add_member_offset): Likewise.
(ctf_add_variable): Likewise.
(membadd): Likewise.
* ctf-util.c (ctf_realloc): New, wrapper around realloc that aborts
if there are active ctf_str_num_refs.
(ctf_strraw): Move to ctf-string.c.
(ctf_strptr): Likewise.
* ctf-string.c: New file, strtab manipulation.
* Makefile.am (libctf_a_SOURCES): Add it.
* Makefile.in: Regenerate.
2019-06-27 20:51:10 +08:00
|
|
|
ctf-open-bfd.c ctf-string.c ctf-subr.c ctf-types.c ctf-util.c \
|
2019-06-03 21:02:09 +08:00
|
|
|
$(am__append_1)
|
2019-04-24 18:49:48 +08:00
|
|
|
all: config.h
|
|
|
|
$(MAKE) $(AM_MAKEFLAGS) all-am
|
|
|
|
|
|
|
|
.SUFFIXES:
|
|
|
|
.SUFFIXES: .c .o .obj
|
|
|
|
am--refresh: Makefile
|
|
|
|
@:
|
|
|
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
|
|
|
@for dep in $?; do \
|
|
|
|
case '$(am__configure_deps)' in \
|
|
|
|
*$$dep*) \
|
|
|
|
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
|
|
|
|
$(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
|
|
|
|
&& exit 0; \
|
|
|
|
exit 1;; \
|
|
|
|
esac; \
|
|
|
|
done; \
|
|
|
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
|
|
|
$(am__cd) $(top_srcdir) && \
|
|
|
|
$(AUTOMAKE) --foreign Makefile
|
|
|
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|
|
|
@case '$?' in \
|
|
|
|
*config.status*) \
|
|
|
|
echo ' $(SHELL) ./config.status'; \
|
|
|
|
$(SHELL) ./config.status;; \
|
|
|
|
*) \
|
|
|
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
|
|
|
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
|
|
|
esac;
|
|
|
|
|
|
|
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
|
|
|
$(SHELL) ./config.status --recheck
|
|
|
|
|
|
|
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
|
|
|
$(am__cd) $(srcdir) && $(AUTOCONF)
|
|
|
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
|
|
|
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
|
|
|
$(am__aclocal_m4_deps):
|
|
|
|
|
|
|
|
config.h: stamp-h1
|
|
|
|
@test -f $@ || rm -f stamp-h1
|
|
|
|
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
|
|
|
|
|
|
|
|
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
|
|
|
@rm -f stamp-h1
|
|
|
|
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
|
|
|
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
|
|
|
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
|
|
|
|
rm -f stamp-h1
|
|
|
|
touch $@
|
|
|
|
|
|
|
|
distclean-hdr:
|
|
|
|
-rm -f config.h stamp-h1
|
|
|
|
|
|
|
|
clean-noinstLIBRARIES:
|
|
|
|
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
|
|
|
|
|
|
|
libctf.a: $(libctf_a_OBJECTS) $(libctf_a_DEPENDENCIES) $(EXTRA_libctf_a_DEPENDENCIES)
|
|
|
|
$(AM_V_at)-rm -f libctf.a
|
|
|
|
$(AM_V_AR)$(libctf_a_AR) libctf.a $(libctf_a_OBJECTS) $(libctf_a_LIBADD)
|
|
|
|
$(AM_V_at)$(RANLIB) libctf.a
|
|
|
|
|
|
|
|
mostlyclean-compile:
|
|
|
|
-rm -f *.$(OBJEXT)
|
|
|
|
|
|
|
|
distclean-compile:
|
|
|
|
-rm -f *.tab.c
|
|
|
|
|
|
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctf-archive.Po@am__quote@
|
|
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctf-create.Po@am__quote@
|
|
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctf-decl.Po@am__quote@
|
|
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctf-dump.Po@am__quote@
|
|
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctf-error.Po@am__quote@
|
|
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctf-hash.Po@am__quote@
|
|
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctf-labels.Po@am__quote@
|
|
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctf-lookup.Po@am__quote@
|
|
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctf-open-bfd.Po@am__quote@
|
|
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctf-open.Po@am__quote@
|
2019-06-03 21:02:09 +08:00
|
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctf-qsort_r.Po@am__quote@
|
libctf: deduplicate and sort the string table
ctf.h states:
> [...] the CTF string table does not contain any duplicated strings.
Unfortunately this is entirely untrue: libctf has before now made no
attempt whatsoever to deduplicate the string table. It computes the
string table's length on the fly as it adds new strings to the dynamic
CTF file, and ctf_update() just writes each string to the table and
notes the current write position as it traverses the dynamic CTF file's
data structures and builds the final CTF buffer. There is no global
view of the strings and no deduplication.
Fix this by erasing the ctf_dtvstrlen dead-reckoning length, and adding
a new dynhash table ctf_str_atoms that maps unique strings to a list
of references to those strings: a reference is a simple uint32_t * to
some value somewhere in the under-construction CTF buffer that needs
updating to note the string offset when the strtab is laid out.
Adding a string is now a simple matter of calling ctf_str_add_ref(),
which adds a new atom to the atoms table, if one doesn't already exist,
and adding the location of the reference to this atom to the refs list
attached to the atom: this works reliably as long as one takes care to
only call ctf_str_add_ref() once the final location of the offset is
known (so you can't call it on a temporary structure and then memcpy()
that structure into place in the CTF buffer, because the ref will still
point to the old location: ctf_update() changes accordingly).
Generating the CTF string table is a matter of calling
ctf_str_write_strtab(), which counts the length and number of elements
in the atoms table using the ctf_dynhash_iter() function we just added,
populating an array of pointers into the atoms table and sorting it into
order (to help compressors), then traversing this table and emitting it,
updating the refs to each atom as we go. The only complexity here is
arranging to keep the null string at offset zero, since a lot of code in
libctf depends on being able to leave strtab references at 0 to indicate
'no name'. Once the table is constructed and the refs updated, we know
how long it is, so we can realloc() the partial CTF buffer we allocated
earlier and can copy the table on to the end of it (and purge the refs
because they're not needed any more and have been invalidated by the
realloc() call in any case).
The net effect of all this is a reduction in uncompressed strtab sizes
of about 30% (perhaps a quarter to a half of all strings across the
Linux kernel are eliminated as duplicates). Of course, duplicated
strings are highly redundant, so the space saving after compression is
only about 20%: when the other non-strtab sections are factored in, CTF
sizes shrink by about 10%.
No change in externally-visible API or file format (other than the
reduction in pointless redundancy).
libctf/
* ctf-impl.h: (struct ctf_strs_writable): New, non-const version of
struct ctf_strs.
(struct ctf_dtdef): Note that dtd_data.ctt_name is unpopulated.
(struct ctf_str_atom): New, disambiguated single string.
(struct ctf_str_atom_ref): New, points to some other location that
references this string's offset.
(struct ctf_file): New members ctf_str_atoms and ctf_str_num_refs.
Remove member ctf_dtvstrlen: we no longer track the total strlen
as we add strings.
(ctf_str_create_atoms): Declare new function in ctf-string.c.
(ctf_str_free_atoms): Likewise.
(ctf_str_add): Likewise.
(ctf_str_add_ref): Likewise.
(ctf_str_purge_refs): Likewise.
(ctf_str_write_strtab): Likewise.
(ctf_realloc): Declare new function in ctf-util.c.
* ctf-open.c (ctf_bufopen): Create the atoms table.
(ctf_file_close): Destroy it.
* ctf-create.c (ctf_update): Copy-and-free it on update. No longer
special-case the position of the parname string. Construct the
strtab by calling ctf_str_add_ref and ctf_str_write_strtab after the
rest of each buffer element is constructed, not via open-coding:
realloc the CTF buffer and append the strtab to it. No longer
maintain ctf_dtvstrlen. Sort the variable entry table later, after
strtab construction.
(ctf_copy_membnames): Remove: integrated into ctf_copy_{s,l,e}members.
(ctf_copy_smembers): Drop the string offset: call ctf_str_add_ref
after buffer element construction instead.
(ctf_copy_lmembers): Likewise.
(ctf_copy_emembers): Likewise.
(ctf_create): No longer maintain the ctf_dtvstrlen.
(ctf_dtd_delete): Likewise.
(ctf_dvd_delete): Likewise.
(ctf_add_generic): Likewise.
(ctf_add_enumerator): Likewise.
(ctf_add_member_offset): Likewise.
(ctf_add_variable): Likewise.
(membadd): Likewise.
* ctf-util.c (ctf_realloc): New, wrapper around realloc that aborts
if there are active ctf_str_num_refs.
(ctf_strraw): Move to ctf-string.c.
(ctf_strptr): Likewise.
* ctf-string.c: New file, strtab manipulation.
* Makefile.am (libctf_a_SOURCES): Add it.
* Makefile.in: Regenerate.
2019-06-27 20:51:10 +08:00
|
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctf-string.Po@am__quote@
|
2019-04-24 18:49:48 +08:00
|
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctf-subr.Po@am__quote@
|
|
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctf-types.Po@am__quote@
|
|
|
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctf-util.Po@am__quote@
|
|
|
|
|
|
|
|
.c.o:
|
|
|
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
|
|
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
|
|
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
|
|
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
|
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
|
|
|
|
|
|
|
.c.obj:
|
|
|
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
|
|
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
|
|
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
|
|
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
|
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
|
|
|
|
|
|
|
ID: $(am__tagged_files)
|
|
|
|
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
|
|
|
tags: tags-am
|
|
|
|
TAGS: tags
|
|
|
|
|
|
|
|
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
|
|
|
set x; \
|
|
|
|
here=`pwd`; \
|
|
|
|
$(am__define_uniq_tagged_files); \
|
|
|
|
shift; \
|
|
|
|
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
|
|
|
test -n "$$unique" || unique=$$empty_fix; \
|
|
|
|
if test $$# -gt 0; then \
|
|
|
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
|
|
|
"$$@" $$unique; \
|
|
|
|
else \
|
|
|
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
|
|
|
$$unique; \
|
|
|
|
fi; \
|
|
|
|
fi
|
|
|
|
ctags: ctags-am
|
|
|
|
|
|
|
|
CTAGS: ctags
|
|
|
|
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
|
|
|
$(am__define_uniq_tagged_files); \
|
|
|
|
test -z "$(CTAGS_ARGS)$$unique" \
|
|
|
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
|
|
|
$$unique
|
|
|
|
|
|
|
|
GTAGS:
|
|
|
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
|
|
|
&& $(am__cd) $(top_srcdir) \
|
|
|
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
|
|
|
cscope: cscope.files
|
|
|
|
test ! -s cscope.files \
|
|
|
|
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
|
|
|
|
clean-cscope:
|
|
|
|
-rm -f cscope.files
|
|
|
|
cscope.files: clean-cscope cscopelist
|
|
|
|
cscopelist: cscopelist-am
|
|
|
|
|
|
|
|
cscopelist-am: $(am__tagged_files)
|
|
|
|
list='$(am__tagged_files)'; \
|
|
|
|
case "$(srcdir)" in \
|
|
|
|
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
|
|
|
*) sdir=$(subdir)/$(srcdir) ;; \
|
|
|
|
esac; \
|
|
|
|
for i in $$list; do \
|
|
|
|
if test -f "$$i"; then \
|
|
|
|
echo "$(subdir)/$$i"; \
|
|
|
|
else \
|
|
|
|
echo "$$sdir/$$i"; \
|
|
|
|
fi; \
|
|
|
|
done >> $(top_builddir)/cscope.files
|
|
|
|
|
|
|
|
distclean-tags:
|
|
|
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
|
|
|
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
|
|
|
|
|
|
|
|
distdir: $(DISTFILES)
|
|
|
|
$(am__remove_distdir)
|
|
|
|
test -d "$(distdir)" || mkdir "$(distdir)"
|
|
|
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|
|
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|
|
|
list='$(DISTFILES)'; \
|
|
|
|
dist_files=`for file in $$list; do echo $$file; done | \
|
|
|
|
sed -e "s|^$$srcdirstrip/||;t" \
|
|
|
|
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
|
|
|
case $$dist_files in \
|
|
|
|
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
|
|
|
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
|
|
|
sort -u` ;; \
|
|
|
|
esac; \
|
|
|
|
for file in $$dist_files; do \
|
|
|
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
|
|
|
if test -d $$d/$$file; then \
|
|
|
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
|
|
|
if test -d "$(distdir)/$$file"; then \
|
|
|
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
|
|
|
fi; \
|
|
|
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
|
|
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
|
|
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
|
|
|
fi; \
|
|
|
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
|
|
|
else \
|
|
|
|
test -f "$(distdir)/$$file" \
|
|
|
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
|
|
|
|| exit 1; \
|
|
|
|
fi; \
|
|
|
|
done
|
|
|
|
-test -n "$(am__skip_mode_fix)" \
|
|
|
|
|| find "$(distdir)" -type d ! -perm -755 \
|
|
|
|
-exec chmod u+rwx,go+rx {} \; -o \
|
|
|
|
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
|
|
|
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
|
|
|
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
|
|
|
|| chmod -R a+r "$(distdir)"
|
|
|
|
dist-gzip: distdir
|
|
|
|
tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
|
|
|
|
$(am__post_remove_distdir)
|
|
|
|
|
|
|
|
dist-bzip2: distdir
|
|
|
|
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
|
|
|
$(am__post_remove_distdir)
|
|
|
|
|
|
|
|
dist-lzip: distdir
|
|
|
|
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
|
|
|
$(am__post_remove_distdir)
|
|
|
|
|
|
|
|
dist-xz: distdir
|
|
|
|
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
|
|
|
|
$(am__post_remove_distdir)
|
|
|
|
|
|
|
|
dist-tarZ: distdir
|
|
|
|
@echo WARNING: "Support for distribution archives compressed with" \
|
|
|
|
"legacy program 'compress' is deprecated." >&2
|
|
|
|
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
|
|
|
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
|
|
|
$(am__post_remove_distdir)
|
|
|
|
|
|
|
|
dist-shar: distdir
|
|
|
|
@echo WARNING: "Support for shar distribution archives is" \
|
|
|
|
"deprecated." >&2
|
|
|
|
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
|
|
|
shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
|
|
|
|
$(am__post_remove_distdir)
|
|
|
|
|
|
|
|
dist-zip: distdir
|
|
|
|
-rm -f $(distdir).zip
|
|
|
|
zip -rq $(distdir).zip $(distdir)
|
|
|
|
$(am__post_remove_distdir)
|
|
|
|
|
|
|
|
dist dist-all:
|
|
|
|
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
|
|
|
|
$(am__post_remove_distdir)
|
|
|
|
|
|
|
|
# This target untars the dist file and tries a VPATH configuration. Then
|
|
|
|
# it guarantees that the distribution is self-contained by making another
|
|
|
|
# tarfile.
|
|
|
|
distcheck: dist
|
|
|
|
case '$(DIST_ARCHIVES)' in \
|
|
|
|
*.tar.gz*) \
|
|
|
|
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
|
|
|
|
*.tar.bz2*) \
|
|
|
|
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
|
|
|
*.tar.lz*) \
|
|
|
|
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
|
|
|
*.tar.xz*) \
|
|
|
|
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
|
|
|
*.tar.Z*) \
|
|
|
|
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
|
|
|
*.shar.gz*) \
|
|
|
|
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
|
|
|
|
*.zip*) \
|
|
|
|
unzip $(distdir).zip ;;\
|
|
|
|
esac
|
|
|
|
chmod -R a-w $(distdir)
|
|
|
|
chmod u+w $(distdir)
|
|
|
|
mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
|
|
|
|
chmod a-w $(distdir)
|
|
|
|
test -d $(distdir)/_build || exit 0; \
|
|
|
|
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
|
|
|
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
|
|
|
&& am__cwd=`pwd` \
|
|
|
|
&& $(am__cd) $(distdir)/_build/sub \
|
|
|
|
&& ../../configure \
|
|
|
|
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
|
|
|
$(DISTCHECK_CONFIGURE_FLAGS) \
|
|
|
|
--srcdir=../.. --prefix="$$dc_install_base" \
|
|
|
|
&& $(MAKE) $(AM_MAKEFLAGS) \
|
|
|
|
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
|
|
|
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
|
|
|
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
|
|
|
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
|
|
|
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
|
|
|
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
|
|
|
distuninstallcheck \
|
|
|
|
&& chmod -R a-w "$$dc_install_base" \
|
|
|
|
&& ({ \
|
|
|
|
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
|
|
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
|
|
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
|
|
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
|
|
|
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
|
|
|
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
|
|
|
&& rm -rf "$$dc_destdir" \
|
|
|
|
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
|
|
|
&& rm -rf $(DIST_ARCHIVES) \
|
|
|
|
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
|
|
|
&& cd "$$am__cwd" \
|
|
|
|
|| exit 1
|
|
|
|
$(am__post_remove_distdir)
|
|
|
|
@(echo "$(distdir) archives ready for distribution: "; \
|
|
|
|
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
|
|
|
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
|
|
|
distuninstallcheck:
|
|
|
|
@test -n '$(distuninstallcheck_dir)' || { \
|
|
|
|
echo 'ERROR: trying to run $@ with an empty' \
|
|
|
|
'$$(distuninstallcheck_dir)' >&2; \
|
|
|
|
exit 1; \
|
|
|
|
}; \
|
|
|
|
$(am__cd) '$(distuninstallcheck_dir)' || { \
|
|
|
|
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
|
|
|
|
exit 1; \
|
|
|
|
}; \
|
|
|
|
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|
|
|
|
|| { echo "ERROR: files left after uninstall:" ; \
|
|
|
|
if test -n "$(DESTDIR)"; then \
|
|
|
|
echo " (check DESTDIR support)"; \
|
|
|
|
fi ; \
|
|
|
|
$(distuninstallcheck_listfiles) ; \
|
|
|
|
exit 1; } >&2
|
|
|
|
distcleancheck: distclean
|
|
|
|
@if test '$(srcdir)' = . ; then \
|
|
|
|
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
|
|
|
exit 1 ; \
|
|
|
|
fi
|
|
|
|
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
|
|
|
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
|
|
|
$(distcleancheck_listfiles) ; \
|
|
|
|
exit 1; } >&2
|
|
|
|
check-am: all-am
|
|
|
|
check: check-am
|
|
|
|
all-am: Makefile $(LIBRARIES) config.h
|
|
|
|
installdirs:
|
|
|
|
install: install-am
|
|
|
|
install-exec: install-exec-am
|
|
|
|
install-data: install-data-am
|
|
|
|
uninstall: uninstall-am
|
|
|
|
|
|
|
|
install-am: all-am
|
|
|
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
|
|
|
|
|
|
|
installcheck: installcheck-am
|
|
|
|
install-strip:
|
|
|
|
if test -z '$(STRIP)'; then \
|
|
|
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
|
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|
|
|
install; \
|
|
|
|
else \
|
|
|
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
|
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|
|
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
|
|
|
fi
|
|
|
|
mostlyclean-generic:
|
|
|
|
|
|
|
|
clean-generic:
|
|
|
|
|
|
|
|
distclean-generic:
|
|
|
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
|
|
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
|
|
|
|
|
|
|
maintainer-clean-generic:
|
|
|
|
@echo "This command is intended for maintainers to use"
|
|
|
|
@echo "it deletes files that may require special tools to rebuild."
|
|
|
|
clean: clean-am
|
|
|
|
|
|
|
|
clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
|
|
|
|
|
|
|
|
distclean: distclean-am
|
|
|
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
2019-06-03 21:02:09 +08:00
|
|
|
-rm -rf ./$(DEPDIR)
|
2019-04-24 18:49:48 +08:00
|
|
|
-rm -f Makefile
|
|
|
|
distclean-am: clean-am distclean-compile distclean-generic \
|
|
|
|
distclean-hdr distclean-tags
|
|
|
|
|
|
|
|
dvi: dvi-am
|
|
|
|
|
|
|
|
dvi-am:
|
|
|
|
|
|
|
|
html: html-am
|
|
|
|
|
|
|
|
html-am:
|
|
|
|
|
|
|
|
info: info-am
|
|
|
|
|
|
|
|
info-am:
|
|
|
|
|
|
|
|
install-data-am:
|
|
|
|
|
|
|
|
install-dvi: install-dvi-am
|
|
|
|
|
|
|
|
install-dvi-am:
|
|
|
|
|
|
|
|
install-exec-am:
|
|
|
|
|
|
|
|
install-html: install-html-am
|
|
|
|
|
|
|
|
install-html-am:
|
|
|
|
|
|
|
|
install-info: install-info-am
|
|
|
|
|
|
|
|
install-info-am:
|
|
|
|
|
|
|
|
install-man:
|
|
|
|
|
|
|
|
install-pdf: install-pdf-am
|
|
|
|
|
|
|
|
install-pdf-am:
|
|
|
|
|
|
|
|
install-ps: install-ps-am
|
|
|
|
|
|
|
|
install-ps-am:
|
|
|
|
|
|
|
|
installcheck-am:
|
|
|
|
|
|
|
|
maintainer-clean: maintainer-clean-am
|
|
|
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
|
|
|
-rm -rf $(top_srcdir)/autom4te.cache
|
2019-06-03 21:02:09 +08:00
|
|
|
-rm -rf ./$(DEPDIR)
|
2019-04-24 18:49:48 +08:00
|
|
|
-rm -f Makefile
|
|
|
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
|
|
|
|
|
|
|
mostlyclean: mostlyclean-am
|
|
|
|
|
|
|
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
|
|
|
|
|
|
|
pdf: pdf-am
|
|
|
|
|
|
|
|
pdf-am:
|
|
|
|
|
|
|
|
ps: ps-am
|
|
|
|
|
|
|
|
ps-am:
|
|
|
|
|
|
|
|
uninstall-am:
|
|
|
|
|
|
|
|
.MAKE: all install-am install-strip
|
|
|
|
|
|
|
|
.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-am clean \
|
|
|
|
clean-cscope clean-generic clean-noinstLIBRARIES cscope \
|
|
|
|
cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
|
|
|
|
dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
|
|
|
|
distcheck distclean distclean-compile distclean-generic \
|
|
|
|
distclean-hdr distclean-tags distcleancheck distdir \
|
|
|
|
distuninstallcheck dvi dvi-am html html-am info info-am \
|
|
|
|
install install-am install-data install-data-am install-dvi \
|
|
|
|
install-dvi-am install-exec install-exec-am install-html \
|
|
|
|
install-html-am install-info install-info-am install-man \
|
|
|
|
install-pdf install-pdf-am install-ps install-ps-am \
|
|
|
|
install-strip installcheck installcheck-am installdirs \
|
|
|
|
maintainer-clean maintainer-clean-generic mostlyclean \
|
|
|
|
mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
|
|
|
|
tags tags-am uninstall uninstall-am
|
|
|
|
|
|
|
|
.PRECIOUS: Makefile
|
|
|
|
|
|
|
|
|
|
|
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
|
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
|
|
.NOEXPORT:
|