diff options
Diffstat (limited to 'binutils')
28 files changed, 1982 insertions, 494 deletions
diff --git a/binutils/MAINTAINERS b/binutils/MAINTAINERS index 14c24af..59f1603 100644 --- a/binutils/MAINTAINERS +++ b/binutils/MAINTAINERS @@ -87,10 +87,8 @@ responsibility among the other maintainers. FRV Alexandre Oliva <aoliva@sourceware.org> GOLD Ian Lance Taylor <iant@google.com> GOLD Cary Coutant <ccoutant@gmail.com> - gprofng Vladimir Mezentsev <vladimir.mezentsev@oracle.com> HPPA Dave Anglin <dave.anglin@bell.net> HPPA elf64 Jeff Law <law@redhat.com> [Basic maintainance only] - IA-64 Jim Wilson <wilson@tuliptree.org> ix86 H.J. Lu <hjl.tools@gmail.com> ix86 COFF DJ Delorie <dj@redhat.com> ix86 PE/COFF Dave Korn <dave.korn.cygwin@gmail.com> @@ -166,6 +164,8 @@ goes with them. M R Swami Reddy Martin Schwidefsky Matt Thomas + Jim Wilson + Vladimir Mezentsev --------- CGEN Maintainers ------------- diff --git a/binutils/NEWS b/binutils/NEWS index 5038851..0a4ed3b 100644 --- a/binutils/NEWS +++ b/binutils/NEWS @@ -1,5 +1,15 @@ -*- text -*- +* Add --got-contents option to readelf to display the contents of + Global Offset Table (GOT) sections. + +* Internal changes to plugin support, and stricter target checking may result + in some errors being exposed in user options passed to the various binutils. + For example objcopy --target=TARGET now will only work if the input file is + for TARGET whereas prior versions of objcopy accepted other target input + files and produced a TARGET output. If you do in fact want the old + behaviour the correct usage is objcopy --output-target=TARGET. + * NaCl target support is removed. Changes in 2.45: diff --git a/binutils/ar.c b/binutils/ar.c index de41c9e..afe8633 100644 --- a/binutils/ar.c +++ b/binutils/ar.c @@ -32,9 +32,7 @@ #include "arsup.h" #include "filenames.h" #include "binemul.h" -#include "plugin-api.h" #include "plugin.h" -#include "ansidecl.h" #ifdef __GO32___ #define EXT_NAME_LEN 3 /* Bufflen of addition to name if it's MS-DOS. */ @@ -42,12 +40,9 @@ #define EXT_NAME_LEN 6 /* Ditto for *NIX. */ #endif -/* Static declarations. */ +/* Forward declarations. */ -static void mri_emul (void); static const char *normalize (const char *, bfd *); -static void remove_output (void); -static void map_over_members (bfd *, void (*)(bfd *), char **, int); static void print_contents (bfd * member); static void delete_members (bfd *, char **files_to_delete); @@ -58,8 +53,7 @@ static void print_descr (bfd * abfd); static void write_archive (bfd *); static int ranlib_only (const char *archname); static int ranlib_touch (const char *archname); -static void usage (int); - + /** Globals and flags. */ static int mri_mode; @@ -148,12 +142,6 @@ static int show_version = 0; static int show_help = 0; -#if BFD_SUPPORTS_PLUGINS -static const char *plugin_target = "plugin"; -#else -static const char *plugin_target = NULL; -#endif - static const char *target = NULL; enum long_option_numbers @@ -280,18 +268,18 @@ usage (int help) { FILE *s; -#if BFD_SUPPORTS_PLUGINS - /* xgettext:c-format */ - const char *command_line - = _("Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoOPsSTuvV]" - " [--plugin <name>] [member-name] [count] archive-file file...\n"); + const char *command_line; + if (bfd_plugin_enabled ()) + /* xgettext:c-format */ + command_line + = _("Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoOPsSTuvV]" + " [--plugin <name>] [member-name] [count] archive-file file...\n"); + else + /* xgettext:c-format */ + command_line + = _("Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoOPsSTuvV]" + " [member-name] [count] archive-file file...\n"); -#else - /* xgettext:c-format */ - const char *command_line - = _("Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoOPsSTuvV]" - " [member-name] [count] archive-file file...\n"); -#endif s = help ? stdout : stderr; fprintf (s, command_line, program_name); @@ -343,10 +331,11 @@ usage (int help) fprintf (s, _(" --output=DIRNAME - specify the output directory for extraction operations\n")); fprintf (s, _(" --record-libdeps=<text> - specify the dependencies of this library\n")); fprintf (s, _(" --thin - make a thin archive\n")); -#if BFD_SUPPORTS_PLUGINS - fprintf (s, _(" optional:\n")); - fprintf (s, _(" --plugin <p> - load the specified plugin\n")); -#endif + if (bfd_plugin_enabled ()) + { + fprintf (s, _(" optional:\n")); + fprintf (s, _(" --plugin <p> - load the specified plugin\n")); + } ar_emul_usage (s); @@ -370,10 +359,9 @@ ranlib_usage (int help) fprintf (s, _(" Generate an index to speed access to archives\n")); fprintf (s, _(" The options are:\n\ @<file> Read options from <file>\n")); -#if BFD_SUPPORTS_PLUGINS - fprintf (s, _("\ + if (bfd_plugin_enabled ()) + fprintf (s, _("\ --plugin <name> Load the specified plugin\n")); -#endif if (DEFAULT_AR_DETERMINISTIC) fprintf (s, _("\ -D Use zero for symbol map timestamp (default)\n\ @@ -600,12 +588,9 @@ decode_options (int argc, char **argv) deterministic = false; break; case OPTION_PLUGIN: -#if BFD_SUPPORTS_PLUGINS + if (!bfd_plugin_enabled ()) + fatal (_("sorry - this program has been built without plugin support\n")); bfd_plugin_set_plugin (optarg); -#else - fprintf (stderr, _("sorry - this program has been built without plugin support\n")); - xexit (1); -#endif break; case OPTION_TARGET: target = optarg; @@ -675,12 +660,9 @@ ranlib_main (int argc, char **argv) /* PR binutils/13493: Support plugins. */ case OPTION_PLUGIN: -#if BFD_SUPPORTS_PLUGINS + if (!bfd_plugin_enabled ()) + fatal (_("sorry - this program has been built without plugin support\n")); bfd_plugin_set_plugin (optarg); -#else - fprintf (stderr, _("sorry - this program has been built without plugin support\n")); - xexit (1); -#endif break; } } @@ -731,9 +713,7 @@ main (int argc, char **argv) program_name = argv[0]; xmalloc_set_program_name (program_name); bfd_set_error_program_name (program_name); -#if BFD_SUPPORTS_PLUGINS bfd_plugin_set_program_name (program_name); -#endif expandargv (&argc, &argv); @@ -888,7 +868,7 @@ main (int argc, char **argv) if (! bfd_make_readable (libdeps_bfd)) fatal (_("Cannot make libdeps object readable.")); - if (bfd_find_target (plugin_target, libdeps_bfd) == NULL) + if (bfd_find_target (target, libdeps_bfd) == NULL) fatal (_("Cannot reset libdeps record type.")); /* Insert our libdeps record in 2nd slot of the list of files @@ -977,12 +957,10 @@ open_inarch (const char *archive_filename, const char *file) struct stat sbuf; bfd *arch; char **matching; + const char *arch_target = target; bfd_set_error (bfd_error_no_error); - if (target == NULL) - target = plugin_target; - if (stat (archive_filename, &sbuf) != 0) { #if !defined(__GO32__) || defined(__DJGPP__) @@ -1008,16 +986,16 @@ open_inarch (const char *archive_filename, const char *file) /* If the target isn't set, try to figure out the target to use for the archive from the first object on the list. */ - if (target == NULL && file != NULL) + if (arch_target == NULL && file != NULL) { bfd *obj; - obj = bfd_openr (file, target); + obj = bfd_openr (file, arch_target); if (obj != NULL) { if (bfd_check_format (obj, bfd_object) && bfd_target_supports_archives (obj)) - target = bfd_get_target (obj); + arch_target = bfd_get_target (obj); (void) bfd_close (obj); } } @@ -1026,7 +1004,7 @@ open_inarch (const char *archive_filename, const char *file) output_filename = xstrdup (archive_filename); /* Create an empty archive. */ - arch = bfd_openw (archive_filename, target); + arch = bfd_openw (archive_filename, arch_target); if (arch == NULL || ! bfd_set_format (arch, bfd_archive) || ! bfd_close (arch)) @@ -1035,7 +1013,7 @@ open_inarch (const char *archive_filename, const char *file) non_fatal (_("creating %s"), archive_filename); } - arch = bfd_openr (archive_filename, target); + arch = bfd_openr (archive_filename, arch_target); if (arch == NULL) { bloser: @@ -1069,8 +1047,8 @@ open_inarch (const char *archive_filename, const char *file) } } + /* Open all the archive contents. */ last_one = &(arch->archive_next); - /* Read all the contents right away, regardless. */ for (next_one = bfd_openr_next_archived_file (arch, NULL); next_one; next_one = bfd_openr_next_archived_file (arch, next_one)) diff --git a/binutils/arsup.c b/binutils/arsup.c index 67cbd5c..c7b6564 100644 --- a/binutils/arsup.c +++ b/binutils/arsup.c @@ -32,11 +32,6 @@ #include "bucomm.h" #include "arsup.h" -static void map_over_list - (bfd *, void (*function) (bfd *, bfd *), struct list *); -static void ar_directory_doer (bfd *, bfd *); -static void ar_addlib_doer (bfd *, bfd *); - extern int verbose; extern int deterministic; @@ -180,11 +175,7 @@ ar_open (char *name, int t) bfd *element; bfd *ibfd; -#if BFD_SUPPORTS_PLUGINS - ibfd = bfd_openr (name, "plugin"); -#else ibfd = bfd_openr (name, NULL); -#endif if (!ibfd) { @@ -266,11 +257,7 @@ ar_addmod (struct list *list) { bfd *abfd; -#if BFD_SUPPORTS_PLUGINS - abfd = bfd_openr (list->name, "plugin"); -#else abfd = bfd_openr (list->name, NULL); -#endif if (!abfd) { fprintf (stderr, _("%s: can't open file %s\n"), @@ -504,7 +491,6 @@ ar_extract (struct list *list) if (!found) { - bfd_openr (list->name, NULL); fprintf (stderr, _("%s: can't find module file %s\n"), program_name, list->name); } diff --git a/binutils/configure.ac b/binutils/configure.ac index a393036..93e8a4b 100644 --- a/binutils/configure.ac +++ b/binutils/configure.ac @@ -201,9 +201,9 @@ GCC_AC_FUNC_MMAP AC_CHECK_FUNCS(fseeko fseeko64 getc_unlocked mkdtemp mkstemp utimensat utimes) AC_MSG_CHECKING([for mbstate_t]) -AC_TRY_COMPILE([#include <wchar.h>], -[mbstate_t teststate;], -have_mbstate_t=yes, have_mbstate_t=no) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wchar.h>]], +[[mbstate_t teststate;]])], +[have_mbstate_t=yes],[have_mbstate_t=no]) AC_MSG_RESULT($have_mbstate_t) if test x"$have_mbstate_t" = xyes; then AC_DEFINE(HAVE_MBSTATE_T,1,[Define if mbstate_t exists in wchar.h.]) diff --git a/binutils/doc/binutils.texi b/binutils/doc/binutils.texi index 4543341..89425b8 100644 --- a/binutils/doc/binutils.texi +++ b/binutils/doc/binutils.texi @@ -5076,6 +5076,7 @@ readelf [@option{-a}|@option{--all}] [@option{--ctf-strings=}@var{section}] [@option{--sframe=}@var{section}] [@option{-I}|@option{--histogram}] + [@option{--got-contents}] [@option{-v}|@option{--version}] [@option{-W}|@option{--wide}] [@option{-T}|@option{--silent-truncation}] @@ -5111,7 +5112,8 @@ given. Equivalent to specifying @option{--file-header}, @option{--program-headers}, @option{--sections}, @option{--symbols}, @option{--relocs}, @option{--dynamic}, @option{--notes}, -@option{--version-info}, @option{--arch-specific}, @option{--unwind}, +@option{--got-contents}, @option{--version-info}, +@option{--arch-specific}, @option{--unwind}, @option{--section-groups} and @option{--histogram}. Note - this option does not enable @option{--use-dynamic} itself, so @@ -5387,6 +5389,14 @@ string table are used. If either of @option{--ctf-symbols} or @option{--ctf-strings} is specified, the other must be specified as well. +@item --got-contents +@cindex ELF section information +@cindex ELF reloc information +Displays the contents of the file's Global Offset Table (GOT) sections, +if it has any. For MIPS, this option is similar to +@option{--arch-specific}, but it only displays the GOT related contents +and it is ignored when @option{--arch-specific} is used. + @item -I @itemx --histogram Display a histogram of bucket list lengths when displaying the contents diff --git a/binutils/dwarf.c b/binutils/dwarf.c index f4bcb67..bc5aa2b 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -8574,6 +8574,7 @@ typedef struct Frame_Chunk uint64_t pc_range; unsigned int cfa_reg; uint64_t cfa_offset; + bool cfa_ofs_signed_p; unsigned int ra; unsigned char fde_encoding; unsigned char cfa_exp; @@ -9071,7 +9072,8 @@ frame_display_row (Frame_Chunk *fc, int *need_col_headers, unsigned int *max_reg if (fc->cfa_exp) strcpy (tmp, "exp"); else - sprintf (tmp, "%s%+d", regname (fc->cfa_reg, 1), (int) fc->cfa_offset); + sprintf (tmp, (fc->cfa_ofs_signed_p ? "%s%+" PRId64 : "%s+%" PRIu64), + regname (fc->cfa_reg, 1), fc->cfa_offset); printf ("%-8s ", tmp); for (r = 0; r < fc->ncols; r++) @@ -9794,6 +9796,7 @@ display_debug_frames (struct dwarf_section *section, fc->data_factor = cie->data_factor; fc->cfa_reg = cie->cfa_reg; fc->cfa_offset = cie->cfa_offset; + fc->cfa_ofs_signed_p = cie->cfa_ofs_signed_p; fc->ra = cie->ra; if (frame_need_space (fc, max_regs > 0 ? max_regs - 1: 0) < 0) { @@ -10263,6 +10266,7 @@ display_debug_frames (struct dwarf_section *section, printf (" DW_CFA_remember_state\n"); rs = (Frame_Chunk *) xmalloc (sizeof (Frame_Chunk)); rs->cfa_offset = fc->cfa_offset; + rs->cfa_ofs_signed_p = fc->cfa_ofs_signed_p; rs->cfa_reg = fc->cfa_reg; rs->ra = fc->ra; rs->cfa_exp = fc->cfa_exp; @@ -10285,6 +10289,7 @@ display_debug_frames (struct dwarf_section *section, { remembered_state = rs->next; fc->cfa_offset = rs->cfa_offset; + fc->cfa_ofs_signed_p = rs->cfa_ofs_signed_p; fc->cfa_reg = rs->cfa_reg; fc->ra = rs->ra; fc->cfa_exp = rs->cfa_exp; @@ -10311,10 +10316,11 @@ display_debug_frames (struct dwarf_section *section, case DW_CFA_def_cfa: READ_ULEB (fc->cfa_reg, start, block_end); READ_ULEB (fc->cfa_offset, start, block_end); + fc->cfa_ofs_signed_p = false; fc->cfa_exp = 0; if (! do_debug_frames_interp) - printf (" DW_CFA_def_cfa: %s ofs %d\n", - regname (fc->cfa_reg, 0), (int) fc->cfa_offset); + printf (" DW_CFA_def_cfa: %s ofs %" PRIu64 "\n", + regname (fc->cfa_reg, 0), fc->cfa_offset); break; case DW_CFA_def_cfa_register: @@ -10327,8 +10333,9 @@ display_debug_frames (struct dwarf_section *section, case DW_CFA_def_cfa_offset: READ_ULEB (fc->cfa_offset, start, block_end); + fc->cfa_ofs_signed_p = false; if (! do_debug_frames_interp) - printf (" DW_CFA_def_cfa_offset: %d\n", (int) fc->cfa_offset); + printf (" DW_CFA_def_cfa_offset: %" PRIu64 "\n", fc->cfa_offset); break; case DW_CFA_nop: @@ -10448,6 +10455,7 @@ display_debug_frames (struct dwarf_section *section, ofs = sofs; ofs *= fc->data_factor; fc->cfa_offset = ofs; + fc->cfa_ofs_signed_p = true; fc->cfa_exp = 0; if (! do_debug_frames_interp) printf (" DW_CFA_def_cfa_sf: %s ofs %" PRId64 "\n", @@ -10459,6 +10467,7 @@ display_debug_frames (struct dwarf_section *section, ofs = sofs; ofs *= fc->data_factor; fc->cfa_offset = ofs; + fc->cfa_ofs_signed_p = true; if (! do_debug_frames_interp) printf (" DW_CFA_def_cfa_offset_sf: %" PRId64 "\n", ofs); break; diff --git a/binutils/nm.c b/binutils/nm.c index a5d5631..dce9207 100644 --- a/binutils/nm.c +++ b/binutils/nm.c @@ -36,9 +36,8 @@ #include "libcoff.h" #include "bucomm.h" #include "demanguse.h" -#include "plugin-api.h" -#include "plugin.h" #include "safe-ctype.h" +#include "plugin.h" #ifndef streq #define streq(a,b) (strcmp ((a),(b)) == 0) @@ -221,11 +220,6 @@ static char other_format[] = "%02x"; static char desc_format[] = "%04x"; static char *target = NULL; -#if BFD_SUPPORTS_PLUGINS -static const char *plugin_target = "plugin"; -#else -static const char *plugin_target = NULL; -#endif typedef enum unicode_display_type { @@ -343,10 +337,9 @@ usage (FILE *stream, int status) -P, --portability Same as --format=posix\n")); fprintf (stream, _("\ -r, --reverse-sort Reverse the sense of the sort\n")); -#if BFD_SUPPORTS_PLUGINS - fprintf (stream, _("\ + if (bfd_plugin_enabled ()) + fprintf (stream, _("\ --plugin NAME Load the specified plugin\n")); -#endif fprintf (stream, _("\ -S, --print-size Print size of defined symbols\n")); fprintf (stream, _("\ @@ -802,6 +795,7 @@ filter_symbols (bfd *abfd, bool is_dynamic, void *minisyms, continue; if (bfd_lto_slim_symbol_p (abfd, sym->name) + && !bfd_plugin_target_p (abfd->xvec) && report_plugin_err) { report_plugin_err = false; @@ -1484,7 +1478,8 @@ display_rel_file (bfd *abfd, bfd *archive_bfd) /* lto_type is set to lto_non_ir_object when a bfd is loaded with a compiler LTO plugin. */ - if (bfd_get_lto_type (abfd) == lto_slim_ir_object) + if (bfd_get_lto_type (abfd) == lto_slim_ir_object + && !bfd_plugin_target_p (abfd->xvec)) { report_plugin_err = false; non_fatal (_("%s: plugin needed to handle lto object"), @@ -1642,7 +1637,7 @@ display_file (char *filename) if (get_file_size (filename) < 1) return false; - file = bfd_openr (filename, target ? target : plugin_target); + file = bfd_openr (filename, target); if (file == NULL) { bfd_nonfatal (filename); @@ -1985,9 +1980,7 @@ main (int argc, char **argv) program_name = *argv; xmalloc_set_program_name (program_name); bfd_set_error_program_name (program_name); -#if BFD_SUPPORTS_PLUGINS bfd_plugin_set_program_name (program_name); -#endif expandargv (&argc, &argv); @@ -2134,11 +2127,9 @@ main (int argc, char **argv) break; case OPTION_PLUGIN: /* --plugin */ -#if BFD_SUPPORTS_PLUGINS + if (!bfd_plugin_enabled ()) + fatal (_("sorry - this program has been built without plugin support\n")); bfd_plugin_set_plugin (optarg); -#else - fatal (_("sorry - this program has been built without plugin support\n")); -#endif break; case OPTION_IFUNC_CHARS: diff --git a/binutils/objcopy.c b/binutils/objcopy.c index 5774711..a3259f9 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -30,7 +30,6 @@ #include "coff/internal.h" #include "libcoff.h" #include "safe-ctype.h" -#include "plugin-api.h" #include "plugin.h" /* FIXME: See bfd/peXXigen.c for why we include an architecture specific @@ -167,11 +166,6 @@ static struct section_list *change_sections; /* TRUE if some sections are to be removed. */ static bool sections_removed; -#if BFD_SUPPORTS_PLUGINS -/* TRUE if all GCC LTO sections are to be removed. */ -static bool lto_sections_removed; -#endif - /* TRUE if only some sections are to be copied. */ static bool sections_copied; @@ -767,10 +761,9 @@ strip_usage (FILE *stream, int exit_status) --info List object formats & architectures supported\n\ -o <file> Place stripped output into <file>\n\ ")); -#if BFD_SUPPORTS_PLUGINS - fprintf (stream, _("\ + if (bfd_plugin_enabled ()) + fprintf (stream, _("\ --plugin NAME Load the specified plugin\n")); -#endif list_supported_targets (program_name, stream); if (REPORT_BUGS_TO[0] && exit_status == 0) @@ -2661,8 +2654,7 @@ set_long_section_mode (bfd *output_bfd, bfd *input_bfd, enum long_section_name_h Returns TRUE upon success, FALSE otherwise. */ static bool -copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch, - bool target_defaulted) +copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch) { bfd_vma start; long symcount; @@ -2812,17 +2804,20 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch, iarch = bed->arch; imach = 0; } + if (iarch == bfd_arch_unknown + && bfd_get_flavour (ibfd) == bfd_target_elf_flavour + && ibfd->target_defaulted) + { + non_fatal (_("Unable to recognise the architecture of the input file `%s'"), + bfd_get_archive_filename (ibfd)); + return false; + } if (!bfd_set_arch_mach (obfd, iarch, imach) - && (target_defaulted - || bfd_get_arch (ibfd) != bfd_get_arch (obfd))) + && iarch != bfd_arch_unknown) { - if (bfd_get_arch (ibfd) == bfd_arch_unknown) - non_fatal (_("Unable to recognise the format of the input file `%s'"), - bfd_get_archive_filename (ibfd)); - else - non_fatal (_("Output file cannot represent architecture `%s'"), - bfd_printable_arch_mach (bfd_get_arch (ibfd), - bfd_get_mach (ibfd))); + non_fatal (_("Output file cannot represent architecture `%s'"), + bfd_printable_arch_mach (bfd_get_arch (ibfd), + bfd_get_mach (ibfd))); return false; } @@ -3616,8 +3611,7 @@ fail: static bool copy_archive (bfd *ibfd, bfd *obfd, const char *output_target, bool force_output_target, - const bfd_arch_info_type *input_arch, - bool target_defaulted) + const bfd_arch_info_type *input_arch) { struct name_list { @@ -3743,13 +3737,8 @@ copy_archive (bfd *ibfd, bfd *obfd, const char *output_target, l->obfd = NULL; list = l; -#if BFD_SUPPORTS_PLUGINS - /* Ignore plugin target if all LTO sections should be removed. */ - ok_object = bfd_check_format_lto (this_element, bfd_object, - lto_sections_removed); -#else + this_element->plugin_format = bfd_plugin_no; ok_object = bfd_check_format (this_element, bfd_object); -#endif /* PR binutils/3110: Cope with archives containing multiple target types. */ @@ -3766,16 +3755,12 @@ copy_archive (bfd *ibfd, bfd *obfd, const char *output_target, goto cleanup_and_exit; } -#if BFD_SUPPORTS_PLUGINS - /* Copy LTO IR file as unknown object. */ - if (bfd_plugin_target_p (this_element->xvec)) + /* Copy slim LTO IR file as unknown object. */ + if (this_element->lto_type == lto_slim_ir_object) ok_object = false; - else -#endif if (ok_object) { - ok = copy_object (this_element, output_element, input_arch, - target_defaulted); + ok = copy_object (this_element, output_element, input_arch); if (!ok && bfd_get_arch (this_element) == bfd_arch_unknown) /* Try again as an unknown object file. */ @@ -3806,7 +3791,8 @@ copy_archive (bfd *ibfd, bfd *obfd, const char *output_target, set_times (output_name, &buf); /* Open the newly created output file and attach to our list. */ - output_element = bfd_openr (output_name, output_target); + const char *targ = force_output_target ? output_target : NULL; + output_element = bfd_openr (output_name, targ); list->obfd = output_element; @@ -3875,8 +3861,6 @@ copy_file (const char *input_filename, const char *output_filename, int ofd, char **core_matching; off_t size = get_file_size (input_filename); const char *target = input_target; - bool target_defaulted = (!input_target - || strcmp (input_target, "default") == 0); if (size < 1) { @@ -3887,12 +3871,6 @@ copy_file (const char *input_filename, const char *output_filename, int ofd, return; } -#if BFD_SUPPORTS_PLUGINS - /* Enable LTO plugin in strip. */ - if (is_strip && !target) - target = "plugin"; -#endif - /* To allow us to do "strip *" without dying on the first non-object file, failures are nonfatal. */ ibfd = bfd_openr (input_filename, target); @@ -3946,6 +3924,8 @@ copy_file (const char *input_filename, const char *output_filename, int ofd, break; } + ibfd->plugin_format = bfd_plugin_no; + if (bfd_check_format (ibfd, bfd_archive)) { bool force_output_target; @@ -3985,32 +3965,66 @@ copy_file (const char *input_filename, const char *output_filename, int ofd, } if (!copy_archive (ibfd, obfd, output_target, force_output_target, - input_arch, target_defaulted)) + input_arch)) status = 1; + return; } - else if ( -#if BFD_SUPPORTS_PLUGINS - /* Ignore plugin target first if all LTO sections should be - removed. Try with plugin target next if ignoring plugin - target fails to match the format. */ - bfd_check_format_matches_lto (ibfd, bfd_object, &obj_matching, - lto_sections_removed) - || (lto_sections_removed - && bfd_check_format_matches_lto (ibfd, bfd_object, - &obj_matching, false)) -#else - bfd_check_format_matches_lto (ibfd, bfd_object, &obj_matching, - false) -#endif - ) + + bool ok_plugin = false; + bool ok_object = bfd_check_format_matches (ibfd, bfd_object, &obj_matching); + bfd_error_type obj_error = bfd_get_error (); + bfd_error_type core_error = bfd_error_no_error; + if (!ok_object) + { + ok_object = bfd_check_format_matches (ibfd, bfd_core, &core_matching); + core_error = bfd_get_error (); + if (ok_object) + { + if (obj_error == bfd_error_file_ambiguously_recognized) + free (obj_matching); + obj_error = bfd_error_no_error; + } + else if (bfd_plugin_enabled ()) + { + /* This is for LLVM bytecode files, which are not ELF objects. + Since objcopy/strip does nothing with these files except + copy them whole perhaps we ought to just reject them? */ + bfd_find_target ("plugin", ibfd); + ibfd->plugin_format = bfd_plugin_unknown; + ok_plugin = bfd_check_format (ibfd, bfd_object); + } + } + + if (obj_error == bfd_error_file_ambiguously_recognized) + { + if (core_error == bfd_error_file_ambiguously_recognized) + free (core_matching); + bfd_set_error (obj_error); + status = 1; + bfd_nonfatal_message (input_filename, NULL, NULL, NULL); + list_matching_formats (obj_matching); + } + else if (core_error == bfd_error_file_ambiguously_recognized) + { + status = 1; + bfd_nonfatal_message (input_filename, NULL, NULL, NULL); + list_matching_formats (core_matching); + } + else if (!ok_object && !ok_plugin) + { + status = 1; + bfd_set_error (obj_error); + bfd_nonfatal_message (input_filename, NULL, NULL, NULL); + } + else { bfd *obfd; - do_copy: /* bfd_get_target does not return the correct value until bfd_check_format succeeds. */ - if (output_target == NULL - || strcmp (output_target, "default") == 0) + if (ok_object + && (output_target == NULL + || strcmp (output_target, "default") == 0)) output_target = bfd_get_target (ibfd); if (ofd >= 0) @@ -4028,66 +4042,30 @@ copy_file (const char *input_filename, const char *output_filename, int ofd, return; } -#if BFD_SUPPORTS_PLUGINS - if (bfd_plugin_target_p (ibfd->xvec)) - { - /* Copy LTO IR file as unknown file. */ - if (!copy_unknown_file (ibfd, obfd, in_stat->st_size, - in_stat->st_mode)) - status = 1; - else if (!bfd_close_all_done (obfd)) - status = 1; - } - else -#endif - { - if (! copy_object (ibfd, obfd, input_arch, target_defaulted)) - status = 1; - - /* PR 17512: file: 0f15796a. - If the file could not be copied it may not be in a writeable - state. So use bfd_close_all_done to avoid the possibility of - writing uninitialised data into the file. */ - if (! (status ? bfd_close_all_done (obfd) : bfd_close (obfd))) - { - status = 1; - bfd_nonfatal_message (output_filename, NULL, NULL, NULL); - } - } + /* Copy slim LTO IR file as unknown file. */ + if (ibfd->lto_type == lto_slim_ir_object) + ok_object = false; + if (ok_object + ? !copy_object (ibfd, obfd, input_arch) + : !copy_unknown_file (ibfd, obfd, + in_stat->st_size, in_stat->st_mode)) + status = 1; - if (!bfd_close (ibfd)) + /* PR 17512: file: 0f15796a. + If the file could not be copied it may not be in a writeable + state. So use bfd_close_all_done to avoid the possibility of + writing uninitialised data into the file. */ + if (!(ok_object && !status ? bfd_close : bfd_close_all_done) (obfd)) { status = 1; - bfd_nonfatal_message (input_filename, NULL, NULL, NULL); + bfd_nonfatal_message (output_filename, NULL, NULL, NULL); } } - else - { - bfd_error_type obj_error = bfd_get_error (); - bfd_error_type core_error; - - if (bfd_check_format_matches (ibfd, bfd_core, &core_matching)) - { - /* This probably can't happen.. */ - if (obj_error == bfd_error_file_ambiguously_recognized) - free (obj_matching); - goto do_copy; - } - - core_error = bfd_get_error (); - /* Report the object error in preference to the core error. */ - if (obj_error != core_error) - bfd_set_error (obj_error); - - bfd_nonfatal_message (input_filename, NULL, NULL, NULL); - - if (obj_error == bfd_error_file_ambiguously_recognized) - list_matching_formats (obj_matching); - if (core_error == bfd_error_file_ambiguously_recognized) - list_matching_formats (core_matching); - bfd_close (ibfd); + if (!bfd_close (ibfd)) + { status = 1; + bfd_nonfatal_message (input_filename, NULL, NULL, NULL); } } @@ -4911,9 +4889,7 @@ strip_main (int argc, char *argv[]) char *output_file = NULL; bool merge_notes_set = false; -#if BFD_SUPPORTS_PLUGINS bfd_plugin_set_program_name (argv[0]); -#endif while ((c = getopt_long (argc, argv, "I:O:F:K:MN:R:o:sSpdgxXHhVvwDU", strip_options, (int *) 0)) != EOF) @@ -5006,11 +4982,9 @@ strip_main (int argc, char *argv[]) keep_section_symbols = true; break; case OPTION_PLUGIN: /* --plugin */ -#if BFD_SUPPORTS_PLUGINS + if (!bfd_plugin_enabled ()) + fatal (_("sorry - this program has been built without plugin support\n")); bfd_plugin_set_plugin (optarg); -#else - fatal (_("sorry - this program has been built without plugin support\n")); -#endif break; case 0: /* We've been given a long option. */ @@ -5056,17 +5030,15 @@ strip_main (int argc, char *argv[]) if (output_target == NULL) output_target = input_target; -#if BFD_SUPPORTS_PLUGINS /* Check if all GCC LTO sections should be removed, assuming all LTO - sections will be removed with -R .gnu.lto_.*. * Remove .gnu.lto_.* - sections will also remove .gnu.debuglto_. sections. LLVM IR - bitcode is stored in .llvm.lto section which will be removed with - -R .llvm.lto. */ - lto_sections_removed = (!!find_section_list (".gnu.lto_.*", false, - SECTION_CONTEXT_REMOVE) - || !!find_section_list (".llvm.lto", false, - SECTION_CONTEXT_REMOVE)); -#endif + sections will be removed with -R .gnu.lto_.*. Remove .gnu.lto_.* + sections will also remove .gnu.debuglto_.* sections. + + NB: Must keep .gnu.debuglto_* sections unless all GCC LTO sections + will be removed to avoid undefined references to symbols in GCC LTO + debug sections. */ + if (!find_section_list (".gnu.lto_.*", false, SECTION_CONTEXT_REMOVE)) + find_section_list (".gnu.debuglto_*", true, SECTION_CONTEXT_KEEP); i = optind; if (i == argc diff --git a/binutils/readelf.c b/binutils/readelf.c index bb81c82..705b776 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -229,6 +229,7 @@ static bool do_dyn_syms = false; static bool do_lto_syms = false; static bool do_reloc = false; static bool do_sections = false; +static bool do_got_section_contents = false; static bool do_section_groups = false; static bool do_section_details = false; static bool do_segments = false; @@ -372,6 +373,21 @@ enum versioned_symbol_info symbol_public }; +/* Relocation entries */ + +typedef struct elf_relocation +{ + bfd_vma r_offset; /* Location at which to apply the action */ + bfd_vma r_addend; /* Constant addend used to compute value */ + const char *r_name; /* Relocation name. */ + char *r_symbol; /* Relocation symbol. */ + relocation_type r_type; /* Relocation type. */ +} elf_relocation; + +static elf_relocation *all_relocations_root; +static elf_relocation *all_relocations; +static size_t all_relocations_count; + static int fseek64 (FILE *stream, int64_t offset, int whence) { @@ -1767,9 +1783,36 @@ symcmp (const void *p, const void *q) return sp->st_value > sq->st_value ? 1 : (sp->st_value < sq->st_value ? -1 : 0); } +static void +update_all_relocations (size_t nentries) +{ + size_t sz; + + if (!do_got_section_contents) + return; + + if (!all_relocations_root) + { + sz = nentries * sizeof (elf_relocation); + all_relocations_root = (elf_relocation *) xmalloc (sz); + all_relocations = all_relocations_root; + all_relocations_count = nentries; + } + else + { + size_t orig_count = all_relocations_count; + sz = (orig_count + nentries) * sizeof (elf_relocation); + all_relocations_root = (elf_relocation *) + xrealloc (all_relocations_root, sz); + all_relocations = all_relocations_root + orig_count; + all_relocations_count += nentries; + } +} + static uint64_t count_relr_relocations (Filedata * filedata, - Elf_Internal_Shdr * section) + Elf_Internal_Shdr * section, + uint64_t ** relrs_p) { uint64_t * relrs; uint64_t nentries; @@ -1794,9 +1837,6 @@ count_relr_relocations (Filedata * filedata, if (nentries == 0) return 0; - /* FIXME: This call to get_data duplicates one that follows in - dump_relr_relocations(). They could be combined into just - one call. */ relrs = get_data (NULL, filedata, section->sh_offset, 1, section->sh_size, _("RELR relocation data")); if (relrs == NULL) @@ -1826,23 +1866,27 @@ count_relr_relocations (Filedata * filedata, } } - free (relrs); + *relrs_p = relrs; + return count; } +/* If DUMP_RELOC is false, don't display RELR relocations, just collect + RELR relocations for displaying GOT section contents later. */ + static bool dump_relr_relocations (Filedata * filedata, - Elf_Internal_Shdr * section, - Elf_Internal_Sym * symtab, + uint64_t relr_size, + int relr_entsize, + uint64_t relr_offset, + uint64_t * relrs, + const Elf_Internal_Sym * symtab_p, uint64_t nsyms, char * strtab, - uint64_t strtablen) + uint64_t strtablen, + bool dump_reloc) { - uint64_t * relrs; uint64_t nentries, i; - uint64_t relr_size = section->sh_size; - int relr_entsize = section->sh_entsize; - uint64_t relr_offset = section->sh_offset; uint64_t where = 0; int num_bits_in_entry; @@ -1861,35 +1905,201 @@ dump_relr_relocations (Filedata * filedata, num_bits_in_entry = 63; else { - warn (_("Unexpected entsize for RELR section\n")); + if (dump_reloc) + warn (_("Unexpected entsize for RELR section\n")); return false; } - relrs = get_data (NULL, filedata, relr_offset, 1, relr_size, _("RELR relocation data")); if (relrs == NULL) - return false; + { + relrs = get_data (NULL, filedata, relr_offset, 1, relr_size, + _("RELR relocation data")); + if (relrs == NULL) + return false; + } /* Paranoia. */ if (strtab == NULL) strtablen = 0; - if (symtab == NULL) + if (symtab_p == NULL) nsyms = 0; - if (symtab != NULL) + const char *rtype = NULL; + if (do_got_section_contents) + switch (filedata->file_header.e_machine) + { + default: + abort (); + + case EM_386: + case EM_IAMCU: + rtype = "R_386_RELATIVE"; + break; + + case EM_68K: + rtype = "R_68K_RELATIVE"; + break; + + case EM_860: + rtype = "R_860_RELATIVE"; + break; + + case EM_AARCH64: + rtype = "R_AARCH64_RELATIVE"; + break; + + case EM_AMDGPU: + rtype = "R_AMDGPU_RELATIVE64"; + break; + + case EM_ALPHA: + rtype = "R_ALPHA_RELATIVE"; + break; + + case EM_ALTERA_NIOS2: + rtype = "R_NIOS2_RELATIVE"; + break; + + case EM_ARM: + rtype = "R_ARM_RELATIVE"; + break; + + case EM_ARC: + case EM_ARC_COMPACT: + case EM_ARC_COMPACT2: + case EM_ARC_COMPACT3: + case EM_ARC_COMPACT3_64: + rtype = "R_ARC_RELATIVE"; + break; + + case EM_CRIS: + rtype = "R_CRIS_RELATIVE"; + break; + + case EM_CSKY: + rtype = "R_CKCORE_RELATIVE"; + break; + + case EM_KVX: + rtype = "R_KVX_RELATIVE"; + break; + + case EM_LATTICEMICO32: + rtype = "R_LM32_RELATIVE"; + break; + + case EM_LOONGARCH: + rtype = "R_LARCH_RELATIVE"; + break; + + case EM_M32R: + case EM_CYGNUS_M32R: + rtype = "R_M32R_RELATIVE"; + break; + + case EM_MCORE: + rtype = "R_MCORE_RELATIVE"; + break; + + case EM_METAG: + rtype = "R_METAG_RELATIVE"; + break; + + case EM_MN10300: + case EM_CYGNUS_MN10300: + rtype = "R_MN10300_RELATIVE"; + break; + + case EM_NDS32: + rtype = "R_NDS32_RELATIVE"; + break; + + case EM_OR1K: + rtype = "R_OR1K_RELATIVE"; + break; + + case EM_PPC: + rtype = "R_PPC_RELATIVE"; + break; + + case EM_PPC64: + rtype = "R_PPC64_RELATIVE"; + break; + + case EM_RISCV: + rtype = "R_RISCV_RELATIVE"; + break; + + case EM_S370: + rtype = "R_I370_RELATIVE"; + break; + + case EM_S390_OLD: + case EM_S390: + rtype = "R_390_RELATIVE"; + break; + + case EM_SH: + rtype = "R_SH_RELATIVE"; + break; + + case EM_OLD_SPARCV9: + case EM_SPARC32PLUS: + case EM_SPARCV9: + case EM_SPARC: + rtype = "R_SPARC_RELATIVE"; + break; + + case EM_TILEGX: + rtype = "R_TILEGX_RELATIVE"; + break; + + case EM_TILEPRO: + rtype = "R_TILEPRO_RELATIVE"; + break; + + case EM_V850: + case EM_CYGNUS_V850: + rtype = "R_V850_RELATIVE"; + break; + + case EM_VAX: + rtype = "R_VAX_RELATIVE"; + break; + + case EM_X86_64: + case EM_L1OM: + case EM_K1OM: + rtype = "R_X86_64_RELATIVE"; + break; + + case EM_XTENSA_OLD: + case EM_XTENSA: + rtype = "R_XTENSA_RELATIVE"; + break; + } + + Elf_Internal_Sym *symtab = NULL; + if (symtab_p != NULL) { /* Symbol tables are not sorted on address, but we want a quick lookup for the symbol associated with each address computed below, so sort - the table then filter out unwanted entries. FIXME: This assumes that - the symbol table will not be used later on for some other purpose. */ + the table then filter out unwanted entries. */ + size_t sz = nsyms * sizeof (*symtab); + symtab = xmemdup (symtab_p, sz, sz); qsort (symtab, nsyms, sizeof (Elf_Internal_Sym), symcmp); nsyms = filter_display_syms (filedata, symtab, nsyms, strtab, strtablen); } - if (relr_entsize == sizeof (Elf32_External_Relr)) - printf (_ ("Index: Entry Address Symbolic Address\n")); - else - printf (_ ("Index: Entry Address Symbolic Address\n")); + if (dump_reloc) + { + if (relr_entsize == sizeof (Elf32_External_Relr)) + printf (_ ("Index: Entry Address Symbolic Address\n")); + else + printf (_ ("Index: Entry Address Symbolic Address\n")); + } + uint64_t r = 0; for (i = 0; i < nentries; i++) { uint64_t entry; @@ -1899,16 +2109,34 @@ dump_relr_relocations (Filedata * filedata, else entry = BYTE_GET (((Elf64_External_Relr *)relrs)[i].r_data); - /* We assume that there will never be more than 9999 entries. */ - printf (_("%04u: "), (unsigned int) i); - print_vma (entry, ZERO_HEX); - printf (" "); + if (dump_reloc) + { + /* We assume that there will never be more than 9999 + entries. */ + printf (_("%04u: "), (unsigned int) i); + print_vma (entry, ZERO_HEX); + printf (" "); + } if ((entry & 1) == 0) { where = entry; - print_relr_addr_and_sym (filedata, symtab, nsyms, strtab, where); - printf ("\n"); + if (dump_reloc) + { + print_relr_addr_and_sym (filedata, symtab, nsyms, strtab, + where); + printf ("\n"); + } + + if (do_got_section_contents) + { + all_relocations[r].r_offset = where; + all_relocations[r].r_name = rtype; + all_relocations[r].r_symbol = NULL; + all_relocations[r].r_type = reltype_relr; + r++; + } + where += relr_entsize; } else @@ -1921,7 +2149,7 @@ dump_relr_relocations (Filedata * filedata, /* This can actually happen when the linker is allowed to shrink RELR sections. For more details see: https://reviews.llvm.org/D67164. */ continue; - else if (i == 0) + else if (dump_reloc && i == 0) warn (_("Unusual RELR bitmap - no previous entry to set the base address\n")); for (j = 0; entry >>= 1; j++) @@ -1929,29 +2157,47 @@ dump_relr_relocations (Filedata * filedata, { uint64_t addr = where + (j * relr_entsize); - if (first) + if (dump_reloc) { - print_relr_addr_and_sym (filedata, symtab, nsyms, strtab, addr); - first = false; + if (first) + { + print_relr_addr_and_sym (filedata, symtab, nsyms, + strtab, addr); + first = false; + } + else + { + printf (_("\n%*s "), + relr_entsize == 4 ? 15 : 23, " "); + print_relr_addr_and_sym (filedata, symtab, nsyms, + strtab, addr); + } } - else + + if (do_got_section_contents) { - printf (_("\n%*s "), relr_entsize == 4 ? 15 : 23, " "); - print_relr_addr_and_sym (filedata, symtab, nsyms, strtab, addr); + all_relocations[r].r_offset = addr; + all_relocations[r].r_name = rtype; + all_relocations[r].r_symbol = NULL; + all_relocations[r].r_type = reltype_relr; + r++; } } - printf ("\n"); + if (dump_reloc) + printf ("\n"); where += num_bits_in_entry * relr_entsize; } } + free (symtab); free (relrs); return true; } /* Display the contents of the relocation data found at the specified - offset. */ + offset. If DUMP_RELOC is false, don't display relocations, just + collect relocations for displaying GOT section contents later. */ static bool dump_relocations (Filedata * filedata, @@ -1962,7 +2208,8 @@ dump_relocations (Filedata * filedata, char * strtab, uint64_t strtablen, relocation_type rel_type, - bool is_dynsym) + bool is_dynsym, + bool dump_reloc) { size_t i; Elf_Internal_Rela * rels; @@ -1987,26 +2234,26 @@ dump_relocations (Filedata * filedata, return false; } - if (is_32bit_elf) + if (dump_reloc) { - if (rel_type == reltype_rela) - { - if (do_wide) - printf (_(" Offset Info Type Sym. Value Symbol's Name + Addend\n")); - else - printf (_(" Offset Info Type Sym.Value Sym. Name + Addend\n")); - } - else + if (is_32bit_elf) { - if (do_wide) - printf (_(" Offset Info Type Sym. Value Symbol's Name\n")); + if (rel_type == reltype_rela) + { + if (do_wide) + printf (_(" Offset Info Type Sym. Value Symbol's Name + Addend\n")); + else + printf (_(" Offset Info Type Sym.Value Sym. Name + Addend\n")); + } else - printf (_(" Offset Info Type Sym.Value Sym. Name\n")); + { + if (do_wide) + printf (_(" Offset Info Type Sym. Value Symbol's Name\n")); + else + printf (_(" Offset Info Type Sym.Value Sym. Name\n")); + } } - } - else - { - if (rel_type == reltype_rela) + else if (rel_type == reltype_rela) { if (do_wide) printf (_(" Offset Info Type Symbol's Value Symbol's Name + Addend\n")); @@ -2036,18 +2283,16 @@ dump_relocations (Filedata * filedata, type = get_reloc_type (filedata, inf); symtab_index = get_reloc_symindex (inf); - if (is_32bit_elf) - { - printf ("%8.8lx %8.8lx ", - (unsigned long) offset & 0xffffffff, - (unsigned long) inf & 0xffffffff); - } - else + if (dump_reloc) { - printf (do_wide - ? "%16.16" PRIx64 " %16.16" PRIx64 " " - : "%12.12" PRIx64 " %12.12" PRIx64 " ", - offset, inf); + if (is_32bit_elf) + printf ("%8.8" PRIx32 " %8.8" PRIx32 " ", + (uint32_t) offset, (uint32_t) inf); + else + printf (do_wide + ? "%16.16" PRIx64 " %16.16" PRIx64 " " + : "%12.12" PRIx64 " %12.12" PRIx64 " ", + offset, inf); } switch (filedata->file_header.e_machine) @@ -2397,10 +2642,15 @@ dump_relocations (Filedata * filedata, break; } - if (rtype == NULL) - printf (_("unrecognized: %-7lx"), (unsigned long) type & 0xffffffff); - else - printf (do_wide ? "%-22s" : "%-17.17s", rtype); + char *symbol_name = NULL; + if (dump_reloc) + { + if (rtype == NULL) + printf (_("unrecognized: %-7lx"), + (unsigned long) type & 0xffffffff); + else + printf (do_wide ? "%-22s" : "%-17.17s", rtype); + } if (filedata->file_header.e_machine == EM_ALPHA && rtype != NULL @@ -2419,23 +2669,29 @@ dump_relocations (Filedata * filedata, default: rtype = NULL; } - if (rtype) - printf (" (%s)", rtype); - else + if (dump_reloc) { - putchar (' '); - printf (_("<unknown addend: %" PRIx64 ">"), - rels[i].r_addend); - res = false; + if (rtype) + printf (" (%s)", rtype); + else + { + putchar (' '); + printf (_("<unknown addend: %" PRIx64 ">"), + rels[i].r_addend); + res = false; + } } } else if (symtab_index) { if (symtab == NULL || symtab_index >= nsyms) { - error (_(" bad symbol index: %08lx in reloc\n"), - (unsigned long) symtab_index); - res = false; + if (dump_reloc) + { + error (_(" bad symbol index: %08lx in reloc\n"), + (unsigned long) symtab_index); + res = false; + } } else { @@ -2454,7 +2710,8 @@ dump_relocations (Filedata * filedata, &sym_info, &vna_other); - printf (" "); + if (dump_reloc) + printf (" "); if (ELF_ST_TYPE (psym->st_info) == STT_GNU_IFUNC) { @@ -2479,13 +2736,30 @@ dump_relocations (Filedata * filedata, else name = strtab + psym->st_name; - len = print_symbol_name (width, name); - if (version_string) - printf (sym_info == symbol_public ? "@@%s" : "@%s", - version_string); - printf ("()%-*s", len <= width ? (width + 1) - len : 1, " "); + if (do_got_section_contents) + { + if (version_string) + symbol_name = concat (name, + sym_info == symbol_public + ? "@@" : "@", + version_string, NULL); + else + symbol_name = xstrdup (name); + } + + if (dump_reloc) + { + len = print_symbol_name (width, name); + if (version_string) + printf (sym_info == symbol_public + ? "@@%s" : "@%s", + version_string); + printf ("()%-*s", + len <= width ? (width + 1) - len : 1, + " "); + } } - else + else if (dump_reloc) { print_vma (psym->st_value, LONG_HEX); @@ -2500,25 +2774,49 @@ dump_relocations (Filedata * filedata, sec_name = printable_section_name_from_index (filedata, psym->st_shndx, NULL); - print_symbol_name (22, sec_name); + if (do_got_section_contents) + symbol_name = xstrdup (sec_name); + if (dump_reloc) + print_symbol_name (22, sec_name); } else if (strtab == NULL) - printf (_("<string table index: %3ld>"), psym->st_name); + { + if (dump_reloc) + printf (_("<string table index: %3ld>"), + psym->st_name); + } else if (psym->st_name >= strtablen) { - error (_("<corrupt string table index: %3ld>\n"), - psym->st_name); - res = false; + if (dump_reloc) + { + error (_("<corrupt string table index: %3ld>\n"), + psym->st_name); + res = false; + } } else { - print_symbol_name (22, strtab + psym->st_name); - if (version_string) - printf (sym_info == symbol_public ? "@@%s" : "@%s", - version_string); + if (dump_reloc) + { + print_symbol_name (22, strtab + psym->st_name); + if (version_string) + printf (sym_info == symbol_public + ? "@@%s" : "@%s", + version_string); + } + if (do_got_section_contents) + { + if (version_string) + symbol_name = concat (strtab + psym->st_name, + sym_info == symbol_public + ? "@@" : "@", + version_string, NULL); + else + symbol_name = xstrdup (strtab + psym->st_name); + } } - if (rel_type == reltype_rela) + if (dump_reloc && rel_type == reltype_rela) { uint64_t off = rels[i].r_addend; @@ -2529,7 +2827,7 @@ dump_relocations (Filedata * filedata, } } } - else if (rel_type == reltype_rela) + else if (dump_reloc && rel_type == reltype_rela) { uint64_t off = rels[i].r_addend; @@ -2540,37 +2838,50 @@ dump_relocations (Filedata * filedata, printf ("%" PRIx64, off); } - if (filedata->file_header.e_machine == EM_SPARCV9 - && rtype != NULL - && streq (rtype, "R_SPARC_OLO10")) - printf (" + %" PRIx64, ELF64_R_TYPE_DATA (inf)); - - putchar ('\n'); + if (do_got_section_contents) + { + all_relocations[i].r_offset = offset; + all_relocations[i].r_name = rtype; + all_relocations[i].r_symbol = symbol_name; + all_relocations[i].r_addend = rels[i].r_addend; + all_relocations[i].r_type = rel_type; + } - if (! is_32bit_elf && filedata->file_header.e_machine == EM_MIPS) + if (dump_reloc) { - uint64_t type2 = ELF64_MIPS_R_TYPE2 (inf); - uint64_t type3 = ELF64_MIPS_R_TYPE3 (inf); - const char * rtype2 = elf_mips_reloc_type (type2); - const char * rtype3 = elf_mips_reloc_type (type3); + if (filedata->file_header.e_machine == EM_SPARCV9 + && rtype != NULL + && streq (rtype, "R_SPARC_OLO10")) + printf (" + %" PRIx64, ELF64_R_TYPE_DATA (inf)); - printf (" Type2: "); + putchar ('\n'); - if (rtype2 == NULL) - printf (_("unrecognized: %-7lx"), - (unsigned long) type2 & 0xffffffff); - else - printf ("%-17.17s", rtype2); + if (! is_32bit_elf + && filedata->file_header.e_machine == EM_MIPS) + { + uint64_t type2 = ELF64_MIPS_R_TYPE2 (inf); + uint64_t type3 = ELF64_MIPS_R_TYPE3 (inf); + const char * rtype2 = elf_mips_reloc_type (type2); + const char * rtype3 = elf_mips_reloc_type (type3); - printf ("\n Type3: "); + printf (" Type2: "); - if (rtype3 == NULL) - printf (_("unrecognized: %-7lx"), - (unsigned long) type3 & 0xffffffff); - else - printf ("%-17.17s", rtype3); + if (rtype2 == NULL) + printf (_("unrecognized: %-7lx"), + (unsigned long) type2 & 0xffffffff); + else + printf ("%-17.17s", rtype2); - putchar ('\n'); + printf ("\n Type3: "); + + if (rtype3 == NULL) + printf (_("unrecognized: %-7lx"), + (unsigned long) type3 & 0xffffffff); + else + printf ("%-17.17s", rtype3); + + putchar ('\n'); + } } } @@ -6098,7 +6409,8 @@ enum long_option_values OPTION_NO_RECURSE_LIMIT, OPTION_NO_DEMANGLING, OPTION_NO_EXTRA_SYM_INFO, - OPTION_SYM_BASE + OPTION_SYM_BASE, + OPTION_GOT_CONTENTS }; static struct option options[] = @@ -6161,6 +6473,7 @@ static struct option options[] = #endif {"sframe", optional_argument, 0, OPTION_SFRAME_DUMP}, {"sym-base", optional_argument, 0, OPTION_SYM_BASE}, + {"got-contents", no_argument, 0, OPTION_GOT_CONTENTS}, {0, no_argument, 0, 0} }; @@ -6172,7 +6485,7 @@ usage (FILE * stream) fprintf (stream, _(" Display information about the contents of ELF format files\n")); fprintf (stream, _(" Options are:\n")); fprintf (stream, _("\ - -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n")); + -a --all Equivalent to: -h -l -S -s -r -d -V -A -I --got-contents\n")); fprintf (stream, _("\ -h --file-header Display the ELF file header\n")); fprintf (stream, _("\ @@ -6318,6 +6631,8 @@ usage (FILE * stream) fprintf (stream, _("\ -I --histogram Display histogram of bucket list lengths\n")); fprintf (stream, _("\ + --got-contents Display GOT section contents\n")); + fprintf (stream, _("\ -W --wide Allow output width to exceed 80 characters\n")); fprintf (stream, _("\ -T --silent-truncation If a symbol name is truncated, do not add [...] suffix\n")); @@ -6442,6 +6757,7 @@ parse_args (struct dump_data *dumpdata, int argc, char ** argv) do_histogram = true; do_arch = true; do_notes = true; + do_got_section_contents = true; break; case 'g': @@ -6701,6 +7017,11 @@ parse_args (struct dump_data *dumpdata, int argc, char ** argv) } break; + case OPTION_GOT_CONTENTS: + do_got_section_contents = true; + do_dump = true; + break; + default: /* xgettext:c-format */ error (_("Invalid option '-%c'\n"), c); @@ -9438,7 +9759,8 @@ rel_type_from_sh_type (unsigned int sh_type) static bool display_relocations (Elf_Internal_Shdr * section, - Filedata * filedata) + Filedata * filedata, + bool dump_reloc) { relocation_type rel_type = rel_type_from_sh_type (section->sh_type); @@ -9450,19 +9772,24 @@ display_relocations (Elf_Internal_Shdr * section, if (rel_size == 0) return false; - if (filedata->is_separate) - printf (_("\nIn linked file '%s' relocation section "), - printable_string (filedata->file_name, 0)); - else - printf (_("\nRelocation section ")); + if (dump_reloc) + { + if (filedata->is_separate) + printf (_("\nIn linked file '%s' relocation section "), + printable_string (filedata->file_name, 0)); + else + printf (_("\nRelocation section ")); - if (filedata->string_table == NULL) - printf ("%d", section->sh_name); - else - printf ("'%s'", printable_section_name (filedata, section)); + if (filedata->string_table == NULL) + printf ("%d", section->sh_name); + else + printf ("'%s'", printable_section_name (filedata, section)); + } - uint64_t num_rela = rel_size / section->sh_entsize; uint64_t rel_offset = section->sh_offset; + uint64_t num_rela = rel_size / section->sh_entsize; + uint64_t num_reloc; + uint64_t *relrs = NULL; if (rel_type == reltype_relr) { @@ -9471,26 +9798,33 @@ display_relocations (Elf_Internal_Shdr * section, the number of words in the compressed RELR format. So also provide the number of locations affected. */ - uint64_t num_reloc = count_relr_relocations (filedata, section); + num_reloc = count_relr_relocations (filedata, section, &relrs); - printf (_(" at offset %#" PRIx64), rel_offset); - printf (ngettext (" contains %" PRIu64 " entry which relocates", - " contains %" PRIu64 " entries which relocate", - num_rela), num_rela); - printf (ngettext (" %" PRIu64 " location:\n", - " %" PRIu64 " locations:\n", - num_reloc), num_reloc); + if (dump_reloc) + { + printf (_(" at offset %#" PRIx64), rel_offset); + printf (ngettext (" contains %" PRIu64 " entry which relocates", + " contains %" PRIu64 " entries which relocate", + num_rela), num_rela); + printf (ngettext (" %" PRIu64 " location:\n", + " %" PRIu64 " locations:\n", + num_reloc), num_reloc); + } } else { - printf (ngettext (" at offset %#" PRIx64 - " contains %" PRIu64 " entry:\n", - " at offset %#" PRIx64 - " contains %" PRIu64 " entries:\n", - num_rela), - rel_offset, num_rela); + num_reloc = num_rela; + if (dump_reloc) + printf (ngettext (" at offset %#" PRIx64 + " contains %" PRIu64 " entry:\n", + " at offset %#" PRIx64 + " contains %" PRIu64 " entries:\n", + num_rela), + rel_offset, num_rela); } + update_all_relocations (num_reloc); + Elf_Internal_Shdr * symsec; Elf_Internal_Sym * symtab = NULL; uint64_t nsyms = 0; @@ -9522,12 +9856,23 @@ display_relocations (Elf_Internal_Shdr * section, bool res; if (rel_type == reltype_relr) - res = dump_relr_relocations (filedata, section, symtab, nsyms, strtab, strtablen); + { + res = dump_relr_relocations (filedata, section->sh_size, + section->sh_entsize, + section->sh_offset, + relrs, + symtab, nsyms, strtab, strtablen, + dump_reloc); + /* RELRS has been freed by dump_relr_relocations. */ + relrs = NULL; + } else res = dump_relocations (filedata, rel_offset, rel_size, symtab, nsyms, strtab, strtablen, rel_type, - symsec == NULL ? false : symsec->sh_type == SHT_DYNSYM); + symsec == NULL + ? false : symsec->sh_type == SHT_DYNSYM, + dump_reloc); free (strtab); free (symtab); @@ -9541,14 +9886,16 @@ process_relocs (Filedata * filedata) { uint64_t rel_size; uint64_t rel_offset; + unsigned int rel_entsz; - if (!do_reloc) + if (!do_reloc && !do_got_section_contents) return true; if (do_using_dynamic) { relocation_type rel_type; const char * name; + const char * entsz_name; bool has_dynamic_reloc; unsigned int i; @@ -9556,57 +9903,104 @@ process_relocs (Filedata * filedata) for (i = 0; i < ARRAY_SIZE (dynamic_relocations); i++) { + rel_size = filedata->dynamic_info[dynamic_relocations [i].size]; + + if (!rel_size) + continue; + + has_dynamic_reloc = true; + rel_type = dynamic_relocations [i].rel_type; name = dynamic_relocations [i].name; - rel_size = filedata->dynamic_info[dynamic_relocations [i].size]; rel_offset = filedata->dynamic_info[dynamic_relocations [i].reloc]; - if (rel_size) - has_dynamic_reloc = true; - if (rel_type == reltype_unknown) { - if (dynamic_relocations [i].reloc == DT_JMPREL) - switch (filedata->dynamic_info[DT_PLTREL]) - { - case DT_REL: - rel_type = reltype_rel; - break; - case DT_RELA: - rel_type = reltype_rela; - break; - } + if (dynamic_relocations [i].reloc != DT_JMPREL) + abort (); + switch (filedata->dynamic_info[DT_PLTREL]) + { + case DT_REL: + rel_type = reltype_rel; + break; + case DT_RELA: + rel_type = reltype_rela; + break; + } + } + + switch (rel_type) + { + default: + abort (); + case reltype_rel: + rel_entsz = filedata->dynamic_info[DT_RELENT]; + entsz_name = "DT_RELENT"; + break; + case reltype_rela: + rel_entsz = filedata->dynamic_info[DT_RELAENT]; + entsz_name = "DT_RELAENT"; + break; + case reltype_relr: + rel_entsz = filedata->dynamic_info[DT_RELRENT]; + entsz_name = "DT_RELRENT"; + break; } - if (rel_size) + if (do_reloc) { if (filedata->is_separate) printf - (_("\nIn linked file '%s' section '%s' at offset %#" PRIx64 - " contains %" PRId64 " bytes:\n"), + (_("\nIn linked file '%s' section '%s' at offset" + "%#" PRIx64 " contains %" PRId64 " bytes:\n"), filedata->file_name, name, rel_offset, rel_size); else printf (_("\n'%s' relocation section at offset %#" PRIx64 " contains %" PRId64 " bytes:\n"), name, rel_offset, rel_size); + } + + if (rel_type == reltype_relr) + dump_relr_relocations (filedata, + filedata->dynamic_info[DT_RELRSZ], + filedata->dynamic_info[DT_RELRENT], + filedata->dynamic_info[DT_RELR], + NULL, + filedata->dynamic_symbols, + filedata->num_dynamic_syms, + filedata->dynamic_strings, + filedata->dynamic_strings_length, + do_reloc); + else + { + if (rel_entsz == 0) + { + printf (_("<missing or corrupt dynamic tag: %s>\n"), + entsz_name); + continue; + } + + update_all_relocations (rel_size / rel_entsz); dump_relocations (filedata, - offset_from_vma (filedata, rel_offset, rel_size), + offset_from_vma (filedata, rel_offset, + rel_size), rel_size, filedata->dynamic_symbols, filedata->num_dynamic_syms, filedata->dynamic_strings, filedata->dynamic_strings_length, - rel_type, true /* is_dynamic */); + rel_type, true /* is_dynamic */, + do_reloc); } } - if (is_ia64_vms (filedata)) - if (process_ia64_vms_dynamic_relocs (filedata)) - has_dynamic_reloc = true; + if (is_ia64_vms (filedata) + && process_ia64_vms_dynamic_relocs (filedata)) + has_dynamic_reloc = true; - if (! has_dynamic_reloc) + if (do_reloc && ! has_dynamic_reloc) { if (filedata->is_separate) printf (_("\nThere are no dynamic relocations in linked file '%s'.\n"), @@ -9625,11 +10019,11 @@ process_relocs (Filedata * filedata) i < filedata->file_header.e_shnum; i++, section++) { - if (display_relocations (section, filedata)) + if (display_relocations (section, filedata, do_reloc)) found = true; } - if (! found) + if (do_reloc && ! found) { /* Users sometimes forget the -D option, so try to be helpful. */ for (i = 0; i < ARRAY_SIZE (dynamic_relocations); i++) @@ -17613,7 +18007,7 @@ process_section_contents (Filedata * filedata) case SHT_RELA: case SHT_REL: case SHT_RELR: - res &= display_relocations (section, filedata); + res &= display_relocations (section, filedata, true); break; case SHT_NOTE: @@ -19630,8 +20024,11 @@ get_mips_reg_size (int reg_size) : -1; } +/* If DUMP_GOT is true, display only the GOT related contents. + Otherwise, display all MIPS specific information. */ + static bool -process_mips_specific (Filedata * filedata) +process_mips_specific (Filedata * filedata, bool dump_got) { Elf_Internal_Dyn * entry; Elf_Internal_Shdr *sect = NULL; @@ -19650,60 +20047,63 @@ process_mips_specific (Filedata * filedata) uint64_t symtabno = 0; bool res = true; - if (! process_attributes (filedata, NULL, SHT_GNU_ATTRIBUTES, NULL, - display_mips_gnu_attribute)) - res = false; - - sect = find_section (filedata, ".MIPS.abiflags"); - - if (sect != NULL) + if (!dump_got) { - Elf_External_ABIFlags_v0 *abiflags_ext; - Elf_Internal_ABIFlags_v0 abiflags_in; + if (! process_attributes (filedata, NULL, SHT_GNU_ATTRIBUTES, NULL, + display_mips_gnu_attribute)) + res = false; - if (sizeof (Elf_External_ABIFlags_v0) != sect->sh_size) - { - error (_("Corrupt MIPS ABI Flags section.\n")); - res = false; - } - else + sect = find_section (filedata, ".MIPS.abiflags"); + + if (sect != NULL) { - abiflags_ext = get_data (NULL, filedata, sect->sh_offset, 1, - sect->sh_size, _("MIPS ABI Flags section")); - if (abiflags_ext) + Elf_External_ABIFlags_v0 *abiflags_ext; + Elf_Internal_ABIFlags_v0 abiflags_in; + + if (sizeof (Elf_External_ABIFlags_v0) != sect->sh_size) { - abiflags_in.version = BYTE_GET (abiflags_ext->version); - abiflags_in.isa_level = BYTE_GET (abiflags_ext->isa_level); - abiflags_in.isa_rev = BYTE_GET (abiflags_ext->isa_rev); - abiflags_in.gpr_size = BYTE_GET (abiflags_ext->gpr_size); - abiflags_in.cpr1_size = BYTE_GET (abiflags_ext->cpr1_size); - abiflags_in.cpr2_size = BYTE_GET (abiflags_ext->cpr2_size); - abiflags_in.fp_abi = BYTE_GET (abiflags_ext->fp_abi); - abiflags_in.isa_ext = BYTE_GET (abiflags_ext->isa_ext); - abiflags_in.ases = BYTE_GET (abiflags_ext->ases); - abiflags_in.flags1 = BYTE_GET (abiflags_ext->flags1); - abiflags_in.flags2 = BYTE_GET (abiflags_ext->flags2); - - printf ("\nMIPS ABI Flags Version: %d\n", abiflags_in.version); - printf ("\nISA: MIPS%d", abiflags_in.isa_level); - if (abiflags_in.isa_rev > 1) - printf ("r%d", abiflags_in.isa_rev); - printf ("\nGPR size: %d", - get_mips_reg_size (abiflags_in.gpr_size)); - printf ("\nCPR1 size: %d", - get_mips_reg_size (abiflags_in.cpr1_size)); - printf ("\nCPR2 size: %d", - get_mips_reg_size (abiflags_in.cpr2_size)); - fputs ("\nFP ABI: ", stdout); - print_mips_fp_abi_value (abiflags_in.fp_abi); - fputs ("ISA Extension: ", stdout); - print_mips_isa_ext (abiflags_in.isa_ext); - fputs ("\nASEs:", stdout); - print_mips_ases (abiflags_in.ases); - printf ("\nFLAGS 1: %8.8lx", abiflags_in.flags1); - printf ("\nFLAGS 2: %8.8lx", abiflags_in.flags2); - fputc ('\n', stdout); - free (abiflags_ext); + error (_("Corrupt MIPS ABI Flags section.\n")); + res = false; + } + else + { + abiflags_ext = get_data (NULL, filedata, sect->sh_offset, 1, + sect->sh_size, _("MIPS ABI Flags section")); + if (abiflags_ext) + { + abiflags_in.version = BYTE_GET (abiflags_ext->version); + abiflags_in.isa_level = BYTE_GET (abiflags_ext->isa_level); + abiflags_in.isa_rev = BYTE_GET (abiflags_ext->isa_rev); + abiflags_in.gpr_size = BYTE_GET (abiflags_ext->gpr_size); + abiflags_in.cpr1_size = BYTE_GET (abiflags_ext->cpr1_size); + abiflags_in.cpr2_size = BYTE_GET (abiflags_ext->cpr2_size); + abiflags_in.fp_abi = BYTE_GET (abiflags_ext->fp_abi); + abiflags_in.isa_ext = BYTE_GET (abiflags_ext->isa_ext); + abiflags_in.ases = BYTE_GET (abiflags_ext->ases); + abiflags_in.flags1 = BYTE_GET (abiflags_ext->flags1); + abiflags_in.flags2 = BYTE_GET (abiflags_ext->flags2); + + printf ("\nMIPS ABI Flags Version: %d\n", abiflags_in.version); + printf ("\nISA: MIPS%d", abiflags_in.isa_level); + if (abiflags_in.isa_rev > 1) + printf ("r%d", abiflags_in.isa_rev); + printf ("\nGPR size: %d", + get_mips_reg_size (abiflags_in.gpr_size)); + printf ("\nCPR1 size: %d", + get_mips_reg_size (abiflags_in.cpr1_size)); + printf ("\nCPR2 size: %d", + get_mips_reg_size (abiflags_in.cpr2_size)); + fputs ("\nFP ABI: ", stdout); + print_mips_fp_abi_value (abiflags_in.fp_abi); + fputs ("ISA Extension: ", stdout); + print_mips_isa_ext (abiflags_in.isa_ext); + fputs ("\nASEs:", stdout); + print_mips_ases (abiflags_in.ases); + printf ("\nFLAGS 1: %8.8lx", abiflags_in.flags1); + printf ("\nFLAGS 2: %8.8lx", abiflags_in.flags2); + fputc ('\n', stdout); + free (abiflags_ext); + } } } } @@ -19851,7 +20251,7 @@ process_mips_specific (Filedata * filedata) break; } - if (liblist_offset != 0 && liblistno != 0 && do_dynamic) + if (!dump_got && liblist_offset != 0 && liblistno != 0 && do_dynamic) { Elf32_External_Lib * elib; size_t cnt; @@ -19936,7 +20336,7 @@ process_mips_specific (Filedata * filedata) res = false; } - if (options_offset != 0) + if (!dump_got && options_offset != 0) { Elf_External_Options * eopt; size_t offset; @@ -20185,7 +20585,7 @@ process_mips_specific (Filedata * filedata) res = false; } - if (conflicts_offset != 0 && conflictsno != 0) + if (!dump_got && conflicts_offset != 0 && conflictsno != 0) { Elf32_Conflict * iconf; size_t cnt; @@ -20544,6 +20944,229 @@ process_nds32_specific (Filedata * filedata) return true; } +static int +elf_relocation_cmp (const void *p, const void *q) +{ + const elf_relocation *rp = (const elf_relocation *) p; + const elf_relocation *rq = (const elf_relocation *) q; + + return (rp->r_offset > rq->r_offset + ? 1 + : (rp->r_offset < rq->r_offset ? -1 : 0)); +} + +static void +display_elf_relocation_at (uint64_t offset, uint64_t g) +{ + bool matched = false; + + for (size_t i = 0; i < all_relocations_count; i++) + if (all_relocations_root[i].r_offset == offset) + { + if (do_wide) + printf (" %-22s", all_relocations_root[i].r_name); + else + printf (" %-17.17s", all_relocations_root[i].r_name); + + uint64_t off; + switch (all_relocations_root[i].r_type) + { + default: + abort (); + case reltype_rel: + case reltype_relr: + off = g; + break; + case reltype_rela: + off = all_relocations_root[i].r_addend; + break; + } + + if (all_relocations_root[i].r_symbol) + { + printf (" %s", all_relocations_root[i].r_symbol); + if ((int64_t) off < 0) + printf (" - %" PRIx64, -off); + else + printf (" + %" PRIx64, off); + } + else + { + if ((int64_t) off < 0) + printf (" -%" PRIx64, -off); + else + printf (" %" PRIx64, off); + } + + matched = true; + break; + } + else if (all_relocations_root[i].r_offset > offset) + break; + + if (!matched) + { + if (do_wide) + printf ("%*c", 24, ' '); + else + printf ("%*c", 19, ' '); + printf ("%" PRIx64, g); + } +} + +static bool +process_got_section_contents (Filedata * filedata) +{ + Elf_Internal_Shdr * section; + unsigned int i; + uint64_t entries; + unsigned char *data; + bool res = true; + bool found = false; + + if (!do_got_section_contents) + return res; + + switch (filedata->file_header.e_type) + { + case ET_DYN: + case ET_EXEC: + break; + default: + goto out; + } + + switch (filedata->file_header.e_machine) + { + case EM_MIPS: + case EM_MIPS_RS3_LE: + /* process_mips_specific also displays GOT related contents. */ + if (!do_arch) + res = process_mips_specific (filedata, true); + found = true; + goto out; + } + + if (all_relocations_count > 1) + qsort (all_relocations_root, all_relocations_count, + sizeof (elf_relocation), elf_relocation_cmp); + + initialise_dumps_byname (filedata); + + for (i = 0, section = filedata->section_headers; + i < filedata->file_header.e_shnum; + i++, section++) + if (section->sh_type == SHT_PROGBITS + && section->sh_size != 0) + { + const char *name = printable_section_name (filedata, section); + + if (!startswith (name, ".got")) + continue; + + found = true; + + data = (unsigned char *) get_section_contents (section, + filedata); + if (data == NULL) + { + res = false; + goto out; + } + + uint32_t entsz = section->sh_entsize; + entries = section->sh_size / entsz; + if (entries == 1) + printf (_("\nGlobal Offset Table '%s' contains 1 entry:\n"), + name); + else + printf (_("\nGlobal Offset Table '%s' contains %" PRIu64 + " entries:\n"), name, entries); + + uint64_t g; + + if (is_32bit_elf) + { + uint32_t j, n = entries; + uint32_t addr; + struct got32 + { + unsigned char bytes[4]; + } *got; + + if (do_wide) + printf (_(" Index: Address Reloc Sym. Name + Addend/Value\n")); + /* |---9---| |---8--| |---------22---------| |........... */ + else + printf (_(" Index: Address Reloc Sym. Name + Addend/Value\n")); + /* |--7--| |---8--| |-------17------| |........... */ + + addr = section->sh_addr; + got = (struct got32 *) data; + for (j = 0; j < n; j++) + { + g = BYTE_GET (got[j].bytes); + if (do_wide) + printf ("%8" PRIu32 ": %8.8" PRIx32, j, addr); + else + printf ("%6" PRIu32 ": %8.8" PRIx32, j, addr); + display_elf_relocation_at (addr, g); + putchar ('\n'); + addr += entsz; + } + } + else + { + uint64_t j, addr; + struct got64 + { + unsigned char bytes[4]; + } *got; + + if (do_wide) + printf (_(" Index: Address Reloc Sym. Name + Addend/Value\n")); + /* |---9---| |------16------| |---------22---------| |........... */ + else + printf (_(" Index: Address Reloc Sym. Name + Addend/Value\n")); + /* |--7--| |----12----| |------17-------| |........... */ + + addr = section->sh_addr; + got = (struct got64 *) data; + for (j = 0; j < entries; j++) + { + g = BYTE_GET (got[j].bytes); + if (do_wide) + printf ("%8" PRIu64 ": %16.16" PRIx64, j, addr); + else + printf ("%6" PRIu64 ": %12.12" PRIx64, j, addr); + display_elf_relocation_at (addr, g); + putchar ('\n'); + addr += entsz; + } + } + + free (data); + } + + out: + if (! found) + { + if (filedata->is_separate) + printf (_("\nThere is no GOT section in linked file '%s'.\n"), + filedata->file_name); + else + printf (_("\nThere is no GOT section in this file.\n")); + } + + for (size_t j = 0; j < all_relocations_count; j++) + free (all_relocations_root[j].r_symbol); + free (all_relocations_root); + all_relocations_root = NULL; + all_relocations = NULL; + all_relocations_count = 0; + return res; +} + static bool process_gnu_liblist (Filedata * filedata) { @@ -23455,7 +24078,7 @@ process_arch_specific (Filedata * filedata) case EM_MIPS: case EM_MIPS_RS3_LE: - return process_mips_specific (filedata); + return process_mips_specific (filedata, false); case EM_MSP430: return process_attributes (filedata, "mspabi", SHT_MSP430_ATTRIBUTES, @@ -23819,6 +24442,9 @@ process_object (Filedata * filedata) if (! process_section_contents (filedata)) res = false; + if (! process_got_section_contents (filedata)) + res = false; + if (have_separate_files) { separate_info * d; diff --git a/binutils/resbin.c b/binutils/resbin.c index fa77cd4..02905b9 100644 --- a/binutils/resbin.c +++ b/binutils/resbin.c @@ -1060,8 +1060,14 @@ get_version_header (windres_bfd *wrbfd, const bfd_byte *data, *vallen = windres_get_16 (wrbfd, data + 2); *type = windres_get_16 (wrbfd, data + 4); - *off = 6; + if (*len > length) + { + non_fatal (_("version length %lu greater than resource length %lu"), + (unsigned long) *len, (unsigned long) length); + return false; + } + *off = 6; length -= 6; data += 6; @@ -1101,6 +1107,14 @@ get_version_header (windres_bfd *wrbfd, const bfd_byte *data, } *off = (*off + 3) &~ 3; + + if (*len < *off) + { + non_fatal (_("version length %lu does not cover header length %lu"), + (unsigned long) *len, (unsigned long) *off); + return false; + } + return true; } @@ -1120,14 +1134,6 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, (unichar **) NULL, &verlen, &vallen, &type, &off)) return NULL; - /* PR 17512: The verlen field does not include padding length. */ - if (verlen > length) - { - non_fatal (_("version length %lu greater than resource length %lu"), - (unsigned long) verlen, (unsigned long) length); - return NULL; - } - if (type != 0) { non_fatal (_("unexpected version type %d"), (int) type); @@ -1311,7 +1317,7 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, if (stverlen < sverlen) { non_fatal (_("unexpected version string length %ld < %ld"), - (long) verlen, (long) sverlen); + (long) stverlen, (long) sverlen); return NULL; } stverlen -= sverlen; diff --git a/binutils/rescoff.c b/binutils/rescoff.c index 14546a4..efcdba4 100644 --- a/binutils/rescoff.c +++ b/binutils/rescoff.c @@ -308,6 +308,8 @@ read_coff_res_dir (windres_bfd *wrbfd, const bfd_byte *data, re->subdir = 1; re->u.dir = read_coff_res_dir (wrbfd, flaginfo->data + rva, flaginfo, type, level + 1); + if (re->u.dir == NULL) + return NULL; } else { @@ -319,6 +321,8 @@ read_coff_res_dir (windres_bfd *wrbfd, const bfd_byte *data, re->subdir = 0; re->u.res = read_coff_data_entry (wrbfd, flaginfo->data + rva, flaginfo, type); + if (re->u.res == NULL) + return NULL; } *pp = re; @@ -359,6 +363,8 @@ read_coff_res_dir (windres_bfd *wrbfd, const bfd_byte *data, re->subdir = 1; re->u.dir = read_coff_res_dir (wrbfd, flaginfo->data + rva, flaginfo, type, level + 1); + if (re->u.dir == NULL) + return NULL; } else { @@ -370,6 +376,8 @@ read_coff_res_dir (windres_bfd *wrbfd, const bfd_byte *data, re->subdir = 0; re->u.res = read_coff_data_entry (wrbfd, flaginfo->data + rva, flaginfo, type); + if (re->u.res == NULL) + return NULL; } *pp = re; diff --git a/binutils/strings.c b/binutils/strings.c index f5c022b..38da638 100644 --- a/binutils/strings.c +++ b/binutils/strings.c @@ -757,8 +757,8 @@ display_utf8_char (const unsigned char * buffer) case 4: printf ("\\u%02x%02x%02x", - ((buffer[0] & 0x07) << 6) | ((buffer[1] & 0x3c) >> 2), - ((buffer[1] & 0x03) << 6) | ((buffer[2] & 0x3c) >> 2), + ((buffer[0] & 0x07) << 2) | ((buffer[1] & 0x30) >> 4), + ((buffer[1] & 0x0f) << 4) | ((buffer[2] & 0x3c) >> 2), ((buffer[2] & 0x03) << 6) | ((buffer[3] & 0x3f))); break; default: diff --git a/binutils/testsuite/binutils-all/aarch64/pei-aarch64-little.d b/binutils/testsuite/binutils-all/aarch64/pei-aarch64-little.d index 27cb6e1..22f6649 100644 --- a/binutils/testsuite/binutils-all/aarch64/pei-aarch64-little.d +++ b/binutils/testsuite/binutils-all/aarch64/pei-aarch64-little.d @@ -1,7 +1,7 @@ #skip: aarch64_be-*-* #ld: -e0 #PROG: objcopy -#objcopy: -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* -j .reloc --target=efi-app-aarch64 +#objcopy: -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* -j .reloc --output-target=efi-app-aarch64 #objdump: -h -f #name: Check if efi app format is recognized diff --git a/binutils/testsuite/binutils-all/ar.exp b/binutils/testsuite/binutils-all/ar.exp index d06fe90..f38dce5 100644 --- a/binutils/testsuite/binutils-all/ar.exp +++ b/binutils/testsuite/binutils-all/ar.exp @@ -1013,8 +1013,8 @@ tek1.obj: *: no symbols tek2.obj: -00000001 D _binary_x_end -00000001 A _binary_x_size +00000003 D _binary_x_end +00000003 A _binary_x_size 00000000 D _binary_x_start } $got] { fail $testname diff --git a/binutils/testsuite/binutils-all/copy-7.d b/binutils/testsuite/binutils-all/copy-7.d new file mode 100644 index 0000000..ac8e756 --- /dev/null +++ b/binutils/testsuite/binutils-all/copy-7.d @@ -0,0 +1,14 @@ +#PROG: objcopy +#readelf: -tW +#name: copy with unknown section flag +#warning: .*/copy-7[.].*:[.]special: warning: retaining .* 0x10000 + +There are .* section headers, starting at offset .* + +Section Headers: + \[Nr\].* +#... + \[ [1-9]\] .special + PROGBITS .* + \[0+10000\]: UNKNOWN \(0+10000\) +#... diff --git a/binutils/testsuite/binutils-all/copy-7.s b/binutils/testsuite/binutils-all/copy-7.s new file mode 100644 index 0000000..0861c3c --- /dev/null +++ b/binutils/testsuite/binutils-all/copy-7.s @@ -0,0 +1,7 @@ + .globl text_symbol + .text +text_symbol: + .nop + + .section .special,"0x10000", %progbits + .long -1 diff --git a/binutils/testsuite/binutils-all/loongarch64/pei-loongarch64.d b/binutils/testsuite/binutils-all/loongarch64/pei-loongarch64.d index 574b3e5..61b026d 100644 --- a/binutils/testsuite/binutils-all/loongarch64/pei-loongarch64.d +++ b/binutils/testsuite/binutils-all/loongarch64/pei-loongarch64.d @@ -1,6 +1,6 @@ #ld: -e0 #PROG: objcopy -#objcopy: -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* -j .reloc --target=pei-loongarch64 +#objcopy: -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* -j .reloc --output-target=pei-loongarch64 #objdump: -h -f #name: Check if efi app format is recognized diff --git a/binutils/testsuite/binutils-all/nm.exp b/binutils/testsuite/binutils-all/nm.exp index c571520..fea68bf 100644 --- a/binutils/testsuite/binutils-all/nm.exp +++ b/binutils/testsuite/binutils-all/nm.exp @@ -304,7 +304,6 @@ if [is_elf_format] { setup_xfail "msp430*-*-*" setup_xfail "kvx*-*-*" setup_xfail "visium*-*-*" - setup_xfail "x86_64-*-cloudabi*" set testname "nm --ifunc-chars" if {![binutils_assemble $srcdir/$subdir/ifunc.s tmpdir/ifunc.o]} then { diff --git a/binutils/testsuite/binutils-all/objcopy.exp b/binutils/testsuite/binutils-all/objcopy.exp index 89370bc..c5ff1e3 100644 --- a/binutils/testsuite/binutils-all/objcopy.exp +++ b/binutils/testsuite/binutils-all/objcopy.exp @@ -1313,6 +1313,7 @@ if [is_elf_format] { run_dump_test "group-7b" run_dump_test "group-7c" run_dump_test "copy-1" + run_dump_test "copy-7" run_dump_test "note-1" # Use copytest.o from the note-1 test to determine ELF32 or ELF64 if [is_elf64 tmpdir/copytest.o] { @@ -1462,18 +1463,23 @@ proc objcopy_test_without_global_symbol { } { global OBJDUMPFLAGS global srcdir global subdir + global CFLAGS_FOR_TARGET set test "strip without global symbol " - if { [target_compile $srcdir/$subdir/pr19547.c tmpdir/pr19547.o object debug] != "" } { + set opts "debug" + if [string match "*-fsanitize=*" $CFLAGS_FOR_TARGET] { + append opts " additional_flags=-fno-sanitize=all" + } + + set objfile tmpdir/pr19547.o + if { [target_compile $srcdir/$subdir/pr19547.c $objfile object $opts] != "" } { untested $test return } if [is_remote host] { - set objfile [remote_download host tmpdir/pr19547.o] - } else { - set objfile tmpdir/pr19547.o + set objfile [remote_download host $objfile] } set exec_output [binutils_run $OBJCOPY "$OBJCOPYFLAGS --strip-unneeded $objfile"] @@ -1566,3 +1572,33 @@ if { ![is_xcoff_format] } { } run_dump_test "rename-section-01" + +proc objcopy_tek2bin {} { + global OBJCOPY + global OBJDUMP + global srcdir + global subdir + + set tek $srcdir/$subdir/tek2.obj + set out tmpdir/tek2bin + if [isremote host] { + set tek [remote_download host $tek] + set out tek2bin + } + + set got [binutils_run $OBJCOPY "-O binary $tek $out"] + if ![string equal "" $got] then { + send_log "$got\n" + fail "objcopy tek2bin" + } else { + set got [binutils_run $OBJDUMP "-s -b binary $out"] + if {![regexp ".* 0000 000031 .*" $got]} { + fail "objcopy tek2bin (objdump)" + } else { + pass "objcopy tek2bin" + } + } + remote_file host delete $out +} + +objcopy_tek2bin diff --git a/binutils/testsuite/binutils-all/readelf.exp b/binutils/testsuite/binutils-all/readelf.exp index 571bb99..22f2a35 100644 --- a/binutils/testsuite/binutils-all/readelf.exp +++ b/binutils/testsuite/binutils-all/readelf.exp @@ -317,22 +317,21 @@ proc readelf_thin_archive_test {} { if ![is_remote host] { set tempfile tmpdir/bintest.o - set templib tmpdir/bintest.thin.a set libname tmpdir/bintest.thin.a } else { set tempfile [remote_download host tmpdir/bintest.o] - set templib [remote_download host tmpdir/bintest.thin.a] set libname bintest.thin.a } set testname "readelf -h bintest.thin" + file_on_host delete $libname set got [binutils_run $AR "rcT $libname ${tempfile}"] if ![string match "" $got] { fail $testname return } - readelf_test -h $templib readelf.h.thin + readelf_test -h $libname readelf.h.thin pass $testname } diff --git a/binutils/testsuite/binutils-all/riscv/pei-riscv64.d b/binutils/testsuite/binutils-all/riscv/pei-riscv64.d index 189b016..4316414 100644 --- a/binutils/testsuite/binutils-all/riscv/pei-riscv64.d +++ b/binutils/testsuite/binutils-all/riscv/pei-riscv64.d @@ -1,7 +1,7 @@ #as: -march=rv64gc -mabi=lp64d #ld: -m elf64lriscv -e0 #PROG: objcopy -#objcopy: -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* -j .reloc --target=pei-riscv64-little +#objcopy: -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* -j .reloc --output-target=pei-riscv64-little #objdump: -h -f #name: Check if efi app format is recognized diff --git a/binutils/testsuite/binutils-all/tek2.obj b/binutils/testsuite/binutils-all/tek2.obj index da696d1..a4e29af 100644 --- a/binutils/testsuite/binutils-all/tek2.obj +++ b/binutils/testsuite/binutils-all/tek2.obj @@ -1,6 +1,6 @@ -%47615103000000000000000000000000000000000000000000000000000000000000000 -%103E95.data11011 +%47616100000310000000000000000000000000000000000000000000000000000000000 +%103EB5.data11013 %1E3FB5.data4F_binary_x_start10 -%1C3735.data4D_binary_x_end11 -%1D3135*ABS*2E_binary_x_size11 +%1C3755.data4D_binary_x_end13 +%1D3155*ABS*2E_binary_x_size13 %0781010 diff --git a/binutils/testsuite/binutils-all/testranges-ia64.d b/binutils/testsuite/binutils-all/testranges-ia64.d index e1e29e7..26963c9 100644 --- a/binutils/testsuite/binutils-all/testranges-ia64.d +++ b/binutils/testsuite/binutils-all/testranges-ia64.d @@ -1,7 +1,7 @@ #PROG: objcopy #source: testranges-ia64.s #readelf: -wR --wide -#name: unordered .debug_info references to .debug_ranges +#name: unordered .debug_info references to .debug_ranges (ia64) #target: ia64-*-* Contents of the .debug_ranges section: diff --git a/binutils/testsuite/binutils-all/windres/psql.rc b/binutils/testsuite/binutils-all/windres/psql.rc new file mode 100644 index 0000000..724d1f5 --- /dev/null +++ b/binutils/testsuite/binutils-all/windres/psql.rc @@ -0,0 +1,822 @@ + +/* Type: icon + + Name: 1. */ +LANGUAGE 0, 0 + +1 3 /* RT_ICON */ +BEGIN + 0x28L , 0x10L , 0x20L , 0x80001L , 0x0L , 0x100L , 0x0L , 0x0L , + 0x100L , 0x100L , 0x0L , 0x45697fL , 0x2e6188L , 0x2f628eL , 0x2f678bL , 0x2f668eL , + 0x2e688bL , 0x2f6591L , 0x326183L , 0x356185L , 0x346483L , 0x366786L , 0x326288L , 0x32628dL , + 0x32648aL , 0x31648eL , 0x356289L , 0x35638cL , 0x36648eL , 0x386181L , 0x396284L , 0x396485L , + 0x39638aL , 0x39658aL , 0x3f6987L , 0x386889L , 0x3a688fL , 0x3d6889L , 0x326290L , 0x316591L , + 0x306594L , 0x346391L , 0x3f6890L , 0x416589L , 0x466d89L , 0x486b8aL , 0x4b708aL , 0x48718dL , + 0x4a7299L , 0x577688L , 0x567698L , 0x597c96L , 0x587d98L , 0x5d7d9eL , 0x5d809cL , 0x5e81a3L , + 0x608592L , 0x61839cL , 0x6184a2L , 0x6188a6L , 0x6b8ea1L , 0x6e8ea0L , 0x6e96aaL , 0x7590a1L , + 0x7794a5L , 0x7597abL , 0x7596adL , 0x7d9db2L , 0x7ca1b4L , 0x8495a3L , 0x8aa1aeL , 0x8ba5adL , + 0x8fa3acL , 0x86a9baL , 0x85a9bdL , 0x8ba4b6L , 0x8da6b8L , 0x8faab4L , 0x8ca9bdL , 0x93a5b4L , + 0x91abb7L , 0x91aab8L , 0x91acbbL , 0x95afbeL , 0x9aadbdL , 0x92b0bfL , 0x95b0b8L , 0x95b2bcL , + 0x8cacc0L , 0x90afc1L , 0x91b1c4L , 0x93b5c4L , 0x95b4c0L , 0x94b7c5L , 0x97b4c8L , 0x98b5c2L , + 0x9bb8c4L , 0xa0b7c5L , 0xa7bfc7L , 0xa8bac7L , 0xa9bec7L , 0xafbfc8L , 0xb4c0c9L , 0xb6c5c9L , + 0xbac5cbL , 0xbcc9cfL , 0xbbc9d3L , 0xbbccd4L , 0xc1c6caL , 0xc2cfd3L , 0xc0cfd5L , 0xc3d4dcL , + 0xc7d1d9L , 0xd4dcdfL , 0xced9e1L , 0xd7dee1L , 0xd5dfe5L , 0xd7e1e6L , 0xd9e1e3L , 0xe6ebeeL , + 0xeceeeeL , 0xe7edf1L , 0xe9eef1L , 0xeaf0f3L , 0xeef2f4L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x6b292364L, 0x0L , 0x0L , 0x0L , + 0x2f1d0f36L, 0x0L , 0x0L , 0x0L , 0x26040f30L, 0x0L , 0x0L , 0x0L , + 0x20041e2dL, 0x0L , 0x66000000L, 0x5d3e6900L, 0x16061d2bL, 0x6fL , 0xf410000L , 0x3e6c005fL, + 0xf041d28L , 0x623b59L , 0xf156700L , 0x4c415f22L, 0xf1d0f0fL , 0x6e43L , 0xf1d4200L , 0x52092244L, + 0x201d0f0fL, 0x5e59L , 0xf1e2c00L , 0x390f0952L, 0x341d1d16L, 0x694627L , 0x1d0f0f71L, 0x370f164eL, + 0x52151d21L, 0x333a25L , 0xf1d0f64L , 0x4d370152L, 0x4d16120fL, 0xf402eL , 0x1d1d0f4aL, 0x3956524eL, + 0x440f1d0fL, 0x660f5659L, 0xf0f1d46L , 0xf022b38L , 0xf1d0f16L , 0x561d3035L, 0xf1d1369L , 0xf095201L , + 0x250f0f0fL, 0x5f150f46L, 0x9164600L , 0x15434509L, 0x53331509L, 0x4a1509L , 0x72720000L, 0x72000000L, + 0x5d00006dL, 0x725bL , 0xfffL , 0xfffL , 0xfffL , 0xfffL , 0x7e8L , 0x1c4L , + 0x380L , 0x380L , 0x180L , 0x100L , 0x100L , 0x0L , 0x0L , 0x0L , + 0x180L , 0x63ceL +END + +/* Name: 2. */ + +2 3 /* RT_ICON */ +BEGIN + 0x28L , 0x20L , 0x40L , 0x80001L , 0x0L , 0x400L , 0x0L , 0x0L , + 0x100L , 0x100L , 0x0L , 0x375974L , 0x325a7eL , 0x325f7aL , 0x305f7eL , 0x345b7dL , + 0x355d7dL , 0x3a5d74L , 0x3a5f7aL , 0x33617dL , 0x3c6277L , 0x3b637cL , 0x405f77L , 0x47636bL , + 0x466274L , 0x41657dL , 0x4c6672L , 0x4e6478L , 0x4b6b7dL , 0x526d7cL , 0x52707eL , 0x2f5e83L , + 0x315f83L , 0x315f86L , 0x355b81L , 0x365d81L , 0x355c86L , 0x335e8cL , 0x365f8bL , 0x375f8fL , + 0x3a5e85L , 0x3b5e8fL , 0x345e90L , 0x2d6183L , 0x2b648fL , 0x2f6088L , 0x2c638dL , 0x2e6589L , + 0x2e668dL , 0x2e6889L , 0x2d688cL , 0x2e6391L , 0x2f6395L , 0x2e6591L , 0x2e6696L , 0x2f6499L , + 0x2e6890L , 0x2f6894L , 0x326181L , 0x316185L , 0x326484L , 0x366182L , 0x356185L , 0x376586L , + 0x316289L , 0x31628dL , 0x32648aL , 0x31658dL , 0x356189L , 0x35618dL , 0x346489L , 0x34648dL , + 0x396382L , 0x396284L , 0x396583L , 0x3b6484L , 0x3e6584L , 0x38628aL , 0x3f6886L , 0x3b688bL , + 0x326291L , 0x326394L , 0x316591L , 0x306594L , 0x356292L , 0x356295L , 0x346490L , 0x366595L , + 0x316398L , 0x326896L , 0x386290L , 0x436483L , 0x466b84L , 0x436b88L , 0x4c6b84L , 0x496c89L , + 0x41718eL , 0x4c738dL , 0x497690L , 0x4f7393L , 0x4e7493L , 0x4f7a9cL , 0x506f81L , 0x53768bL , + 0x547189L , 0x57718cL , 0x58748fL , 0x5e7d83L , 0x5b7b8aL , 0x557b94L , 0x557e9aL , 0x597694L , + 0x5b7e99L , 0x5c7fa1L , 0x607586L , 0x62758aL , 0x607b8eL , 0x697b8fL , 0x607f9eL , 0x5a8196L , + 0x5b829cL , 0x5680a1L , 0x5984a5L , 0x648293L , 0x638599L , 0x6c8697L , 0x6a8299L , 0x69819cL , + 0x6a859aL , 0x69859dL , 0x73868aL , 0x708992L , 0x708b9cL , 0x758a98L , 0x798b99L , 0x77939eL , + 0x7d9098L , 0x6587a1L , 0x6789a5L , 0x638ca8L , 0x6b8ca4L , 0x6e91abL , 0x738ea2L , 0x788ea5L , + 0x7392a0L , 0x7494aaL , 0x7198abL , 0x7c92a3L , 0x7d97aaL , 0x7c99acL , 0x7ea4b6L , 0x869299L , + 0x8396a5L , 0x879ea2L , 0x839baaL , 0x8a99a5L , 0x829cb2L , 0x83a4aeL , 0x8ea0acL , 0x86a5b6L , + 0x86a3b8L , 0x85a8b8L , 0x8ca3b3L , 0x88a6bbL , 0x8fa8b4L , 0x8ba8b8L , 0x88aebfL , 0x8daabcL , + 0x8fb3beL , 0x91a1afL , 0x93a6b0L , 0x93acb5L , 0x92acbbL , 0x94aabbL , 0x94afbcL , 0x9cafbeL , + 0x96b3baL , 0x98b3b8L , 0xabafb3L , 0xa2b4bbL , 0x8bafc3L , 0x95b4c4L , 0x95bac7L , 0x9cb7c1L , + 0x9bbbceL , 0xa1b6c5L , 0xa1b7c8L , 0xa0bdc5L , 0xacc3c7L , 0xaec0caL , 0xa4c3d1L , 0xabc6d5L , + 0xabc9d3L , 0xadced9L , 0xacd0d7L , 0xadd2dbL , 0xb1c2ccL , 0xbcc5cbL , 0xb5c9d0L , 0xb2cbdaL , + 0xb9c9d1L , 0xb9cdd4L , 0xbcc8d1L , 0xbccad5L , 0xbfced6L , 0xbbccd8L , 0xb2d1daL , 0xbcd3dcL , + 0xbfdcdfL , 0xb4d5e2L , 0xb2d8e1L , 0xbcd5e1L , 0xbfdce5L , 0xbfe0e6L , 0xc5cecdL , 0xc2d1d4L , + 0xc3d4dbL , 0xc7d3d9L , 0xc5d3dfL , 0xc7d7ddL , 0xcbd2d4L , 0xcbd3daL , 0xc9dadcL , 0xd1dadfL , + 0xd9dddfL , 0xc3d7e2L , 0xc3d9e3L , 0xc0dae8L , 0xccdce4L , 0xd1dee1L , 0xd2dfe4L , 0xd6dee2L , + 0xd1dce8L , 0xdbdfe0L , 0xc2e0e7L , 0xc2e0ebL , 0xcbe1e4L , 0xcbe4ecL , 0xd3e0e4L , 0xd3e4eaL , + 0xdee3e4L , 0xdbe5ebL , 0xdae9efL , 0xdfe8ebL , 0xdfe9edL , 0xdfecf2L , 0xe0dfdfL , 0xe0e4e7L , + 0xe6e8e9L , 0xe5eaecL , 0xe4eceeL , 0xe9ebebL , 0xe8ebedL , 0xeaedeeL , 0xe1eaf0L , 0xe0eff0L , + 0xe4eff1L , 0xeaedf1L , 0xeaf1f5L , 0xecf3f2L , 0xebf4faL , 0xf2f3f5L , 0xf1f6f8L , 0xf2f8fbL , + 0xf4f8f9L , 0xf4fcfcL , 0x0L , 0x0L , 0x0L , 0x0L , 0x5e74d1f3L, 0xf4a374L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x17027adcL, 0xe9843317L, + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x39480fbfL, 0xa5414848L, + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x39480fadL, 0x8a172f39L, + 0xf3L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x3939419dL, 0x80392739L, + 0xefL , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x48251c99L, 0x67202739L, + 0xf9L , 0x0L , 0x0L , 0x0L , 0x0L , 0xdf000000L, 0x48393996L, 0x59482727L, + 0xfdL , 0x0L , 0x0L , 0x0L , 0xf3000000L, 0xd200efe6L, 0x2d481f95L, 0x55202748L, + 0xe7L , 0x0L , 0x0L , 0xfb0000L , 0xbb000000L, 0xccd5bfa9L, 0x2d482092L, 0x53482626L, + 0xd5L , 0x0L , 0x0L , 0x9574de00L, 0xbbef0000L, 0xe2791391L, 0x48481e92L, 0x1e392626L, + 0xfafafedcL, 0x0L , 0x0L , 0x411772e7L, 0xf30000b3L, 0x900dbfd5L, 0x27481e95L, 0x17392627L, + 0x68119fbfL, 0xa88dL , 0xf3000000L, 0x392441b0L, 0xc254L , 0xc3b2e600L, 0x39481e6cL, 0x19392f27L, + 0xd194bcafL, 0xe6e6L , 0xdcfb0000L, 0x48483953L, 0xe7da1217L, 0x7de2bfd2L, 0x50505039L, 0x39484848L, + 0xbc13L , 0x0L , 0xa9d60000L, 0x2f394106L, 0x7ad88217L, 0x14d8630eL, 0x50484850L, 0x392f2d50L, + 0xd6dfe572L, 0x0L , 0x74d00000L, 0x39482b39L, 0x197dc357L, 0x93bd4141L, 0x50392d25L, 0x50484848L, + 0xd2d2c3bcL, 0x0L , 0x55c9d600L, 0x392b2b48L, 0x1751d87fL, 0xb6921e27L, 0x39392d04L, 0x5a392d48L, + 0x91d478d8L, 0xfdL , 0x41abf300L, 0x392b2b48L, 0x3933c583L, 0xc55e4139L, 0x48484817L, 0x9d41482dL, + 0x69e2108bL, 0xc2L , 0x4180f900L, 0x392b2b2bL, 0x170bc982L, 0xb4543939L, 0x48485051L, 0xb95e5048L, + 0x5fe05c51L, 0xfd85L , 0x3755e500L, 0x392f2b2bL, 0x3944d966L, 0xb4515048L, 0x2b481f54L, 0xb4970a50L, + 0x55c86d02L, 0xd254L , 0x4818bf00L, 0x392b2b48L, 0x3953d963L, 0xb5553939L, 0x39395053L, 0x88c50b45L, + 0x45c57225L, 0x8617L , 0x241f9f00L, 0x392b4839L, 0x20fd86eL , 0xb76a6e53L, 0x48503950L, 0x62e15417L, + 0x56c86233L, 0xef5127L , 0x393989edL, 0x392b4848L, 0xa71e36eL , 0xb8a7d886L, 0x48503917L, 0x7eca5339L, + 0x5be3619eL, 0xc3192bL , 0x245074dbL, 0x392b4848L, 0xb6cae36eL, 0x8cd8a9a6L, 0x48484817L, 0xcdac1748L, + 0x70e58fb1L, 0x9d1c48L , 0x2f4865dbL, 0x392b4839L, 0x8873d963L, 0x5387aeaeL, 0x39394839L, 0x97563939L, + 0x70e9c3c5L, 0xfd82392bL, 0x2f5065e3L, 0x39394839L, 0x672d053L , 0x1f391917L, 0x17393939L, 0x252b4f39L, + 0x45b78e07L, 0xef5b3939L, 0x2d3972daL, 0x17393939L, 0x41aaac27L, 0x39392424L, 0x27503939L, 0x39482d48L, + 0x3981c362L, 0xe7633948L, 0x390695e9L, 0x48395050L, 0x5ee06250L, 0x39394817L, 0x48395039L, 0xb41502dL , + 0x3917a6c3L, 0xe76a5048L, 0x410cc200L, 0x39504839L, 0xa6b60a50L, 0x50391707L, 0x48391739L, 0x9206412fL, + 0x174154b6L, 0xfe9f0150L, 0xb9ff700L , 0x39393939L, 0xd06a4139L, 0x35170f86L, 0x41391739L, 0xc5ac5c06L, + 0x41351745L, 0xfe9251L , 0xb1db0000L, 0x3033357L , 0xbf6b510bL, 0x1752a6efL, 0x51333333L, 0x6eb4c58bL, + 0x5c043204L, 0xf7adL , 0x0L , 0xc0c2d4f4L, 0xefd3L , 0xbfe90000L, 0xf5dab2b2L, 0x797ae2feL, + 0xf4bc9a86L, 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0xdcfb0000L, + 0xefd3L , 0x0L , 0xff01ffffL, 0xff00ffffL, 0xff00ffffL, 0x7f00ffffL, 0x7f00ffffL, 0x7f00ffffL, + 0x7f00feffL, 0x7f00e2ffL, 0x7f00e0fdL, 0xf00c0f8L , 0x30060f0L , 0x30038e0L , 0x3f0000c0L, 0xf0000c0L , + 0xf0000c0L , 0x7000080L , 0x7000080L , 0x3000080L , 0x3000080L , 0x3000080L , 0x1000080L , 0x1000000L , + 0x1000000L , 0x0L , 0x0L , 0x0L , 0x0L , 0x80L , 0x1000080L , 0x30000c0L , + 0xf003cf0L , 0x3ffcffffL +END + +/* Name: 3. */ + +3 3 /* RT_ICON */ +BEGIN + 0x28L , 0x30L , 0x60L , 0x80001L , 0x0L , 0x900L , 0x0L , 0x0L , + 0x100L , 0x100L , 0x0L , 0x384d5eL , 0x355359L , 0x2c5b79L , 0x335367L , 0x33536dL , + 0x36596cL , 0x385764L , 0x3a556bL , 0x3d5a66L , 0x395b6eL , 0x325673L , 0x34567dL , 0x345b74L , + 0x335b7aL , 0x3b5674L , 0x39567bL , 0x3b5d74L , 0x3a5c7bL , 0x2c627dL , 0x34636eL , 0x366376L , + 0x33607cL , 0x3d6175L , 0x3b627bL , 0x3b687fL , 0x415869L , 0x425b77L , 0x47606bL , 0x416174L , + 0x43637cL , 0x43697eL , 0x496377L , 0x4b6b7cL , 0x4e717cL , 0x546a6eL , 0x556b7cL , 0x59717aL , + 0x64767cL , 0x2c5d84L , 0x325c80L , 0x335b89L , 0x395680L , 0x3a5c83L , 0x3a5f8dL , 0x365f94L , + 0x2e6283L , 0x2d628cL , 0x2d6986L , 0x2d698bL , 0x2d6592L , 0x2e639aL , 0x2e6894L , 0x346284L , + 0x33648bL , 0x316884L , 0x31688bL , 0x3a6383L , 0x39638bL , 0x3d698cL , 0x326492L , 0x316499L , + 0x326893L , 0x336999L , 0x396193L , 0x396298L , 0x396a92L , 0x386a99L , 0x466a84L , 0x46708bL , + 0x487081L , 0x4c708cL , 0x526781L , 0x536c82L , 0x506f8cL , 0x547184L , 0x52738bL , 0x557c8cL , + 0x5d758cL , 0x5b7c89L , 0x547b92L , 0x517e9cL , 0x5a7c93L , 0x5a7e99L , 0x647687L , 0x627c93L , + 0x5e818fL , 0x5d8294L , 0x5e839bL , 0x5d85a2L , 0x65818aL , 0x658292L , 0x63829dL , 0x678a9eL , + 0x6f8093L , 0x6a829bL , 0x6a8a93L , 0x6c899dL , 0x6b929dL , 0x798688L , 0x728493L , 0x738b94L , + 0x748c9bL , 0x7c8990L , 0x7b8d9fL , 0x799298L , 0x648ba1L , 0x6d8aa2L , 0x6e8fa9L , 0x6d93aaL , + 0x748da3L , 0x7394a9L , 0x719babL , 0x7a94a3L , 0x7a94aaL , 0x7c9aa6L , 0x7c9aabL , 0x7196b0L , + 0x7b9cb4L , 0x7ba0acL , 0x7da5b0L , 0x86888bL , 0x818f98L , 0x86949aL , 0x8199a5L , 0x899fb7L , + 0x929ca9L , 0x89a1aeL , 0x86a3b2L , 0x83a4bfL , 0x8da6b5L , 0x88a4b8L , 0x8aa8b5L , 0x8ba8baL , + 0x96a2afL , 0x93aab3L , 0x93abbcL , 0x9faeb7L , 0x9aafbeL , 0x91b0bdL , 0x9db3b3L , 0x9cb1bcL , + 0x9db8beL , 0xa1a6a8L , 0xa5adb2L , 0xa3b3b6L , 0xa0b5bdL , 0xaab3b2L , 0xafbab7L , 0xb1b4b6L , + 0xb2b4b9L , 0xb7bbbeL , 0x89abc2L , 0x97afc1L , 0x91b2c4L , 0x91b3c9L , 0x9cb3c3L , 0x9cb6ceL , + 0x9db8c2L , 0x9cbacaL , 0x9ebcd1L , 0xa5bbc8L , 0xa6bdd0L , 0xbdbfc1L , 0xbbbccbL , 0x9cc2ceL , + 0x9fc4d2L , 0xa8c3ccL , 0xa5c2d6L , 0xa9c5d3L , 0xaac6d9L , 0xadc8d3L , 0xacccdbL , 0xb3c9ccL , + 0xbcc2c4L , 0xb9c8cdL , 0xb2c3d3L , 0xb1c6daL , 0xb2cbd4L , 0xb2ccdaL , 0xbfc7d6L , 0xbbccd3L , + 0xbbcddcL , 0xb7d1d3L , 0xb5d2dcL , 0xbbd1d0L , 0xbed1dbL , 0xbdd9dbL , 0xb2cee2L , 0xb5d3e0L , + 0xb4dae4L , 0xb7dae8L , 0xbbd5e2L , 0xbbd9e2L , 0xbce1eaL , 0xc5c2c6L , 0xc3c6ceL , 0xc4caccL , + 0xcacfceL , 0xc5cbd1L , 0xcbced4L , 0xc3d3dcL , 0xccd1d4L , 0xcad5dbL , 0xcbd9daL , 0xd3d4d5L , + 0xd0d4d9L , 0xd2daddL , 0xd8d7d5L , 0xdbdcdeL , 0xc1d6e0L , 0xc2dae4L , 0xc1dbebL , 0xc8d7e3L , + 0xcbdae2L , 0xc9dcebL , 0xccdff3L , 0xd3dde2L , 0xdce3deL , 0xc4e3ebL , 0xcae3e9L , 0xcfe8efL , + 0xcae8f3L , 0xd4e4e4L , 0xd2e4ebL , 0xd3e9edL , 0xdbe3e4L , 0xdbe5ebL , 0xddebe9L , 0xd0e6f4L , + 0xd4ebf4L , 0xd3eef8L , 0xdcecf3L , 0xdeedf9L , 0xd5f0ecL , 0xdaf7fcL , 0xe3e4e6L , 0xe2e6eaL , + 0xe6edecL , 0xe9eaebL , 0xe1ecf2L , 0xebeef1L , 0xeeeff9L , 0xe3f1ecL , 0xe4f2f5L , 0xe3f4faL , + 0xe3fafdL , 0xebf2f4L , 0xeaf5faL , 0xe8f8f3L , 0xebfdfdL , 0xf2f3f4L , 0xf2f5f9L , 0xf2f9f6L , + 0xf4fbfdL , 0xfafcfdL , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x88f8cf00L, 0x8a715555L, 0xf8e0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x566f5c7L , 0xb0e0e10L , 0xf8821eL , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x28118ef7L, 0x36363636L, 0xf7880d28L, 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x360d5bf8L, 0x3c3c363dL, 0xd649353cL, 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x3c0e4bdcL, 0x3e363632L, 0xb01e363eL, 0xecL , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x361e21d2L, 0x3e3a2b3dL, 0x880b3634L, 0xc7L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x36361eb8L, 0x38363631L, 0x83283c34L, 0xcbL , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x38283ab3L, 0x303c3d30L, 0x76293c30L, 0xccL , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0xe2000000L, + 0x363c2babL, 0x30313d30L, 0x6c293d38L, 0xe4L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0xae000000L, 0x31402babL, 0x303c3d31L, 0x58293c38L, 0xf8L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x93000000L, + 0x3c3c2ba9L, 0x303c333cL, 0x52293d38L, 0xf7f8L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0xaec6c5f1L, 0x93ff00ceL, 0x3c412babL, 0x30343d34L, 0x4a293c38L, 0xa4e8L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0xec0000L , 0xe1cbe3edL, 0x9496fcfaL, + 0x3d3c2ba7L, 0x30363d3eL, 0x44403c31L, 0xc4e0L , 0x0L , 0x0L , 0x0L , 0xef000000L, + 0xef96cef2L, 0xd10000L , 0x1c232690L, 0xfcfd8d5bL, 0x3d2d3a8eL, 0x3034333eL, 0x1e403c36L, 0xefcbL , + 0x0L , 0x0L , 0x0L , 0xf7000000L, 0x6f1045a8L, 0xe3ef00fcL, 0x66b5e2f1L, 0xf6690708L, + 0x402c1ba2L, 0x3030383eL, 0x3a3a3134L, 0xd8f400b0L, 0xfaf8e5L , 0x0L , 0x0L , 0xd6f10000L, + 0x18312844L, 0xa1L , 0xf8cbaeefL, 0xa702097fL, 0x363a1bb1L, 0x3430383cL, 0x183a3132L, 0x4964f0a2L, + 0x907a5449L, 0xcaL , 0x0L , 0x61fcc400L, 0x2836290eL, 0xb248L , 0xaeef0000L, 0xb20269f7L, + 0x3c2b189dL, 0x3038383eL, 0x35282f34L, 0x125f09cL , 0x63675e24L, 0xa379L , 0x0L , 0x18acf700L, + 0x3e32313aL, 0xd24a18L , 0xca000000L, 0xe7bbe8eeL, 0x403a2a5cL, 0x3c36363cL, 0x28363e34L, 0xa1d2f86eL, + 0xffd6L , 0x0L , 0x0L , 0x1058f4c6L, 0x3c32323cL, 0xcc481e35L, 0xd90000e0L, 0x74b7f9f4L, + 0x3c3c4028L, 0x3e384038L, 0x35383c3cL, 0xe0691eL , 0xecL , 0x0L , 0xf7000000L, 0x360e92f7L, + 0x3e343c36L, 0xd3210e31L, 0x1c269cf9L, 0x84ff998L , 0x403c3c3aL, 0x3c3c3a3aL, 0x363c3e3dL, 0xf7e8600dL, + 0xef00L , 0x0L , 0x96000000L, 0x3a0b5afcL, 0x3c363635L, 0xf6a13a31L, 0xb1d1a72L , 0xa8ceb51L , + 0x3e3c3d42L, 0x3c404036L, 0x363e3f3dL, 0xc7fcd245L, 0xd0d0L , 0x0L , 0xc7fd0000L, 0x36361bd8L, + 0x363c3e38L, 0x9feb6b0eL, 0x1e3a1817L, 0x46e1bc3bL, 0x36333335L, 0x3d423a3aL, 0x283c3f34L, 0xdfe1f981L, + 0xfd8fL , 0x0L , 0xe8c60000L, 0x343c188bL, 0x36323432L, 0x52f89f0eL, 0x3636360eL, 0x77f96c10L, + 0x3c333403L, 0x343c3637L, 0x45363334L, 0xf967d2d8L, 0xf7c47bL , 0x0L , 0xf8970000L, 0x32360e5cL, + 0x36363434L, 0x17bad444L, 0x3a363635L, 0xa7d8440eL, 0x3c3d3c13L, 0x3d3c3c35L, 0x6a283e3dL, 0xf9236ef9L, + 0xf8548dL , 0x0L , 0xd8cb0000L, 0x3c3c3a44L, 0x36323434L, 0x11a7d845L, 0x3636363aL, 0xc2a50f2bL, + 0x3e3d3619L, 0x3f3d3d35L, 0xa60e353cL, 0xea231dbcL, 0xfcb41aa1L, 0x0L , 0xa1e30000L, 0x32383a18L, + 0x363c3432L, 0x11b3d839L, 0x40313635L, 0xdb720f3aL, 0x3d3d2946L, 0x3c3d3d38L, 0xde520e3aL, 0xf9250f6bL, + 0xe95e0f9dL, 0x0L , 0x72e90000L, 0x323c360eL, 0x363c3232L, 0x1ed2c03aL, 0x363c3235L, 0xdb5c183aL, + 0x3c402c21L, 0x403c3d3cL, 0xc2a50d3aL, 0xf64d0d44L, 0xb31b0f98L, 0x0L , 0x50e8ed00L, 0x32323c28L, + 0x353c3432L, 0x44dea81eL, 0x3c3e3f2eL, 0xdc551036L, 0x3d412b4bL, 0x3a363234L, 0xa5e7211dL, 0xeb620e0eL, + 0x721b2b6dL, 0xfcL , 0x18b6ed00L, 0x323e3236L, 0x363e3432L, 0x47e79f0eL, 0x3c3d3236L, 0xd85c2a3aL, + 0x3c402b25L, 0x1e373e3cL, 0x59f6980aL, 0xeb702828L, 0x463a2b59L, 0xb9L , 0x1082fd00L, 0x3c3c323cL, + 0x3631343cL, 0x45e5a00eL, 0x3636362bL, 0xdb710b2fL, 0x3a3a3645L, 0x35423e3aL, 0x19bfc11eL, 0xf6742838L, + 0x32e1357L , 0xfc7cL , 0x2a66ee00L, 0x3c3c313cL, 0x3632333cL, 0x44e5a816L, 0x35282818L, 0xc284043aL, + 0x403a3642L, 0xe383e3aL , 0xaa5e747L , 0xf6712816L, 0x28302e6aL, 0xf04bL , 0x284edf00L, 0x3c3c3640L, + 0x3531343eL, 0x1de5a635L, 0x8b441e17L, 0xc1a75ac0L, 0x403c3635L, 0x3a3c3240L, 0x98df657L , 0xf95a144dL, + 0x31322e76L, 0xeeb518L , 0x2c44d6daL, 0x3e40303cL, 0x3632323cL, 0x85f9b33aL, 0xbb4d0421L, 0xa5dc87e1L, + 0x3d3c3c28L, 0x353c3241L, 0x67a7d845L, 0xf92378deL, 0x3c322fa6L, 0xf88810L , 0x2d20d2e2L, 0x3c3c303cL, + 0x35323434L, 0xf6f9ac16L, 0x69628dc2L, 0x70f6ad7bL, 0x3c3c3c27L, 0x353e3c3dL, 0x92f98b16L, 0xf525628eL, + 0x3d3d2fabL, 0xf86b2aL , 0x2d10a1f7L, 0x3c3c303eL, 0x3632343cL, 0x80e79f28L, 0xf6f6e7bdL, 0x3598f6f9L, + 0x3c3c3c31L, 0x3c31363cL, 0xf9ac4536L, 0xfcdfdbdbL, 0x3d3c3cabL, 0xdd453cL , 0x402a8df7L, 0x3e3e343eL, + 0x36343432L, 0x4bf88b16L, 0x81755017L, 0x280e5176L, 0x3838363cL, 0x363c3635L, 0x70372e34L, 0xffd2ada6L, + 0x3632319fL, 0xbb3629L , 0x412a8afaL, 0x3c38313eL, 0x3638343eL, 0x72f87428L, 0x2828350bL, 0x3a2c2828L, + 0x38363e3cL, 0x3e363637L, 0x16363234L, 0xf87e0818L, 0x3632286bL, 0xffa62831L, 0x3b169ff4L, 0x38383333L, + 0x37363536L, 0x9be7582eL, 0x32303503L, 0x3c403e2fL, 0x383c3642L, 0x3d363a3cL, 0x3c32333dL, 0xbfdc480dL, + 0x4036363aL, 0xf7a12836L, 0x351eb8e3L, 0x3a3e333cL, 0x36383636L, 0xdbb73a31L, 0x31313544L, 0x3a383232L, + 0x3c363c3cL, 0x3d3c3e3aL, 0x37403c3dL, 0x59e7ad1dL, 0x3e3c3c29L, 0xfc8b1636L, 0xe4be5cfL , 0x3c3c363cL, + 0x3c363c36L, 0xf674113cL, 0x3c350576L, 0x36363c33L, 0x3c364236L, 0x3c333436L, 0xd3a3a3cL , 0xe83fa84L , + 0x3c3c3636L, 0xfda11136L, 0xb71fa00L , 0x3c3c363aL, 0x3c3c3c40L, 0xde220e40L, 0x3a0e17beL, 0x3c363c31L, + 0x36363636L, 0x3e3f323cL, 0x520a3a3aL, 0x1811b3f9L, 0x293c3e36L, 0xfdd2093aL, 0x20d5d900L, 0x3c363a1dL, + 0x403c4036L, 0x7414353eL, 0xe0882faL , 0x3b36363aL, 0x36363636L, 0x3a3c4336L, 0xd346041eL, 0x351e49bfL, + 0x3a36353aL, 0xf87b08L , 0x88fcec00L, 0x36361404L, 0x36383836L, 0x1e183a38L, 0x565e8baL , 0x3638351eL, + 0x36353638L, 0x163a3a36L, 0xdec15914L, 0x3b132852L, 0xf183b35L , 0xf56eL , 0xf8c60000L, 0x38271e78L, + 0x38363638L, 0x83a3636L , 0x60dce454L, 0x38361314L, 0x2e2e3636L, 0x460f1836L, 0x6debde74L, 0x2e3c3027L, + 0x7d1e0e36L, 0xe8L , 0xceff0000L, 0x446aabfaL, 0xd140d0dL , 0x5e481b14L, 0xf900d982L, 0x1635578eL, + 0x1616030eL, 0xd3804d35L, 0x144dbef6L, 0x13281335L, 0xf8b05b1eL, 0x0L , 0x0L , 0xdcebfd00L, + 0x87879ca7L, 0xf8d1b5a1L, 0xf1ffL , 0x98b8f8fcL, 0x9f807c7cL, 0xfaf9e4b3L, 0x171c488eL, 0x7c4f451eL, + 0xfff7b2L , 0x0L , 0x0L , 0xcefd0000L, 0xfffffff1L, 0xfcL , 0x0L , 0xfce2d100L, + 0xfffffffcL, 0x0L , 0xd2d2cbf0L, 0xfcfae8dcL, 0xf7L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0xcb000000L, 0xf1c3c6L , + 0x0L , 0x0L , 0x80ffffffL, 0xff3fL , 0xffffffL , 0xff1fL , 0xffffffL , 0xff0fL , + 0xffffffL , 0xff0fL , 0xffffffL , 0xff07L , 0xffffffL , 0xff07L , 0xffffffL , 0xff07L , + 0xffffffL , 0xff07L , 0xfeffffL , 0xff07L , 0xfeffffL , 0xff07L , 0xfeffffL , 0xff03L , + 0x4ffffL , 0xff03L , 0xfdffL , 0xff03L , 0xdfeL , 0xff03L , 0x4feL , 0x1f04L , + 0x7fcL , 0x700L , 0xc003f8L , 0x300L , 0xe001f8L , 0x3f00L , 0x6000f0L , 0x7f01L , + 0xe0L , 0xbf00L , 0xe0L , 0x3f00L , 0xc0L , 0x3f00L , 0xc0L , 0x1f00L , + 0xc0L , 0x1f00L , 0xc0L , 0xf00L , 0xc0L , 0xf00L , 0xc0L , 0xf00L , + 0x80L , 0x700L , 0x80L , 0x700L , 0x80L , 0x300L , 0x80L , 0x300L , + 0x80L , 0x100L , 0x0L , 0x100L , 0x0L , 0x100L , 0x0L , 0x100L , + 0x0L , 0x100L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x80L , 0x0L , 0x80L , 0x100L , 0x80L , 0x300L , + 0xc0L , 0x700L , 0x2000c0L , 0xf00L , 0x3000f8L , 0x1f00L , 0xff807fcL , 0x7f00L , + 0xffffffffL, 0xffe1L +END + +/* Name: 4. */ + +4 3 /* RT_ICON */ +BEGIN + 0x28L , 0x10L , 0x20L , 0x200001L , 0x0L , 0x440L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0xe2b8c9d0L, 0xff486b8aL, 0xff597c96L, 0xadc5d3dbL, 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x6fefefeL , 0xf87492a3L, 0xff32638eL, 0xff316690L, 0xff61839cL, 0x42f4f5f6L, 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x2ff6f8f8L, 0xff6184a2L, 0xff30658dL, 0xff2f678bL, 0xff4a7299L, 0x58edf2f3L, 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x32f5f6f6L, + 0x67eceeefL, 0x6ee4e7e7L, 0xff5e81a3L, 0xff2f6693L, 0xff2f678bL, 0xff3f6890L, 0x7eeaeff4L, 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x5beaeef3L, 0xb3b0becaL, 0x4eedeeefL, 0xccced6daL, + 0xf88ca1aaL, 0xf8b4c4c8L, 0xff5d7d9eL, 0xff316694L, 0xff2e688bL, 0xff39638aL, 0xaadce5eaL, 0x51f0f7fcL, + 0x22fbfdfdL, 0x0L , 0x0L , 0x48f2f4f5L, 0xef849eb2L, 0xff326288L, 0xc0a5b8c5L, 0x3feef1f2L, + 0xd9d3dcdfL, 0xff8ba5adL, 0xff567698L, 0xff33668fL, 0xff2f678eL, 0xff336288L, 0xffa8bac7L, 0xf27e909fL, + 0xc6b0b6bbL, 0x4be9eceeL, 0xcffffffL , 0xcccad4d8L, 0xff396486L, 0xff306690L, 0xff476e8aL, 0xecb6c8d1L, + 0xef839ba9L, 0xff95b0b8L, 0xff356390L, 0xff36648eL, 0xff326493L, 0xff32658fL, 0xff8faab5L, 0x97e0e3e3L, + 0x0L , 0x0L , 0x58efeff0L, 0xff8da6b8L, 0xff306590L, 0xff31658eL, 0xff8ca9bdL, 0xff466d89L, + 0xff376286L, 0xff98b5c2L, 0xff2f628eL, 0xff33648bL, 0xff306595L, 0xff3a688fL, 0xffa9bec7L, 0xf8b9c4caL, + 0x32f4f6f8L, 0x0L , 0x61eff3f5L, 0xff5d809cL, 0xff2f6591L, 0xff30658fL, 0xff93b0c4L, 0xff366284L, + 0xff34638bL, 0xff7e9db1L, 0xff3a648bL, 0xff316493L, 0xff346391L, 0xff6e96aaL, 0xff577688L, 0xff91aab8L, + 0xaac1cfd9L, 0x0L , 0x9adde6ebL, 0xff366389L, 0xff2f6591L, 0xff30658fL, 0xff8cacc0L, 0xff39668aL, + 0xff32638eL, 0xff7795acL, 0xff416589L, 0xff316590L, 0xff396382L, 0xff93b5c4L, 0xff48718dL, 0xff7ca1b4L, + 0xf5698a9dL, 0x1cfdfefeL, 0xcfb5c4caL, 0xff33628cL, 0xff326592L, 0xff2f658eL, 0xff90b2c4L, 0xff45697fL, + 0xff7597abL, 0xff94b3bdL, 0xff34638cL, 0xff346393L, 0xff3d6889L, 0xff97b2bcL, 0xff608592L, 0xff85a9bdL, + 0xff356288L, 0x7ee0e9ecL, 0xff9aadbdL, 0xff316690L, 0xff326592L, 0xff30668fL, 0xff90afc1L, 0xff92b0bfL, + 0xff9bb8c4L, 0xff7d9eb3L, 0xff30648eL, 0xff32648fL, 0xff32648bL, 0xff86a9baL, 0xffa7bfc7L, 0xff97b4c8L, + 0xff316290L, 0xbdafc5d1L, 0xff95afbeL, 0xff326493L, 0xff33658cL, 0xff32658aL, 0xff7497aeL, 0xff587d98L, + 0xff2e6188L, 0xff36638dL, 0xff33658fL, 0xff33658bL, 0xff316494L, 0xff31648dL, 0xff7590a1L, 0xff6188a6L, + 0xff33648dL, 0xe294aebeL, 0xc9c2d0d9L, 0xff386080L, 0xff336390L, 0xff336390L, 0xff3f6987L, 0xff95b4c0L, + 0xff356085L, 0xff33648dL, 0xff33648cL, 0xff326590L, 0xff33658fL, 0xff4b708aL, 0xff91acbbL, 0xff356286L, + 0xff356189L, 0xcfadbdc5L, 0x58f1f2f4L, 0xf88ea9b5L, 0xff386889L, 0xff336283L, 0xff396284L, 0xfb92a4b3L, + 0xec87a4aeL, 0xff366786L, 0xff316183L, 0xff386485L, 0xff6b8ea1L, 0xff94b7c5L, 0xff346483L, 0xff3a6685L, + 0xe991a6b8L, 0x32f8fbfbL, 0x0L , 0x16fafafaL, 0x90e1eaeeL, 0x8dd9e1e6L, 0x71e5ebeeL, 0x35f6f9fbL, + 0x1cf6f7f8L, 0x94dce6ebL, 0x8dd2dce2L, 0x74e4eff1L, 0x65e9f1f4L, 0xd9a7b6c0L, 0xe9a8b9c3L, 0x81dee6eaL, + 0x13fefefeL, 0x0L , 0xfffL , 0x7feL , 0x7feL , 0x7f8L , 0x1c0L , 0x80L , + 0x300L , 0x100L , 0x100L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x180L +END + +/* Name: 5. */ + +5 3 /* RT_ICON */ +BEGIN + 0x28L , 0x20L , 0x40L , 0x200001L , 0x0L , 0x1080L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0xb3e0e6e8L, 0xffc7d7ddL, 0xff6a8299L, 0xff547189L, 0xff6a859aL, 0xff94aabbL, + 0xbdd7e4ebL, 0x3ff6fafbL, 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0xd9cadadfL, 0xff708b9cL, 0xff325a7eL, 0xff315f86L, 0xff326084L, 0xff365f80L, + 0xfb718da1L, 0xbdd5e0e5L, 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0xe6b1c8d0L, 0xff42667eL, 0xff326591L, 0xff30648fL, 0xff316691L, 0xff316691L, + 0xff3b6484L, 0xff9cafbeL, 0x58f5f5f6L, 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x19fbfdfeL, 0xff9cb7c1L, 0xff40647cL, 0xff326490L, 0xff346188L, 0xff34658cL, 0xff2f6894L, + 0xff326084L, 0xff7d97aaL, 0xaadde1e4L, 0x6ffffffL , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x3ff1f4f5L, 0xff8daabcL, 0xff396185L, 0xff31668aL, 0xff31638dL, 0xff32668bL, 0xff2f688cL, + 0xff32608dL, 0xff6789a5L, 0xb3d9e3e4L, 0x9fdfdfdL , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x7ee9eeefL, 0xff88a6bbL, 0xff365f8bL, 0xff2f6789L, 0xff2f6693L, 0xff2f678dL, 0xff2f6889L, + 0xff336090L, 0xff5c7fa1L, 0xa0e1ecebL, 0x3fefefeL , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0xcffffffL , 0x1cffffffL, 0x9ffffffL , + 0x9ffffffL , 0xb3cdd2d3L, 0xff86a3b8L, 0xff37608eL, 0xff2e658dL, 0xff306695L, 0xff2f678dL, 0xff2f698aL, + 0xff336091L, 0xff4f7393L, 0x8de8f3f8L, 0xffcfcfdL , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x1ff8f9f9L, 0x9ddfe1e3L, 0xc6d7dbddL, 0xb3dcdfe0L, + 0x29ffffffL, 0xd3c6cccbL, 0xff86a4b7L, 0xff375f8fL, 0xff306792L, 0xff2f6596L, 0xff2f678dL, 0xff2e6889L, + 0xff325f90L, 0xff486c8cL, 0xecd6e1ecL, 0x6eededf1L, 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0xffafafbL , 0x3cf6f6faL, + 0x81e5e8ecL, 0x5bedeff0L, 0x6f9fafaL , 0x77e3e2e4L, 0x6ee4e8ebL, 0xf8bbc4ccL, 0xffa2b3b9L, 0xe6b3cad1L, + 0xe6cdd7dcL, 0xffc5cecdL, 0xff809fb2L, 0xff375e90L, 0xff306696L, 0xff306597L, 0xff2f678dL, 0xff2e6889L, + 0xff366393L, 0xff426687L, 0xf5ced8dfL, 0x58eeeff1L, 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x48edeff1L, 0xd9c9d7e5L, + 0xff6b869dL, 0xf2859caeL, 0x45f1f5f7L, 0x77e7e7e8L, 0xccdee5e8L, 0xffbcc6caL, 0xff889aa4L, 0xff526d7cL, + 0xff708992L, 0xffcee1e4L, 0xff829bb1L, 0xff3b5d86L, 0xff336594L, 0xff306790L, 0xff2e688bL, 0xff2e688cL, + 0xff31628bL, 0xff3b6384L, 0xd6cbd9e1L, 0x84eaf3f6L, 0xaadeecf6L, 0x9de5f3fbL, 0x5ef4fbfdL, 0x2cf9fbfbL, + 0x0L , 0x0L , 0x0L , 0x0L , 0x9ffffffL , 0x5beeeff1L, 0xccd2dde5L, 0xff658298L, + 0xff306085L, 0xff376183L, 0xdfa5b8c3L, 0x48eef5f8L, 0x1ff7f7f7L, 0x90d9dcddL, 0xecd4dddfL, 0xffb9cad2L, + 0xff47636bL, 0xff859fa9L, 0xff869eb7L, 0xff3b5e82L, 0xff346591L, 0xff30678cL, 0xff2e688bL, 0xff2e6890L, + 0xff306289L, 0xff366184L, 0xffb8cad9L, 0xff91a1afL, 0xff4e6478L, 0xff607586L, 0xff869299L, 0xffabafb3L, + 0x74ececefL, 0xff7f8faL , 0x0L , 0x0L , 0x16fbfbfbL, 0xa7e1e6e8L, 0xf29cb4c6L, 0xff3e6584L, + 0xff2c638dL, 0xff32658dL, 0xff4f6e87L, 0xd9b1c6d2L, 0x3ff0f7f9L, 0xcf9f9f9L , 0x7ae4e6e6L, 0xffdde4e5L, + 0xffacc3c7L, 0xffb5d0d8L, 0xff607f9eL, 0xff385f87L, 0xff346591L, 0xff32668cL, 0xff30668dL, 0xff2e6791L, + 0xff32658eL, 0xff335f83L, 0xffa0b7c5L, 0xffb6c8d0L, 0xff8ea0acL, 0xccbac8d0L, 0x8dc8cfd4L, 0x8dc6c9ceL, + 0x7bdde1e3L, 0x2fe6e9edL, 0x0L , 0x6ffffffL , 0x87eaecedL, 0xeccfdddfL, 0xff456c8aL, 0xff346489L, + 0xff2d6692L, 0xff2f6792L, 0xff356284L, 0xff49687cL, 0xf8c9dce5L, 0xbad4dfe3L, 0xc0b6c2c8L, 0xffbbccd4L, + 0xffcce2e4L, 0xff7794a1L, 0xff376088L, 0xff366391L, 0xff34648fL, 0xff36648dL, 0xff336590L, 0xff306594L, + 0xff306591L, 0xff336389L, 0xff506f81L, 0xffb5cad1L, 0x5eedf1f2L, 0x58e6e9e9L, 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x2cffffffL, 0xd3d0d5d9L, 0xec9eb0baL, 0xff345d7dL, 0xff356488L, + 0xff31648eL, 0xff316790L, 0xff316288L, 0xff6b8ca1L, 0xffc4dbe4L, 0xff758a98L, 0xff466274L, 0xff577c95L, + 0xffbfdcdfL, 0xff52707eL, 0xff366592L, 0xff316495L, 0xff34648fL, 0xff38628eL, 0xff356393L, 0xff306496L, + 0xff326896L, 0xff30648bL, 0xff638799L, 0xffd3e6e9L, 0xd6d2d9daL, 0xcfd9d8d8L, 0x0L , 0x0L , + 0x0L , 0x0L , 0x6ffffffL , 0x7eececedL, 0xffc5d3dfL, 0xff67849bL, 0xff32648bL, 0xff30658fL, + 0xff316792L, 0xff33648bL, 0xff4a718eL, 0xffbdd5e0L, 0xff6e8ea3L, 0xff375f7eL, 0xff386385L, 0xff3a6385L, + 0xffb0cbdaL, 0xff83a4aeL, 0xff2d6186L, 0xff2f6499L, 0xff32648cL, 0xff366489L, 0xff326592L, 0xff2e6697L, + 0xff326694L, 0xff366188L, 0xffb0c8daL, 0xffc0d2d5L, 0xffc6d1d1L, 0xe6c8cdd4L, 0x3fecedefL, 0x0L , + 0x0L , 0x0L , 0x19ffffffL, 0xc3d2d4d6L, 0xffbed3dfL, 0xff4a6d88L, 0xff306591L, 0xff2e6694L, + 0xff2e6692L, 0xff33638aL, 0xff6587a1L, 0xffc3d8e3L, 0xff43667eL, 0xff326287L, 0xff35658bL, 0xff365c80L, + 0xff819ab0L, 0xffabcad2L, 0xff2e6181L, 0xff306399L, 0xff32658cL, 0xff34648bL, 0xff316594L, 0xff2f6696L, + 0xff32638eL, 0xff4e7493L, 0xffc3d7e2L, 0xff73868aL, 0xffcbdcdcL, 0xff8c98a6L, 0x84ebf1f7L, 0x6fbfcfcL , + 0x0L , 0x0L , 0x12ffffffL, 0xbcdfe5e9L, 0xff96b0c3L, 0xff3b6383L, 0xff316691L, 0xff2e6693L, + 0xff2e6693L, 0xff32638aL, 0xff6e91abL, 0xffb7cedcL, 0xff3a5f7aL, 0xff34658cL, 0xff31638cL, 0xff376185L, + 0xff58748fL, 0xffb0d1dbL, 0xff396583L, 0xff346396L, 0xff326590L, 0xff306393L, 0xff326498L, 0xff336490L, + 0xff376382L, 0xff88aebfL, 0xff7e98aeL, 0xff4c6672L, 0xffc8e0e4L, 0xff62758aL, 0xe2b5c4d2L, 0x3ff5fafaL, + 0x0L , 0x0L , 0x6fafbfbL , 0xb0e3edf3L, 0xff6c8ba3L, 0xff356387L, 0xff2f6590L, 0xff2d6592L, + 0xff2e6693L, 0xff33638aL, 0xff688ba6L, 0xffbdd6e4L, 0xff3b627eL, 0xff31638cL, 0xff316490L, 0xff37648aL, + 0xff4a6888L, 0xffa7c5d2L, 0xff436781L, 0xff376092L, 0xff316592L, 0xff2f6395L, 0xff336393L, 0xff396388L, + 0xff4f758cL, 0xffadd2dbL, 0xff476983L, 0xff4d6f7fL, 0xffc2e0e7L, 0xff57718cL, 0xfb768da4L, 0x8be4f0f3L, + 0x0L , 0x0L , 0x4bf4f6f7L, 0xf5d5e2eaL, 0xff456986L, 0xff30638dL, 0xff2f6590L, 0xff2c6491L, + 0xff2f6793L, 0xff33648bL, 0xff5b7e99L, 0xffc0dbe8L, 0xff3f6886L, 0xff30658fL, 0xff316694L, 0xff35638bL, + 0xff456487L, 0xffa6c2d0L, 0xff4d6a81L, 0xff3b5e8fL, 0xff316594L, 0xff2e6690L, 0xff356488L, 0xff3b607aL, + 0xff86a6b6L, 0xffa0c4d3L, 0xff345b7dL, 0xff588096L, 0xffb2d8e1L, 0xff4b6d8dL, 0xff4a6a86L, 0xd9b7cbd0L, + 0x12fefefeL, 0x0L , 0x3ff7faf9L, 0xe9b6c7d1L, 0xff355b81L, 0xff306590L, 0xff326591L, 0xff2f6592L, + 0xff2e6693L, 0xff31638aL, 0xff567c96L, 0xffc0d9e9L, 0xff456a89L, 0xff326289L, 0xff30628eL, 0xff31628cL, + 0xff496985L, 0xffa8c6d4L, 0xff446a88L, 0xff39618bL, 0xff35648dL, 0xff32668fL, 0xff386889L, 0xff3d627bL, + 0xffb4d3deL, 0xff7198abL, 0xff336284L, 0xff61879dL, 0xffb3d3dcL, 0xff406b88L, 0xff32627fL, 0xff7291a0L, + 0x5ef9fcfcL, 0x0L , 0x68eef5f2L, 0xf892a7b3L, 0xff355c86L, 0xff30658eL, 0xff346490L, 0xff306593L, + 0xff2e6692L, 0xff31648aL, 0xff5a829bL, 0xffc0dbe8L, 0xff42647cL, 0xff365f7cL, 0xff426c89L, 0xff5e839fL, + 0xff5e7c8aL, 0xffadcfdaL, 0xff386689L, 0xff35638dL, 0xff386290L, 0xff326492L, 0xff336388L, 0xff496e88L, + 0xffc2e0ebL, 0xff5c7a88L, 0xff38657dL, 0xff5b7d8cL, 0xffbbd6e0L, 0xff42718eL, 0xff2e6489L, 0xff426682L, + 0xbadbe5eaL, 0x1cf8fafaL, 0xdfdae4e1L, 0xff7c92a3L, 0xff37608cL, 0xff2f678eL, 0xff346590L, 0xff306593L, + 0xff2d6692L, 0xff31648aL, 0xff5c849eL, 0xffcae5eeL, 0xff628393L, 0xff3b5f72L, 0xff7292a0L, 0xffc2dae3L, + 0xff98b3b8L, 0xffacd0d7L, 0xff316085L, 0xff346393L, 0xff366296L, 0xff306494L, 0xff31648bL, 0xff456d89L, + 0xffc2dce5L, 0xff7d9098L, 0xff8fb3beL, 0xff5e7d83L, 0xffc9e2e9L, 0xff4f7a9cL, 0xff2f6392L, 0xff365c83L, + 0xe5b8cad3L, 0x3bf5fafaL, 0xffd2dfe1L, 0xff69819cL, 0xff356190L, 0xff2c688dL, 0xff336490L, 0xff306593L, + 0xff2e6692L, 0xff31648aL, 0xff5a819aL, 0xffcfe6eeL, 0xffbfdce5L, 0xffaeced9L, 0xff96b3baL, 0xffa1b5baL, + 0xffc0dbe1L, 0xff7ea4b6L, 0xff2f6088L, 0xff316492L, 0xff336493L, 0xff306391L, 0xff31658eL, 0xff356285L, + 0xff94b5c6L, 0xffbfd5d9L, 0xffa0bec5L, 0xff879ea2L, 0xffd2e5ebL, 0xff5984a5L, 0xff306497L, 0xff335e8cL, + 0xf888a6b7L, 0x6ee6eff1L, 0xffd1dfe4L, 0xff5b7595L, 0xff356394L, 0xff2d6b8eL, 0xff336590L, 0xff306593L, + 0xff2e6793L, 0xff32658cL, 0xff547b94L, 0xffc5d9e7L, 0xff668293L, 0xff7496aaL, 0xff98bacdL, 0xff9fbccfL, + 0xff7493abL, 0xff42688aL, 0xff31658eL, 0xff30668fL, 0xff32668bL, 0xff33648bL, 0xff30658eL, 0xff30668dL, + 0xff41718fL, 0xff85a8b8L, 0xffb2cdd8L, 0xffc3d4dbL, 0xffdae9efL, 0xff5680a1L, 0xff2e6391L, 0xff32628dL, + 0xff6a8ea7L, 0x8de6f1f4L, 0xffcfdfe6L, 0xff587794L, 0xff366595L, 0xff2c6792L, 0xff33658dL, 0xff31658eL, + 0xff30668eL, 0xff326589L, 0xff446e8aL, 0xffbdd4e1L, 0xff68859dL, 0xff365e7eL, 0xff305f83L, 0xff2f5e83L, + 0xff386188L, 0xff38628dL, 0xff326690L, 0xff31668eL, 0xff326788L, 0xff346488L, 0xff32648fL, 0xff2e6797L, + 0xff2e6591L, 0xff316384L, 0xff3c5c75L, 0xff8396a5L, 0xffafc6d7L, 0xff3e698dL, 0xff31658dL, 0xff31638aL, + 0xff557e9aL, 0xc6d6e3e8L, 0xffcddfe6L, 0xff608598L, 0xff34638dL, 0xff306299L, 0xff34678cL, 0xff33658aL, + 0xff326489L, 0xff33658aL, 0xff366588L, 0xff96b7c5L, 0xff8bafc3L, 0xff366281L, 0xff2f648bL, 0xff2b648fL, + 0xff326591L, 0xff34648fL, 0xff34658fL, 0xff34658fL, 0xff34658fL, 0xff32658fL, 0xff326493L, 0xff326398L, + 0xff326394L, 0xff31658cL, 0xff59798aL, 0xffbad6dfL, 0xff638ca8L, 0xff34648cL, 0xff346590L, 0xff33648cL, + 0xff557c94L, 0xc6d0dde4L, 0xd3d8e3e7L, 0xf888a2b2L, 0xff365d7dL, 0xff32628cL, 0xff346491L, 0xff346491L, + 0xff32628fL, 0xff336390L, 0xff33628aL, 0xff5a7d8dL, 0xffbfe0e6L, 0xff53768bL, 0xff366185L, 0xff316392L, + 0xff31638fL, 0xff34658cL, 0xff33648dL, 0xff33648dL, 0xff33648dL, 0xff2f6593L, 0xff2f6696L, 0xff336490L, + 0xff376083L, 0xff3e647fL, 0xffb9d0d9L, 0xff92acbbL, 0xff355e7eL, 0xff32638bL, 0xff316492L, 0xff34638aL, + 0xff607d8eL, 0xc6d5dfe5L, 0x61ecf0f3L, 0xf8bdccd8L, 0xff405f77L, 0xff386382L, 0xff326390L, 0xff336390L, + 0xff346491L, 0xff336490L, 0xff34638dL, 0xff3c6277L, 0xffaecbd3L, 0xff94afbcL, 0xff375974L, 0xff356187L, + 0xff32648bL, 0xff34658cL, 0xff33648bL, 0xff32638aL, 0xff32638bL, 0xff336794L, 0xff336590L, 0xff376586L, + 0xff395e77L, 0xff7d9cadL, 0xffadc8d4L, 0xff4d6e84L, 0xff376383L, 0xff34648aL, 0xff36628bL, 0xff375c7dL, + 0xf890a4aeL, 0x81edf3f5L, 0x2cf5f6f7L, 0xb7e2e7ecL, 0xff8ea6b4L, 0xff3d677aL, 0xff316388L, 0xff33658bL, + 0xff32648bL, 0xff33668cL, 0xff34658bL, 0xff386084L, 0xff60798eL, 0xffc6d8e0L, 0xff77939eL, 0xff3d6779L, + 0xff326484L, 0xff33658aL, 0xff336589L, 0xff316387L, 0xff316387L, 0xff366087L, 0xff3a607fL, 0xff476f83L, + 0xff95bac7L, 0xffb4d5e2L, 0xff406a88L, 0xff326283L, 0xff356589L, 0xff386386L, 0xff446381L, 0xff8298acL, + 0x9deaf3f6L, 0x19fbfcfcL, 0x6ffffffL , 0x77eeeff1L, 0xecd0dee2L, 0xf89ebbc4L, 0xff497690L, 0xff35637fL, + 0xff325f7aL, 0xff33607bL, 0xff35607dL, 0xff456383L, 0xff697b8fL, 0xf2b9c6cfL, 0xbadaeaecL, 0xf88fadb4L, + 0xff436f88L, 0xff326281L, 0xff305f7eL, 0xff305f7eL, 0xff336181L, 0xff476b86L, 0xff7a99aaL, 0xffb0d0d9L, + 0xffa8cad5L, 0xff5d8296L, 0xff316180L, 0xff2e6282L, 0xff31607eL, 0xff4b6f88L, 0xf8a0b4c4L, 0xade0e9efL, + 0x12fcfdfdL, 0x0L , 0x0L , 0x0L , 0x6fafafaL , 0x52f0f1f1L, 0xd9dae9f0L, 0xecc4d5dbL, + 0xe2b7c8d1L, 0xe2b3c3ccL, 0xd9c2d1d9L, 0xb3dde3e6L, 0x71f0f5f9L, 0x64ecf1f4L, 0xcf8f9f9L , 0x5eeaecefL, + 0xdcd4e4ebL, 0xe9b4c8d3L, 0xe2a4b9c4L, 0xe2a9bdc8L, 0xd3c0d4deL, 0xc0d7ebecL, 0x87ebfbfaL, 0xd3c7d6ddL, + 0xff798b99L, 0xff6c8697L, 0xff7191a1L, 0xec86a2aeL, 0xe2b0c2cbL, 0xc3dce7eaL, 0x45fbfdfdL, 0x6fefefeL , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x3bf3f5f7L, 0x42f4f5f6L, + 0x38fcfdfeL, 0x38fcfdfeL, 0x2ff9fafcL, 0x9fefefeL , 0x0L , 0x0L , 0x0L , 0x6f8f9f9L , + 0x4bf1f2f3L, 0x3ff8fafaL, 0x38fcfefeL, 0x38fdfefeL, 0x29fdfefeL, 0x16fbfdfcL, 0x3fcfdfeL , 0x35f5f7f9L, + 0x87e8ecf0L, 0xdfd0dae0L, 0xffcbd2d9L, 0xb9dde0e5L, 0x38f7f9fcL, 0x25f6f7f8L, 0x0L , 0x0L , + 0x0L , 0x0L , 0xff00ffffL, 0xff00ffffL, 0x7f00ffffL, 0x3f00feffL, 0x3f00feffL, 0x3f00feffL, + 0x3f00e0ffL, 0x3f00c0ffL, 0x3f0000f0L, 0x30000f0L , 0xc0L , 0xc0L , 0xf000080L , 0xf000080L , + 0x7000000L , 0x3000000L , 0x3000000L , 0x3000000L , 0x1000000L , 0x1000000L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x1000000L , + 0x30000c0L , 0xf0038f0L +END + +/* Name: 6. */ + +6 3 /* RT_ICON */ +BEGIN + 0x28L , 0x30L , 0x60L , 0x200001L , 0x0L , 0x2580L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x55f7f7f8L, 0xffcfdadbL, 0xffe8f5f9L, 0xff96a9bbL, 0xff647991L, 0xff667e91L, + 0xff7d92a3L, 0xff9bb0bfL, 0xffd2e1ecL, 0xc7e9f5f9L, 0x55f7fbfcL, 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0xffc5ced0L, 0xffe0f2f8L, 0xff738b9cL, 0xff33526fL, 0xff34587bL, 0xff345c7cL, + 0xff335a79L, 0xff325673L, 0xff43627aL, 0xff8fa7b7L, 0xe3e3f2f9L, 0x55f0f3f5L, 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0xaadeedf0L, 0xff9fb7c1L, 0xff3c5c74L, 0xff325c80L, 0xff32618eL, 0xff30638bL, + 0xff30638bL, 0xff35668dL, 0xff325e80L, 0xff355874L, 0xff95acbdL, 0xc7e4eceeL, 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0xc7e1f3f8L, 0xff668291L, 0xff335975L, 0xff35668fL, 0xff306595L, 0xff31658fL, + 0xff316691L, 0xff316793L, 0xff32668fL, 0xff356183L, 0xff506e85L, 0xffcfdbe4L, 0x55f9f9faL, 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0xffcde3e9L, 0xff547284L, 0xff375e7bL, 0xff336590L, 0xff2d6294L, 0xff336288L, + 0xff33668eL, 0xff316893L, 0xff2f6794L, 0xff33648bL, 0xff3e617cL, 0xffb1c3d0L, 0xe3dee1e3L, 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x39f7fbfeL, 0xffbfd9e0L, 0xff4b6a7aL, 0xff3a617dL, 0xff33648eL, 0xff326596L, 0xff39607fL, + 0xff386487L, 0xff326792L, 0xff2f6997L, 0xff31648cL, 0xff305774L, 0xff9aafbeL, 0xffc5cbd1L, 0x1dffffffL, + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x55ecf0f2L, 0xffb5d0daL, 0xff43647eL, 0xff396287L, 0xff34678dL, 0xff2e658aL, 0xff35618bL, + 0xff35658bL, 0xff31688bL, 0xff2f6891L, 0xff326491L, 0xff30587fL, 0xff88a5b9L, 0xffcad6daL, 0x1dfcfcfcL, + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x72e7edefL, 0xffb0ccdaL, 0xff3e6185L, 0xff305d8bL, 0xff30678bL, 0xff2d6982L, 0xff30649bL, + 0xff2f6691L, 0xff2e6986L, 0xff2f688aL, 0xff356596L, 0xff315889L, 0xff789bb5L, 0xffc8d9d9L, 0x1df9f9f9L, + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0xe3dae2e3L, 0xffadc8d5L, 0xff3d6084L, 0xff346190L, 0xff2f658cL, 0xff2f6a88L, 0xff31659aL, + 0xff306690L, 0xff2e6987L, 0xff30688cL, 0xff346494L, 0xff335989L, 0xff6e8fa9L, 0xe3d9e9e7L, 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0xffb9c1c2L, 0xffadc8d4L, 0xff3b5d83L, 0xff366294L, 0xff2d628cL, 0xff2f6a8bL, 0xff31659aL, + 0xff306690L, 0xff2e6987L, 0xff30698cL, 0xff336394L, 0xff355b8bL, 0xff5f819aL, 0xaae1f2f6L, 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x39ffffffL, 0x55ffffffL, 0x55ffffffL, 0x0L , 0x0L , + 0x55ffffffL, 0xffaab3b3L, 0xffa9c5d0L, 0xff3c5e83L, 0xff356094L, 0xff316693L, 0xff2f698eL, 0xff306499L, + 0xff306690L, 0xff2e6987L, 0xff30698cL, 0xff346595L, 0xff335989L, 0xff5a7d94L, 0xe3e1f2fcL, 0x8ee6e6edL, + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x8ee1e4e8L, 0xffc6cacdL, 0xffc7cdd0L, 0xffbfc5c7L, 0xffd1d6d7L, 0x0L , + 0x8effffffL, 0xffaab4b2L, 0xffadc9d2L, 0xff3b5d84L, 0xff356096L, 0xff316695L, 0xff306991L, 0xff30649aL, + 0xff306690L, 0xff2e6987L, 0xff2f688bL, 0xff316192L, 0xff355c8bL, 0xff4f728bL, 0xffdbeaf5L, 0xffbbbccbL, + 0x55ffffffL, 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x39f7f9fcL, 0x55f3f6f8L, 0x0L , 0x0L , 0x0L , + 0xaad6d5d8L, 0x1debedf0L, 0xe3dfe5eaL, 0xffdae4ecL, 0xffc9d7dbL, 0xffd4e6ebL, 0xc7e7fcffL, 0xc7ebf5faL, + 0xffb1b4b6L, 0xffafbab7L, 0xffa7c4cdL, 0xff3b5d84L, 0xff356096L, 0xff316597L, 0xff306993L, 0xff30649aL, + 0xff306690L, 0xff2e6987L, 0xff2f688bL, 0xff346494L, 0xff3b6292L, 0xff486b84L, 0xffd0dfe9L, 0xffc7c8d1L, + 0x1dffffffL, 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x8edad9e1L, 0xc7eaebf8L, 0xffd0d3d9L, 0xffb2b5baL, 0xc7e2e5e6L, 0x1de8e9eaL, 0x0L , + 0xc7d5d3d4L, 0x55fcfeffL, 0xffa7aeb4L, 0xff66727bL, 0xff52656eL, 0xff47606bL, 0xff64828eL, 0xff9fb1baL, + 0xffeff5f5L, 0xfff3fffdL, 0xff9db8c2L, 0xff3c5d84L, 0xff355f96L, 0xff316598L, 0xff306894L, 0xff306499L, + 0xff306690L, 0xff2e6987L, 0xff2f688bL, 0xff346494L, 0xff39618fL, 0xff43657fL, 0xffc9d9dbL, 0xaadee1dfL, + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x1dedededL, 0xc7e7f0f3L, 0xffa7c2d7L, 0xff456b8bL, 0xff30597aL, 0xff7693a9L, 0x8eebf5f9L, 0x0L , + 0xaadee1e2L, 0xe3dae3e6L, 0xffe5eff0L, 0xffd9e3e6L, 0xffbcccd3L, 0xff778c99L, 0xff3a576aL, 0xff385764L, + 0xff759196L, 0xffe1f6fcL, 0xffa7bcd0L, 0xff425b79L, 0xff3c5f87L, 0xff366492L, 0xff316795L, 0xff306989L, + 0xff2e6989L, 0xff2d698dL, 0xff2f688fL, 0xff2c6289L, 0xff366488L, 0xff3c6282L, 0xffb3c5d7L, 0x72f7ffffL, + 0xc7ddedf4L, 0xffcde2f1L, 0xffd0e7f5L, 0xe3ddf2fcL, 0xaaedf9feL, 0x55f4f9faL, 0x39f9f9faL, 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x39f7f8f9L, + 0xaae3e7ecL, 0xffc9d9e2L, 0xff486982L, 0xff305d81L, 0xff336288L, 0xff3e627fL, 0xffabbbc6L, 0x72ecf9fcL, + 0x0L , 0x0L , 0x8edbdddfL, 0xffbdc2c3L, 0xffced8daL, 0xffe5f6fcL, 0xff8ba1aeL, 0xff3f5c65L, + 0xff325056L, 0xffacc4d0L, 0xffb1c6daL, 0xff405a7aL, 0xff3b6085L, 0xff366491L, 0xff326694L, 0xff306988L, + 0xff2e698aL, 0xff2d688fL, 0xff2f6891L, 0xff2e638bL, 0xff366489L, 0xff396082L, 0xffa9bdd0L, 0xffe0eaf3L, + 0xff728595L, 0xff576d82L, 0xff546b81L, 0xff627788L, 0xff818f98L, 0xffa3acb0L, 0xffced1d5L, 0x72f8f8fbL, + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x55ffffffL, 0xffc3c6ceL, + 0xc7ecf9ffL, 0xff6f889cL, 0xff365d7cL, 0xff306289L, 0xff30658eL, 0xff345f81L, 0xff4e697eL, 0xffb5cad7L, + 0x55ebf5f8L, 0x0L , 0x0L , 0x0L , 0xaadbdcdcL, 0xffbcc2c4L, 0xffe9f4f8L, 0xff768e94L, + 0xff39575dL, 0xffb0cbd5L, 0xff9cb6ceL, 0xff3b5a7cL, 0xff396189L, 0xff366591L, 0xff326793L, 0xff316789L, + 0xff30688bL, 0xff2e688fL, 0xff2e6890L, 0xff2d628aL, 0xff326187L, 0xff366082L, 0xff9cb3c5L, 0xffe0eef5L, + 0xff5b6d7cL, 0xff384d5eL, 0xff516778L, 0xff728391L, 0xff7d8890L, 0xff798185L, 0xff86888bL, 0xffbdbfc1L, + 0x55f4f7fcL, 0x1de4e6ebL, 0x0L , 0x0L , 0x0L , 0x0L , 0x39eff0f0L, 0xc7e3ecedL, + 0xffb0c8daL, 0xff3d5e7aL, 0xff376589L, 0xff2b628dL, 0xff2b6593L, 0xff376990L, 0xff355a79L, 0xff547188L, + 0xffc3d9e4L, 0x72ecf9fdL, 0x39e5e7e8L, 0x0L , 0x0L , 0xffcdd0d0L, 0xffe8eff0L, 0xffddeef1L, + 0xffbdd9dbL, 0xffd3eef8L, 0xff61809eL, 0xff385c82L, 0xff38618cL, 0xff366591L, 0xff336691L, 0xff34668bL, + 0xff32668cL, 0xff306690L, 0xff2f6893L, 0xff346994L, 0xff35658bL, 0xff325d80L, 0xff708da1L, 0xffe4f5f9L, + 0xffc3d6deL, 0xffa9bac6L, 0xffcedce4L, 0x8ef0fafdL, 0x55f2f9fbL, 0x55e9edf4L, 0x55e8eaefL, 0x72dfe3e4L, + 0x1df1f6f9L, 0x39dee2e6L, 0x0L , 0x0L , 0x0L , 0x39ffffffL, 0xffcacfceL, 0xe3e6f4f3L, + 0xff5b7e99L, 0xff325c7fL, 0xff35678eL, 0xff2c6591L, 0xff2c6795L, 0xff306791L, 0xff366589L, 0xff3b5f79L, + 0xff536e7fL, 0xffc1d6e0L, 0xe3d6e3e7L, 0x72ebefefL, 0x72f1f7f9L, 0xffd2dbe0L, 0xffe4f0f4L, 0xffe6f8faL, + 0xffb7d1d3L, 0xff7d9bacL, 0xff365b7fL, 0xff39638fL, 0xff376391L, 0xff356490L, 0xff346590L, 0xff36658dL, + 0xff34658eL, 0xff326692L, 0xff306694L, 0xff2f6591L, 0xff34668eL, 0xff346286L, 0xff406177L, 0xff7a919bL, + 0xffd4e7ecL, 0x1dfeffffL, 0xaad5dadcL, 0x1df4f6f6L, 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x1dffffffL, 0x8ee4e5e5L, 0xc7e3f0f5L, 0xffa0b5bdL, + 0xff335b79L, 0xff39668aL, 0xff34658cL, 0xff326792L, 0xff306793L, 0xff316791L, 0xff31658fL, 0xff335b78L, + 0xff506c7eL, 0xffbfd7e1L, 0xffe5f8feL, 0xff9fb1bdL, 0xff5e737eL, 0xff425c6cL, 0xff90adbfL, 0xffe2fcfeL, + 0xff627b7eL, 0xff37586bL, 0xff3a668eL, 0xff336394L, 0xff336494L, 0xff346590L, 0xff36648dL, 0xff38638eL, + 0xff366491L, 0xff326595L, 0xff306596L, 0xff316796L, 0xff326690L, 0xff33648aL, 0xff395f76L, 0xff6d8993L, + 0xffdaedf2L, 0xaae5eff0L, 0x39ebeff0L, 0x8edbdbdcL, 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x55ffffffL, 0xffb2b3b9L, 0xc7f2fdffL, 0xff627889L, + 0xff325978L, 0xff3a6688L, 0xff346286L, 0xff32638bL, 0xff31658eL, 0xff336890L, 0xff2d628bL, 0xff3b6584L, + 0xffa0bdcdL, 0xffe2faffL, 0xff7f96a4L, 0xff405767L, 0xff436072L, 0xff375b73L, 0xff517e9cL, 0xffd7f9ffL, + 0xff9db3b3L, 0xff37596eL, 0xff3a6893L, 0xff2f6396L, 0xff316596L, 0xff336590L, 0xff37648dL, 0xff3b618fL, + 0xff386292L, 0xff336496L, 0xff306598L, 0xff346a99L, 0xff336993L, 0xff2e6188L, 0xff467188L, 0xffc2dee2L, + 0xfff2ffffL, 0xffc1cbccL, 0xffd8d7d5L, 0xffd6d3d3L, 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x8ef1f1f2L, 0xffc4cbd6L, 0xffc9dcebL, 0xff45627bL, + 0xff346387L, 0xff33648bL, 0xff32668eL, 0xff336893L, 0xff31668fL, 0xff34648bL, 0xff305d80L, 0xff6b8ba3L, + 0xffdef3faL, 0xff9ebacbL, 0xff3c5f77L, 0xff3a5f7cL, 0xff3d6685L, 0xff396283L, 0xff3f698cL, 0xffb0cee2L, + 0xffd4ebecL, 0xff486e7eL, 0xff2f6183L, 0xff306597L, 0xff2f649aL, 0xff32648fL, 0xff366587L, 0xff38638cL, + 0xff366491L, 0xff306596L, 0xff2e6698L, 0xff346a9bL, 0xff31638eL, 0xff315c82L, 0xff86a4bfL, 0xffe1f6fbL, + 0xffd2e4e6L, 0xffd8e4e2L, 0xffa1a6a8L, 0xc7f1f2f7L, 0x39e2e3e5L, 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x39ffffffL, 0xffc6c9cbL, 0xffdff1f7L, 0xff91adbfL, 0xff385c79L, + 0xff326792L, 0xff2f6694L, 0xff2d6795L, 0xff2e6895L, 0xff2f658fL, 0xff366489L, 0xff365d7bL, 0xff9fb6c6L, + 0xffe0f3faL, 0xff607f93L, 0xff315e7cL, 0xff31638bL, 0xff2f6189L, 0xff396389L, 0xff35587bL, 0xff758da7L, + 0xffe5feffL, 0xff78a0a9L, 0xff295e75L, 0xff2f6595L, 0xff2f639eL, 0xff316490L, 0xff346782L, 0xff35658cL, + 0xff326691L, 0xff2e6796L, 0xff2d6799L, 0xff2e6394L, 0xff36628cL, 0xff486c8fL, 0xffccdff3L, 0xffc3d3daL, + 0xff7a8c8bL, 0xffe8f8f3L, 0xff88959dL, 0xffbfc7d6L, 0xaae5eaeeL, 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x55ffffffL, 0xffb7bbbeL, 0xffe4f6feL, 0xff68859dL, 0xff345b79L, + 0xff31658fL, 0xff306693L, 0xff2e6794L, 0xff2e6794L, 0xff2e638eL, 0xff366489L, 0xff406786L, 0xffc1daebL, + 0xffc0d3dcL, 0xff406075L, 0xff35607fL, 0xff33658cL, 0xff35678eL, 0xff3b668cL, 0xff34597cL, 0xff496480L, + 0xffcde4f2L, 0xffa6c7ccL, 0xff30617aL, 0xff316392L, 0xff31649dL, 0xff326692L, 0xff326684L, 0xff356392L, + 0xff326595L, 0xff306597L, 0xff306696L, 0xff356893L, 0xff325d81L, 0xff658aa1L, 0xffe3f9ffL, 0xff7b8d9fL, + 0xff586d6dL, 0xffe4f7f4L, 0xff9faeb7L, 0xff6a7789L, 0xc7e6f1fbL, 0x1df1f3f4L, 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x55ffffffL, 0xffcbd3d7L, 0xffd1e6f3L, 0xff43657fL, 0xff3a6384L, + 0xff326791L, 0xff306692L, 0xff2e6794L, 0xff2e6895L, 0xff2f648fL, 0xff356389L, 0xff446b8aL, 0xffc7e0f3L, + 0xffaec4cfL, 0xff3d5e74L, 0xff376384L, 0xff346790L, 0xff30648dL, 0xff366289L, 0xff365e81L, 0xff3a5776L, + 0xffa1bccaL, 0xffbce2e7L, 0xff3b687fL, 0xff31608dL, 0xff35659dL, 0xff346794L, 0xff2f6486L, 0xff326399L, + 0xff32649aL, 0xff326597L, 0xff316490L, 0xff336387L, 0xff345f7bL, 0xff9fc4d2L, 0xffb5cfe2L, 0xff435a71L, + 0xff516b6eL, 0xffd8f0f0L, 0xffabbfc9L, 0xff42526aL, 0xffb4c3d6L, 0x8eebf4f3L, 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0xffdbe6eeL, 0xffa3bbceL, 0xff395e7bL, 0xff39678bL, + 0xff316690L, 0xff2f6592L, 0xff2d6693L, 0xff2f6895L, 0xff306590L, 0xff346388L, 0xff416887L, 0xffc3ddeeL, + 0xffb5ccd8L, 0xff3c5f77L, 0xff346284L, 0xff326590L, 0xff2e628dL, 0xff37658eL, 0xff3b6488L, 0xff3a5778L, + 0xff7a95acL, 0xffc3e5edL, 0xff426a7eL, 0xff345f89L, 0xff366499L, 0xff336695L, 0xff30658bL, 0xff31639cL, + 0xff326499L, 0xff356393L, 0xff37648bL, 0xff335c7bL, 0xff557d92L, 0xffc8edf5L, 0xff6d8ca2L, 0xff3b5773L, + 0xff54737bL, 0xffdef9fbL, 0xff9db5c4L, 0xff3f5470L, 0xff6d809aL, 0xe3dff0f5L, 0x1dfafcfcL, 0x0L , + 0x0L , 0x0L , 0x0L , 0x1debedeeL, 0xffdeedf7L, 0xff7a95abL, 0xff355e7eL, 0xff33658dL, + 0xff30658fL, 0xff2e6591L, 0xff2d6592L, 0xff2e6795L, 0xff306590L, 0xff356388L, 0xff3c6483L, 0xffbad5e7L, + 0xffc3dbe6L, 0xff40647dL, 0xff346386L, 0xff2f6491L, 0xff306693L, 0xff34648eL, 0xff386489L, 0xff3a5a7eL, + 0xff66819aL, 0xffc6e5ebL, 0xff4d6f80L, 0xff385c86L, 0xff386198L, 0xff326495L, 0xff316690L, 0xff2e6398L, + 0xff326395L, 0xff38648dL, 0xff3c6383L, 0xff375c74L, 0xff98bccbL, 0xffc0e5eaL, 0xff40657eL, 0xff375978L, + 0xff5b7e89L, 0xffdbfbfdL, 0xff8aa8bbL, 0xff3a5576L, 0xff445d7bL, 0xffb2ccd8L, 0x72f4fcfcL, 0x0L , + 0x0L , 0x0L , 0x0L , 0xe3e1e4e7L, 0xffdbebf4L, 0xff57758dL, 0xff336084L, 0xff2f6590L, + 0xff306590L, 0xff2e6591L, 0xff2c6592L, 0xff2f6895L, 0xff316691L, 0xff356489L, 0xff385f7eL, 0xffaac6d9L, + 0xffcbe5f0L, 0xff456a84L, 0xff2e6084L, 0xff326996L, 0xff316896L, 0xff336490L, 0xff366288L, 0xff36577dL, + 0xff617b97L, 0xffc8e5ecL, 0xff567382L, 0xff3c5b83L, 0xff3b6097L, 0xff326496L, 0xff2e6791L, 0xff2d6491L, + 0xff32638dL, 0xff3a6586L, 0xff3d6079L, 0xff4c6c82L, 0xffcdeefaL, 0xff9cc2cfL, 0xff345a79L, 0xff365b7eL, + 0xff68909eL, 0xffd7feffL, 0xff7194abL, 0xff3d5c81L, 0xff3c5a7bL, 0xff7897a7L, 0xaaf2fdfbL, 0x0L , + 0x0L , 0x0L , 0x0L , 0xe3dee4e8L, 0xffbbcddcL, 0xff3e5f7aL, 0xff316188L, 0xff2f6794L, + 0xff326792L, 0xff2e6490L, 0xff2c6592L, 0xff2f6895L, 0xff316691L, 0xff366489L, 0xff325978L, 0xff9ebbcdL, + 0xffd2edf6L, 0xff4b708cL, 0xff316288L, 0xff2e6593L, 0xff306796L, 0xff336592L, 0xff36648cL, 0xff375980L, + 0xff66839fL, 0xffc8e4ebL, 0xff55707fL, 0xff3f5b82L, 0xff3c6095L, 0xff336496L, 0xff2f6793L, 0xff306a8fL, + 0xff356888L, 0xff39647dL, 0xff3a5b6fL, 0xff8ba8b7L, 0xffdefcffL, 0xff60859eL, 0xff345e83L, 0xff315b80L, + 0xff719babL, 0xffd4fcffL, 0xff5e859dL, 0xff385c81L, 0xff3d5f82L, 0xff42677bL, 0xffbbd1d0L, 0x55fcfefcL, + 0x0L , 0x0L , 0x0L , 0xaaecf7f2L, 0xff8fa6b6L, 0xff33557cL, 0xff346490L, 0xff2f6690L, + 0xff356591L, 0xff326592L, 0xff306694L, 0xff2e6795L, 0xff2d648eL, 0xff326388L, 0xff325e7bL, 0xff9fbcd1L, + 0xffd0e7f6L, 0xff506f8cL, 0xff375f82L, 0xff326289L, 0xff30618cL, 0xff30618bL, 0xff30618cL, 0xff355875L, + 0xff7892a0L, 0xffc2e3f0L, 0xff46708fL, 0xff356287L, 0xff38648cL, 0xff38648aL, 0xff38638aL, 0xff316792L, + 0xff396c92L, 0xff396282L, 0xff43657fL, 0xffbad9e3L, 0xffbce0ebL, 0xff3a657dL, 0xff356889L, 0xff2f5e7fL, + 0xff7e9dadL, 0xffe3fbffL, 0xff5f8395L, 0xff2d6280L, 0xff2f6685L, 0xff295c76L, 0xff8098a8L, 0xaaf4f9fbL, + 0x0L , 0x0L , 0x0L , 0xe3e0f0eaL, 0xff768c9fL, 0xff33567fL, 0xff356491L, 0xff2d648cL, + 0xff356490L, 0xff326592L, 0xff306694L, 0xff2e6795L, 0xff2f6690L, 0xff346589L, 0xff35627eL, 0xffa5c3d7L, + 0xffcfe7f3L, 0xff4c6d84L, 0xff365c79L, 0xff346082L, 0xff336081L, 0xff376384L, 0xff386182L, 0xff325167L, + 0xff8da8b4L, 0xffbde1eeL, 0xff3e6a8cL, 0xff336389L, 0xff37648eL, 0xff38638eL, 0xff39638eL, 0xff316694L, + 0xff33668dL, 0xff345d7dL, 0xff50728aL, 0xffd1f0feL, 0xffa3c1cbL, 0xff365a6cL, 0xff31607bL, 0xff2d5c78L, + 0xff7894a1L, 0xffe1f8feL, 0xff678a9eL, 0xff2e6384L, 0xff30688bL, 0xff2a5e7dL, 0xff557087L, 0xe3deeaf0L, + 0x1df3f5f5L, 0x0L , 0x72e9eeeaL, 0xffd5e5e3L, 0xff5d758cL, 0xff395c86L, 0xff366793L, 0xff2e688eL, + 0xff356590L, 0xff326592L, 0xff306694L, 0xff2e6794L, 0xff2d648eL, 0xff326387L, 0xff34617eL, 0xffa4c3d5L, + 0xffcfe8efL, 0xff406073L, 0xff3b6076L, 0xff3b627aL, 0xff476c81L, 0xff90b1c3L, 0xffb8d4e3L, 0xff66828dL, + 0xffa6c4c4L, 0xffb4dae4L, 0xff366385L, 0xff33638dL, 0xff356392L, 0xff376394L, 0xff386294L, 0xff2d6493L, + 0xff30648dL, 0xff376183L, 0xff5b7e95L, 0xffdcfaffL, 0xff98b1bbL, 0xff445b66L, 0xff557c8cL, 0xff376476L, + 0xff658085L, 0xffe3fbffL, 0xff7e9fb5L, 0xff2b5d82L, 0xff306590L, 0xff32648eL, 0xff3e5c7aL, 0xffbcccd6L, + 0xc7e0e8e7L, 0x0L , 0xffdce3deL, 0xffcbdce0L, 0xff4e6782L, 0xff3a5f8bL, 0xff316491L, 0xff2e698dL, + 0xff356590L, 0xff326592L, 0xff306694L, 0xff2e6794L, 0xff2e6690L, 0xff346589L, 0xff376381L, 0xffadcdddL, + 0xffe0fafeL, 0xff88a8b6L, 0xff4d6e7fL, 0xff345667L, 0xff5b7b88L, 0xffbed8e0L, 0xffd6e9edL, 0xff96aeb3L, + 0xffc8e6e8L, 0xff9cc3ceL, 0xff2d5c7fL, 0xff356691L, 0xff346396L, 0xff356397L, 0xff376297L, 0xff2e6695L, + 0xff316791L, 0xff336184L, 0xff486f89L, 0xffcce6f1L, 0xffadc2caL, 0xff7c8b91L, 0xffcdeaf0L, 0xff7ca7b0L, + 0xff566e6fL, 0xffe5f9f9L, 0xff9ebdd1L, 0xff2e5f89L, 0xff2d6293L, 0xff346696L, 0xff35577cL, 0xff96adbdL, + 0xaae4f4f5L, 0x0L , 0xffdde6e4L, 0xffbed1d9L, 0xff466082L, 0xff3a5f8fL, 0xff2e6490L, 0xff2a688aL, + 0xff346490L, 0xff326592L, 0xff306694L, 0xff2e6895L, 0xff2d648eL, 0xff346589L, 0xff376380L, 0xffa8c6d7L, + 0xffeaffffL, 0xffdefaffL, 0xffc1e1ebL, 0xff91b0bdL, 0xff708e98L, 0xff7c9499L, 0xff849498L, 0xffb3c9ccL, + 0xffddfeffL, 0xff6d95aaL, 0xff2c5c81L, 0xff326591L, 0xff326495L, 0xff346495L, 0xff356395L, 0xff2f6593L, + 0xff306690L, 0xff34648aL, 0xff37607fL, 0xff93b4c6L, 0xffdef6fbL, 0xffa3b3b6L, 0xff9cb8beL, 0xff6f949dL, + 0xff5d7071L, 0xffdfeff0L, 0xffadcad8L, 0xff2f608bL, 0xff306599L, 0xff316297L, 0xff315882L, 0xff6a8a9fL, + 0xe3e0f5f8L, 0x1de9ebebL, 0xffe9f4f3L, 0xffa5b9c5L, 0xff3e5a7fL, 0xff375f92L, 0xff306893L, 0xff2c6c8dL, + 0xff346590L, 0xff326592L, 0xff306694L, 0xff2f6895L, 0xff2e6690L, 0xff326488L, 0xff2f5c79L, 0xffa1becfL, + 0xffd7ecf4L, 0xff87a2afL, 0xffb5d3e0L, 0xffd5f5fdL, 0xffdcfcffL, 0xffdcf7ffL, 0xffe5faffL, 0xffdcf5fdL, + 0xff89abc2L, 0xff3d6583L, 0xff32648bL, 0xff306690L, 0xff316692L, 0xff326590L, 0xff346590L, 0xff2e618cL, + 0xff2f648eL, 0xff346790L, 0xff346488L, 0xff416d89L, 0xffaccfdeL, 0xffe4fbfeL, 0xffc7e2eaL, 0xffc4e3edL, + 0xffd5e3e5L, 0xfff5ffffL, 0xffaac7d6L, 0xff34658fL, 0xff306597L, 0xff336596L, 0xff396591L, 0xff4a708eL, + 0xffd0e8efL, 0x55f3f7f8L, 0xffecf7f7L, 0xff9bb0c0L, 0xff39567fL, 0xff376195L, 0xff326a95L, 0xff2c6d8bL, + 0xff346590L, 0xff326592L, 0xff306694L, 0xff2e6895L, 0xff2f6690L, 0xff35668bL, 0xff34607dL, 0xff95afc2L, + 0xffdeedf9L, 0xff577081L, 0xff3e5e75L, 0xff50758fL, 0xff7196b0L, 0xff81a4bfL, 0xff7c9bb4L, 0xff587894L, + 0xff3a5b7eL, 0xff376086L, 0xff32658eL, 0xff306790L, 0xff30678eL, 0xff32678bL, 0xff346687L, 0xff35658cL, + 0xff32668eL, 0xff2f668fL, 0xff2f678fL, 0xff2c6185L, 0xff386682L, 0xff7397a8L, 0xffa7c4cfL, 0xffaac2ceL, + 0xffc7d2daL, 0xfff7ffffL, 0xff9db8ccL, 0xff2f6088L, 0xff2c6390L, 0xff30648eL, 0xff31608aL, 0xff386487L, + 0xffbbd7e0L, 0x55fcffffL, 0xffecf6f8L, 0xff9aafc0L, 0xff395680L, 0xff3a6398L, 0xff316b96L, 0xff296a8aL, + 0xff34648fL, 0xff326591L, 0xff306693L, 0xff2f6894L, 0xff306790L, 0xff346589L, 0xff2e5c79L, 0xff7e98acL, + 0xffe8f7ffL, 0xff7c93a8L, 0xff365672L, 0xff3a6181L, 0xff325d80L, 0xff315b7eL, 0xff335c7fL, 0xff385c81L, + 0xff3f628aL, 0xff39628dL, 0xff336691L, 0xff306790L, 0xff30678cL, 0xff316986L, 0xff326883L, 0xff356388L, + 0xff32638dL, 0xff2f6893L, 0xff2c6996L, 0xff2c6790L, 0xff326689L, 0xff335f78L, 0xff3c5e78L, 0xff3d536eL, + 0xff929ca9L, 0xffeaf4fdL, 0xff6f89a3L, 0xff2e5e85L, 0xff2f6690L, 0xff32668cL, 0xff2f6189L, 0xff2e5e82L, + 0xffa6c3ceL, 0xaaf3f8f8L, 0xffe6f4f6L, 0xff9ebfcaL, 0xff355f78L, 0xff37678fL, 0xff2f6398L, 0xff2f629fL, + 0xff34678aL, 0xff356788L, 0xff336587L, 0xff326486L, 0xff326586L, 0xff336586L, 0xff2e6183L, 0xff5a7f99L, + 0xffdaf5ffL, 0xff91b3c9L, 0xff2e5776L, 0xff356688L, 0xff2f678cL, 0xff2b648dL, 0xff2a648dL, 0xff346993L, + 0xff366590L, 0xff346490L, 0xff356691L, 0xff346590L, 0xff346590L, 0xff346590L, 0xff34658fL, 0xff35648bL, + 0xff35648fL, 0xff346497L, 0xff32649dL, 0xff2f639bL, 0xff306597L, 0xff2e6790L, 0xff345e75L, 0xff4f6978L, + 0xffc7e5ecL, 0xffb7dae8L, 0xff37658aL, 0xff34638cL, 0xff33628bL, 0xff39658eL, 0xff34648cL, 0xff2c5d7cL, + 0xffa2bed0L, 0xaae8eeefL, 0xffd9e5e9L, 0xffb4d1deL, 0xff3e657aL, 0xff356185L, 0xff346496L, 0xff306199L, + 0xff34678eL, 0xff35678cL, 0xff33658bL, 0xff32648aL, 0xff35678dL, 0xff34668cL, 0xff2f628bL, 0xff3e6681L, + 0xffb1cfd7L, 0xffc3e7f3L, 0xff446b84L, 0xff33607fL, 0xff31648aL, 0xff2e658eL, 0xff2c6593L, 0xff306592L, + 0xff35658fL, 0xff34658fL, 0xff34658fL, 0xff34658fL, 0xff34658fL, 0xff34658fL, 0xff34658fL, 0xff306692L, + 0xff316593L, 0xff326497L, 0xff326398L, 0xff336294L, 0xff36658fL, 0xff326486L, 0xff436577L, 0xffb3c8d1L, + 0xffd3f1faL, 0xff5d85a2L, 0xff316085L, 0xff356792L, 0xff346692L, 0xff356793L, 0xff32638aL, 0xff35607aL, + 0xff98b2c3L, 0xaaecf2f4L, 0xffd2daddL, 0xffd3eaf3L, 0xff527186L, 0xff365c7bL, 0xff35638cL, 0xff2f608fL, + 0xff356692L, 0xff356591L, 0xff33638fL, 0xff32628eL, 0xff346490L, 0xff336490L, 0xff326492L, 0xff365e79L, + 0xff7c9ca5L, 0xffddffffL, 0xff799cadL, 0xff2f5670L, 0xff376285L, 0xff33648fL, 0xff316598L, 0xff306391L, + 0xff34658cL, 0xff34658dL, 0xff34658dL, 0xff34658eL, 0xff34658eL, 0xff34658eL, 0xff34658fL, 0xff2d6797L, + 0xff2e6696L, 0xff306596L, 0xff346492L, 0xff366189L, 0xff3c6486L, 0xff345c76L, 0xff8da7b4L, 0xffeafcffL, + 0xff88a4b8L, 0xff355a78L, 0xff346388L, 0xff2e618bL, 0xff336794L, 0xff306493L, 0xff356489L, 0xff395c71L, + 0xffa4bac9L, 0xaae8edf0L, 0x55e3e7e9L, 0xc7e4f4fbL, 0xff7d94a6L, 0xff35556eL, 0xff3c6586L, 0xff34648aL, + 0xff326291L, 0xff346494L, 0xff356594L, 0xff336392L, 0xff326291L, 0xff346393L, 0xff356597L, 0xff335d7aL, + 0xff4e717cL, 0xffcdeef3L, 0xffb7d5dcL, 0xff436379L, 0xff385d7aL, 0xff39648bL, 0xff2f608fL, 0xff326490L, + 0xff34658dL, 0xff34658dL, 0xff34658dL, 0xff33648cL, 0xff33648cL, 0xff33648cL, 0xff33648dL, 0xff2c6596L, + 0xff326999L, 0xff336792L, 0xff366389L, 0xff396180L, 0xff345871L, 0xff5c7c91L, 0xffe4faffL, 0xffb4cad5L, + 0xff3f5e73L, 0xff385f7dL, 0xff37668aL, 0xff366891L, 0xff336490L, 0xff2e5f8cL, 0xff3c6484L, 0xff3c5867L, + 0xffc2d4deL, 0xaaeaeeefL, 0x0L , 0xffd4dbe1L, 0xffc9d8e4L, 0xff496377L, 0xff3d627aL, 0xff376481L, + 0xff336490L, 0xff31628eL, 0xff33638fL, 0xff366692L, 0xff346590L, 0xff346590L, 0xff336492L, 0xff386585L, + 0xff385b6eL, 0xff7f9dabL, 0xffe9ffffL, 0xff8ba4b4L, 0xff38556aL, 0xff365b79L, 0xff37658bL, 0xff316389L, + 0xff34668cL, 0xff34668cL, 0xff34668cL, 0xff32638aL, 0xff32638aL, 0xff32638aL, 0xff33658cL, 0xff386a99L, + 0xff33638fL, 0xff38678aL, 0xff396581L, 0xff335a71L, 0xff486a7fL, 0xffbbd8e3L, 0xffc0dce8L, 0xff4d6e82L, + 0xff3b617bL, 0xff386382L, 0xff38678aL, 0xff326188L, 0xff376188L, 0xff3d658dL, 0xff34536fL, 0xff8397a1L, + 0xe3e8f4f9L, 0x1dfdfdfdL, 0x0L , 0xaad6d7dbL, 0xc7f0f8ffL, 0xff95a9b8L, 0xff325568L, 0xff366277L, + 0xff34668bL, 0xff33658cL, 0xff34658cL, 0xff33658cL, 0xff34668dL, 0xff34668dL, 0xff34668eL, 0xff356387L, + 0xff395d7cL, 0xff46627aL, 0xffbed2ddL, 0xffd9ecf1L, 0xff708994L, 0xff36596cL, 0xff3b687fL, 0xff336584L, + 0xff34668bL, 0xff34668aL, 0xff34668aL, 0xff326488L, 0xff326488L, 0xff326488L, 0xff336488L, 0xff39628aL, + 0xff3c6387L, 0xff365f7aL, 0xff365f73L, 0xff5c8294L, 0xffb8dbe5L, 0xffceedf6L, 0xff547993L, 0xff305c78L, + 0xff346181L, 0xff3a698cL, 0xff356388L, 0xff3c6789L, 0xff385b7bL, 0xff3a5776L, 0xff788fa1L, 0xffdfeef3L, + 0x72edf2f4L, 0x0L , 0x0L , 0x39ffffffL, 0xe3c7c9d0L, 0xffe6f5fbL, 0xff7ea1afL, 0xff376678L, + 0xff2a5d81L, 0xff32668aL, 0xff33678bL, 0xff306388L, 0xff33668aL, 0xff33668aL, 0xff326689L, 0xff36668fL, + 0xff3b618eL, 0xff35516fL, 0xff637385L, 0xffdcebf0L, 0xffd1e5eaL, 0xff688b94L, 0xff34636eL, 0xff2e627dL, + 0xff32658aL, 0xff33668aL, 0xff33668aL, 0xff316488L, 0xff306387L, 0xff306487L, 0xff316287L, 0xff395980L, + 0xff385978L, 0xff45687eL, 0xff7ea3b0L, 0xffc9eff6L, 0xffd2f6fcL, 0xff6d92aaL, 0xff305c7fL, 0xff34688eL, + 0xff32678eL, 0xff2b5f87L, 0xff35658bL, 0xff365d7fL, 0xff45617fL, 0xff899fb7L, 0xffdceaf3L, 0x55f5f9faL, + 0x0L , 0x0L , 0x0L , 0x0L , 0x8ef6f6f7L, 0xe3cbd2d5L, 0xe3edffffL, 0xffb3ccd2L, + 0xff638ca1L, 0xff406b83L, 0xff335d75L, 0xff335d74L, 0xff335d74L, 0xff345e75L, 0xff335e75L, 0xff3e5f79L, + 0xff526781L, 0xff6f8093L, 0xff96a2afL, 0xe3cfdbe1L, 0x72f9ffffL, 0xe3e2f5f8L, 0xff9eb8beL, 0xff5a7f93L, + 0xff336280L, 0xff32607cL, 0xff305d7aL, 0xff2e5b78L, 0xff315e7bL, 0xff325f7cL, 0xff396582L, 0xff5b7b8bL, + 0xff87a6b3L, 0xffbddbe4L, 0xffdffbffL, 0xffb4d3dcL, 0xff5e8193L, 0xff395e76L, 0xff346380L, 0xff2b627eL, + 0xff2c5e7bL, 0xff31607aL, 0xff396178L, 0xff648294L, 0xffb0c4d1L, 0xe3e8f3f8L, 0x55f4f7f7L, 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x1de9eaeaL, 0xaae9ebeaL, + 0xe3dff3fbL, 0xffcce3e9L, 0xffadc5ccL, 0xff9bb3bfL, 0xff93aab5L, 0xff91a8b3L, 0xffa6bfcaL, 0xffb9c8cdL, + 0xffd8dee0L, 0xaae4ecf2L, 0xaaf3faffL, 0x8edbe2e8L, 0x0L , 0x39e2e4e6L, 0xaaedf1f5L, 0xc7e5f6fdL, + 0xffb2cfdcL, 0xff8ca8b9L, 0xff7c98a8L, 0xff7c98a7L, 0xff85a1b1L, 0xff9cb9c8L, 0xffb4cfddL, 0xffd5f0ecL, + 0xc7e3fbf8L, 0xc7e8fafcL, 0xffa4b7c1L, 0xff5a6d7cL, 0xff415a6dL, 0xff3f6073L, 0xff3d6477L, 0xff487081L, + 0xff5e818fL, 0xff809ca7L, 0xffbaced2L, 0xe3e7f3f6L, 0x8ef7fdfcL, 0x1dfefefeL, 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x8ee3e9eeL, 0xffd0d4daL, 0xaae5e8edL, 0xaaf6fafeL, 0xaaf9fbffL, 0xaaf6f9fdL, 0xaae8ecf2L, 0x55f8fcfeL, + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x1de3e4e6L, 0xe3d5d9dcL, + 0xe3dadedfL, 0xaaf3f9fcL, 0xaaf5fbfdL, 0xaafaffffL, 0xaaf9fcfeL, 0x8ef9fcfeL, 0x55fbffffL, 0x39eff7f5L, + 0x0L , 0x1decf5f7L, 0xe3dce3ecL, 0xffcbd4ddL, 0xffc8d7e3L, 0xffc3d9e5L, 0xffcde0eaL, 0xffdfebf7L, + 0xaae9f3f8L, 0xaaedf4fcL, 0xaae2e4ecL, 0x55e9eaedL, 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x39ffffffL, 0x72e9ecedL, 0xffccd3d7L, 0xffcaced3L, 0xffc5c2c6L, + 0x8ee3e3e8L, 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0xffffffL , 0xff1fL , 0xffffffL , 0xff0fL , 0xffffffL , 0xff0fL , + 0xffffffL , 0xff07L , 0xffffffL , 0xff07L , 0xfeffffL , 0xff03L , 0xfeffffL , 0xff03L , + 0xfeffffL , 0xff03L , 0xfeffffL , 0xff07L , 0xfeffffL , 0xff07L , 0x8cffffL , 0xff03L , + 0x4ffffL , 0xff01L , 0x9cffL , 0xff01L , 0x4feL , 0xff03L , 0x4fcL , 0x700L , + 0x3f8L , 0x300L , 0xc001f0L , 0x0L , 0x6000f0L , 0x0L , 0xe0L , 0x3f00L , + 0xc0L , 0x3f00L , 0xc0L , 0x3f00L , 0xc0L , 0x1f00L , 0x80L , 0x1f00L , + 0x80L , 0xf00L , 0x80L , 0xf00L , 0xc0L , 0x700L , 0x80L , 0x700L , + 0x80L , 0x700L , 0x80L , 0x300L , 0x80L , 0x300L , 0x80L , 0x100L , + 0x0L , 0x100L , 0x0L , 0x100L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , 0x0L , + 0x0L , 0x0L , 0x0L , 0x0L , 0x80L , 0x0L , 0x80L , 0x100L , + 0x80L , 0x300L , 0xc0L , 0x700L , 0x2000f0L , 0xf00L , 0x2f003fcL , 0x3f00L , + 0xffffffffL, 0xff81L +END + +/* Type: group icon + + Name: "IDI_ICON". */ + +"IDI_ICON" 14 /* RT_GROUP_ICON */ +BEGIN + 0, 1, 6, /* Has 6 elements. */ + /* "width height colors pad", planes, bits, bytes, index. */ + "\020\020\000\000", 1, 8, 0x568L, 1, /* Element no 1. */ + "\040\040\000\000", 1, 8, 0x8a8L, 2, /* Element no 2. */ + "\060\060\000\000", 1, 8, 0xea8L, 3, /* Element no 3. */ + "\020\020\000\000", 1, 32, 0x468L, 4, /* Element no 4. */ + "\040\040\000\000", 1, 32, 0x10a8L, 5, /* Element no 5. */ + "\060\060\000\000", 1, 32, 0x25a8L, 6 /* Element no 6. */ +END + +/* Type: version + + Name: 1. */ + +1 VERSIONINFO + FILEVERSION 17, 0, 5, 0 + PRODUCTVERSION 17, 0, 5, 0 + FILEFLAGSMASK 0x3f + FILEOS 0x40004 + FILETYPE 0x1 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "PostgreSQL Global Development Group" + VALUE "FileDescription", "psql - the PostgreSQL interactive terminal" + VALUE "FileVersion", "17.5" + VALUE "InternalName", "psql" + VALUE "LegalCopyright", "Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group. Portions Copyright (c) 1994, Regents of the University of California." + VALUE "OriginalFileName", "psql.exe" + VALUE "ProductName", "PostgreSQL" + VALUE "ProductVersion", "17.5" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +/* Type: 24 + + Name: 1. */ + +1 24 /* RT_MANIFEST */ +BEGIN + "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>\n" + "<assembly xmlns=""urn:schemas-microsoft-com:asm.v1"" manifestVersion=""1.0"">\n" + " <trustInfo xmlns=""urn:schemas-microsoft-com:asm.v3"">\n" + " <security>\n" + " <requestedPrivileges>\n" + " <requestedExecutionLevel level=""asInvoker""/>\n" + " </requestedPrivileges>\n" + " </security>\n" + " </trustInfo>\n" + " <compatibility xmlns=""urn:schemas-microsoft-com:compatibility.v1"">\n" + " <application>\n" + " <!--The ID below indicates application support for Windows Vista -->\n" + " <supportedOS Id=""{e2011457-1546-43c5-a5fe-008deee3d3f0}""/>\n" + " <!--The ID below indicates application support for Windows 7 -->\n" + " <supportedOS Id=""{35138b9a-5d96-4fbd-8e2d-a2440225f93a}""/>\n" + " <!--The ID below indicates application support for Windows 8 -->\n" + " <supportedOS Id=""{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}""/>\n" + " <!--The ID below indicates application support for Windows 8.1 -->\n" + " <supportedOS Id=""{1f676c76-80e1-4239-95bb-83d0f6d0da78}""/> \n" + " <!--The ID below indicates application support for Windows 10 -->\n" + " <supportedOS Id=""{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}""/> \n" + " </application>\n" + " </compatibility>\n" + "</assembly>\n" +END diff --git a/binutils/testsuite/binutils-all/windres/windres.exp b/binutils/testsuite/binutils-all/windres/windres.exp index e5978b8..9730317 100644 --- a/binutils/testsuite/binutils-all/windres/windres.exp +++ b/binutils/testsuite/binutils-all/windres/windres.exp @@ -76,7 +76,7 @@ foreach res $res_list { } } - verbose "$wr -J rc -O res $res tmpdir/$broot.res" 1 + verbose "$wr $cpp_opts -J rc -O res $res tmpdir/$broot.res" 1 catch "exec $wr $cpp_opts -J rc -O res $res tmpdir/$broot.res" err if ![string match "" $err] then { @@ -110,6 +110,22 @@ foreach res $res_list { continue } + verbose "$wr -J res -O rc tmpdir/$broot.res tmpdir/$broot.rc" 1 + catch "exec $wr -J res -O rc tmpdir/$broot.res tmpdir/$broot.rc" err + file delete "tmpdir/$broot.rc" + + if ![string match "" $err] then { + send_log "$err\n" + verbose "$err" 1 + fail "windres/$broot (res to rc)" + continue + } + pass "windres/$broot (res to rc)" + + if { ![file exists "$sroot.rsd"] } { + continue + } + verbose "$OBJDUMP -b binary -s tmpdir/$broot.res > tmpdir/$broot.dump" 1 catch "exec $OBJDUMP -b binary -s tmpdir/$broot.res > tmpdir/$broot.dump" err diff --git a/binutils/testsuite/binutils-all/x86-64/x86-64.exp b/binutils/testsuite/binutils-all/x86-64/x86-64.exp index 6d1b308..3c98b03 100644 --- a/binutils/testsuite/binutils-all/x86-64/x86-64.exp +++ b/binutils/testsuite/binutils-all/x86-64/x86-64.exp @@ -295,7 +295,7 @@ proc run_pr33230_test { testname obj strip_flags run_readelf } { fail "$testname (${obj}.strip)" return } - } elseif { ![regexp "Unable to recognise the format" $got] } then { + } elseif { ![regexp "Unable to recognise the architecture" $got] } then { send_log "$got\n" verbose "$got" 1 fail "$testname" diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp index 7297f6d..47fe48a 100644 --- a/binutils/testsuite/lib/binutils-common.exp +++ b/binutils/testsuite/lib/binutils-common.exp @@ -32,7 +32,6 @@ proc is_elf_format {} { # && ![istarget *-*-windiss*] if { ![istarget *-*-chorus*] - && ![istarget *-*-cloudabi*] && ![istarget *-*-eabi*] && ![istarget *-*-*elf*] && ![istarget *-*-*freebsd*] |