Skip to content
Snippets Groups Projects
  • Jose E. Marchesi's avatar
    a0486bac
    libctf: fix a number of build problems found on Solaris and NetBSD · a0486bac
    Jose E. Marchesi authored
    - 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.
    a0486bac
    History
    libctf: fix a number of build problems found on Solaris and NetBSD
    Jose E. Marchesi authored
    - 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.