This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH libctf] Fix a number of build problems found on Solaris and NetBSD


On 30/05/2019 14:42, Nick Alcock wrote:
> - 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.
> ---
>  binutils/ChangeLog    |   6 +
>  binutils/objdump.c    |   3 -
>  binutils/readelf.c    |   3 -
>  include/ChangeLog     |   7 +
>  include/ctf-api.h     |  12 +-
>  libctf/ChangeLog      |  67 +++++++++
>  libctf/Makefile.am    |   9 +-
>  libctf/Makefile.in    |  24 +++-
>  libctf/aclocal.m4     |   1 +
>  libctf/config.h.in    |  22 +++
>  libctf/configure      | 322 +++++++++++++++++++++++++++++++++++++++++-
>  libctf/configure.ac   |   6 +-
>  libctf/ctf-archive.c  |   8 +-
>  libctf/ctf-create.c   |  50 ++++---
>  libctf/ctf-decls.h    |  37 +++++
>  libctf/ctf-dump.c     |  20 +--
>  libctf/ctf-endian.h   |  37 +++++
>  libctf/ctf-impl.h     |   5 +-
>  libctf/ctf-labels.c   |   8 +-
>  libctf/ctf-lookup.c   |   4 +-
>  libctf/ctf-open-bfd.c |  11 +-
>  libctf/ctf-open.c     |  13 +-
>  libctf/ctf-types.c    |  48 +++----
>  libctf/ctf-util.c     |   4 +-
>  libctf/qsort_r.c      | 259 +++++++++++++++++++++++++++++++++
>  libctf/swap.h         |  12 +-
>  26 files changed, 883 insertions(+), 115 deletions(-)
>  create mode 100644 libctf/ctf-decls.h
>  create mode 100644 libctf/ctf-endian.h
>  create mode 100644 libctf/qsort_r.c
> 
> This patch assumes that commit
> 90bd54236cb8b1c31c3662977159be971044c20d is reverted first. (It, and
> commit e33f2313bf63b77763739732be14b469b4b647b7, are unnecessary now
> that commit 9698cf9b1c485edbbeabc9f65bfd0fdef92e3854 is in.)
> 

fwiw i applied the patch on top of
9698cf9b1c485edbbeabc9f65bfd0fdef92e3854
and it fixes my build issue.

i cannot apply it on top of master, but i'd
like to fix the build issue soon, so our
builders can continue testing binutils.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]