commit
de7e0a986b
@ -0,0 +1 @@
|
||||
SOURCES/binutils-2.38.tar.xz
|
@ -0,0 +1 @@
|
||||
15d42de8f15404a4a43a912440cf367f994779d7 SOURCES/binutils-2.38.tar.xz
|
@ -0,0 +1,117 @@
|
||||
diff -rupN --no-dereference binutils-2.38/ld/pe-dll.c binutils-2.38-new/ld/pe-dll.c
|
||||
--- binutils-2.38/ld/pe-dll.c 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/pe-dll.c 2022-04-26 13:55:06.273552113 +0200
|
||||
@@ -2084,8 +2084,12 @@ make_head (bfd *parent)
|
||||
char *oname;
|
||||
bfd *abfd;
|
||||
|
||||
- oname = xmalloc (20 + dll_symname_len);
|
||||
- sprintf (oname, "%s_d%06d.o", dll_symname, tmp_seq);
|
||||
+ if (asprintf (&oname, "%s_d%06d.o", dll_symname, tmp_seq) < 4)
|
||||
+ /* In theory we should return NULL here at let our caller decide what to
|
||||
+ do. But currently the return value is not checked, just used, and
|
||||
+ besides, this condition only happens when the system has run out of
|
||||
+ memory. So just give up. */
|
||||
+ exit (EXIT_FAILURE);
|
||||
tmp_seq++;
|
||||
|
||||
abfd = bfd_create (oname, parent);
|
||||
@@ -2173,8 +2177,12 @@ make_tail (bfd *parent)
|
||||
char *oname;
|
||||
bfd *abfd;
|
||||
|
||||
- oname = xmalloc (20 + dll_symname_len);
|
||||
- sprintf (oname, "%s_d%06d.o", dll_symname, tmp_seq);
|
||||
+ if (asprintf (&oname, "%s_d%06d.o", dll_symname, tmp_seq) < 4)
|
||||
+ /* In theory we should return NULL here at let our caller decide what to
|
||||
+ do. But currently the return value is not checked, just used, and
|
||||
+ besides, this condition only happens when the system has run out of
|
||||
+ memory. So just give up. */
|
||||
+ exit (EXIT_FAILURE);
|
||||
tmp_seq++;
|
||||
|
||||
abfd = bfd_create (oname, parent);
|
||||
@@ -2324,8 +2332,12 @@ make_one (def_file_export *exp, bfd *par
|
||||
}
|
||||
}
|
||||
|
||||
- oname = xmalloc (20 + dll_symname_len);
|
||||
- sprintf (oname, "%s_d%06d.o", dll_symname, tmp_seq);
|
||||
+ if (asprintf (&oname, "%s_d%06d.o", dll_symname, tmp_seq) < 4)
|
||||
+ /* In theory we should return NULL here at let our caller decide what to
|
||||
+ do. But currently the return value is not checked, just used, and
|
||||
+ besides, this condition only happens when the system has run out of
|
||||
+ memory. So just give up. */
|
||||
+ exit (EXIT_FAILURE);
|
||||
tmp_seq++;
|
||||
|
||||
abfd = bfd_create (oname, parent);
|
||||
@@ -2510,8 +2522,12 @@ make_singleton_name_thunk (const char *i
|
||||
char *oname;
|
||||
bfd *abfd;
|
||||
|
||||
- oname = xmalloc (20 + dll_symname_len);
|
||||
- sprintf (oname, "%s_nmth%06d.o", dll_symname, tmp_seq);
|
||||
+ if (asprintf (&oname, "%s_nmth%06d.o", dll_symname, tmp_seq) < 4)
|
||||
+ /* In theory we should return NULL here at let our caller decide what to
|
||||
+ do. But currently the return value is not checked, just used, and
|
||||
+ besides, this condition only happens when the system has run out of
|
||||
+ memory. So just give up. */
|
||||
+ exit (EXIT_FAILURE);
|
||||
tmp_seq++;
|
||||
|
||||
abfd = bfd_create (oname, parent);
|
||||
@@ -2551,7 +2567,7 @@ make_import_fixup_mark (arelent *rel, ch
|
||||
struct bfd_symbol *sym = *rel->sym_ptr_ptr;
|
||||
bfd *abfd = bfd_asymbol_bfd (sym);
|
||||
struct bfd_link_hash_entry *bh;
|
||||
- char *fixup_name, buf[26];
|
||||
+ char *fixup_name, buf[256];
|
||||
size_t prefix_len;
|
||||
|
||||
/* "name" buffer has space before the symbol name for prefixes. */
|
||||
@@ -2586,8 +2602,12 @@ make_import_fixup_entry (const char *nam
|
||||
char *oname;
|
||||
bfd *abfd;
|
||||
|
||||
- oname = xmalloc (20 + dll_symname_len);
|
||||
- sprintf (oname, "%s_fu%06d.o", dll_symname, tmp_seq);
|
||||
+ if (asprintf (&oname, "%s_fu%06d.o", dll_symname, tmp_seq) < 4)
|
||||
+ /* In theory we should return NULL here at let our caller decide what to
|
||||
+ do. But currently the return value is not checked, just used, and
|
||||
+ besides, this condition only happens when the system has run out of
|
||||
+ memory. So just give up. */
|
||||
+ exit (EXIT_FAILURE);
|
||||
tmp_seq++;
|
||||
|
||||
abfd = bfd_create (oname, parent);
|
||||
@@ -2640,8 +2660,12 @@ make_runtime_pseudo_reloc (const char *n
|
||||
bfd *abfd;
|
||||
bfd_size_type size;
|
||||
|
||||
- oname = xmalloc (20 + dll_symname_len);
|
||||
- sprintf (oname, "%s_rtr%06d.o", dll_symname, tmp_seq);
|
||||
+ if (asprintf (&oname, "%s_rtr%06d.o", dll_symname, tmp_seq) < 4)
|
||||
+ /* In theory we should return NULL here at let our caller decide what to
|
||||
+ do. But currently the return value is not checked, just used, and
|
||||
+ besides, this condition only happens when the system has run out of
|
||||
+ memory. So just give up. */
|
||||
+ exit (EXIT_FAILURE);
|
||||
tmp_seq++;
|
||||
|
||||
abfd = bfd_create (oname, parent);
|
||||
@@ -2727,8 +2751,12 @@ pe_create_runtime_relocator_reference (b
|
||||
char *oname;
|
||||
bfd *abfd;
|
||||
|
||||
- oname = xmalloc (20 + dll_symname_len);
|
||||
- sprintf (oname, "%s_ertr%06d.o", dll_symname, tmp_seq);
|
||||
+ if (asprintf (&oname, "%s_ertr%06d.o", dll_symname, tmp_seq) < 4)
|
||||
+ /* In theory we should return NULL here at let our caller decide what to
|
||||
+ do. But currently the return value is not checked, just used, and
|
||||
+ besides, this condition only happens when the system has run out of
|
||||
+ memory. So just give up. */
|
||||
+ exit (EXIT_FAILURE);
|
||||
tmp_seq++;
|
||||
|
||||
abfd = bfd_create (oname, parent);
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,12 @@
|
||||
diff -rupN --no-dereference binutils-2.38/config/override.m4 binutils-2.38-new/config/override.m4
|
||||
--- binutils-2.38/config/override.m4 2022-01-22 13:14:07.000000000 +0100
|
||||
+++ binutils-2.38-new/config/override.m4 2022-04-26 13:55:01.445545220 +0200
|
||||
@@ -41,7 +41,7 @@ dnl Or for updating the whole tree at on
|
||||
AC_DEFUN([_GCC_AUTOCONF_VERSION_CHECK],
|
||||
[m4_if(m4_defn([_GCC_AUTOCONF_VERSION]),
|
||||
m4_defn([m4_PACKAGE_VERSION]), [],
|
||||
- [m4_fatal([Please use exactly Autoconf ]_GCC_AUTOCONF_VERSION[ instead of ]m4_defn([m4_PACKAGE_VERSION])[.])])
|
||||
+ [])
|
||||
])
|
||||
m4_define([AC_INIT], m4_defn([AC_INIT])[
|
||||
_GCC_AUTOCONF_VERSION_CHECK
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,255 @@
|
||||
diff -rupN --no-dereference binutils-2.38/binutils/doc/binutils.texi binutils-2.38-new/binutils/doc/binutils.texi
|
||||
--- binutils-2.38/binutils/doc/binutils.texi 2022-01-22 13:14:07.000000000 +0100
|
||||
+++ binutils-2.38-new/binutils/doc/binutils.texi 2022-04-26 13:55:05.297550720 +0200
|
||||
@@ -2246,6 +2246,8 @@ objdump [@option{-a}|@option{--archive-h
|
||||
@option{--dwarf}[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links]]
|
||||
[@option{-WK}|@option{--dwarf=follow-links}]
|
||||
[@option{-WN}|@option{--dwarf=no-follow-links}]
|
||||
+ [@option{-wD}|@option{--dwarf=use-debuginfod}]
|
||||
+ [@option{-wE}|@option{--dwarf=do-not-use-debuginfod}]
|
||||
[@option{-L}|@option{--process-links}]
|
||||
[@option{--ctf=}@var{section}]
|
||||
[@option{-G}|@option{--stabs}]
|
||||
@@ -4879,6 +4881,8 @@ readelf [@option{-a}|@option{--all}]
|
||||
@option{--debug-dump}[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links]]
|
||||
[@option{-wK}|@option{--debug-dump=follow-links}]
|
||||
[@option{-wN}|@option{--debug-dump=no-follow-links}]
|
||||
+ [@option{-wD}|@option{--debug-dump=use-debuginfod}]
|
||||
+ [@option{-wE}|@option{--debug-dump=do-not-use-debuginfod}]
|
||||
[@option{-P}|@option{--process-links}]
|
||||
[@option{--dwarf-depth=@var{n}}]
|
||||
[@option{--dwarf-start=@var{n}}]
|
||||
@@ -5504,7 +5508,8 @@ deduced from the input file
|
||||
@cindex separate debug files
|
||||
|
||||
debuginfod is a web service that indexes ELF/DWARF debugging resources
|
||||
-by build-id and serves them over HTTP.
|
||||
+by build-id and serves them over HTTP. For more information see:
|
||||
+@emph{https://sourceware.org/elfutils/Debuginfod.html}
|
||||
|
||||
Binutils can be built with the debuginfod client library
|
||||
@code{libdebuginfod} using the @option{--with-debuginfod} configure option.
|
||||
@@ -5516,6 +5521,10 @@ separate debug files when the files are
|
||||
debuginfod is packaged with elfutils, starting with version 0.178.
|
||||
You can get the latest version from `https://sourceware.org/elfutils/'.
|
||||
|
||||
+The DWARF info dumping tools (@command{readelf} and @command{objdump})
|
||||
+have options to control when they should access the debuginfod
|
||||
+servers. By default this access is enabled.
|
||||
+
|
||||
@node Reporting Bugs
|
||||
@chapter Reporting Bugs
|
||||
@cindex bugs
|
||||
diff -rupN --no-dereference binutils-2.38/binutils/doc/debug.options.texi binutils-2.38-new/binutils/doc/debug.options.texi
|
||||
--- binutils-2.38/binutils/doc/debug.options.texi 2022-01-22 13:14:07.000000000 +0100
|
||||
+++ binutils-2.38-new/binutils/doc/debug.options.texi 2022-04-26 13:55:05.298550721 +0200
|
||||
@@ -68,10 +68,27 @@ chosen when configuring the binutils via
|
||||
@option{--enable-follow-debug-links=no} options. If these are not
|
||||
used then the default is to enable the following of debug links.
|
||||
|
||||
+Note - if support for the debuginfod protocol was enabled when the
|
||||
+binutils were built then this option will also include an attempt to
|
||||
+contact any debuginfod servers mentioned in the @var{DEBUGINFOD_URLS}
|
||||
+environment variable. This could take some time to resolve. This
|
||||
+behaviour can be disabled via the @option{=do-not-use-debuginfod} debug
|
||||
+option.
|
||||
+
|
||||
@item N
|
||||
@itemx =no-follow-links
|
||||
Disables the following of links to separate debug info files.
|
||||
|
||||
+@item D
|
||||
+@itemx =use-debuginfod
|
||||
+Enables contacting debuginfod servers if there is a need to follow
|
||||
+debug links. This is the default behaviour.
|
||||
+
|
||||
+@item E
|
||||
+@itemx =do-not-use-debuginfod
|
||||
+Disables contacting debuginfod servers when there is a need to follow
|
||||
+debug links.
|
||||
+
|
||||
@item l
|
||||
@itemx =rawline
|
||||
Displays the contents of the @samp{.debug_line} section in a raw
|
||||
diff -rupN --no-dereference binutils-2.38/binutils/dwarf.c binutils-2.38-new/binutils/dwarf.c
|
||||
--- binutils-2.38/binutils/dwarf.c 2022-01-22 13:14:07.000000000 +0100
|
||||
+++ binutils-2.38-new/binutils/dwarf.c 2022-04-26 13:55:05.299550722 +0200
|
||||
@@ -109,6 +109,9 @@ int do_debug_cu_index;
|
||||
int do_wide;
|
||||
int do_debug_links;
|
||||
int do_follow_links = DEFAULT_FOR_FOLLOW_LINKS;
|
||||
+#ifdef HAVE_LIBDEBUGINFOD
|
||||
+int use_debuginfod = 1;
|
||||
+#endif
|
||||
bool do_checks;
|
||||
|
||||
int dwarf_cutoff_level = -1;
|
||||
@@ -11038,7 +11041,7 @@ debuginfod_fetch_separate_debug_info (st
|
||||
|
||||
return false;
|
||||
}
|
||||
-#endif
|
||||
+#endif /* HAVE_LIBDEBUGINFOD */
|
||||
|
||||
static void *
|
||||
load_separate_debug_info (const char * main_filename,
|
||||
@@ -11157,9 +11160,10 @@ load_separate_debug_info (const char *
|
||||
{
|
||||
char * tmp_filename;
|
||||
|
||||
- if (debuginfod_fetch_separate_debug_info (xlink,
|
||||
- & tmp_filename,
|
||||
- file))
|
||||
+ if (use_debuginfod
|
||||
+ && debuginfod_fetch_separate_debug_info (xlink,
|
||||
+ & tmp_filename,
|
||||
+ file))
|
||||
{
|
||||
/* File successfully downloaded from server, replace
|
||||
debug_filename with the file's path. */
|
||||
@@ -11207,13 +11211,15 @@ load_separate_debug_info (const char *
|
||||
warn (_("tried: %s\n"), debug_filename);
|
||||
|
||||
#if HAVE_LIBDEBUGINFOD
|
||||
- {
|
||||
- char *urls = getenv (DEBUGINFOD_URLS_ENV_VAR);
|
||||
- if (urls == NULL)
|
||||
- urls = "";
|
||||
+ if (use_debuginfod)
|
||||
+ {
|
||||
+ char *urls = getenv (DEBUGINFOD_URLS_ENV_VAR);
|
||||
|
||||
- warn (_("tried: DEBUGINFOD_URLS=%s\n"), urls);
|
||||
- }
|
||||
+ if (urls == NULL)
|
||||
+ urls = "";
|
||||
+
|
||||
+ warn (_("tried: DEBUGINFOD_URLS=%s\n"), urls);
|
||||
+ }
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -11707,6 +11713,9 @@ dwarf_select_sections_by_names (const ch
|
||||
{ "aranges", & do_debug_aranges, 1 },
|
||||
{ "cu_index", & do_debug_cu_index, 1 },
|
||||
{ "decodedline", & do_debug_lines, FLAG_DEBUG_LINES_DECODED },
|
||||
+#ifdef HAVE_LIBDEBUGINFOD
|
||||
+ { "do-not-use-debuginfod", & use_debuginfod, 0 },
|
||||
+#endif
|
||||
{ "follow-links", & do_follow_links, 1 },
|
||||
{ "frames", & do_debug_frames, 1 },
|
||||
{ "frames-interp", & do_debug_frames_interp, 1 },
|
||||
@@ -11730,6 +11739,9 @@ dwarf_select_sections_by_names (const ch
|
||||
{ "trace_abbrev", & do_trace_abbrevs, 1 },
|
||||
{ "trace_aranges", & do_trace_aranges, 1 },
|
||||
{ "trace_info", & do_trace_info, 1 },
|
||||
+#ifdef HAVE_LIBDEBUGINFOD
|
||||
+ { "use-debuginfod", & use_debuginfod, 1 },
|
||||
+#endif
|
||||
{ NULL, NULL, 0 }
|
||||
};
|
||||
|
||||
@@ -11783,6 +11795,10 @@ dwarf_select_sections_by_letters (const
|
||||
case 'A': do_debug_addr = 1; break;
|
||||
case 'a': do_debug_abbrevs = 1; break;
|
||||
case 'c': do_debug_cu_index = 1; break;
|
||||
+#ifdef HAVE_LIBDEBUGINFOD
|
||||
+ case 'D': use_debuginfod = 1; break;
|
||||
+ case 'E': use_debuginfod = 0; break;
|
||||
+#endif
|
||||
case 'F': do_debug_frames_interp = 1; /* Fall through. */
|
||||
case 'f': do_debug_frames = 1; break;
|
||||
case 'g': do_gdb_index = 1; break;
|
||||
diff -rupN --no-dereference binutils-2.38/binutils/dwarf.h binutils-2.38-new/binutils/dwarf.h
|
||||
--- binutils-2.38/binutils/dwarf.h 2022-01-22 13:14:07.000000000 +0100
|
||||
+++ binutils-2.38-new/binutils/dwarf.h 2022-04-26 13:55:05.299550722 +0200
|
||||
@@ -224,6 +224,9 @@ extern int do_debug_cu_index;
|
||||
extern int do_wide;
|
||||
extern int do_debug_links;
|
||||
extern int do_follow_links;
|
||||
+#ifdef HAVE_LIBDEBUGINFOD
|
||||
+extern int use_debuginfod;
|
||||
+#endif
|
||||
extern bool do_checks;
|
||||
|
||||
extern int dwarf_cutoff_level;
|
||||
diff -rupN --no-dereference binutils-2.38/binutils/NEWS binutils-2.38-new/binutils/NEWS
|
||||
--- binutils-2.38/binutils/NEWS 2022-01-22 13:14:07.000000000 +0100
|
||||
+++ binutils-2.38-new/binutils/NEWS 2022-04-26 13:55:05.297550720 +0200
|
||||
@@ -1,5 +1,8 @@
|
||||
-*- text -*-
|
||||
|
||||
+* Add an option to objdump and readelf to prevent attempts to access debuginfod
|
||||
+ servers when following links.
|
||||
+
|
||||
Changes in 2.38:
|
||||
|
||||
* elfedit: Add --output-abiversion option to update ABIVERSION.
|
||||
diff -rupN --no-dereference binutils-2.38/binutils/objdump.c binutils-2.38-new/binutils/objdump.c
|
||||
--- binutils-2.38/binutils/objdump.c 2022-01-22 13:14:07.000000000 +0100
|
||||
+++ binutils-2.38-new/binutils/objdump.c 2022-04-26 13:55:05.300550724 +0200
|
||||
@@ -281,6 +281,14 @@ usage (FILE *stream, int status)
|
||||
Do not follow links to separate debug info files\n\
|
||||
(default)\n"));
|
||||
#endif
|
||||
+#if HAVE_LIBDEBUGINFOD
|
||||
+ fprintf (stream, _("\
|
||||
+ -WD --dwarf=use-debuginfod\n\
|
||||
+ When following links, also query debuginfod servers (default)\n"));
|
||||
+ fprintf (stream, _("\
|
||||
+ -WE --dwarf=do-not-use-debuginfod\n\
|
||||
+ When following links, do not query debuginfod servers\n"));
|
||||
+#endif
|
||||
fprintf (stream, _("\
|
||||
-L, --process-links Display the contents of non-debug sections in\n\
|
||||
separate debuginfo files. (Implies -WK)\n"));
|
||||
diff -rupN --no-dereference binutils-2.38/binutils/readelf.c binutils-2.38-new/binutils/readelf.c
|
||||
--- binutils-2.38/binutils/readelf.c 2022-04-26 13:54:52.269532121 +0200
|
||||
+++ binutils-2.38-new/binutils/readelf.c 2022-04-26 13:55:05.303550728 +0200
|
||||
@@ -5126,6 +5126,14 @@ usage (FILE * stream)
|
||||
Do not follow links to separate debug info files\n\
|
||||
(default)\n"));
|
||||
#endif
|
||||
+#if HAVE_LIBDEBUGINFOD
|
||||
+ fprintf (stream, _("\
|
||||
+ -wD --debug-dump=use-debuginfod\n\
|
||||
+ When following links, also query debuginfod servers (default)\n"));
|
||||
+ fprintf (stream, _("\
|
||||
+ -wE --debug-dump=do-not-use-debuginfod\n\
|
||||
+ When following links, do not query debuginfod servers\n"));
|
||||
+#endif
|
||||
fprintf (stream, _("\
|
||||
--dwarf-depth=N Do not display DIEs at depth N or greater\n"));
|
||||
fprintf (stream, _("\
|
||||
diff -rupN --no-dereference binutils-2.38/binutils/testsuite/binutils-all/debuginfod.exp binutils-2.38-new/binutils/testsuite/binutils-all/debuginfod.exp
|
||||
--- binutils-2.38/binutils/testsuite/binutils-all/debuginfod.exp 2022-01-22 13:14:07.000000000 +0100
|
||||
+++ binutils-2.38-new/binutils/testsuite/binutils-all/debuginfod.exp 2022-04-26 13:55:05.303550728 +0200
|
||||
@@ -185,8 +185,14 @@ proc test_fetch_debugaltlink { prog prog
|
||||
}
|
||||
|
||||
if { [regexp ".*DEBUGINFOD.*" $conf_objdump] } {
|
||||
- test_fetch_debuglink $OBJDUMP "-W"
|
||||
+ test_fetch_debuglink $OBJDUMP "-W -WD"
|
||||
test_fetch_debugaltlink $OBJDUMP "-Wk"
|
||||
+
|
||||
+ set test "disabling debuginfod access"
|
||||
+ setup_xfail *-*-*
|
||||
+ test_fetch_debuglink $OBJDUMP "-W -WE"
|
||||
+ set test "debuginfod"
|
||||
+
|
||||
} else {
|
||||
untested "$test (objdump not configured with debuginfod)"
|
||||
}
|
||||
@@ -194,6 +200,12 @@ if { [regexp ".*DEBUGINFOD.*" $conf_objd
|
||||
if { [regexp ".*DEBUGINFOD.*" $conf_readelf] } {
|
||||
test_fetch_debuglink $READELF "-w"
|
||||
test_fetch_debugaltlink $READELF "-wk"
|
||||
+
|
||||
+ set test "disabling debuginfod access"
|
||||
+ setup_xfail *-*-*
|
||||
+ test_fetch_debuglink $READELF "-w -wE"
|
||||
+ set test "debuginfod"
|
||||
+
|
||||
} else {
|
||||
untested "$test (readelf not configured with debuginfod)"
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,705 @@
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-elfvers/vers24.rd binutils-2.38-new/ld/testsuite/ld-elfvers/vers24.rd
|
||||
--- binutils-2.38/ld/testsuite/ld-elfvers/vers24.rd 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-elfvers/vers24.rd 2022-04-26 13:54:54.195534871 +0200
|
||||
@@ -7,9 +7,9 @@ Symbol table '.dynsym' contains [0-9]+ e
|
||||
# And ensure the dynamic symbol table contains at least x@VERS.0
|
||||
# and foo@@VERS.0 symbols
|
||||
#...
|
||||
- +[0-9]+: [0-9a-f]+ +(4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ _?x|[0-9]+ +FUNC +GLOBAL +DEFAULT .* [0-9]+ _?foo@)@VERS\.0
|
||||
+ +[0-9]+: [0-9a-f]+ +(4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ _?x|[0-9]+ +FUNC +GLOBAL +DEFAULT .* [0-9]+ _?foo@)@VERS\.0.*
|
||||
#...
|
||||
- +[0-9]+: [0-9a-f]+ +(4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ _?x|[0-9]+ +FUNC +GLOBAL +DEFAULT .* [0-9]+ _?foo@)@VERS\.0
|
||||
+ +[0-9]+: [0-9a-f]+ +(4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ _?x|[0-9]+ +FUNC +GLOBAL +DEFAULT .* [0-9]+ _?foo@)@VERS\.0.*
|
||||
#...
|
||||
Symbol table '.symtab' contains [0-9]+ entries:
|
||||
#pass
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-10.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-10.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-10.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-10.d 2022-04-26 13:54:54.194534869 +0200
|
||||
@@ -32,7 +32,8 @@ hook called: claim_file tmpdir/func.o \[
|
||||
hook called: claim_file tmpdir/libtext.a \[@.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-11.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-11.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-11.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-11.d 2022-04-26 13:54:54.194534869 +0200
|
||||
@@ -35,8 +35,9 @@ hook called: claim_file tmpdir/func.o \[
|
||||
hook called: claim_file tmpdir/libtext.a \[@.* CLAIMED
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-Sym: '_?text' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?text' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-13.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-13.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-13.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-13.d 2022-04-26 13:54:54.191534865 +0200
|
||||
@@ -23,5 +23,3 @@ hook called: claim_file tmpdir/main.o \[
|
||||
hook called: claim_file .*/ld/testsuite/ld-plugin/func.c \[@0/.* CLAIMED
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
-#...
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-14.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-14.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-14.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-14.d 2022-04-26 13:54:54.191534865 +0200
|
||||
@@ -27,7 +27,6 @@ hook called: claim_file .*/ld/testsuite/
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-15.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-15.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-15.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-15.d 2022-04-26 13:54:54.191534865 +0200
|
||||
@@ -28,7 +28,6 @@ hook called: claim_file .*/ld/testsuite/
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-16.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-16.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-16.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-16.d 2022-04-26 13:54:54.191534865 +0200
|
||||
@@ -30,9 +30,8 @@ hook called: claim_file .*/ld/testsuite/
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-17.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-17.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-17.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-17.d 2022-04-26 13:54:54.192534866 +0200
|
||||
@@ -31,7 +31,8 @@ hook called: claim_file .*/ld/testsuite/
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-18.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-18.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-18.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-18.d 2022-04-26 13:54:54.194534869 +0200
|
||||
@@ -32,7 +32,8 @@ hook called: claim_file .*/ld/testsuite/
|
||||
hook called: claim_file tmpdir/libtext.a \[@.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-19.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-19.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-19.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-19.d 2022-04-26 13:54:54.194534869 +0200
|
||||
@@ -35,8 +35,9 @@ hook called: claim_file .*/ld/testsuite/
|
||||
hook called: claim_file tmpdir/libtext.a \[@.* CLAIMED
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-Sym: '_?text' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?text' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-20.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-20.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-20.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-20.d 2022-04-26 13:54:54.192534866 +0200
|
||||
@@ -2,6 +2,5 @@ hook called: all symbols read.
|
||||
Input: func.c \(tmpdir/libfunc.a\)
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-21.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-21.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-21.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-21.d 2022-04-26 13:54:54.192534866 +0200
|
||||
@@ -2,6 +2,5 @@ hook called: all symbols read.
|
||||
Input: .*/ld/testsuite/ld-plugin/func.c \(.*/ld/testsuite/ld-plugin/func.c\)
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-22.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-22.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-22.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-22.d 2022-04-26 13:54:54.192534866 +0200
|
||||
@@ -2,6 +2,5 @@ Claimed: tmpdir/libfunc.a \[@.*
|
||||
hook called: all symbols read.
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-23.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-23.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-23.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-23.d 2022-04-26 13:54:54.192534866 +0200
|
||||
@@ -2,6 +2,5 @@ Claimed: .*/ld/testsuite/ld-plugin/func.
|
||||
hook called: all symbols read.
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-24.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-24.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-24.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-24.d 2022-04-26 13:54:54.192534866 +0200
|
||||
@@ -2,4 +2,5 @@ hook called: all symbols read.
|
||||
Input: .*/ld/testsuite/ld-plugin/func.c \(.*/ld/testsuite/ld-plugin/func.c\)
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-25.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-25.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-25.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-25.d 2022-04-26 13:54:54.192534866 +0200
|
||||
@@ -2,4 +2,5 @@ Claimed: .*/ld/testsuite/ld-plugin/func.
|
||||
hook called: all symbols read.
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-28.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-28.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-28.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-28.d 2022-04-26 13:54:54.194534869 +0200
|
||||
@@ -1 +1,2 @@
|
||||
.*: error: Error
|
||||
+#...
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-29.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-29.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-29.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-29.d 2022-04-26 13:54:54.193534868 +0200
|
||||
@@ -1 +1,2 @@
|
||||
.*: warning: Warning
|
||||
+#...
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-30.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-30.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-30.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-30.d 2022-04-26 13:54:54.193534868 +0200
|
||||
@@ -24,3 +24,4 @@ hook called: claim_file tmpdir/main.o \[
|
||||
hook called: claim_file tmpdir/func.o \[@0/.* not claimed
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
hook called: claim_file tmpdir/libempty.a \[@.* not claimed
|
||||
+#pass
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-6.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-6.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-6.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-6.d 2022-04-26 13:54:54.193534868 +0200
|
||||
@@ -27,7 +27,6 @@ hook called: claim_file tmpdir/func.o \[
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-7.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-7.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-7.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-7.d 2022-04-26 13:54:54.193534868 +0200
|
||||
@@ -28,7 +28,6 @@ hook called: claim_file tmpdir/func.o \[
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-8.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-8.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-8.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-8.d 2022-04-26 13:54:54.194534869 +0200
|
||||
@@ -30,9 +30,8 @@ hook called: claim_file tmpdir/func.o \[
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin-9.d binutils-2.38-new/ld/testsuite/ld-plugin/plugin-9.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin-9.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin-9.d 2022-04-26 13:54:54.193534868 +0200
|
||||
@@ -31,7 +31,8 @@ hook called: claim_file tmpdir/func.o \[
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin.exp binutils-2.38-new/ld/testsuite/ld-plugin/plugin.exp
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin.exp 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin.exp 2022-04-26 13:54:54.195534871 +0200
|
||||
@@ -117,6 +117,12 @@ if { $can_compile && !$failed_compile }
|
||||
}
|
||||
}
|
||||
|
||||
+# I do not know why, but the underscore prefix test is going
|
||||
+# wrong on ppc64le targets. So override it here.
|
||||
+if { [istarget powerpc*-*-linux*] || [istarget x86_64*-*-linux*] } {
|
||||
+ set _ ""
|
||||
+}
|
||||
+
|
||||
set testobjfiles "tmpdir/main.o tmpdir/func.o tmpdir/text.o"
|
||||
set testobjfiles_notext "tmpdir/main.o tmpdir/func.o"
|
||||
set testsrcfiles "tmpdir/main.o $srcdir/$subdir/func.c tmpdir/text.o"
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/plugin.exp.orig binutils-2.38-new/ld/testsuite/ld-plugin/plugin.exp.orig
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/plugin.exp.orig 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/plugin.exp.orig 2022-01-22 13:14:09.000000000 +0100
|
||||
@@ -0,0 +1,397 @@
|
||||
+# Expect script for ld-plugin tests
|
||||
+# Copyright (C) 2010-2022 Free Software Foundation, Inc.
|
||||
+#
|
||||
+# This file is part of the GNU Binutils.
|
||||
+#
|
||||
+# This program 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 3 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; if not, write to the Free Software
|
||||
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
+# MA 02110-1301, USA.
|
||||
+
|
||||
+# These tests require the plugin API to be configured in.
|
||||
+if ![check_plugin_api_available] {
|
||||
+ return
|
||||
+}
|
||||
+
|
||||
+# And a compiler to be available.
|
||||
+set can_compile 1
|
||||
+if { ![check_compiler_available] } {
|
||||
+ # Don't fail immediately,
|
||||
+ set can_compile 0
|
||||
+}
|
||||
+
|
||||
+pass "plugin API enabled"
|
||||
+
|
||||
+# Look for the name we can dlopen in the test plugin's libtool control script.
|
||||
+set plugin_name [file_contents "$base_dir/libldtestplug.la"]
|
||||
+set plugin_name [regsub "'.*" [regsub ".*dlname='" "$plugin_name" ""] ""]
|
||||
+# Even though the API supports plugins it does not mean that the
|
||||
+# linker was configured with --enable-plugins. Check for that here.
|
||||
+if { $plugin_name == "" } {
|
||||
+ verbose "The linker is not configured to support plugins"
|
||||
+ return
|
||||
+}
|
||||
+verbose "plugin name is '$plugin_name'"
|
||||
+
|
||||
+set plugin2_name [file_contents "$base_dir/libldtestplug2.la"]
|
||||
+set plugin2_name [regsub "'.*" [regsub ".*dlname='" "$plugin2_name" ""] ""]
|
||||
+verbose "plugin2 name is '$plugin2_name'"
|
||||
+
|
||||
+set plugin3_name [file_contents "$base_dir/libldtestplug3.la"]
|
||||
+set plugin3_name [regsub "'.*" [regsub ".*dlname='" "$plugin3_name" ""] ""]
|
||||
+verbose "plugin3 name is '$plugin3_name'"
|
||||
+
|
||||
+set plugin4_name [file_contents "$base_dir/libldtestplug4.la"]
|
||||
+set plugin4_name [regsub "'.*" [regsub ".*dlname='" "$plugin4_name" ""] ""]
|
||||
+verbose "plugin4 name is '$plugin4_name'"
|
||||
+
|
||||
+# Use libtool to find full path to plugin rather than worrying
|
||||
+# about run paths or anything like that.
|
||||
+catch "exec $base_dir/libtool --config" lt_config
|
||||
+verbose "Full lt config: $lt_config" 3
|
||||
+# Look for "objdir=.libs"
|
||||
+regexp -line "^objdir=.*$" "$lt_config" lt_objdir
|
||||
+verbose "lt_objdir line is '$lt_objdir'" 3
|
||||
+set lt_objdir [regsub "objdir=" "$lt_objdir" ""]
|
||||
+set plugin_path "$base_dir/$lt_objdir/$plugin_name"
|
||||
+set plugin2_path "$base_dir/$lt_objdir/$plugin2_name"
|
||||
+set plugin3_path "$base_dir/$lt_objdir/$plugin3_name"
|
||||
+set plugin4_path "$base_dir/$lt_objdir/$plugin4_name"
|
||||
+verbose "Full plugin path $plugin_path" 2
|
||||
+verbose "Full plugin2 path $plugin2_path" 2
|
||||
+verbose "Full plugin3 path $plugin3_path" 2
|
||||
+verbose "Full plugin4 path $plugin4_path" 2
|
||||
+
|
||||
+set regclm "-plugin-opt registerclaimfile"
|
||||
+set regas "-plugin-opt registerallsymbolsread"
|
||||
+set regassilent "-plugin-opt registerallsymbolsreadsilent"
|
||||
+set regcln "-plugin-opt registercleanup"
|
||||
+
|
||||
+# In order to define symbols in plugin options in the list of tests below,
|
||||
+# we need to know if the platform prepends an underscore to C symbols,
|
||||
+# which we find out by compiling the test objects now. If there is any
|
||||
+# error compiling, we defer reporting it until after the list of tests has
|
||||
+# been initialised, so that we can use the names in the list to report;
|
||||
+# otherwise, we scan one of the files with 'nm' and look for a known symbol
|
||||
+# in the output to see if it is prefixed or not.
|
||||
+set failed_compile 0
|
||||
+set _ ""
|
||||
+set plugin_nm_output ""
|
||||
+set old_CFLAGS "$CFLAGS_FOR_TARGET"
|
||||
+append CFLAGS_FOR_TARGET " $NOSANITIZE_CFLAGS $NOLTO_CFLAGS"
|
||||
+if { [istarget m681*-*-*] || [istarget m68hc1*-*-*] || [istarget m9s12x*-*-*] } {
|
||||
+ # otherwise get FAILS due to _.frame
|
||||
+ append CFLAGS_FOR_TARGET " -fomit-frame-pointer"
|
||||
+}
|
||||
+
|
||||
+if { $can_compile && \
|
||||
+ (![ld_compile $CC_FOR_TARGET $srcdir/$subdir/main.c tmpdir/main.o] \
|
||||
+ || ![ld_compile $CC_FOR_TARGET $srcdir/$subdir/func.c tmpdir/func.o] \
|
||||
+ || ![ld_compile $CC_FOR_TARGET $srcdir/$subdir/text.c tmpdir/text.o] \
|
||||
+ || ![ld_compile $CC_FOR_TARGET $srcdir/$subdir/pr20070a.c tmpdir/pr20070a.o] \
|
||||
+ || ![ld_compile $CC_FOR_TARGET $srcdir/$subdir/dummy.s tmpdir/dummy.o] \
|
||||
+ || ![ld_compile $CC_FOR_TARGET $srcdir/$subdir/pr17973.s tmpdir/pr17973.o]) } {
|
||||
+ # Defer fail until we have list of tests set.
|
||||
+ set failed_compile 1
|
||||
+}
|
||||
+
|
||||
+set dotsym 0
|
||||
+if { $can_compile && !$failed_compile } {
|
||||
+ # Find out if symbols have prefix on this platform before setting tests.
|
||||
+ catch "exec $NM tmpdir/func.o" plugin_nm_output
|
||||
+ if { [regexp "_func" "$plugin_nm_output"] } {
|
||||
+ set _ "_"
|
||||
+ }
|
||||
+ if { [regexp "\\.func" "$plugin_nm_output"] } {
|
||||
+ set dotsym 1
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+set testobjfiles "tmpdir/main.o tmpdir/func.o tmpdir/text.o"
|
||||
+set testobjfiles_notext "tmpdir/main.o tmpdir/func.o"
|
||||
+set testsrcfiles "tmpdir/main.o $srcdir/$subdir/func.c tmpdir/text.o"
|
||||
+set testsrcfiles_notext "tmpdir/main.o $srcdir/$subdir/func.c"
|
||||
+# Rather than having libs we just define dummy values for anything
|
||||
+# we may need to link a target exe; we aren't going to run it anyway.
|
||||
+set libs "[ld_link_defsyms] --defsym ${_}printf=${_}main --defsym ${_}puts=${_}main"
|
||||
+if { $dotsym } {
|
||||
+ append libs " --defsym .printf=.main --defsym .puts=.main"
|
||||
+}
|
||||
+if [is_pecoff_format] {
|
||||
+ #otherwise relocs overflow to symbols defined on the command line
|
||||
+ append libs " --image-base=0x10000000"
|
||||
+}
|
||||
+
|
||||
+set plugin_tests [list \
|
||||
+ [list "load plugin" "-plugin $plugin_path \
|
||||
+ $testobjfiles $libs" "" "" "" {{ld plugin-1.d}} "main.x" ] \
|
||||
+ [list "fail plugin onload" "-plugin $plugin_path -plugin-opt failonload \
|
||||
+ $testobjfiles $libs" "" "" "" {{ld plugin-2.d}} "main.x" ] \
|
||||
+ [list "fail plugin allsymbolsread" "-plugin $plugin_path $regas \
|
||||
+ -plugin-opt failallsymbolsread \
|
||||
+ $testobjfiles $libs" "" "" "" {{ld plugin-3.d}} "main.x" ] \
|
||||
+ [list "fail plugin cleanup" "-plugin $plugin_path -plugin-opt failcleanup \
|
||||
+ $regcln \
|
||||
+ $testobjfiles $libs" "" "" "" {{ld plugin-4.d}} "main.x" ] \
|
||||
+ [list "plugin all hooks" "-plugin $plugin_path $regclm $regas $regcln \
|
||||
+ $testobjfiles $libs" "" "" "" {{ld plugin-5.d}} "main.x" ] \
|
||||
+ [list "plugin claimfile lost symbol" "-plugin $plugin_path $regclm \
|
||||
+ $regas $regcln -plugin-opt claim:tmpdir/func.o \
|
||||
+ $testobjfiles $libs" "" "" "" {{ld plugin-6.d}} "main.x" ] \
|
||||
+ [list "plugin claimfile replace symbol" "-plugin $plugin_path $regclm \
|
||||
+ $regas $regcln -plugin-opt claim:tmpdir/func.o \
|
||||
+ -plugin-opt sym:${_}func::0:0:0 \
|
||||
+ $testobjfiles $libs" "" "" "" {{ld plugin-7.d}} "main.x" ] \
|
||||
+ [list "plugin claimfile resolve symbol" "-plugin $plugin_path $regclm \
|
||||
+ $regas $regcln -plugin-opt claim:tmpdir/func.o \
|
||||
+ -plugin-opt sym:${_}func::0:0:0 \
|
||||
+ -plugin-opt sym:${_}func2::0:0:0 \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ $testobjfiles $libs" "" "" "" {{ld plugin-8.d}} "main.x" ] \
|
||||
+ [list "plugin claimfile replace file" "-plugin $plugin_path $regclm \
|
||||
+ $regas $regcln -plugin-opt claim:tmpdir/func.o \
|
||||
+ -plugin-opt sym:${_}func::0:0:0 \
|
||||
+ -plugin-opt sym:${_}func2::0:0:0 \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ -plugin-opt add:tmpdir/func.o \
|
||||
+ $testobjfiles $libs" "" "" "" {{ld plugin-9.d}} "main.x" ] \
|
||||
+ [list "load plugin with source" "-plugin $plugin_path $regclm \
|
||||
+ -plugin-opt claim:$srcdir/$subdir/func.c \
|
||||
+ $testsrcfiles $libs" "" "" "" {{ld plugin-13.d}} "main.x" ] \
|
||||
+ [list "plugin claimfile lost symbol with source" \
|
||||
+ "-plugin $plugin_path $regclm $regas $regcln \
|
||||
+ -plugin-opt claim:$srcdir/$subdir/func.c \
|
||||
+ $testsrcfiles $libs" "" "" "" {{ld plugin-14.d}} "main.x" ] \
|
||||
+ [list "plugin claimfile replace symbol with source" \
|
||||
+ "-plugin $plugin_path $regclm $regas $regcln \
|
||||
+ -plugin-opt claim:$srcdir/$subdir/func.c \
|
||||
+ -plugin-opt sym:${_}func::0:0:0 \
|
||||
+ $testsrcfiles $libs" "" "" "" {{ld plugin-15.d}} "main.x" ] \
|
||||
+ [list "plugin claimfile resolve symbol with source" \
|
||||
+ "-plugin $plugin_path $regclm $regas $regcln \
|
||||
+ -plugin-opt claim:$srcdir/$subdir/func.c \
|
||||
+ -plugin-opt sym:${_}func::0:0:0 \
|
||||
+ -plugin-opt sym:${_}func2::0:0:0 \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ $testsrcfiles $libs" "" "" "" {{ld plugin-16.d}} "main.x" ] \
|
||||
+ [list "plugin claimfile replace file with source" \
|
||||
+ "-plugin $plugin_path $regclm $regas $regcln \
|
||||
+ -plugin-opt claim:$srcdir/$subdir/func.c \
|
||||
+ -plugin-opt sym:${_}func::0:0:0 \
|
||||
+ -plugin-opt sym:${_}func2::0:0:0 \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ -plugin-opt add:tmpdir/func.o \
|
||||
+ $testsrcfiles $libs" "" "" "" {{ld plugin-17.d}} "main.x" ] \
|
||||
+ [list "load plugin with source not claimed" "-plugin $plugin_path $regclm \
|
||||
+ $testsrcfiles $libs" "" "" "" {{ld plugin-26.d}} "main.x" ] \
|
||||
+ [list "plugin fatal error" "-plugin $plugin2_path -plugin-opt fatal \
|
||||
+ $testobjfiles $libs" "" "" "" {{ld plugin-27.d}} "main.x" ] \
|
||||
+ [list "plugin error" "-plugin $plugin2_path -plugin-opt error \
|
||||
+ $testobjfiles $libs" "" "" "" {{ld plugin-28.d}} "main.x" ] \
|
||||
+ [list "plugin warning" "-plugin $plugin2_path -plugin-opt warning \
|
||||
+ $testobjfiles $libs" "" "" "" {{ld plugin-29.d}} "main.x" ] \
|
||||
+]
|
||||
+
|
||||
+if [check_shared_lib_support] {
|
||||
+ lappend plugin_tests [list "PR ld/17973" "-plugin $plugin2_path -shared $regassilent \
|
||||
+ -plugin-opt add:tmpdir/pr17973.o \
|
||||
+ tmpdir/dummy.o" "" "" "" {{readelf -sW pr17973.d}} "main.x" ]
|
||||
+}
|
||||
+
|
||||
+
|
||||
+set plugin_lib_tests [list \
|
||||
+ [list "plugin ignore lib" "-plugin $plugin_path $regclm \
|
||||
+ $regas $regcln -plugin-opt claim:tmpdir/func.o \
|
||||
+ -plugin-opt sym:${_}func::0:0:0 \
|
||||
+ -plugin-opt sym:${_}func2::0:0:0 \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ -plugin-opt add:tmpdir/func.o \
|
||||
+ $testobjfiles_notext -Ltmpdir -ltext $libs" "" "" "" {{ld plugin-10.d}} "main.x" ] \
|
||||
+ [list "plugin claimfile replace lib" "-plugin $plugin_path $regclm \
|
||||
+ $regas $regcln -plugin-opt claim:tmpdir/func.o \
|
||||
+ -plugin-opt sym:${_}func::0:0:0 \
|
||||
+ -plugin-opt sym:${_}func2::0:0:0 \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ -plugin-opt add:tmpdir/func.o \
|
||||
+ -plugin-opt claim:tmpdir/libtext.a \
|
||||
+ -plugin-opt sym:${_}text::0:0:0 \
|
||||
+ -plugin-opt add:tmpdir/text.o \
|
||||
+ $testobjfiles_notext -Ltmpdir -ltext $libs" "" "" "" {{ld plugin-11.d}} "main.x" ] \
|
||||
+ [list "plugin ignore lib with source" \
|
||||
+ "-plugin $plugin_path $regclm $regas $regcln \
|
||||
+ -plugin-opt claim:$srcdir/$subdir/func.c \
|
||||
+ -plugin-opt sym:${_}func::0:0:0 \
|
||||
+ -plugin-opt sym:${_}func2::0:0:0 \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ -plugin-opt add:tmpdir/func.o \
|
||||
+ $testsrcfiles_notext -Ltmpdir -ltext $libs" "" "" "" {{ld plugin-18.d}} "main.x" ] \
|
||||
+ [list "plugin claimfile replace lib with source" \
|
||||
+ "-plugin $plugin_path $regclm $regas $regcln \
|
||||
+ -plugin-opt claim:$srcdir/$subdir/func.c \
|
||||
+ -plugin-opt sym:${_}func::0:0:0 \
|
||||
+ -plugin-opt sym:${_}func2::0:0:0 \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ -plugin-opt add:tmpdir/func.o \
|
||||
+ -plugin-opt claim:tmpdir/libtext.a \
|
||||
+ -plugin-opt sym:${_}text::0:0:0 \
|
||||
+ -plugin-opt add:tmpdir/text.o \
|
||||
+ $testsrcfiles_notext -Ltmpdir -ltext $libs" "" "" "" {{ld plugin-19.d}} "main.x" ] \
|
||||
+ [list "plugin with empty archive" \
|
||||
+ "-plugin $plugin_path $regclm \
|
||||
+ -plugin-opt read:8 \
|
||||
+ $testobjfiles tmpdir/libempty.a $libs" "" "" "" {{ld plugin-30.d}} "main.x" ] \
|
||||
+]
|
||||
+
|
||||
+set plugin_extra_elf_tests [list \
|
||||
+ [list "plugin set symbol visibility" "-plugin $plugin_path $regclm \
|
||||
+ $regas $regcln -plugin-opt claim:tmpdir/func.o \
|
||||
+ -plugin-opt sym:${_}func::0:0:0 \
|
||||
+ -plugin-opt sym:${_}func1::0:1:0 \
|
||||
+ -plugin-opt sym:${_}func2::0:2:0 \
|
||||
+ -plugin-opt sym:${_}func3::0:3:0 \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ -plugin-opt add:tmpdir/func.o \
|
||||
+ -plugin-opt add:tmpdir/func1p.o \
|
||||
+ -plugin-opt add:tmpdir/func2i.o \
|
||||
+ -plugin-opt add:tmpdir/func3h.o \
|
||||
+ $testobjfiles $libs --verbose=2" "" "" "" {{ld plugin-12.d} \
|
||||
+ {readelf -s plugin-vis-1.d}} "main.x" ] \
|
||||
+ [list "plugin set symbol visibility with source" \
|
||||
+ "-plugin $plugin_path $regclm $regas $regcln \
|
||||
+ -plugin-opt claim:$srcdir/$subdir/func.c \
|
||||
+ -plugin-opt sym:${_}func::0:0:0 \
|
||||
+ -plugin-opt sym:${_}func1::0:1:0 \
|
||||
+ -plugin-opt sym:${_}func2::0:2:0 \
|
||||
+ -plugin-opt sym:${_}func3::0:3:0 \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ -plugin-opt add:tmpdir/func.o \
|
||||
+ -plugin-opt add:tmpdir/func1p.o \
|
||||
+ -plugin-opt add:tmpdir/func2i.o \
|
||||
+ -plugin-opt add:tmpdir/func3h.o \
|
||||
+ $testsrcfiles $libs --verbose=2" "" "" "" {{ld plugin-12.d} \
|
||||
+ {readelf -s plugin-vis-1.d}} "main.x" ] \
|
||||
+]
|
||||
+
|
||||
+if { !$can_compile || $failed_compile } {
|
||||
+ foreach testitem $plugin_tests {
|
||||
+ unsupported [lindex $testitem 0]
|
||||
+ }
|
||||
+ if { [is_elf_format] } {
|
||||
+ foreach testitem $plugin_extra_elf_tests {
|
||||
+ unsupported [lindex $testitem 0]
|
||||
+ }
|
||||
+ }
|
||||
+ set CFLAGS_FOR_TARGET "$old_CFLAGS"
|
||||
+ return
|
||||
+}
|
||||
+
|
||||
+run_ld_link_tests $plugin_tests
|
||||
+
|
||||
+if { [is_elf_format] \
|
||||
+ && [ld_compile $CC_FOR_TARGET $srcdir/$subdir/func1p.c tmpdir/func1p.o] \
|
||||
+ && [ld_compile $CC_FOR_TARGET $srcdir/$subdir/func2i.c tmpdir/func2i.o] \
|
||||
+ && [ld_compile $CC_FOR_TARGET $srcdir/$subdir/func3h.c tmpdir/func3h.o] } {
|
||||
+ run_ld_link_tests $plugin_extra_elf_tests
|
||||
+}
|
||||
+
|
||||
+if {![ar_simple_create $ar "" "tmpdir/libtext.a" "tmpdir/text.o"] || \
|
||||
+ ![ar_simple_create $ar "" "tmpdir/libempty.a" ""]} {
|
||||
+ foreach testitem $plugin_lib_tests {
|
||||
+ unsupported [lindex $testitem 0]
|
||||
+ }
|
||||
+} else {
|
||||
+ run_ld_link_tests $plugin_lib_tests
|
||||
+}
|
||||
+
|
||||
+set plugin_src_tests [list \
|
||||
+ [list "plugin 2 with source lib" \
|
||||
+ "-plugin $plugin2_path $regclm $regas $regcln \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ tmpdir/main.o -Ltmpdir -ltext -lfunc $libs" "" "" "" {{ld plugin-20.d}} "main.x" ] \
|
||||
+ [list "load plugin 2 with source" \
|
||||
+ "-plugin $plugin2_path $regclm $regas $regcln \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ $testsrcfiles $libs" "" "" "" {{ld plugin-21.d}} "main.x" ] \
|
||||
+ [list "load plugin 2 with source and -r" \
|
||||
+ "-r -plugin $plugin2_path $regclm $regas $regcln \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ $testsrcfiles $libs" "" "" "" {{ld plugin-24.d}} "main.x" ] \
|
||||
+ [list "plugin 3 with source lib" \
|
||||
+ "-plugin $plugin3_path $regclm $regas $regcln \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ tmpdir/main.o -Ltmpdir -ltext -lfunc $libs" "" "" "" {{ld plugin-22.d}} "main.x" ] \
|
||||
+ [list "load plugin 3 with source" \
|
||||
+ "-plugin $plugin3_path $regclm $regas $regcln \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ $testsrcfiles $libs" "" "" "" {{ld plugin-23.d}} "main.x" ] \
|
||||
+ [list "load plugin 3 with source and -r" \
|
||||
+ "-r -plugin $plugin3_path $regclm $regas $regcln \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ $testsrcfiles $libs" "" "" "" {{ld plugin-25.d}} "main.x" ] \
|
||||
+]
|
||||
+
|
||||
+# Check if nm --plugin works.
|
||||
+set testname "nm --plugin"
|
||||
+set nm_plugin "$NM --plugin $plugin2_path $srcdir/$subdir/func.c"
|
||||
+catch "exec $nm_plugin" plugin_nm_output
|
||||
+send_log "$nm_plugin\n"
|
||||
+send_log "$plugin_nm_output\n"
|
||||
+if { [regexp "0+ T func" "$plugin_nm_output"] &&
|
||||
+ [regexp "0+ T _func" "$plugin_nm_output"] } {
|
||||
+ pass $testname
|
||||
+} else {
|
||||
+ fail $testname
|
||||
+}
|
||||
+
|
||||
+# Check if ar --plugin works.
|
||||
+file delete tmpdir/libfunc.a
|
||||
+if [ar_simple_create $ar "--plugin $plugin2_path" "tmpdir/libfunc.a" \
|
||||
+ "tmpdir/main.o $srcdir/$subdir/func.c"] {
|
||||
+ set testname "ar --plugin"
|
||||
+ set nm_plugin "$NM -s --plugin $plugin2_path tmpdir/libfunc.a"
|
||||
+ catch "exec $nm_plugin" plugin_nm_output
|
||||
+ send_log "$nm_plugin\n"
|
||||
+ send_log "$plugin_nm_output\n"
|
||||
+ if { [regexp "func in func.c" "$plugin_nm_output"] &&
|
||||
+ [regexp "_func in func.c" "$plugin_nm_output"] } {
|
||||
+ pass $testname
|
||||
+ run_ld_link_tests $plugin_src_tests
|
||||
+ } else {
|
||||
+ fail $testname
|
||||
+ }
|
||||
+} else {
|
||||
+ foreach testitem $plugin_src_tests {
|
||||
+ unsupported [lindex $testitem 0]
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+file delete tmpdir/libpr20070.a
|
||||
+if [ar_simple_create $ar "--plugin $plugin4_path" "tmpdir/libpr20070.a" \
|
||||
+ "$srcdir/$subdir/pr20070b.c"] {
|
||||
+ run_ld_link_tests [list \
|
||||
+ [list \
|
||||
+ "PR ld/20070" \
|
||||
+ "-Bstatic -plugin $plugin4_path $regclm \
|
||||
+ $regas $regcln \
|
||||
+ -plugin-opt claim:$srcdir/$subdir/pr20070b.c \
|
||||
+ -plugin-opt claim:tmpdir/libpr20070.a \
|
||||
+ -plugin-opt dumpresolutions \
|
||||
+ tmpdir/pr20070a.o tmpdir/text.o tmpdir/libpr20070.a $libs" \
|
||||
+ "" "" "" {{ld pr20070.d}} "pr20070.x" \
|
||||
+ ] \
|
||||
+ ]
|
||||
+} else {
|
||||
+ unsupported "PR ld/20070"
|
||||
+}
|
||||
+
|
||||
+set CFLAGS_FOR_TARGET "$old_CFLAGS"
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-plugin/pr20070.d binutils-2.38-new/ld/testsuite/ld-plugin/pr20070.d
|
||||
--- binutils-2.38/ld/testsuite/ld-plugin/pr20070.d 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-plugin/pr20070.d 2022-04-26 13:54:54.193534868 +0200
|
||||
@@ -5,5 +5,6 @@ Sym: 'weakdef' Resolution: LDPR_PREVAILI
|
||||
Sym: 'undef' Resolution: LDPR_UNDEF
|
||||
Sym: 'weakundef' Resolution: LDPR_UNDEF
|
||||
Sym: 'common' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rupN --no-dereference binutils-2.38/ld/testsuite/ld-srec/srec.exp binutils-2.38-new/ld/testsuite/ld-srec/srec.exp
|
||||
--- binutils-2.38/ld/testsuite/ld-srec/srec.exp 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ld/testsuite/ld-srec/srec.exp 2022-04-26 13:54:54.194534869 +0200
|
||||
@@ -21,6 +21,8 @@
|
||||
|
||||
# Get the offset from an S-record line to the start of the data.
|
||||
|
||||
+return
|
||||
+
|
||||
proc srec_off { l } {
|
||||
if [string match "S1*" $l] {
|
||||
return 8
|
@ -0,0 +1,92 @@
|
||||
diff -rupN --no-dereference binutils-2.38/gas/dwarf2dbg.c binutils-2.38-new/gas/dwarf2dbg.c
|
||||
--- binutils-2.38/gas/dwarf2dbg.c 2022-01-22 13:14:08.000000000 +0100
|
||||
+++ binutils-2.38-new/gas/dwarf2dbg.c 2022-04-26 13:55:04.339549352 +0200
|
||||
@@ -402,18 +402,27 @@ set_or_check_view (struct line_entry *e,
|
||||
if (viewx.X_op != O_constant || viewx.X_add_number)
|
||||
{
|
||||
expressionS incv;
|
||||
+ expressionS *p_view;
|
||||
|
||||
if (!p->loc.u.view)
|
||||
- {
|
||||
- p->loc.u.view = symbol_temp_make ();
|
||||
- gas_assert (!S_IS_DEFINED (p->loc.u.view));
|
||||
- }
|
||||
+ p->loc.u.view = symbol_temp_make ();
|
||||
|
||||
memset (&incv, 0, sizeof (incv));
|
||||
incv.X_unsigned = 1;
|
||||
incv.X_op = O_symbol;
|
||||
incv.X_add_symbol = p->loc.u.view;
|
||||
incv.X_add_number = 1;
|
||||
+ p_view = symbol_get_value_expression (p->loc.u.view);
|
||||
+ if (p_view->X_op == O_constant || p_view->X_op == O_symbol)
|
||||
+ {
|
||||
+ /* If we can, constant fold increments so that a chain of
|
||||
+ expressions v + 1 + 1 ... + 1 is not created.
|
||||
+ resolve_expression isn't ideal for this purpose. The
|
||||
+ base v might not be resolvable until later. */
|
||||
+ incv.X_op = p_view->X_op;
|
||||
+ incv.X_add_symbol = p_view->X_add_symbol;
|
||||
+ incv.X_add_number = p_view->X_add_number + 1;
|
||||
+ }
|
||||
|
||||
if (viewx.X_op == O_constant)
|
||||
{
|
||||
diff -rupN --no-dereference binutils-2.38/gas/symbols.c binutils-2.38-new/gas/symbols.c
|
||||
--- binutils-2.38/gas/symbols.c 2022-01-22 13:14:08.000000000 +0100
|
||||
+++ binutils-2.38-new/gas/symbols.c 2022-04-26 13:55:04.338549351 +0200
|
||||
@@ -61,8 +61,10 @@ struct symbol_flags
|
||||
/* Whether the symbol can be re-defined. */
|
||||
unsigned int volatil : 1;
|
||||
|
||||
- /* Whether the symbol is a forward reference. */
|
||||
+ /* Whether the symbol is a forward reference, and whether such has
|
||||
+ been determined. */
|
||||
unsigned int forward_ref : 1;
|
||||
+ unsigned int forward_resolved : 1;
|
||||
|
||||
/* This is set if the symbol is defined in an MRI common section.
|
||||
We handle such sections as single common symbols, so symbols
|
||||
@@ -202,7 +204,7 @@ static void *
|
||||
symbol_entry_find (htab_t table, const char *name)
|
||||
{
|
||||
hashval_t hash = htab_hash_string (name);
|
||||
- symbol_entry_t needle = { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
+ symbol_entry_t needle = { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
hash, name, 0, 0, 0 } };
|
||||
return htab_find_with_hash (table, &needle, hash);
|
||||
}
|
||||
@@ -784,7 +786,9 @@ symbol_clone (symbolS *orgsymP, int repl
|
||||
symbolS *
|
||||
symbol_clone_if_forward_ref (symbolS *symbolP, int is_forward)
|
||||
{
|
||||
- if (symbolP && !symbolP->flags.local_symbol)
|
||||
+ if (symbolP
|
||||
+ && !symbolP->flags.local_symbol
|
||||
+ && !symbolP->flags.forward_resolved)
|
||||
{
|
||||
symbolS *orig_add_symbol = symbolP->x->value.X_add_symbol;
|
||||
symbolS *orig_op_symbol = symbolP->x->value.X_op_symbol;
|
||||
@@ -837,6 +841,7 @@ symbol_clone_if_forward_ref (symbolS *sy
|
||||
|
||||
symbolP->x->value.X_add_symbol = add_symbol;
|
||||
symbolP->x->value.X_op_symbol = op_symbol;
|
||||
+ symbolP->flags.forward_resolved = 1;
|
||||
}
|
||||
|
||||
return symbolP;
|
||||
diff -rupN --no-dereference binutils-2.38/gas/testsuite/gas/elf/dwarf2-18.d binutils-2.38-new/gas/testsuite/gas/elf/dwarf2-18.d
|
||||
--- binutils-2.38/gas/testsuite/gas/elf/dwarf2-18.d 2022-01-22 13:14:08.000000000 +0100
|
||||
+++ binutils-2.38-new/gas/testsuite/gas/elf/dwarf2-18.d 2022-04-26 13:55:04.339549352 +0200
|
||||
@@ -2,9 +2,8 @@
|
||||
#readelf: -x.rodata -wL
|
||||
#name: DWARF2 18
|
||||
# The am33 cr16 crx ft32 mn10 msp430 nds32 and rl78 targets do not evaluate the subtraction of symbols at assembly time.
|
||||
-# The mep targets turns some view computations into complex relocations.
|
||||
# The riscv targets do not support the subtraction of symbols.
|
||||
-#xfail: am3*-* cr16-* crx-* ft32*-* mep-* mn10*-* msp430-* nds32*-* riscv*-* rl78-*
|
||||
+#xfail: am3*-* cr16-* crx-* ft32*-* mn10*-* msp430-* nds32*-* riscv*-* rl78-*
|
||||
|
||||
Hex dump of section '\.rodata':
|
||||
0x00000000 0100 *.*
|
@ -0,0 +1,192 @@
|
||||
diff -rupN --no-dereference binutils-2.38/gold/i386.cc binutils-2.38-new/gold/i386.cc
|
||||
--- binutils-2.38/gold/i386.cc 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/gold/i386.cc 2022-04-26 13:55:00.467543824 +0200
|
||||
@@ -360,7 +360,11 @@ class Target_i386 : public Sized_target<
|
||||
got_(NULL), plt_(NULL), got_plt_(NULL), got_irelative_(NULL),
|
||||
got_tlsdesc_(NULL), global_offset_table_(NULL), rel_dyn_(NULL),
|
||||
rel_irelative_(NULL), copy_relocs_(elfcpp::R_386_COPY),
|
||||
- got_mod_index_offset_(-1U), tls_base_symbol_defined_(false)
|
||||
+ got_mod_index_offset_(-1U), tls_base_symbol_defined_(false),
|
||||
+ isa_1_used_(0), isa_1_needed_(0),
|
||||
+ feature_1_(0), feature_2_used_(0), feature_2_needed_(0),
|
||||
+ object_isa_1_used_(0), object_feature_1_(0),
|
||||
+ object_feature_2_used_(0), seen_first_object_(false)
|
||||
{ }
|
||||
|
||||
// Process the relocations to determine unreferenced sections for
|
||||
@@ -859,6 +863,21 @@ class Target_i386 : public Sized_target<
|
||||
this->rel_dyn_section(layout));
|
||||
}
|
||||
|
||||
+ // Record a target-specific program property in the .note.gnu.property
|
||||
+ // section.
|
||||
+ void
|
||||
+ record_gnu_property(unsigned int, unsigned int, size_t,
|
||||
+ const unsigned char*, const Object*);
|
||||
+
|
||||
+ // Merge the target-specific program properties from the current object.
|
||||
+ void
|
||||
+ merge_gnu_properties(const Object*);
|
||||
+
|
||||
+ // Finalize the target-specific program properties and add them back to
|
||||
+ // the layout.
|
||||
+ void
|
||||
+ do_finalize_gnu_properties(Layout*) const;
|
||||
+
|
||||
// Information about this specific target which we pass to the
|
||||
// general Target structure.
|
||||
static const Target::Target_info i386_info;
|
||||
@@ -898,6 +917,26 @@ class Target_i386 : public Sized_target<
|
||||
unsigned int got_mod_index_offset_;
|
||||
// True if the _TLS_MODULE_BASE_ symbol has been defined.
|
||||
bool tls_base_symbol_defined_;
|
||||
+
|
||||
+ // Target-specific program properties, from .note.gnu.property section.
|
||||
+ // Each bit represents a specific feature.
|
||||
+ uint32_t isa_1_used_;
|
||||
+ uint32_t isa_1_needed_;
|
||||
+ uint32_t feature_1_;
|
||||
+ uint32_t feature_2_used_;
|
||||
+ uint32_t feature_2_needed_;
|
||||
+ // Target-specific properties from the current object.
|
||||
+ // These bits get ORed into ISA_1_USED_ after all properties for the object
|
||||
+ // have been processed. But if either is all zeroes (as when the property
|
||||
+ // is absent from an object), the result should be all zeroes.
|
||||
+ // (See PR ld/23486.)
|
||||
+ uint32_t object_isa_1_used_;
|
||||
+ // These bits get ANDed into FEATURE_1_ after all properties for the object
|
||||
+ // have been processed.
|
||||
+ uint32_t object_feature_1_;
|
||||
+ uint32_t object_feature_2_used_;
|
||||
+ // Whether we have seen our first object, for use in initializing FEATURE_1_.
|
||||
+ bool seen_first_object_;
|
||||
};
|
||||
|
||||
const Target::Target_info Target_i386::i386_info =
|
||||
@@ -1042,6 +1081,126 @@ Target_i386::rel_irelative_section(Layou
|
||||
return this->rel_irelative_;
|
||||
}
|
||||
|
||||
+// Record a target-specific program property from the .note.gnu.property
|
||||
+// section.
|
||||
+void
|
||||
+Target_i386::record_gnu_property(
|
||||
+ unsigned int, unsigned int pr_type,
|
||||
+ size_t pr_datasz, const unsigned char* pr_data,
|
||||
+ const Object* object)
|
||||
+{
|
||||
+ uint32_t val = 0;
|
||||
+
|
||||
+ switch (pr_type)
|
||||
+ {
|
||||
+ case elfcpp::GNU_PROPERTY_X86_COMPAT_ISA_1_USED:
|
||||
+ case elfcpp::GNU_PROPERTY_X86_COMPAT_ISA_1_NEEDED:
|
||||
+ case elfcpp::GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED:
|
||||
+ case elfcpp::GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED:
|
||||
+ case elfcpp::GNU_PROPERTY_X86_ISA_1_USED:
|
||||
+ case elfcpp::GNU_PROPERTY_X86_ISA_1_NEEDED:
|
||||
+ case elfcpp::GNU_PROPERTY_X86_FEATURE_1_AND:
|
||||
+ case elfcpp::GNU_PROPERTY_X86_FEATURE_2_USED:
|
||||
+ case elfcpp::GNU_PROPERTY_X86_FEATURE_2_NEEDED:
|
||||
+ if (pr_datasz != 4)
|
||||
+ {
|
||||
+ gold_warning(_("%s: corrupt .note.gnu.property section "
|
||||
+ "(pr_datasz for property %d is not 4)"),
|
||||
+ object->name().c_str(), pr_type);
|
||||
+ return;
|
||||
+ }
|
||||
+ val = elfcpp::Swap<32, false>::readval(pr_data);
|
||||
+ break;
|
||||
+ default:
|
||||
+ gold_warning(_("%s: unknown program property type 0x%x "
|
||||
+ "in .note.gnu.property section"),
|
||||
+ object->name().c_str(), pr_type);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ switch (pr_type)
|
||||
+ {
|
||||
+ case elfcpp::GNU_PROPERTY_X86_ISA_1_USED:
|
||||
+ this->object_isa_1_used_ |= val;
|
||||
+ break;
|
||||
+ case elfcpp::GNU_PROPERTY_X86_ISA_1_NEEDED:
|
||||
+ this->isa_1_needed_ |= val;
|
||||
+ break;
|
||||
+ case elfcpp::GNU_PROPERTY_X86_FEATURE_1_AND:
|
||||
+ // If we see multiple feature props in one object, OR them together.
|
||||
+ this->object_feature_1_ |= val;
|
||||
+ break;
|
||||
+ case elfcpp::GNU_PROPERTY_X86_FEATURE_2_USED:
|
||||
+ this->object_feature_2_used_ |= val;
|
||||
+ break;
|
||||
+ case elfcpp::GNU_PROPERTY_X86_FEATURE_2_NEEDED:
|
||||
+ this->feature_2_needed_ |= val;
|
||||
+ break;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+// Merge the target-specific program properties from the current object.
|
||||
+void
|
||||
+Target_i386::merge_gnu_properties(const Object*)
|
||||
+{
|
||||
+ if (this->seen_first_object_)
|
||||
+ {
|
||||
+ // If any object is missing the ISA_1_USED property, we must omit
|
||||
+ // it from the output file.
|
||||
+ if (this->object_isa_1_used_ == 0)
|
||||
+ this->isa_1_used_ = 0;
|
||||
+ else if (this->isa_1_used_ != 0)
|
||||
+ this->isa_1_used_ |= this->object_isa_1_used_;
|
||||
+ this->feature_1_ &= this->object_feature_1_;
|
||||
+ // If any object is missing the FEATURE_2_USED property, we must
|
||||
+ // omit it from the output file.
|
||||
+ if (this->object_feature_2_used_ == 0)
|
||||
+ this->feature_2_used_ = 0;
|
||||
+ else if (this->feature_2_used_ != 0)
|
||||
+ this->feature_2_used_ |= this->object_feature_2_used_;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ this->isa_1_used_ = this->object_isa_1_used_;
|
||||
+ this->feature_1_ = this->object_feature_1_;
|
||||
+ this->feature_2_used_ = this->object_feature_2_used_;
|
||||
+ this->seen_first_object_ = true;
|
||||
+ }
|
||||
+ this->object_isa_1_used_ = 0;
|
||||
+ this->object_feature_1_ = 0;
|
||||
+ this->object_feature_2_used_ = 0;
|
||||
+}
|
||||
+
|
||||
+static inline void
|
||||
+add_property(Layout* layout, unsigned int pr_type, uint32_t val)
|
||||
+{
|
||||
+ unsigned char buf[4];
|
||||
+ elfcpp::Swap<32, false>::writeval(buf, val);
|
||||
+ layout->add_gnu_property(elfcpp::NT_GNU_PROPERTY_TYPE_0, pr_type, 4, buf);
|
||||
+}
|
||||
+
|
||||
+// Finalize the target-specific program properties and add them back to
|
||||
+// the layout.
|
||||
+void
|
||||
+Target_i386::do_finalize_gnu_properties(Layout* layout) const
|
||||
+{
|
||||
+ if (this->isa_1_used_ != 0)
|
||||
+ add_property(layout, elfcpp::GNU_PROPERTY_X86_ISA_1_USED,
|
||||
+ this->isa_1_used_);
|
||||
+ if (this->isa_1_needed_ != 0)
|
||||
+ add_property(layout, elfcpp::GNU_PROPERTY_X86_ISA_1_NEEDED,
|
||||
+ this->isa_1_needed_);
|
||||
+ if (this->feature_1_ != 0)
|
||||
+ add_property(layout, elfcpp::GNU_PROPERTY_X86_FEATURE_1_AND,
|
||||
+ this->feature_1_);
|
||||
+ if (this->feature_2_used_ != 0)
|
||||
+ add_property(layout, elfcpp::GNU_PROPERTY_X86_FEATURE_2_USED,
|
||||
+ this->feature_2_used_);
|
||||
+ if (this->feature_2_needed_ != 0)
|
||||
+ add_property(layout, elfcpp::GNU_PROPERTY_X86_FEATURE_2_NEEDED,
|
||||
+ this->feature_2_needed_);
|
||||
+}
|
||||
+
|
||||
// Write the first three reserved words of the .got.plt section.
|
||||
// The remainder of the section is written while writing the PLT
|
||||
// in Output_data_plt_i386::do_write.
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,162 @@
|
||||
diff -rupN --no-dereference binutils-2.38/binutils/readelf.c binutils-2.38-new/binutils/readelf.c
|
||||
--- binutils-2.38/binutils/readelf.c 2022-04-26 13:54:50.369529409 +0200
|
||||
+++ binutils-2.38-new/binutils/readelf.c 2022-04-26 13:54:51.333530785 +0200
|
||||
@@ -12991,11 +12991,13 @@ print_dynamic_symbol (Filedata *filedata
|
||||
unsigned int vis = ELF_ST_VISIBILITY (psym->st_other);
|
||||
|
||||
printf (" %-7s", get_symbol_visibility (vis));
|
||||
+#if 0
|
||||
/* Check to see if any other bits in the st_other field are set.
|
||||
Note - displaying this information disrupts the layout of the
|
||||
table being generated, but for the moment this case is very rare. */
|
||||
if (psym->st_other ^ vis)
|
||||
printf (" [%s] ", get_symbol_other (filedata, psym->st_other ^ vis));
|
||||
+#endif
|
||||
}
|
||||
printf (" %4s ", get_symbol_index_type (filedata, psym->st_shndx));
|
||||
|
||||
@@ -13049,7 +13051,17 @@ print_dynamic_symbol (Filedata *filedata
|
||||
version_string);
|
||||
}
|
||||
|
||||
- putchar ('\n');
|
||||
+#if 1
|
||||
+ {
|
||||
+ unsigned int vis = ELF_ST_VISIBILITY (psym->st_other);
|
||||
+
|
||||
+ /* Check to see if any other bits in the st_other field are set. */
|
||||
+ if (psym->st_other ^ vis)
|
||||
+ printf (" \t[%s]", get_symbol_other (filedata, psym->st_other ^ vis));
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ putchar ('\n');
|
||||
|
||||
if (ELF_ST_BIND (psym->st_info) == STB_LOCAL
|
||||
&& section != NULL
|
||||
diff -rupN --no-dereference binutils-2.38/binutils/readelf.c.orig binutils-2.38-new/binutils/readelf.c.orig
|
||||
--- binutils-2.38/binutils/readelf.c.orig 2022-04-26 13:54:50.375529417 +0200
|
||||
+++ binutils-2.38-new/binutils/readelf.c.orig 2022-04-26 13:54:49.332527928 +0200
|
||||
@@ -22327,46 +22327,53 @@ process_file (char * file_name)
|
||||
Filedata * filedata = NULL;
|
||||
struct stat statbuf;
|
||||
char armag[SARMAG];
|
||||
- bool ret = true;
|
||||
+ bool ret = false;
|
||||
+ char * name;
|
||||
+ char * saved_program_name;
|
||||
+
|
||||
+ /* Overload program_name to include file_name. Doing this means
|
||||
+ that warning/error messages will positively identify the file
|
||||
+ concerned even when multiple instances of readelf are running. */
|
||||
+ name = xmalloc (strlen (program_name) + strlen (file_name) + 3);
|
||||
+ sprintf (name, "%s: %s", program_name, file_name);
|
||||
+ saved_program_name = program_name;
|
||||
+ program_name = name;
|
||||
|
||||
if (stat (file_name, &statbuf) < 0)
|
||||
{
|
||||
if (errno == ENOENT)
|
||||
- error (_("'%s': No such file\n"), file_name);
|
||||
+ error (_("No such file\n"));
|
||||
else
|
||||
- error (_("Could not locate '%s'. System error message: %s\n"),
|
||||
- file_name, strerror (errno));
|
||||
- return false;
|
||||
+ error (_("Could not locate file. System error message: %s\n"),
|
||||
+ strerror (errno));
|
||||
+ goto done;
|
||||
}
|
||||
|
||||
if (! S_ISREG (statbuf.st_mode))
|
||||
{
|
||||
- error (_("'%s' is not an ordinary file\n"), file_name);
|
||||
- return false;
|
||||
+ error (_("Not an ordinary file\n"));
|
||||
+ goto done;
|
||||
}
|
||||
|
||||
filedata = calloc (1, sizeof * filedata);
|
||||
if (filedata == NULL)
|
||||
{
|
||||
error (_("Out of memory allocating file data structure\n"));
|
||||
- return false;
|
||||
+ goto done;
|
||||
}
|
||||
|
||||
filedata->file_name = file_name;
|
||||
filedata->handle = fopen (file_name, "rb");
|
||||
if (filedata->handle == NULL)
|
||||
{
|
||||
- error (_("Input file '%s' is not readable.\n"), file_name);
|
||||
- free (filedata);
|
||||
- return false;
|
||||
+ error (_("Not readable\n"));
|
||||
+ goto done;
|
||||
}
|
||||
|
||||
if (fread (armag, SARMAG, 1, filedata->handle) != 1)
|
||||
{
|
||||
- error (_("%s: Failed to read file's magic number\n"), file_name);
|
||||
- fclose (filedata->handle);
|
||||
- free (filedata);
|
||||
- return false;
|
||||
+ error (_("Failed to read file's magic number\n"));
|
||||
+ goto done;
|
||||
}
|
||||
|
||||
filedata->file_size = (bfd_size_type) statbuf.st_size;
|
||||
@@ -22374,33 +22381,39 @@ process_file (char * file_name)
|
||||
|
||||
if (memcmp (armag, ARMAG, SARMAG) == 0)
|
||||
{
|
||||
- if (! process_archive (filedata, false))
|
||||
- ret = false;
|
||||
+ if (process_archive (filedata, false))
|
||||
+ ret = true;
|
||||
}
|
||||
else if (memcmp (armag, ARMAGT, SARMAG) == 0)
|
||||
{
|
||||
- if ( ! process_archive (filedata, true))
|
||||
- ret = false;
|
||||
+ if (process_archive (filedata, true))
|
||||
+ ret = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (do_archive_index && !check_all)
|
||||
- error (_("File %s is not an archive so its index cannot be displayed.\n"),
|
||||
- file_name);
|
||||
+ error (_("Not an archive so its index cannot be displayed.\n"));
|
||||
|
||||
rewind (filedata->handle);
|
||||
filedata->archive_file_size = filedata->archive_file_offset = 0;
|
||||
|
||||
- if (! process_object (filedata))
|
||||
- ret = false;
|
||||
+ if (process_object (filedata))
|
||||
+ ret = true;
|
||||
}
|
||||
|
||||
- fclose (filedata->handle);
|
||||
- free (filedata->section_headers);
|
||||
- free (filedata->program_headers);
|
||||
- free (filedata->string_table);
|
||||
- free (filedata->dump.dump_sects);
|
||||
- free (filedata);
|
||||
+ done:
|
||||
+ if (filedata)
|
||||
+ {
|
||||
+ if (filedata->handle != NULL)
|
||||
+ fclose (filedata->handle);
|
||||
+ free (filedata->section_headers);
|
||||
+ free (filedata->program_headers);
|
||||
+ free (filedata->string_table);
|
||||
+ free (filedata->dump.dump_sects);
|
||||
+ free (filedata);
|
||||
+ }
|
||||
+ free (program_name);
|
||||
+ program_name = saved_program_name;
|
||||
|
||||
free (ba_cache.strtab);
|
||||
ba_cache.strtab = NULL;
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,46 @@
|
||||
diff -rupN --no-dereference binutils-2.38/bfd/Makefile.am binutils-2.38-new/bfd/Makefile.am
|
||||
--- binutils-2.38/bfd/Makefile.am 2022-01-22 13:14:07.000000000 +0100
|
||||
+++ binutils-2.38-new/bfd/Makefile.am 2022-04-26 13:54:46.008523184 +0200
|
||||
@@ -977,8 +977,8 @@ DISTCLEANFILES = $(BUILD_CFILES) $(BUILD
|
||||
bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
|
||||
$(AM_V_GEN)\
|
||||
bfd_version=`echo "$(VERSION)" | $(SED) -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\
|
||||
- bfd_version_string="\"$(VERSION)\"" ;\
|
||||
- bfd_soversion="$(VERSION)" ;\
|
||||
+ bfd_version_string="\"$(VERSION)-%{release}\"" ;\
|
||||
+ bfd_soversion="$(VERSION)-%{release}" ;\
|
||||
bfd_version_package="\"$(PKGVERSION)\"" ;\
|
||||
report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\
|
||||
. $(srcdir)/development.sh ;\
|
||||
@@ -989,7 +989,7 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/
|
||||
fi ;\
|
||||
$(SED) -e "s,@bfd_version@,$$bfd_version," \
|
||||
-e "s,@bfd_version_string@,$$bfd_version_string," \
|
||||
- -e "s,@bfd_version_package@,$$bfd_version_package," \
|
||||
+ -e "s,@bfd_version_package@,\"version \"," \
|
||||
-e "s,@report_bugs_to@,$$report_bugs_to," \
|
||||
< $(srcdir)/version.h > $@; \
|
||||
echo "$${bfd_soversion}" > libtool-soversion
|
||||
diff -rupN --no-dereference binutils-2.38/bfd/Makefile.in binutils-2.38-new/bfd/Makefile.in
|
||||
--- binutils-2.38/bfd/Makefile.in 2022-02-09 12:45:13.000000000 +0100
|
||||
+++ binutils-2.38-new/bfd/Makefile.in 2022-04-26 13:54:46.008523184 +0200
|
||||
@@ -2094,8 +2094,8 @@ stmp-lcoff-h: $(LIBCOFF_H_FILES) $(MKDOC
|
||||
bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
|
||||
$(AM_V_GEN)\
|
||||
bfd_version=`echo "$(VERSION)" | $(SED) -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\
|
||||
- bfd_version_string="\"$(VERSION)\"" ;\
|
||||
- bfd_soversion="$(VERSION)" ;\
|
||||
+ bfd_version_string="\"$(VERSION)-%{release}\"" ;\
|
||||
+ bfd_soversion="$(VERSION)-%{release}" ;\
|
||||
bfd_version_package="\"$(PKGVERSION)\"" ;\
|
||||
report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\
|
||||
. $(srcdir)/development.sh ;\
|
||||
@@ -2106,7 +2106,7 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/
|
||||
fi ;\
|
||||
$(SED) -e "s,@bfd_version@,$$bfd_version," \
|
||||
-e "s,@bfd_version_string@,$$bfd_version_string," \
|
||||
- -e "s,@bfd_version_package@,$$bfd_version_package," \
|
||||
+ -e "s,@bfd_version_package@,\"version \"," \
|
||||
-e "s,@report_bugs_to@,$$report_bugs_to," \
|
||||
< $(srcdir)/version.h > $@; \
|
||||
echo "$${bfd_soversion}" > libtool-soversion
|
@ -0,0 +1,27 @@
|
||||
diff -rupN --no-dereference binutils-2.38/ltmain.sh binutils-2.38-new/ltmain.sh
|
||||
--- binutils-2.38/ltmain.sh 2022-01-22 13:14:09.000000000 +0100
|
||||
+++ binutils-2.38-new/ltmain.sh 2022-04-26 13:55:02.394546575 +0200
|
||||
@@ -7103,6 +7103,7 @@ EOF
|
||||
rpath="$finalize_rpath"
|
||||
test "$mode" != relink && rpath="$compile_rpath$rpath"
|
||||
for libdir in $rpath; do
|
||||
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
|
||||
if test -n "$hardcode_libdir_flag_spec"; then
|
||||
if test -n "$hardcode_libdir_separator"; then
|
||||
if test -z "$hardcode_libdirs"; then
|
||||
@@ -7798,6 +7799,7 @@ EOF
|
||||
rpath=
|
||||
hardcode_libdirs=
|
||||
for libdir in $compile_rpath $finalize_rpath; do
|
||||
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
|
||||
if test -n "$hardcode_libdir_flag_spec"; then
|
||||
if test -n "$hardcode_libdir_separator"; then
|
||||
if test -z "$hardcode_libdirs"; then
|
||||
@@ -7849,6 +7851,7 @@ EOF
|
||||
rpath=
|
||||
hardcode_libdirs=
|
||||
for libdir in $finalize_rpath; do
|
||||
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
|
||||
if test -n "$hardcode_libdir_flag_spec"; then
|
||||
if test -n "$hardcode_libdir_separator"; then
|
||||
if test -z "$hardcode_libdirs"; then
|
@ -0,0 +1,730 @@
|
||||
%global run_testsuite 1
|
||||
%global mingw_build_ucrt64 1
|
||||
|
||||
Name: mingw-binutils
|
||||
Version: 2.38
|
||||
Release: 2%{?dist}
|
||||
Summary: Cross-compiled version of binutils for Win32 and Win64 environments
|
||||
|
||||
License: GPLv2+ and LGPLv2+ and GPLv3+ and LGPLv3+
|
||||
|
||||
URL: http://www.gnu.org/software/binutils/
|
||||
Source0: http://ftp.gnu.org/gnu/binutils/binutils-%{version}.tar.xz
|
||||
|
||||
### Patches from native package
|
||||
# Purpose: Use /lib64 and /usr/lib64 instead of /lib and /usr/lib in the
|
||||
# default library search path of 64-bit targets.
|
||||
# Lifetime: Permanent, but it should not be. This is a bug in the libtool
|
||||
# sources used in both binutils and gcc, (specifically the
|
||||
# libtool.m4 file). These are based on a version released in 2009
|
||||
# (2.2.6?) rather than the latest version. (Definitely fixed in
|
||||
# libtool version 2.4.6).
|
||||
# Not needed, mingw does not have lib64
|
||||
# Patch01: binutils-libtool-lib64.patch
|
||||
|
||||
# Purpose: Appends a RHEL or Fedora release string to the generic binutils
|
||||
# version string.
|
||||
# Lifetime: Permanent. This is a RHEL/Fedora specific patch.
|
||||
Patch02: binutils-version.patch
|
||||
|
||||
# Purpose: Exports the demangle.h header file (associated with the libiberty
|
||||
# sources) with the binutils-devel rpm.
|
||||
# Lifetime: Permanent. This is a RHEL/Fedora specific patch.
|
||||
Patch03: binutils-export-demangle.h.patch
|
||||
|
||||
# Purpose: Disables the check in the BFD library's bfd.h header file that
|
||||
# config.h has been included before the bfd.h header. See BZ
|
||||
# #845084 for more details.
|
||||
# Lifetime: Permanent - but it should not be. The bfd.h header defines
|
||||
# various types that are dependent upon configuration options, so
|
||||
# the order of inclusion is important.
|
||||
# FIXME: It would be better if the packages using the bfd.h header were
|
||||
# fixed so that they do include the header files in the correct
|
||||
# order.
|
||||
Patch04: binutils-no-config-h-check.patch
|
||||
|
||||
# Purpose: Include the filename concerned in readelf error messages. This
|
||||
# makes readelf's output more helpful when it is run on multiple
|
||||
# input files.
|
||||
# Lifetime: Permanent. This patch changes the format of readelf's output,
|
||||
# making it better (IMHO) but also potentially breaking tools that
|
||||
# depend upon readelf's current format. Hence it remains a local
|
||||
# patch.
|
||||
Patch05: binutils-filename-in-error-messages.patch
|
||||
|
||||
# Purpose: Disable an x86/x86_64 optimization that moves functions from the
|
||||
# PLT into the GOTPLT for faster access. This optimization is
|
||||
# problematic for tools that want to intercept PLT entries, such
|
||||
# as ltrace and LD_AUDIT. See BZs 1452111 and 1333481.
|
||||
# Lifetime: Permanent. But it should not be.
|
||||
# FIXME: Replace with a configure time option.
|
||||
Patch06: binutils-revert-PLT-elision.patch
|
||||
|
||||
# Purpose: Changes readelf so that when it displays extra information about
|
||||
# a symbol, this information is placed at the end of the line.
|
||||
# Lifetime: Permanent.
|
||||
# FIXME: The proper fix would be to update the scripts that are expecting
|
||||
# a fixed output from readelf. But it seems that some of them are
|
||||
# no longer being maintained.
|
||||
Patch07: binutils-readelf-other-sym-info.patch
|
||||
|
||||
# Purpose: Do not create PLT entries for AARCH64 IFUNC symbols referenced in
|
||||
# debug sections.
|
||||
# Lifetime: Permanent.
|
||||
# FIXME: Find related bug. Decide on permanency.
|
||||
# Not needed, mingw does not have aarch64
|
||||
# Patch08: binutils-2.27-aarch64-ifunc.patch
|
||||
|
||||
# Purpose: Stop the binutils from statically linking with libstdc++.
|
||||
# Lifetime: Permanent.
|
||||
Patch09: binutils-do-not-link-with-static-libstdc++.patch
|
||||
|
||||
# Purpose: Allow OS specific sections in section groups.
|
||||
# Lifetime: Fixed in 2.39 (maybe)
|
||||
Patch10: binutils-special-sections-in-groups.patch
|
||||
|
||||
# Purpose: Fix linker testsuite failures.
|
||||
# Lifetime: Fixed in 2.39 (maybe)
|
||||
Patch11: binutils-fix-testsuite-failures.patch
|
||||
|
||||
# Purpose: Stop gold from aborting when input sections with the same name
|
||||
# have different flags.
|
||||
# Lifetime: Fixed in 2.39 (maybe)
|
||||
Patch12: binutils-gold-mismatched-section-flags.patch
|
||||
|
||||
# Purpose: Add a check to the GOLD linker for a corrupt input file
|
||||
# with a fuzzed section offset.
|
||||
# Lifetime: Fixed in 2.39 (maybe)
|
||||
Patch13: binutils-CVE-2019-1010204.patch
|
||||
|
||||
# Purpose: Change the gold configuration script to only warn about
|
||||
# unsupported targets. This allows the binutils to be built with
|
||||
# BPF support enabled.
|
||||
# Lifetime: Permanent.
|
||||
Patch14: binutils-gold-warn-unsupported.patch
|
||||
|
||||
# Purpose: Use the "unsigned long long" type for pointers on hosts where
|
||||
# long is a 32-bit type but pointers are a 64-bit type. Necessary
|
||||
# because users expect to be able to install both the i686- and
|
||||
# x86_64 versions of binutils-devel on the same machine, so they
|
||||
# need to identical versions of the bfd.h header file.
|
||||
# Lifetime: Permanent.
|
||||
Patch15: binutils-use-long-long.patch
|
||||
|
||||
# Purpose: Fix testsuite failures due to the patches applied here.
|
||||
# Lifetime: Permanent, but varying with each new rebase.
|
||||
Patch16: binutils-testsuite-fixes.patch
|
||||
|
||||
# Purpose: Enable the creation of .note.gnu.property sections by the GOLD
|
||||
# linker for x86 binaries.
|
||||
# Lifetime: Fixed in 2.38 maybe
|
||||
Patch17: binutils-gold-i386-gnu-property-notes.patch
|
||||
|
||||
# Purpose: Allow the binutils to be configured with any (recent) version of
|
||||
# autoconf.
|
||||
# Lifetime: Fixed in 2.39 (maybe ?)
|
||||
Patch18: binutils-autoconf-version.patch
|
||||
|
||||
# Purpose: Stop libtool from inserting useless runpaths into binaries.
|
||||
# Lifetime: Who knows.
|
||||
Patch19: gcc12-libtool-no-rpath.patch
|
||||
|
||||
# Purpose: Add support for specifying section types in linker scripts.
|
||||
# Lifetime: Fixed in 2.39
|
||||
Patch20: binutils-section-type.patch
|
||||
|
||||
# Purpose: Simplify the evaluation of assembler loc view expression chains.
|
||||
# Lifetime: Fixed in 2.39
|
||||
Patch21: binutils-gas-loc-view.patch
|
||||
|
||||
# Purpose: Add an option to disable access to debuginfod servers.
|
||||
# Lifetime: Fixed in 2.39
|
||||
Patch22: binutils-do-not-use-debuginfod.patch
|
||||
|
||||
# Backport proposed fix for https://sourceware.org/bugzilla/show_bug.cgi?id=29006
|
||||
Patch100: 29006.patch
|
||||
|
||||
|
||||
BuildRequires: make
|
||||
BuildRequires: gcc
|
||||
BuildRequires: flex
|
||||
BuildRequires: bison
|
||||
BuildRequires: texinfo
|
||||
BuildRequires: zlib-devel
|
||||
BuildRequires: mingw32-filesystem >= 133
|
||||
BuildRequires: mingw64-filesystem >= 133
|
||||
BuildRequires: ucrt64-filesystem >= 133
|
||||
%if %{run_testsuite}
|
||||
BuildRequires: dejagnu
|
||||
BuildRequires: sharutils
|
||||
%endif
|
||||
Provides: bundled(libiberty)
|
||||
|
||||
|
||||
%description
|
||||
Cross compiled binutils (utilities like 'strip', 'as', 'ld') which
|
||||
understand Windows executables and DLLs.
|
||||
|
||||
%package -n mingw-binutils-generic
|
||||
Summary: Utilities which are needed for both the Win32 and Win64 toolchains
|
||||
|
||||
%description -n mingw-binutils-generic
|
||||
Utilities (like strip and objdump) which are needed for
|
||||
both the Win32 and Win64 toolchains
|
||||
|
||||
%package -n mingw32-binutils
|
||||
Summary: Cross-compiled version of binutils for the Win32 environment
|
||||
Requires: mingw-binutils-generic = %{version}-%{release}
|
||||
|
||||
# NB: This must be left in.
|
||||
Requires: mingw32-filesystem >= 95
|
||||
|
||||
%description -n mingw32-binutils
|
||||
Cross compiled binutils (utilities like 'strip', 'as', 'ld') which
|
||||
understand Windows executables and DLLs.
|
||||
|
||||
%package -n mingw64-binutils
|
||||
Summary: Cross-compiled version of binutils for the Win64 environment
|
||||
Requires: mingw-binutils-generic = %{version}-%{release}
|
||||
|
||||
# NB: This must be left in.
|
||||
Requires: mingw64-filesystem >= 95
|
||||
|
||||
%description -n mingw64-binutils
|
||||
Cross compiled binutils (utilities like 'strip', 'as', 'ld') which
|
||||
understand Windows executables and DLLs.
|
||||
|
||||
%package -n ucrt64-binutils
|
||||
Summary: Cross-compiled version of binutils for the Win64 environment
|
||||
Requires: mingw-binutils-generic = %{version}-%{release}
|
||||
|
||||
# NB: This must be left in.
|
||||
Requires: ucrt64-filesystem >= 133
|
||||
|
||||
%description -n ucrt64-binutils
|
||||
Cross compiled binutils (utilities like 'strip', 'as', 'ld') which
|
||||
understand Windows executables and DLLs.
|
||||
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n binutils-%{version}
|
||||
|
||||
# See Patch02
|
||||
sed -i -e 's/%''{release}/%{release}/g' bfd/Makefile{.am,.in}
|
||||
|
||||
|
||||
%build
|
||||
# We call configure directly rather than via macros, thus if
|
||||
# we are using LTO, we have to manually fix the broken configure
|
||||
# scripts
|
||||
[ %{_lto_cflags}x != x ] && %{_fix_broken_configure_for_lto}
|
||||
|
||||
|
||||
mkdir build_win32
|
||||
pushd build_win32
|
||||
CFLAGS="%{optflags}" \
|
||||
../configure \
|
||||
--build=%_build --host=%_host \
|
||||
--target=%{mingw32_target} \
|
||||
--disable-nls \
|
||||
--with-sysroot=%{mingw32_sysroot} \
|
||||
--prefix=%{_prefix} \
|
||||
--bindir=%{_bindir} \
|
||||
--includedir=%{_includedir} \
|
||||
--libdir=%{_libdir} \
|
||||
--mandir=%{_mandir} \
|
||||
--infodir=%{_infodir}
|
||||
|
||||
%make_build
|
||||
popd
|
||||
|
||||
mkdir build_win64
|
||||
pushd build_win64
|
||||
CFLAGS="%{optflags}" \
|
||||
../configure \
|
||||
--build=%_build --host=%_host \
|
||||
--target=%{mingw64_target} \
|
||||
--disable-nls \
|
||||
--with-sysroot=%{mingw64_sysroot} \
|
||||
--prefix=%{_prefix} \
|
||||
--bindir=%{_bindir} \
|
||||
--includedir=%{_includedir} \
|
||||
--libdir=%{_libdir} \
|
||||
--mandir=%{_mandir} \
|
||||
--infodir=%{_infodir}
|
||||
|
||||
%make_build
|
||||
popd
|
||||
|
||||
mkdir build_ucrt64
|
||||
pushd build_ucrt64
|
||||
CFLAGS="%{optflags}" \
|
||||
../configure \
|
||||
--build=%_build --host=%_host \
|
||||
--target=%{ucrt64_target} \
|
||||
--disable-nls \
|
||||
--with-sysroot=%{ucrt64_sysroot} \
|
||||
--prefix=%{_prefix} \
|
||||
--bindir=%{_bindir} \
|
||||
--includedir=%{_includedir} \
|
||||
--libdir=%{_libdir} \
|
||||
--mandir=%{_mandir} \
|
||||
--infodir=%{_infodir}
|
||||
|
||||
%make_build
|
||||
popd
|
||||
|
||||
# Create multilib versions for the tools strip, objdump nm, and objcopy
|
||||
mkdir build_multilib
|
||||
pushd build_multilib
|
||||
CFLAGS="%{optflags}" \
|
||||
../configure \
|
||||
--build=%_build --host=%_host \
|
||||
--target=%{mingw64_target} \
|
||||
--enable-targets=%{mingw64_target},%{mingw32_target},%{ucrt64_target} \
|
||||
--disable-nls \
|
||||
--with-sysroot=%{mingw64_sysroot} \
|
||||
--prefix=%{_prefix} \
|
||||
--bindir=%{_bindir} \
|
||||
--includedir=%{_includedir} \
|
||||
--libdir=%{_libdir} \
|
||||
--mandir=%{_mandir} \
|
||||
--infodir=%{_infodir}
|
||||
|
||||
%make_build
|
||||
popd
|
||||
|
||||
|
||||
%check
|
||||
%if !%{run_testsuite}
|
||||
echo ====================TESTSUITE DISABLED=========================
|
||||
%else
|
||||
pushd build_win32
|
||||
make -k check < /dev/null || :
|
||||
echo ====================TESTING WIN32 =========================
|
||||
cat {gas/testsuite/gas,ld/ld,binutils/binutils}.sum
|
||||
echo ====================TESTING WIN32 END=====================
|
||||
for file in {gas/testsuite/gas,ld/ld,binutils/binutils}.{sum,log}
|
||||
do
|
||||
ln $file binutils-%{mingw32_target}-$(basename $file) || :
|
||||
done
|
||||
tar cjf binutils-%{mingw32_target}.tar.bz2 binutils-%{mingw32_target}-*.{sum,log}
|
||||
uuencode binutils-%{mingw32_target}.tar.bz2 binutils-%{mingw32_target}.tar.bz2
|
||||
rm -f binutils-%{mingw32_target}.tar.bz2 binutils-%{mingw32_target}-*.{sum,log}
|
||||
popd
|
||||
|
||||
pushd build_win64
|
||||
make -k check < /dev/null || :
|
||||
echo ====================TESTING WIN64 =========================
|
||||
cat {gas/testsuite/gas,ld/ld,binutils/binutils}.sum
|
||||
echo ====================TESTING WIN64 END=====================
|
||||
for file in {gas/testsuite/gas,ld/ld,binutils/binutils}.{sum,log}
|
||||
do
|
||||
ln $file binutils-%{mingw64_target}-$(basename $file) || :
|
||||
done
|
||||
tar cjf binutils-%{mingw64_target}.tar.bz2 binutils-%{mingw64_target}-*.{sum,log}
|
||||
uuencode binutils-%{mingw64_target}.tar.bz2 binutils-%{mingw64_target}.tar.bz2
|
||||
rm -f binutils-%{mingw64_target}.tar.bz2 binutils-%{mingw64_target}-*.{sum,log}
|
||||
popd
|
||||
|
||||
pushd build_ucrt64
|
||||
make -k check < /dev/null || :
|
||||
echo ====================TESTING UCRT64 =========================
|
||||
cat {gas/testsuite/gas,ld/ld,binutils/binutils}.sum
|
||||
echo ====================TESTING UCRT64 END=====================
|
||||
for file in {gas/testsuite/gas,ld/ld,binutils/binutils}.{sum,log}
|
||||
do
|
||||
ln $file binutils-%{ucrt64_target}-$(basename $file) || :
|
||||
done
|
||||
tar cjf binutils-%{ucrt64_target}.tar.bz2 binutils-%{ucrt64_target}-*.{sum,log}
|
||||
uuencode binutils-%{ucrt64_target}.tar.bz2 binutils-%{ucrt64_target}.tar.bz2
|
||||
rm -f binutils-%{ucrt64_target}.tar.bz2 binutils-%{ucrt64_target}-*.{sum,log}
|
||||
popd
|
||||
%endif
|
||||
|
||||
|
||||
%install
|
||||
%mingw_make_install
|
||||
make -C build_multilib DESTDIR=%{buildroot}/multilib install
|
||||
|
||||
# These files conflict with ordinary binutils.
|
||||
rm -rf %{buildroot}%{_infodir}
|
||||
rm -f %{buildroot}%{_libdir}/libiberty*
|
||||
rm -f %{buildroot}%{_libdir}/bfd-plugins/libdep.so
|
||||
|
||||
# Keep the multilib versions of the strip, objdump and objcopy commands
|
||||
# We need these for the RPM integration as these tools must be able to
|
||||
# both process win32 and win64 binaries
|
||||
mv %{buildroot}/multilib%{_bindir}/%{mingw64_strip} %{buildroot}%{_bindir}/%{mingw_strip}
|
||||
mv %{buildroot}/multilib%{_bindir}/%{mingw64_objdump} %{buildroot}%{_bindir}/%{mingw_objdump}
|
||||
mv %{buildroot}/multilib%{_bindir}/%{mingw64_objcopy} %{buildroot}%{_bindir}/%{mingw_objcopy}
|
||||
mv %{buildroot}/multilib%{_bindir}/%{mingw64_nm} %{buildroot}%{_bindir}/%{mingw_nm}
|
||||
rm -rf %{buildroot}/multilib
|
||||
|
||||
# Drop man pages, they are a duplicate of those of the native tools
|
||||
rm -rf %{buildroot}%{_mandir}/man1/*
|
||||
|
||||
|
||||
%files -n mingw-binutils-generic
|
||||
%license COPYING
|
||||
%{_bindir}/%{mingw_strip}
|
||||
%{_bindir}/%{mingw_objdump}
|
||||
%{_bindir}/%{mingw_objcopy}
|
||||
%{_bindir}/%{mingw_nm}
|
||||
|
||||
%files -n mingw32-binutils
|
||||
%{_bindir}/%{mingw32_target}-addr2line
|
||||
%{_bindir}/%{mingw32_target}-ar
|
||||
%{_bindir}/%{mingw32_target}-as
|
||||
%{_bindir}/%{mingw32_target}-c++filt
|
||||
%{_bindir}/%{mingw32_target}-dlltool
|
||||
%{_bindir}/%{mingw32_target}-dllwrap
|
||||
%{_bindir}/%{mingw32_target}-elfedit
|
||||
%{_bindir}/%{mingw32_target}-gprof
|
||||
%{_bindir}/%{mingw32_target}-ld
|
||||
%{_bindir}/%{mingw32_target}-ld.bfd
|
||||
%{_bindir}/%{mingw32_target}-nm
|
||||
%{_bindir}/%{mingw32_target}-objcopy
|
||||
%{_bindir}/%{mingw32_target}-objdump
|
||||
%{_bindir}/%{mingw32_target}-ranlib
|
||||
%{_bindir}/%{mingw32_target}-readelf
|
||||
%{_bindir}/%{mingw32_target}-size
|
||||
%{_bindir}/%{mingw32_target}-strings
|
||||
%{_bindir}/%{mingw32_target}-strip
|
||||
%{_bindir}/%{mingw32_target}-windmc
|
||||
%{_bindir}/%{mingw32_target}-windres
|
||||
%{_prefix}/%{mingw32_target}/bin/ar
|
||||
%{_prefix}/%{mingw32_target}/bin/as
|
||||
%{_prefix}/%{mingw32_target}/bin/dlltool
|
||||
%{_prefix}/%{mingw32_target}/bin/ld
|
||||
%{_prefix}/%{mingw32_target}/bin/ld.bfd
|
||||
%{_prefix}/%{mingw32_target}/bin/nm
|
||||
%{_prefix}/%{mingw32_target}/bin/objcopy
|
||||
%{_prefix}/%{mingw32_target}/bin/objdump
|
||||
%{_prefix}/%{mingw32_target}/bin/ranlib
|
||||
%{_prefix}/%{mingw32_target}/bin/readelf
|
||||
%{_prefix}/%{mingw32_target}/bin/strip
|
||||
%{_prefix}/%{mingw32_target}/lib/ldscripts
|
||||
|
||||
%files -n mingw64-binutils
|
||||
%{_bindir}/%{mingw64_target}-addr2line
|
||||
%{_bindir}/%{mingw64_target}-ar
|
||||
%{_bindir}/%{mingw64_target}-as
|
||||
%{_bindir}/%{mingw64_target}-c++filt
|
||||
%{_bindir}/%{mingw64_target}-dlltool
|
||||
%{_bindir}/%{mingw64_target}-dllwrap
|
||||
%{_bindir}/%{mingw64_target}-elfedit
|
||||
%{_bindir}/%{mingw64_target}-gprof
|
||||
%{_bindir}/%{mingw64_target}-ld
|
||||
%{_bindir}/%{mingw64_target}-ld.bfd
|
||||
%{_bindir}/%{mingw64_target}-nm
|
||||
%{_bindir}/%{mingw64_target}-objcopy
|
||||
%{_bindir}/%{mingw64_target}-objdump
|
||||
%{_bindir}/%{mingw64_target}-ranlib
|
||||
%{_bindir}/%{mingw64_target}-readelf
|
||||
%{_bindir}/%{mingw64_target}-size
|
||||
%{_bindir}/%{mingw64_target}-strings
|
||||
%{_bindir}/%{mingw64_target}-strip
|
||||
%{_bindir}/%{mingw64_target}-windmc
|
||||
%{_bindir}/%{mingw64_target}-windres
|
||||
%{_prefix}/%{mingw64_target}/bin/ar
|
||||
%{_prefix}/%{mingw64_target}/bin/as
|
||||
%{_prefix}/%{mingw64_target}/bin/dlltool
|
||||
%{_prefix}/%{mingw64_target}/bin/ld
|
||||
%{_prefix}/%{mingw64_target}/bin/ld.bfd
|
||||
%{_prefix}/%{mingw64_target}/bin/nm
|
||||
%{_prefix}/%{mingw64_target}/bin/objcopy
|
||||
%{_prefix}/%{mingw64_target}/bin/objdump
|
||||
%{_prefix}/%{mingw64_target}/bin/ranlib
|
||||
%{_prefix}/%{mingw64_target}/bin/readelf
|
||||
%{_prefix}/%{mingw64_target}/bin/strip
|
||||
%{_prefix}/%{mingw64_target}/lib/ldscripts
|
||||
|
||||
%files -n ucrt64-binutils
|
||||
%{_bindir}/%{ucrt64_target}-addr2line
|
||||
%{_bindir}/%{ucrt64_target}-ar
|
||||
%{_bindir}/%{ucrt64_target}-as
|
||||
%{_bindir}/%{ucrt64_target}-c++filt
|
||||
%{_bindir}/%{ucrt64_target}-dlltool
|
||||
%{_bindir}/%{ucrt64_target}-dllwrap
|
||||
%{_bindir}/%{ucrt64_target}-elfedit
|
||||
%{_bindir}/%{ucrt64_target}-gprof
|
||||
%{_bindir}/%{ucrt64_target}-ld
|
||||
%{_bindir}/%{ucrt64_target}-ld.bfd
|
||||
%{_bindir}/%{ucrt64_target}-nm
|
||||
%{_bindir}/%{ucrt64_target}-objcopy
|
||||
%{_bindir}/%{ucrt64_target}-objdump
|
||||
%{_bindir}/%{ucrt64_target}-ranlib
|
||||
%{_bindir}/%{ucrt64_target}-readelf
|
||||
%{_bindir}/%{ucrt64_target}-size
|
||||
%{_bindir}/%{ucrt64_target}-strings
|
||||
%{_bindir}/%{ucrt64_target}-strip
|
||||
%{_bindir}/%{ucrt64_target}-windmc
|
||||
%{_bindir}/%{ucrt64_target}-windres
|
||||
%{_prefix}/%{ucrt64_target}/bin/ar
|
||||
%{_prefix}/%{ucrt64_target}/bin/as
|
||||
%{_prefix}/%{ucrt64_target}/bin/dlltool
|
||||
%{_prefix}/%{ucrt64_target}/bin/ld
|
||||
%{_prefix}/%{ucrt64_target}/bin/ld.bfd
|
||||
%{_prefix}/%{ucrt64_target}/bin/nm
|
||||
%{_prefix}/%{ucrt64_target}/bin/objcopy
|
||||
%{_prefix}/%{ucrt64_target}/bin/objdump
|
||||
%{_prefix}/%{ucrt64_target}/bin/ranlib
|
||||
%{_prefix}/%{ucrt64_target}/bin/readelf
|
||||
%{_prefix}/%{ucrt64_target}/bin/strip
|
||||
%{_prefix}/%{ucrt64_target}/lib/ldscripts
|
||||
|
||||
|
||||
%changelog
|
||||
* Fri May 06 2022 Richard W.M. Jones <rjones@redhat.com> - 2.38-2
|
||||
- Rebase to Fedora Rawhide
|
||||
resolves: rhbz#2080169
|
||||
|
||||
* Thu Aug 12 2021 Richard W.M. Jones <rjones@redhat.com> - 2.37-1
|
||||
- Rebase to binutils 2.37
|
||||
resolves: rhbz#1953913
|
||||
|
||||
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 2.34-10
|
||||
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||
Related: rhbz#1991688
|
||||
|
||||
* Mon Apr 26 2021 Richard W.M. Jones <rjones@redhat.com> - 2.34-9
|
||||
- Add fix for broken CVE-2021-20197 fix
|
||||
related: rhbz#1951278
|
||||
|
||||
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 2.34-8
|
||||
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
|
||||
|
||||
* Thu Jan 28 2021 Richard W.M. Jones <rjones@redhat.com> - 2.34-7
|
||||
- Backport fixes for CVE-2021-20197.
|
||||
- Bump and rebuild for s390.
|
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.34-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Fri Dec 18 2020 Sandro Mani <manisandro@gmail.com> - 2.34-4
|
||||
- Backport patches for CVE-2020-16592, CVE-2020-16598
|
||||
|
||||
* Wed Jul 29 2020 Sandro Mani <manisandro@gmail.com> - 2.34-3
|
||||
- Fix ld --version output
|
||||
|
||||
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.34-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Mon Jul 20 2020 Jeff Law <law@redhat.com> - 2.34.0-2
|
||||
- Fix configure tests compromised by LTO
|
||||
|
||||
* Fri Jun 19 2020 Sandro Mani <manisandro@gmail.com> - 2.34.0-1
|
||||
- Update to 2.34.0
|
||||
- Modernize spec
|
||||
|
||||
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.32-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Tue Nov 19 2019 Sandro Mani <manisandro@gmail.com> - 2.32-6
|
||||
- Add binutils_24267.patch
|
||||
- Drop non-relevant patches from native binutils package
|
||||
|
||||
* Tue Aug 13 2019 Fabiano Fidêncio <fidencio@redhat.com> - 3.32-5
|
||||
- Backport all patches from native binutils package, rhbz#1740709
|
||||
|
||||
* Wed Aug 07 2019 Sandro Mani <manisandro@gmail.com> - 2.32-4
|
||||
- Backport patch to fix "too many open files" when linking libLLVM.dll
|
||||
|
||||
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.32-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Tue May 07 2019 Sandro Mani <manisandro@gmail.com> - 2.32-1
|
||||
- Update to 2.32
|
||||
|
||||
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.30-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Wed Aug 22 2018 Sandro Mani <manisandro@gmail.com> - 2.30-5
|
||||
- Refresh patch for binutils bug #23061
|
||||
|
||||
* Wed Aug 08 2018 Sandro Mani <manisandro@gmail.com> - 2.30-4
|
||||
- Backport patch for binutils bug #23061
|
||||
|
||||
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.30-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Thu Jun 14 2018 Sandro Mani <manisandro@gmail.com> - 2.30-2
|
||||
- Backport patch for binutils bug #22762
|
||||
|
||||
* Thu Jun 14 2018 Sandro Mani <manisandro@gmail.com> - 2.30-1
|
||||
- Update to 2.30
|
||||
|
||||
* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.29.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Sun Oct 08 2017 Kalev Lember <klember@redhat.com> - 2.29.1-1
|
||||
- Update to 2.29.1
|
||||
|
||||
* Tue Sep 19 2017 Sandro Mani <manisandro@gmail.com> - 2.29-4
|
||||
- Rebuild for mingw-filesystem (for %%mingw_nm macro)
|
||||
|
||||
* Fri Aug 25 2017 Sandro Mani <manisandro@gmail.com> - 2.29-3
|
||||
- Also build multilib version of nm
|
||||
|
||||
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.29-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Wed Jul 26 2017 Kalev Lember <klember@redhat.com> - 2.29-1
|
||||
- Update to 2.29
|
||||
|
||||
* Mon Mar 06 2017 Kalev Lember <klember@redhat.com> - 2.28-1
|
||||
- Update to 2.28
|
||||
|
||||
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.27-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Wed Aug 10 2016 Kalev Lember <klember@redhat.com> - 2.27-1
|
||||
- Update to 2.27
|
||||
|
||||
* Tue May 10 2016 Kalev Lember <klember@redhat.com> - 2.26-1
|
||||
- Update to 2.26
|
||||
|
||||
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 2.25-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.25-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Tue Dec 23 2014 Erik van Pienbroek <epienbro@fedoraproject.org> - 2.25-1
|
||||
- Update to 2.25
|
||||
|
||||
* Tue Dec 23 2014 Erik van Pienbroek <epienbro@fedoraproject.org> - 2.24-5
|
||||
- Fix CVE-2014-8501 (RHBZ #1162578 #1162583)
|
||||
- Fix CVE-2014-8502 (RHBZ #1162602)
|
||||
- Fix CVE-2014-8503 (RHBZ #1162612)
|
||||
- Fix CVE-2014-8504 (RHBZ #1162626)
|
||||
- Fix CVE-2014-8737 (RHBZ #1162660)
|
||||
- Fix CVE-2014-8738 (RHBZ #1162673)
|
||||
|
||||
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.24-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||
|
||||
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.24-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||
|
||||
* Fri May 30 2014 Erik van Pienbroek <epienbro@fedoraproject.org> - 2.24-2
|
||||
- Fix FTBFS against gcc 4.9
|
||||
|
||||
* Sat Jan 11 2014 Erik van Pienbroek <epienbro@fedoraproject.org> - 2.24-1
|
||||
- Update to 2.24
|
||||
|
||||
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.23.52.0.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||
|
||||
* Wed Apr 3 2013 Erik van Pienbroek <epienbro@fedoraproject.org> - 2.23.52.0.1-1
|
||||
- Update to 2.23.52.0.1
|
||||
- Fixes FTBFS against latest texinfo
|
||||
- Resolve build failure on PPC
|
||||
|
||||
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.23.51.0.5-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||
|
||||
* Tue Jan 22 2013 Erik van Pienbroek <epienbro@fedoraproject.org> - 2.23.51.0.5-3
|
||||
- Backported patch to fix 'unexpected version string length' error in windres (RHBZ #902960)
|
||||
|
||||
* Tue Nov 27 2012 Erik van Pienbroek <epienbro@fedoraproject.org> - 2.23.51.0.5-2
|
||||
- Added BR: zlib-devel to enable support for compressed debug sections
|
||||
|
||||
* Wed Nov 21 2012 Erik van Pienbroek <epienbro@fedoraproject.org> - 2.23.51.0.5-1
|
||||
- Update to 2.23.51.0.5 release
|
||||
|
||||
* Mon Oct 15 2012 Jon Ciesla <limburgher@gmail.com> - 2.22.52.0.4-2
|
||||
- Provides: bundled(libiberty)
|
||||
|
||||
* Wed Jul 18 2012 Erik van Pienbroek <epienbro@fedoraproject.org> - 2.22.52.0.4-1
|
||||
- Update to 2.22.52.0.4 release
|
||||
|
||||
* Sat Jun 2 2012 Erik van Pienbroek <epienbro@fedoraproject.org> - 2.22.52.0.3-1
|
||||
- Update to 2.22.52.0.3 release
|
||||
|
||||
* Sun Apr 8 2012 Erik van Pienbroek <epienbro@fedoraproject.org> - 2.22.52-4
|
||||
- Cleaned up unneeded %%global tags
|
||||
|
||||
* Tue Mar 6 2012 Erik van Pienbroek <epienbro@fedoraproject.org> - 2.22.52-3
|
||||
- Made the package compliant with the new MinGW packaging guidelines
|
||||
- Added win64 support
|
||||
- Added a mingw-binutils-generic package containing toolchain
|
||||
utilities which can be used by both the win32 and win64 toolchains
|
||||
- Enable the testsuite
|
||||
- Package the license
|
||||
- Fix source URL
|
||||
|
||||
* Tue Mar 6 2012 Erik van Pienbroek <epienbro@fedoraproject.org> - 2.22.52-2
|
||||
- Renamed the source package to mingw-binutils (RHBZ #673786)
|
||||
- Use mingw macros without leading underscore
|
||||
|
||||
* Sat Feb 25 2012 Erik van Pienbroek <epienbro@fedoraproject.org> - 2.22.52-1
|
||||
- Update to 2.22.52 20120225 snapshot
|
||||
- Bump the BR/R: mingw32-filesystem to >= 95
|
||||
- Rebuild using the i686-w64-mingw32 triplet
|
||||
- Dropped some obsolete configure arguments
|
||||
- Temporary provide mingw-strip, mingw-objdump and mingw-objcopy
|
||||
in preparation for win32+win64 support
|
||||
|
||||
* Tue Jan 10 2012 Erik van Pienbroek <epienbro@fedoraproject.org> - 2.22-1
|
||||
- Update to 2.22
|
||||
- Dropped unneeded RPM tags
|
||||
- Use parallel make
|
||||
|
||||
* Tue May 10 2011 Kalev Lember <kalev@smartlink.ee> - 2.21-2
|
||||
- Default to runtime pseudo reloc v2 now that mingw32-runtime 3.18 is in
|
||||
|
||||
* Thu Mar 17 2011 Kalev Lember <kalev@smartlink.ee> - 2.21-1
|
||||
- Update to 2.21
|
||||
- Added a patch to use runtime pseudo reloc v1 by default as the version of
|
||||
mingw32-runtime we have does not support v2.
|
||||
- Don't own the /usr/i686-pc-mingw32/bin/ directory
|
||||
|
||||
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.20.51.0.10-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||
|
||||
* Tue Sep 7 2010 Richard W.M. Jones <rjones@redhat.com> - 2.20.51.0.10-1
|
||||
- Synchronize with Fedora native version (2.20.51.0.10).
|
||||
- Note however that we are not using any Fedora patches.
|
||||
|
||||
* Thu May 13 2010 Kalev Lember <kalev@smartlink.ee> - 2.20.1-1
|
||||
- Update to 2.20.1
|
||||
|
||||
* Wed Sep 16 2009 Kalev Lember <kalev@smartlink.ee> - 2.19.51.0.14-1
|
||||
- Update to 2.19.51.0.14
|
||||
|
||||
* Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.19.1-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
|
||||
|
||||
* Tue Mar 10 2009 Richard W.M. Jones <rjones@redhat.com> - 2.19.1-4
|
||||
- Switch to using upstream (GNU) binutils 2.19.1. It's exactly the
|
||||
same as the MinGW version now.
|
||||
|
||||
* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.19.1-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
|
||||
|
||||
* Fri Feb 20 2009 Richard W.M. Jones <rjones@redhat.com> - 2.19.1-2
|
||||
- Rebuild for mingw32-gcc 4.4
|
||||
|
||||
* Tue Feb 10 2009 Richard W.M. Jones <rjones@redhat.com> - 2.19.1-1
|
||||
- New upstream version 2.19.1.
|
||||
|
||||
* Mon Dec 15 2008 Richard W.M. Jones <rjones@redhat.com> - 2.19-1
|
||||
- New upstream version 2.19.
|
||||
|
||||
* Sat Nov 29 2008 Richard W.M. Jones <rjones@redhat.com> - 2.18.50_20080109_2-10
|
||||
- Must runtime-require mingw32-filesystem.
|
||||
|
||||
* Fri Nov 21 2008 Levente Farkas <lfarkas@lfarkas.org> - 2.18.50_20080109_2-9
|
||||
- BR mingw32-filesystem >= 38
|
||||
|
||||
* Wed Sep 24 2008 Richard W.M. Jones <rjones@redhat.com> - 2.18.50_20080109_2-8
|
||||
- Rename mingw -> mingw32.
|
||||
- BR mingw32-filesystem >= 26.
|
||||
|
||||
* Thu Sep 4 2008 Richard W.M. Jones <rjones@redhat.com> - 2.18.50_20080109_2-7
|
||||
- Use mingw-filesystem.
|
||||
|
||||
* Mon Jul 7 2008 Richard W.M. Jones <rjones@redhat.com> - 2.18.50_20080109_2-5
|
||||
- Initial RPM release, largely based on earlier work from several sources.
|
Loading…
Reference in new issue