Mercurial > vanilla
view core/elfutils/musl.patch @ 669:97da3728a2f8
core/bash-completion: fix CMake config directory
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 31 Jul 2019 21:05:00 +0200 |
parents | 5f0dfff1e37a |
children |
line wrap: on
line source
It looks like fregs.vregs[] is an array of double? Casting to Dwarf_Word instead of & 0xFFFFFFF should do. --- backends/aarch64_initreg.c 2015-11-27 14:36:29.000000000 +0100 +++ backends/aarch64_initreg.c 2016-08-09 03:47:25.428560159 +0200 @@ -82,7 +83,7 @@ Dwarf_Word dwarf_fregs[32]; for (int r = 0; r < 32; r++) - dwarf_fregs[r] = fregs.vregs[r] & 0xFFFFFFFF; + dwarf_fregs[r] = (Dwarf_Word)fregs.vregs[r]; if (! setfunc (64, 32, dwarf_fregs, arg)) return false; --- libcpu/i386_disasm.c 2015-08-21 14:22:37.000000000 +0200 +++ libcpu/i386_disasm.c 2015-11-20 06:30:59.250629957 +0100 @@ -1,4 +1,4 @@ -/* Disassembler for x86. +/* Disassembler for x86. Copyright (C) 2007, 2008, 2009, 2011 Red Hat, Inc. This file is part of elfutils. Written by Ulrich Drepper <drepper@redhat.com>, 2007. @@ -710,6 +710,7 @@ case 'm': /* Mnemonic. */ + str = mnebuf; if (unlikely (instrtab[cnt].mnemonic == MNE_INVALID)) { --- libelf/elf.h 2015-08-21 14:22:37.000000000 +0200 +++ libelf/elf.h 2015-11-20 04:54:33.948081321 +0100 @@ -21,6 +21,17 @@ #include <features.h> +#if !defined(__GLIBC__) +/* C++ needs to know that types and declarations are C, not C++. */ +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS +# define __END_DECLS +#endif +#endif + __BEGIN_DECLS /* Standard ELF types. */ --- lib/fixedsizehash.h.orig +++ lib/fixedsizehash.h @@ -30,7 +30,6 @@ #include <errno.h> #include <stdlib.h> #include <string.h> -#include <sys/cdefs.h> #include <system.h> --- configure.ac 2015-10-15 15:16:57.000000000 +0200 +++ configure.ac 2015-11-20 05:32:57.723901582 +0100 @@ -305,6 +305,62 @@ fi AC_SUBST([argp_LDADD]) +dnl Check if we have fts available from our libc +AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [#if !defined(__x86_64__) + #undef _FILE_OFFSET_BITS + #define _FILE_OFFSET_BITS 32 + #endif + #include <fts.h>], + [FTS* fts = 0; return fts_close(fts); return 0;] + )], + [libc_has_fts="true"], + [libc_has_fts="false"] +) + +dnl If our libc doesn't provide fts, then test for libfts +if test "$libc_has_fts" = "false" ; then + AC_MSG_WARN("libc does not have fts") + AC_CHECK_LIB([fts], [fts_close], [have_fts="true"], [have_fts="false"]) + + if test "$have_fts" = "false"; then + AC_MSG_ERROR("no libfts found") + else + fts_LDADD="-lfts" + fi +else + fts_LDADD="" +fi +AC_SUBST([fts_LDADD]) + +dnl Check if we have obstack available from our libc +AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [#include <obstack.h>], + [_obstack_begin(0, 0, 0, NULL, NULL); return 0;] + )], + [libc_has_obstack="true"], + [libc_has_obstack="false"] +) + +dnl If our libc doesn't provide obstack, then test for libobstack +if test "$libc_has_obstack" = "false" ; then + AC_MSG_WARN("libc does not have obstack") + AC_CHECK_LIB([obstack], [_obstack_begin], [have_obstack="true"], [have_obstack="false"]) + + if test "$have_obstack" = "false"; then + AC_MSG_ERROR("no libobstack found") + else + obstack_LDADD="-lobstack" + fi +else + obstack_LDADD="" +fi +AC_SUBST([obstack_LDADD]) + +dnl The directories with content. + dnl The directories with content. dnl Documentation. --- src/Makefile.am.orig 2016-08-29 21:38:11.179295769 +0200 +++ src/Makefile.am 2016-08-03 18:19:47.000000000 +0200 @@ -67,22 +67,22 @@ ar_no_Wstack_usage = yes unstrip_no_Wstack_usage = yes +readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) $(fts_LDADD) $(obstack_LDADD) -ldl +nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) $(fts_LDADD) $(obstack_LDADD) -ldl \ -readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl -nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl \ $(demanglelib) +size_LDADD = $(libelf) $(libeu) $(argp_LDADD) $(fts_LDADD) $(obstack_LDADD) +strip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) $(fts_LDADD) $(obstack_LDADD) -ldl +elflint_LDADD = $(libebl) $(libelf) $(libeu) $(argp_LDADD) $(fts_LDADD) $(obstack_LDADD) -ldl +findtextrel_LDADD = $(libdw) $(libelf) $(libeu) $(argp_LDADD) $(fts_LDADD) $(obstack_LDADD) +addr2line_LDADD = $(libdw) $(libelf) $(libeu) $(argp_LDADD) $(fts_LDADD) $(obstack_LDADD) $(demanglelib) +elfcmp_LDADD = $(libebl) $(libelf) $(libeu) $(argp_LDADD) $(fts_LDADD) $(obstack_LDADD) -ldl -size_LDADD = $(libelf) $(libeu) $(argp_LDADD) -strip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) -ldl -elflint_LDADD = $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl -findtextrel_LDADD = $(libdw) $(libelf) $(libeu) $(argp_LDADD) -addr2line_LDADD = $(libdw) $(libelf) $(libeu) $(argp_LDADD) $(demanglelib) -elfcmp_LDADD = $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl objdump_LDADD = $(libasm) $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl +ranlib_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD) $(fts_LDADD) $(obstack_LDADD) +strings_LDADD = $(libelf) $(libeu) $(argp_LDADD) $(fts_LDADD) $(obstack_LDADD) +ar_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD) $(fts_LDADD) $(obstack_LDADD) +unstrip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) $(fts_LDADD) $(obstack_LDADD) -ldl +stack_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) $(fts_LDADD) $(obstack_LDADD) -ldl $(demanglelib) +elfcompress_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) $(fts_LDADD) $(obstack_LDADD) -ranlib_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD) -strings_LDADD = $(libelf) $(libeu) $(argp_LDADD) -ar_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD) -unstrip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) -ldl -stack_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) -ldl $(demanglelib) -elfcompress_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) installcheck-binPROGRAMS: $(bin_PROGRAMS) bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ --- libdw/Makefile.am.orig 2017-08-05 01:41:04.103553705 +0000 +++ libdw/Makefile.am 2017-08-05 01:43:55.366543497 +0000 @@ -105,7 +105,7 @@ libdw_so_LIBS = libdw_pic.a ../libdwelf/libdwelf_pic.a \ ../libdwfl/libdwfl_pic.a ../libebl/libebl.a libdw_so_DEPS = ../lib/libeu.a ../libelf/libelf.so -libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(zip_LIBS) +libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(fts_LDADD) $(obstack_LDADD) $(zip_LIBS) libdw_so_SOURCES = libdw.so$(EXEEXT): $(srcdir)/libdw.map $(libdw_so_LIBS) $(libdw_so_DEPS) # The rpath is necessary for libebl because its $ORIGIN use will --- src/arlib.h 2015-08-21 14:22:37.000000000 +0200 +++ src/arlib.h 2015-11-20 08:02:55.153199611 +0100 @@ -29,6 +29,16 @@ #include <stdint.h> #include <sys/types.h> +#if !defined(ACCESSPERMS) +# define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */ +#endif +#if !defined(ALLPERMS) +# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) /* 07777 */ +#endif +#if !defined(DEFFILEMODE) +# define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)/* 0666*/ +#endif + /* State of -D/-U flags. */ extern bool arlib_deterministic_output; --- src/elfcompress.c.orig 2016-04-02 12:51:26.903848894 +0200 +++ src/elfcompress.c 2016-04-02 12:55:15.076996338 +0200 @@ -35,6 +35,14 @@ #include <gelf.h> #include "system.h" +#if !defined(FNM_EXTMATCH) +# define FNM_EXTMATCH 0 +#endif + +#if !defined(ALLPERMS) +# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) /* 07777 */ +#endif + /* Name and version of program. */ static void print_version (FILE *stream, struct argp_state *state); ARGP_PROGRAM_VERSION_HOOK_DEF = print_version; --- src/strip.c.orig 2017-08-02 12:06:25.000000000 +0000 +++ src/strip.c 2017-08-05 01:58:01.523493062 +0000 @@ -47,6 +47,14 @@ #include <system.h> #include <printversion.h> +#if !defined(FNM_EXTMATCH) +# define FNM_EXTMATCH 0 +#endif + +#if !defined(ACCESSPERMS) +#define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) +#endif + typedef uint8_t GElf_Byte; /* Name and version of program. */ --- src/readelf.c +++ src/readelf.c @@ -4773,10 +4773,11 @@ listptr_base (struct listptr *p) return cudie_base (&cu); } +static const char *listptr_name; + static int -compare_listptr (const void *a, const void *b, void *arg) +compare_listptr (const void *a, const void *b) { - const char *name = arg; struct listptr *p1 = (void *) a; struct listptr *p2 = (void *) b; @@ -4792,21 +4793,21 @@ compare_listptr (const void *a, const void *b, void *arg) p1->warned = p2->warned = true; error (0, 0, gettext ("%s %#" PRIx64 " used with different address sizes"), - name, (uint64_t) p1->offset); + listptr_name, (uint64_t) p1->offset); } if (p1->dwarf64 != p2->dwarf64) { p1->warned = p2->warned = true; error (0, 0, gettext ("%s %#" PRIx64 " used with different offset sizes"), - name, (uint64_t) p1->offset); + listptr_name, (uint64_t) p1->offset); } if (listptr_base (p1) != listptr_base (p2)) { p1->warned = p2->warned = true; error (0, 0, gettext ("%s %#" PRIx64 " used with different base addresses"), - name, (uint64_t) p1->offset); + listptr_name, (uint64_t) p1->offset); } if (p1->attr != p2 ->attr) { @@ -4814,7 +4815,7 @@ compare_listptr (const void *a, const void *b, void *arg) error (0, 0, gettext ("%s %#" PRIx64 " used with different attribute %s and %s"), - name, (uint64_t) p1->offset, dwarf_attr_name (p2->attr), + listptr_name, (uint64_t) p1->offset, dwarf_attr_name (p2->attr), dwarf_attr_name (p2->attr)); } } @@ -4885,9 +4886,11 @@ notice_listptr (enum section_e section, struct listptr_table *table, static void sort_listptr (struct listptr_table *table, const char *name) { - if (table->n > 0) - qsort_r (table->table, table->n, sizeof table->table[0], - &compare_listptr, (void *) name); + if (table->n > 0) { + listptr_name = name; + qsort (table->table, table->n, sizeof table->table[0], + &compare_listptr); + } } static bool --- libdwfl/dwfl_error.c 2015-09-29 17:18:51.000000000 +0200 +++ libdwfl/dwfl_error.c 2015-11-20 05:11:29.889002058 +0100 @@ -154,7 +154,16 @@ switch (error &~ 0xffff) { case OTHER_ERROR (ERRNO): +#if defined(__GLIBC__) return strerror_r (error & 0xffff, "bad", 0); +#else + { + static __thread char buf[128] = ""; + if (0 == strerror_r(error & 0xffff, buf, sizeof(buf))) + return buf; + } + return "strerror_r() failed"; +#endif case OTHER_ERROR (LIBELF): return elf_errmsg (error & 0xffff); case OTHER_ERROR (LIBDW): --- src/unstrip.c.orig 2017-04-27 14:26:26.000000000 +0000 +++ src/unstrip.c 2017-05-05 15:51:33.515154220 +0000 @@ -56,6 +56,15 @@ # define _(str) gettext (str) #endif +#ifndef strndupa +#define strndupa(s, n) \ + (__extension__ ({const char *__in = (s); \ + size_t __len = strnlen (__in, (n)) + 1; \ + char *__out = (char *) alloca (__len); \ + __out[__len-1] = '\0'; \ + (char *) memcpy (__out, __in, __len-1);})) +#endif + /* Name and version of program. */ ARGP_PROGRAM_VERSION_HOOK_DEF = print_version; --- /dev/null 2019-03-09 09:00:22.527999555 +0100 +++ src/error.h 2019-03-09 16:37:44.828481636 +0100 @@ -0,0 +1,27 @@ +#ifndef _ERROR_H_ +#define _ERROR_H_ + +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> + +static unsigned int error_message_count = 0; + +static inline void error(int status, int errnum, const char* format, ...) +{ + va_list ap; + fprintf(stderr, "%s: ", program_invocation_name); + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + if (errnum) + fprintf(stderr, ": %s", strerror(errnum)); + fprintf(stderr, "\n"); + error_message_count++; + if (status) + exit(status); +} + +#endif /* _ERROR_H_ */ --- /dev/null 2019-03-09 09:00:22.527999555 +0100 +++ lib/error.h 2019-03-09 16:37:46.732481531 +0100 @@ -0,0 +1,27 @@ +#ifndef _ERROR_H_ +#define _ERROR_H_ + +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> + +static unsigned int error_message_count = 0; + +static inline void error(int status, int errnum, const char* format, ...) +{ + va_list ap; + fprintf(stderr, "%s: ", program_invocation_name); + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + if (errnum) + fprintf(stderr, ": %s", strerror(errnum)); + fprintf(stderr, "\n"); + error_message_count++; + if (status) + exit(status); +} + +#endif /* _ERROR_H_ */ --- /dev/null 2019-03-10 12:27:13.816667173 +0100 +++ lib/libintl.h 2019-03-10 19:04:03.646840388 +0100 @@ -0,0 +1,6 @@ +#ifndef LIBINTL_H +#define LIBINTL_H + +#define _(x) (x) + +#endif