From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x1030.google.com (mail-pj1-x1030.google.com [IPv6:2607:f8b0:4864:20::1030]) by sourceware.org (Postfix) with ESMTPS id 3EC2B3858D20 for ; Sun, 6 Feb 2022 14:25:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3EC2B3858D20 Received: by mail-pj1-x1030.google.com with SMTP id y15-20020a17090a474f00b001b88562650aso1892430pjg.0 for ; Sun, 06 Feb 2022 06:25:46 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=55WhSfTZcM9zpe78KeLrab4Ib6p/CabU/ksl3sUnSgQ=; b=x4yXxrp/izf294+qDAhk8ZNqMObk+OwKYuGqlQdQjXPNu7d95G9jAEts1uSIV878Wr b9cczLPWdMzMcB5iJYw4r2JjpT7IuF01ykItxMAPhipzdUJprBDOyOrnYkWggJoDpyiS rBnBeFfPBM5D3strBApBJLtAiP9l9jGQs3xXkB42iKiuWrF2GxUz5xco2HPyfCtyg6qv xXYN7QwY7rZ5bu99C/otStcn5+sR5Y0rx5z7VPUI3Z0+jRFTg3UMJSTUnHpeh6hXwBJm Tqh55svTIy5I1r7vaCK8YSzeQseSZ2g0IdSvNCmyT+jJEoUrsbVweFg6vrzg56HPylmm GVxA== X-Gm-Message-State: AOAM533OtYbiDRrY3eElhQsm/sTRp1IrwXma4gz79824/1bZV0VB5iSf kzRCGeMjhRiV2AxhlTDXVj9RghVRLgqIxolKbZojd339 X-Google-Smtp-Source: ABdhPJzZW01UG6xqr7zrUlQ3mQfMP6sAatwSveCrTrOWE7cKxUaj4zLgeRhjLsUETlEQiqIj0Fo6m84LxvbEkAGpZZA= X-Received: by 2002:a17:902:e851:: with SMTP id t17mr12028994plg.102.1644157544685; Sun, 06 Feb 2022 06:25:44 -0800 (PST) MIME-Version: 1.0 References: <20220204210550.1410672-1-hjl.tools@gmail.com> In-Reply-To: <20220204210550.1410672-1-hjl.tools@gmail.com> From: "H.J. Lu" Date: Sun, 6 Feb 2022 06:25:08 -0800 Message-ID: Subject: Re: [PATCH] ld: Ad emultempl/emulation.em To: Binutils Content-Type: multipart/mixed; boundary="0000000000006824cf05d75a4285" X-Spam-Status: No, score=-3025.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 Feb 2022 14:25:54 -0000 --0000000000006824cf05d75a4285 Content-Type: text/plain; charset="UTF-8" On Fri, Feb 4, 2022 at 1:05 PM H.J. Lu wrote: > > Add emultempl/emulation.em to define ld_${EMULATION_NAME}_emulation so > that new emulation hooks can be added easily. > > * emultempl/aix.em (LDEMUL_AFTER_OPEN): New. > (LDEMUL_SET_OUTPUT_ARCH): Likewise. > (LDEMUL_CHOOSE_TARGET): Likewise. > (LDEMUL_BEFORE_ALLOCATION): Likewise. > (LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS): Likewise. > (LDEMUL_OPEN_DYNAMIC_ARCHIVE): Likewise. > (LDEMUL_PARSE_ARGS): Likewise. > (LDEMUL_ADD_OPTIONS): Likewise. > (LDEMUL_HANDLE_OPTION): Likewise. > (LDEMUL_UNRECOGNIZED_FILE): Likewise. > (LDEMUL_PRINT_SYMBOL): Likewise. > (ld_${EMULATION_NAME}_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > * emultempl/beos.em (gld_${EMULATION_NAME}_before_parse): > Renamed to ... > (gld${EMULATION_NAME}_before_parse): This. > (gld_${EMULATION_NAME}_set_symbols): Renamed to ... > (gld${EMULATION_NAME}_set_symbols): This. > (gld_${EMULATION_NAME}_after_open): Renamed to ... > (gld${EMULATION_NAME}_after_open): This. > (gld_${EMULATION_NAME}_before_allocation): Renamed to ... > (gld${EMULATION_NAME}_before_allocation): This. > (gld_${EMULATION_NAME}_get_script): Renamed to ... > (gld${EMULATION_NAME}_get_script): This. > (LDEMUL_AFTER_OPEN): New. > (LDEMUL_BEFORE_ALLOCATION): Likewise. > (LDEMUL_PLACE_ORPHAN): Likewise. > (LDEMUL_SET_SYMBOLS): Likewise. > (LDEMUL_ADD_OPTIONS): Likewise. > (LDEMUL_HANDLE_OPTION): Likewise. > (ld_${EMULATION_NAME}_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > * emultempl/elf.em (LDEMUL_AFTER_PARSE): New. > (LDEMUL_AFTER_OPEN): Likewise. > (LDEMUL_BEFORE_PLACE_ORPHANS): Likewise. > (LDEMUL_AFTER_ALLOCATION): Likewise. > (LDEMUL_SET_OUTPUT_ARCH): Likewise. > (LDEMUL_BEFORE_ALLOCATION): Likewise. > (LDEMUL_OPEN_DYNAMIC_ARCHIVE): Likewise. > (LDEMUL_PLACE_ORPHAN): Likewise. > (LDEMUL_ADD_OPTIONS): Likewise. > (LDEMUL_HANDLE_OPTION): Likewise. > (LDEMUL_LIST_OPTIONS): Likewise. > (LDEMUL_UNRECOGNIZED_FILE): Likewise. > (ld_${EMULATION_NAME}_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > * emultempl/emulation.em: New file. > * emultempl/generic.em (ld_${EMULATION_NAME}_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > * emultempl/msp430.em (LDEMUL_AFTER_OPEN): New. > (LDEMUL_AFTER_ALLOCATION): Likewise. > (LDEMUL_PLACE_ORPHAN): Likewise. > (LDEMUL_FINISH): Likewise. > (LDEMUL_ADD_OPTIONS): Likewise. > (LDEMUL_HANDLE_OPTION): Likewise. > (LDEMUL_LIST_OPTIONS): Likewise. > (ld_${EMULATION_NAME}_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > * emultempl/pe.em (gld_${EMULATION_NAME}_before_parse): Renamed > to ... > (gld${EMULATION_NAME}_before_parse): This. > (gld_${EMULATION_NAME}_list_options): Renamed to ... > (gld${EMULATION_NAME}_list_options): This. > (gld_${EMULATION_NAME}_set_symbols): Renamed to ... > (gld${EMULATION_NAME}_set_symbols): This. > (gld_${EMULATION_NAME}_after_parse): Renamed to ... > (gld${EMULATION_NAME}_after_parse): This. > (gld_${EMULATION_NAME}_after_open): Renamed to ... > (gld${EMULATION_NAME}_after_open): This. > (gld_${EMULATION_NAME}_before_allocation): Renamed to ... > (gld${EMULATION_NAME}_before_allocation): This. > (gld_${EMULATION_NAME}_unrecognized_file): Renamed to ... > (gld${EMULATION_NAME}_unrecognized_file): This. > (gld_${EMULATION_NAME}_recognized_file): Renamed to ... > (gld${EMULATION_NAME}_recognized_file): This. > (gld_${EMULATION_NAME}_finish): Renamed to ... > (gld${EMULATION_NAME}_finish): This. > (gld_${EMULATION_NAME}_place_orphan): Renamed to ... > (gld${EMULATION_NAME}_place_orphan): This. > (gld_${EMULATION_NAME}_open_dynamic_archive): Renamed to ... > (gld${EMULATION_NAME}_open_dynamic_archive): This. > (gld_${EMULATION_NAME}_find_potential_libraries): Renamed to ... > (gld${EMULATION_NAME}_find_potential_libraries): This. > (gld_${EMULATION_NAME}_get_script): Renamed to ... > (gld${EMULATION_NAME}_get_script): This. > (LDEMUL_AFTER_PARSE): New. > (LDEMUL_AFTER_OPEN): Likewise. > (LDEMUL_BEFORE_ALLOCATION): Likewise. > (LDEMUL_FINISH=): Likewise. > (LDEMUL_OPEN_DYNAMIC_ARCHIVE): Likewise. > (LDEMUL_PLACE_ORPHAN): Likewise. > (LDEMUL_SET_SYMBOLS): Likewise. > (LDEMUL_ADD_OPTIONS): Likewise. > (LDEMUL_HANDLE_OPTION): Likewise. > (LDEMUL_UNRECOGNIZED_FILE): Likewise. > (LDEMUL_LIST_OPTIONS): Likewise. > (LDEMUL_RECOGNIZED_FILE): Likewise. > (LDEMUL_FIND_POTENTIAL_LIBRARIES): Likewise. > (ld_${EMULATION_NAME}_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > * emultempl/pep.em (gld_${EMULATION_NAME}_before_parse): Renamed > to ... > (gld${EMULATION_NAME}_before_parse): This. > (gld_${EMULATION_NAME}_list_options): Renamed to ... > (gld${EMULATION_NAME}_list_options): This. > (gld_${EMULATION_NAME}_set_symbols): Renamed to ... > (gld${EMULATION_NAME}_set_symbols): This. > (gld_${EMULATION_NAME}_after_parse): Renamed to ... > (gld${EMULATION_NAME}_after_parse): This. > (gld_${EMULATION_NAME}_after_open): Renamed to ... > (gld${EMULATION_NAME}_after_open): This. > (gld_${EMULATION_NAME}_before_allocation): Renamed to ... > (gld${EMULATION_NAME}_before_allocation): This. > (gld_${EMULATION_NAME}_unrecognized_file): Renamed to ... > (gld${EMULATION_NAME}_unrecognized_file): This. > (gld_${EMULATION_NAME}_recognized_file): Renamed to ... > (gld${EMULATION_NAME}_recognized_file): This. > (gld_${EMULATION_NAME}_finish): Renamed to ... > (gld${EMULATION_NAME}_finish): This. > (gld_${EMULATION_NAME}_place_orphan): Renamed to ... > (gld${EMULATION_NAME}_place_orphan): This. > (gld_${EMULATION_NAME}_open_dynamic_archive): Renamed to ... > (gld${EMULATION_NAME}_open_dynamic_archive): This. > (gld_${EMULATION_NAME}_find_potential_libraries): Renamed to ... > (gld${EMULATION_NAME}_find_potential_libraries): This. > (gld_${EMULATION_NAME}_get_script): Renamed to ... > (gld${EMULATION_NAME}_get_script): This. > (LDEMUL_AFTER_PARSE): New. > (LDEMUL_AFTER_OPEN): Likewise. > (LDEMUL_BEFORE_ALLOCATION): Likewise. > (LDEMUL_FINISH=): Likewise. > (LDEMUL_OPEN_DYNAMIC_ARCHIVE): Likewise. > (LDEMUL_PLACE_ORPHAN): Likewise. > (LDEMUL_SET_SYMBOLS): Likewise. > (LDEMUL_ADD_OPTIONS): Likewise. > (LDEMUL_HANDLE_OPTION): Likewise. > (LDEMUL_UNRECOGNIZED_FILE): Likewise. > (LDEMUL_LIST_OPTIONS): Likewise. > (LDEMUL_RECOGNIZED_FILE): Likewise. > (LDEMUL_FIND_POTENTIAL_LIBRARIES): Likewise. > (ld_${EMULATION_NAME}_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > * emultempl/ticoff.em (gld_${EMULATION_NAME}_list_options): > Renamed to ... > (gld${EMULATION_NAME}_list_options): This. > (gld_${EMULATION_NAME}_before_parse): Renamed to ... > (gld_${EMULATION_NAME}_get_script): Renamed to ... > (gld${EMULATION_NAME}_get_script): This. > (LDEMUL_ADD_OPTIONS): New. > (LDEMUL_HANDLE_OPTION): Likewise. > (LDEMUL_LIST_OPTIONS): Likewise. > (ld_${EMULATION_NAME}_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > * emultempl/vanilla.em (LDEMUL_BEFORE_PARSE): New. > (LDEMUL_SET_OUTPUT_ARCH): Likewise. > (LDEMUL_GET_SCRIPT): Likewise. > (EMULATION_NAME): Likewise. > (OUTPUT_FORMAT): Likewise. > (ld_vanilla_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > --- > ld/emultempl/aix.em | 49 +++++++---------------- > ld/emultempl/beos.em | 55 ++++++------------------- > ld/emultempl/elf.em | 52 +++++++----------------- > ld/emultempl/emulation.em | 40 +++++++++++++++++++ > ld/emultempl/generic.em | 39 +----------------- > ld/emultempl/msp430.em | 46 +++++---------------- > ld/emultempl/pe.em | 84 ++++++++++++++------------------------- > ld/emultempl/pep.em | 80 +++++++++++++------------------------ > ld/emultempl/ticoff.em | 48 ++++------------------ > ld/emultempl/vanilla.em | 44 ++++---------------- > 10 files changed, 165 insertions(+), 372 deletions(-) > create mode 100644 ld/emultempl/emulation.em > > diff --git a/ld/emultempl/aix.em b/ld/emultempl/aix.em > index b82305dc09e..6807aaee1c8 100644 > --- a/ld/emultempl/aix.em > +++ b/ld/emultempl/aix.em > @@ -1601,39 +1601,18 @@ gld${EMULATION_NAME}_print_symbol (struct bfd_link_hash_entry *hash_entry, > > return true; > } > - > -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = { > - gld${EMULATION_NAME}_before_parse, > - syslib_default, > - hll_default, > - after_parse_default, > - gld${EMULATION_NAME}_after_open, > - after_check_relocs_default, > - before_place_orphans_default, > - after_allocation_default, > - gld${EMULATION_NAME}_set_output_arch, > - gld${EMULATION_NAME}_choose_target, > - gld${EMULATION_NAME}_before_allocation, > - gld${EMULATION_NAME}_get_script, > - "${EMULATION_NAME}", > - "${OUTPUT_FORMAT}", > - finish_default, > - gld${EMULATION_NAME}_create_output_section_statements, > - gld${EMULATION_NAME}_open_dynamic_archive, > - 0, /* place_orphan */ > - 0, /* set_symbols */ > - gld${EMULATION_NAME}_parse_args, > - gld${EMULATION_NAME}_add_options, > - gld${EMULATION_NAME}_handle_option, > - gld${EMULATION_NAME}_unrecognized_file, > - NULL, /* list_options */ > - NULL, /* recognized_file */ > - NULL, /* find potential_libraries */ > - NULL, /* new_vers_pattern */ > - NULL, /* extra_map_file_text */ > - ${LDEMUL_EMIT_CTF_EARLY-NULL}, > - ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > - ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > - gld${EMULATION_NAME}_print_symbol > -}; > EOF > + > +LDEMUL_AFTER_OPEN=gld${EMULATION_NAME}_after_open > +LDEMUL_SET_OUTPUT_ARCH=gld${EMULATION_NAME}_set_output_arch > +LDEMUL_CHOOSE_TARGET=gld${EMULATION_NAME}_choose_target > +LDEMUL_BEFORE_ALLOCATION=gld${EMULATION_NAME}_before_allocation > +LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS=gld${EMULATION_NAME}_create_output_section_statements > +LDEMUL_OPEN_DYNAMIC_ARCHIVE=gld${EMULATION_NAME}_open_dynamic_archive > +LDEMUL_PARSE_ARGS=gld${EMULATION_NAME}_parse_args > +LDEMUL_ADD_OPTIONS=gld${EMULATION_NAME}_add_options > +LDEMUL_HANDLE_OPTION=gld${EMULATION_NAME}_handle_option > +LDEMUL_UNRECOGNIZED_FILE=gld${EMULATION_NAME}_unrecognized_file > +LDEMUL_PRINT_SYMBOL=gld${EMULATION_NAME}_print_symbol > + > +source_em ${srcdir}/emultempl/emulation.em > diff --git a/ld/emultempl/beos.em b/ld/emultempl/beos.em > index bebad8af2f7..93e85a792a3 100644 > --- a/ld/emultempl/beos.em > +++ b/ld/emultempl/beos.em > @@ -62,7 +62,7 @@ static int dll; > extern const char *output_filename; > > static void > -gld_${EMULATION_NAME}_before_parse (void) > +gld${EMULATION_NAME}_before_parse (void) > { > ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`); > output_filename = "a.exe"; > @@ -322,7 +322,7 @@ gld${EMULATION_NAME}_handle_option (int optc) > read. */ > > static void > -gld_${EMULATION_NAME}_set_symbols (void) > +gld${EMULATION_NAME}_set_symbols (void) > { > /* Run through and invent symbols for all the > names and insert the defaults. */ > @@ -372,7 +372,7 @@ gld_${EMULATION_NAME}_set_symbols (void) > } > > static void > -gld_${EMULATION_NAME}_after_open (void) > +gld${EMULATION_NAME}_after_open (void) > { > after_open_default (); > > @@ -606,7 +606,7 @@ sort_sections (lang_statement_union_type *s) > } > > static void > -gld_${EMULATION_NAME}_before_allocation (void) > +gld${EMULATION_NAME}_before_allocation (void) > { > #ifdef TARGET_IS_armpe > /* FIXME: we should be able to set the size of the interworking stub > @@ -710,7 +710,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s, > } > > static char * > -gld_${EMULATION_NAME}_get_script (int *isfile) > +gld${EMULATION_NAME}_get_script (int *isfile) > EOF > > if test x"$COMPILE_IN" = xyes > @@ -759,42 +759,11 @@ fragment < EOF > fi > > -fragment < - > +LDEMUL_AFTER_OPEN=gld${EMULATION_NAME}_after_open > +LDEMUL_BEFORE_ALLOCATION=gld${EMULATION_NAME}_before_allocation > +LDEMUL_PLACE_ORPHAN=gld${EMULATION_NAME}_place_orphan > +LDEMUL_SET_SYMBOLS=gld${EMULATION_NAME}_set_symbols > +LDEMUL_ADD_OPTIONS=gld${EMULATION_NAME}_add_options > +LDEMUL_HANDLE_OPTION=gld${EMULATION_NAME}_handle_option > > -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = > -{ > - gld_${EMULATION_NAME}_before_parse, > - syslib_default, > - hll_default, > - after_parse_default, > - gld_${EMULATION_NAME}_after_open, > - after_check_relocs_default, > - before_place_orphans_default, > - after_allocation_default, > - set_output_arch_default, > - ldemul_default_target, > - gld_${EMULATION_NAME}_before_allocation, > - gld_${EMULATION_NAME}_get_script, > - "${EMULATION_NAME}", > - "${OUTPUT_FORMAT}", > - finish_default, > - NULL, /* create output section statements */ > - NULL, /* open dynamic archive */ > - gld${EMULATION_NAME}_place_orphan, > - gld_${EMULATION_NAME}_set_symbols, > - NULL, /* parse_args */ > - gld${EMULATION_NAME}_add_options, > - gld${EMULATION_NAME}_handle_option, > - NULL, /* unrecognized file */ > - NULL, /* list options */ > - NULL, /* recognized file */ > - NULL, /* find_potential_libraries */ > - NULL, /* new_vers_pattern */ > - NULL, /* extra_map_file_text */ > - ${LDEMUL_EMIT_CTF_EARLY-NULL}, > - ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > - ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > - ${LDEMUL_PRINT_SYMBOL-NULL} > -}; > -EOF > +source_em ${srcdir}/emultempl/emulation.em > diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em > index 7325872e1d9..55dd20f0b02 100644 > --- a/ld/emultempl/elf.em > +++ b/ld/emultempl/elf.em > @@ -909,41 +909,17 @@ EOF > fi > fi > > -fragment < - > -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = > -{ > - ${LDEMUL_BEFORE_PARSE-gld${EMULATION_NAME}_before_parse}, > - ${LDEMUL_SYSLIB-syslib_default}, > - ${LDEMUL_HLL-hll_default}, > - ${LDEMUL_AFTER_PARSE-ldelf_after_parse}, > - ${LDEMUL_AFTER_OPEN-gld${EMULATION_NAME}_after_open}, > - ${LDEMUL_AFTER_CHECK_RELOCS-after_check_relocs_default}, > - ${LDEMUL_BEFORE_PLACE_ORPHANS-ldelf_before_place_orphans}, > - ${LDEMUL_AFTER_ALLOCATION-gld${EMULATION_NAME}_after_allocation}, > - ${LDEMUL_SET_OUTPUT_ARCH-ldelf_set_output_arch}, > - ${LDEMUL_CHOOSE_TARGET-ldemul_default_target}, > - ${LDEMUL_BEFORE_ALLOCATION-gld${EMULATION_NAME}_before_allocation}, > - ${LDEMUL_GET_SCRIPT-gld${EMULATION_NAME}_get_script}, > - "${EMULATION_NAME}", > - "${OUTPUT_FORMAT}", > - ${LDEMUL_FINISH-finish_default}, > - ${LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS-NULL}, > - ${LDEMUL_OPEN_DYNAMIC_ARCHIVE-ldelf_open_dynamic_archive}, > - ${LDEMUL_PLACE_ORPHAN-ldelf_place_orphan}, > - ${LDEMUL_SET_SYMBOLS-NULL}, > - ${LDEMUL_PARSE_ARGS-NULL}, > - gld${EMULATION_NAME}_add_options, > - gld${EMULATION_NAME}_handle_option, > - ${LDEMUL_UNRECOGNIZED_FILE-NULL}, > - ${LDEMUL_LIST_OPTIONS-${gld_list_options}}, > - ${LDEMUL_RECOGNIZED_FILE-ldelf_load_symbols}, > - ${LDEMUL_FIND_POTENTIAL_LIBRARIES-NULL}, > - ${LDEMUL_NEW_VERS_PATTERN-NULL}, > - ${LDEMUL_EXTRA_MAP_FILE_TEXT-NULL}, > - ${LDEMUL_EMIT_CTF_EARLY-NULL}, > - ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > - ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > - ${LDEMUL_PRINT_SYMBOL-NULL} > -}; > -EOF > +LDEMUL_AFTER_PARSE=${LDEMUL_AFTER_PARSE-ldelf_after_parse} > +LDEMUL_AFTER_OPEN=${LDEMUL_AFTER_OPEN-gld${EMULATION_NAME}_after_open} > +LDEMUL_BEFORE_PLACE_ORPHANS=${LDEMUL_BEFORE_PLACE_ORPHANS-ldelf_before_place_orphans} > +LDEMUL_AFTER_ALLOCATION=${LDEMUL_AFTER_ALLOCATION-gld${EMULATION_NAME}_after_allocation} > +LDEMUL_SET_OUTPUT_ARCH=${LDEMUL_SET_OUTPUT_ARCH-ldelf_set_output_arch} > +LDEMUL_BEFORE_ALLOCATION=${LDEMUL_BEFORE_ALLOCATION-gld${EMULATION_NAME}_before_allocation} > +LDEMUL_OPEN_DYNAMIC_ARCHIVE=${LDEMUL_OPEN_DYNAMIC_ARCHIVE-ldelf_open_dynamic_archive} > +LDEMUL_PLACE_ORPHAN=${LDEMUL_PLACE_ORPHAN-ldelf_place_orphan} > +LDEMUL_ADD_OPTIONS=gld${EMULATION_NAME}_add_options > +LDEMUL_HANDLE_OPTION=gld${EMULATION_NAME}_handle_option > +LDEMUL_LIST_OPTIONS=${LDEMUL_LIST_OPTIONS-${gld_list_options}} > +LDEMUL_RECOGNIZED_FILE=${LDEMUL_RECOGNIZED_FILE-ldelf_load_symbols} > + > +source_em ${srcdir}/emultempl/emulation.em > diff --git a/ld/emultempl/emulation.em b/ld/emultempl/emulation.em > new file mode 100644 > index 00000000000..cfa6567ac2b > --- /dev/null > +++ b/ld/emultempl/emulation.em > @@ -0,0 +1,40 @@ > +# This shell script emits a C file. -*- C -*- > +# It does some substitutions. > +fragment < + > +struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = > +{ > + ${LDEMUL_BEFORE_PARSE-gld${EMULATION_NAME}_before_parse}, > + ${LDEMUL_SYSLIB-syslib_default}, > + ${LDEMUL_HLL-hll_default}, > + ${LDEMUL_AFTER_PARSE-after_parse_default}, > + ${LDEMUL_AFTER_OPEN-after_open_default}, > + ${LDEMUL_AFTER_CHECK_RELOCS-after_check_relocs_default}, > + ${LDEMUL_BEFORE_PLACE_ORPHANS-before_place_orphans_default}, > + ${LDEMUL_AFTER_ALLOCATION-after_allocation_default}, > + ${LDEMUL_SET_OUTPUT_ARCH-set_output_arch_default}, > + ${LDEMUL_CHOOSE_TARGET-ldemul_default_target}, > + ${LDEMUL_BEFORE_ALLOCATION-before_allocation_default}, > + ${LDEMUL_GET_SCRIPT-gld${EMULATION_NAME}_get_script}, > + "${EMULATION_NAME}", > + "${OUTPUT_FORMAT}", > + ${LDEMUL_FINISH-finish_default}, > + ${LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS-NULL}, > + ${LDEMUL_OPEN_DYNAMIC_ARCHIVE-NULL}, > + ${LDEMUL_PLACE_ORPHAN-NULL}, > + ${LDEMUL_SET_SYMBOLS-NULL}, > + ${LDEMUL_PARSE_ARGS-NULL}, > + ${LDEMUL_ADD_OPTIONS-NULL}, > + ${LDEMUL_HANDLE_OPTION-NULL}, > + ${LDEMUL_UNRECOGNIZED_FILE-NULL}, > + ${LDEMUL_LIST_OPTIONS-NULL}, > + ${LDEMUL_RECOGNIZED_FILE-NULL}, > + ${LDEMUL_FIND_POTENTIAL_LIBRARIES-NULL}, > + ${LDEMUL_NEW_VERS_PATTERN-NULL}, > + ${LDEMUL_EXTRA_MAP_FILE_TEXT-NULL}, > + ${LDEMUL_EMIT_CTF_EARLY-NULL}, > + ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > + ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > + ${LDEMUL_PRINT_SYMBOL-NULL} > +}; > +EOF > diff --git a/ld/emultempl/generic.em b/ld/emultempl/generic.em > index e7c990e7260..cecbb1c2728 100644 > --- a/ld/emultempl/generic.em > +++ b/ld/emultempl/generic.em > @@ -128,41 +128,4 @@ EOF > fi > fi > > -fragment < - > -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = > -{ > - ${LDEMUL_BEFORE_PARSE-gld${EMULATION_NAME}_before_parse}, > - ${LDEMUL_SYSLIB-syslib_default}, > - ${LDEMUL_HLL-hll_default}, > - ${LDEMUL_AFTER_PARSE-after_parse_default}, > - ${LDEMUL_AFTER_OPEN-after_open_default}, > - ${LDEMUL_AFTER_CHECK_RELOCS-after_check_relocs_default}, > - ${LDEMUL_BEFORE_PLACE_ORPHANS-before_place_orphans_default}, > - ${LDEMUL_AFTER_ALLOCATION-after_allocation_default}, > - ${LDEMUL_SET_OUTPUT_ARCH-set_output_arch_default}, > - ${LDEMUL_CHOOSE_TARGET-ldemul_default_target}, > - ${LDEMUL_BEFORE_ALLOCATION-before_allocation_default}, > - ${LDEMUL_GET_SCRIPT-gld${EMULATION_NAME}_get_script}, > - "${EMULATION_NAME}", > - "${OUTPUT_FORMAT}", > - ${LDEMUL_FINISH-finish_default}, > - ${LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS-NULL}, > - ${LDEMUL_OPEN_DYNAMIC_ARCHIVE-NULL}, > - ${LDEMUL_PLACE_ORPHAN-NULL}, > - ${LDEMUL_SET_SYMBOLS-NULL}, > - ${LDEMUL_PARSE_ARGS-NULL}, > - ${LDEMUL_ADD_OPTIONS-NULL}, > - ${LDEMUL_HANDLE_OPTION-NULL}, > - ${LDEMUL_UNRECOGNIZED_FILE-NULL}, > - ${LDEMUL_LIST_OPTIONS-NULL}, > - ${LDEMUL_RECOGNIZED_FILE-NULL}, > - ${LDEMUL_FIND_POTENTIAL_LIBRARIES-NULL}, > - ${LDEMUL_NEW_VERS_PATTERN-NULL}, > - ${LDEMUL_EXTRA_MAP_FILE_TEXT-NULL}, > - ${LDEMUL_EMIT_CTF_EARLY-NULL}, > - ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > - ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > - ${LDEMUL_PRINT_SYMBOL-NULL} > -}; > -EOF > +source_em ${srcdir}/emultempl/emulation.em > diff --git a/ld/emultempl/msp430.em b/ld/emultempl/msp430.em > index abfbdcb64a8..f188b46b4aa 100644 > --- a/ld/emultempl/msp430.em > +++ b/ld/emultempl/msp430.em > @@ -905,43 +905,17 @@ gld${EMULATION_NAME}_finish (void) > finish_default (); > check_array_section_alignment (); > } > - > -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = > -{ > - ${LDEMUL_BEFORE_PARSE-gld${EMULATION_NAME}_before_parse}, > - ${LDEMUL_SYSLIB-syslib_default}, > - ${LDEMUL_HLL-hll_default}, > - ${LDEMUL_AFTER_PARSE-after_parse_default}, > - msp430_elf_after_open, > - after_check_relocs_default, > - before_place_orphans_default, > - msp430_elf_after_allocation, > - ${LDEMUL_SET_OUTPUT_ARCH-set_output_arch_default}, > - ${LDEMUL_CHOOSE_TARGET-ldemul_default_target}, > - ${LDEMUL_BEFORE_ALLOCATION-before_allocation_default}, > - ${LDEMUL_GET_SCRIPT-gld${EMULATION_NAME}_get_script}, > - "${EMULATION_NAME}", > - "${OUTPUT_FORMAT}", > - gld${EMULATION_NAME}_finish, > - ${LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS-NULL}, > - ${LDEMUL_OPEN_DYNAMIC_ARCHIVE-NULL}, > - ${LDEMUL_PLACE_ORPHAN-gld${EMULATION_NAME}_place_orphan}, > - ${LDEMUL_SET_SYMBOLS-NULL}, > - ${LDEMUL_PARSE_ARGS-NULL}, > - gld${EMULATION_NAME}_add_options, > - gld${EMULATION_NAME}_handle_option, > - ${LDEMUL_UNRECOGNIZED_FILE-NULL}, > - gld${EMULATION_NAME}_list_options, > - ${LDEMUL_RECOGNIZED_FILE-NULL}, > - ${LDEMUL_FIND_POTENTIAL_LIBRARIES-NULL}, > - ${LDEMUL_NEW_VERS_PATTERN-NULL}, > - ${LDEMUL_EXTRA_MAP_FILE_TEXT-NULL}, > - ${LDEMUL_EMIT_CTF_EARLY-NULL}, > - ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > - ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > - ${LDEMUL_PRINT_SYMBOL-NULL} > -}; > EOF > + > +LDEMUL_AFTER_OPEN=msp430_elf_after_open > +LDEMUL_AFTER_ALLOCATION=msp430_elf_after_allocation > +LDEMUL_PLACE_ORPHAN=${LDEMUL_PLACE_ORPHAN-gld${EMULATION_NAME}_place_orphan} > +LDEMUL_FINISH=gld${EMULATION_NAME}_finish > +LDEMUL_ADD_OPTIONS=gld${EMULATION_NAME}_add_options > +LDEMUL_HANDLE_OPTION=gld${EMULATION_NAME}_handle_option > +LDEMUL_LIST_OPTIONS=gld${EMULATION_NAME}_list_options > + > +source_em ${srcdir}/emultempl/emulation.em > # > # Local Variables: > # mode: c > diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em > index 3c6a07e8e86..892bf70b7a6 100644 > --- a/ld/emultempl/pe.em > +++ b/ld/emultempl/pe.em > @@ -172,7 +172,7 @@ static int is_underscoring (void) > } > > static void > -gld_${EMULATION_NAME}_before_parse (void) > +gld${EMULATION_NAME}_before_parse (void) > { > is_underscoring (); > ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`); > @@ -454,7 +454,7 @@ static definfo init[] = > > > static void > -gld_${EMULATION_NAME}_list_options (FILE *file) > +gld${EMULATION_NAME}_list_options (FILE *file) > { > fprintf (file, _(" --base_file Generate a base file for relocatable DLLs\n")); > fprintf (file, _(" --dll Set image base to the default for DLLs\n")); > @@ -1002,7 +1002,7 @@ compute_dll_image_base (const char *ofile) > read. */ > > static void > -gld_${EMULATION_NAME}_set_symbols (void) > +gld${EMULATION_NAME}_set_symbols (void) > { > /* Run through and invent symbols for all the > names and insert the defaults. */ > @@ -1069,7 +1069,7 @@ gld_${EMULATION_NAME}_set_symbols (void) > have been read. */ > > static void > -gld_${EMULATION_NAME}_after_parse (void) > +gld${EMULATION_NAME}_after_parse (void) > { > /* PR ld/6744: Warn the user if they have used an ELF-only > option hoping it will work on PE. */ > @@ -1382,7 +1382,7 @@ setup_build_id (bfd *ibfd) > } > > static void > -gld_${EMULATION_NAME}_after_open (void) > +gld${EMULATION_NAME}_after_open (void) > { > after_open_default (); > > @@ -1803,7 +1803,7 @@ gld_${EMULATION_NAME}_after_open (void) > } > > static void > -gld_${EMULATION_NAME}_before_allocation (void) > +gld${EMULATION_NAME}_before_allocation (void) > { > #if defined(TARGET_IS_armpe) || defined(TARGET_IS_arm_wince_pe) > /* FIXME: we should be able to set the size of the interworking stub > @@ -1849,7 +1849,7 @@ saw_option (char *option) > #endif /* DLL_SUPPORT */ > > static bool > -gld_${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED) > +gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED) > { > #ifdef DLL_SUPPORT > const char *ext = entry->filename + strlen (entry->filename) - 4; > @@ -1930,7 +1930,7 @@ gld_${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIB > } > > static bool > -gld_${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED) > +gld${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED) > { > #ifdef DLL_SUPPORT > #ifdef TARGET_IS_i386pe > @@ -1952,7 +1952,7 @@ gld_${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUT > } > > static void > -gld_${EMULATION_NAME}_finish (void) > +gld${EMULATION_NAME}_finish (void) > { > #if defined(TARGET_IS_armpe) || defined(TARGET_IS_arm_wince_pe) > struct bfd_link_hash_entry * h; > @@ -2052,9 +2052,9 @@ gld_${EMULATION_NAME}_finish (void) > sort_sections. */ > > static lang_output_section_statement_type * > -gld_${EMULATION_NAME}_place_orphan (asection *s, > - const char *secname, > - int constraint) > +gld${EMULATION_NAME}_place_orphan (asection *s, > + const char *secname, > + int constraint) > { > const char *orig_secname = secname; > char *dollar = NULL; > @@ -2251,7 +2251,7 @@ gld_${EMULATION_NAME}_place_orphan (asection *s, > } > > static bool > -gld_${EMULATION_NAME}_open_dynamic_archive > +gld${EMULATION_NAME}_open_dynamic_archive > (const char *arch ATTRIBUTE_UNUSED, > search_dirs_type *search, > lang_input_statement_type *entry) > @@ -2357,14 +2357,14 @@ gld_${EMULATION_NAME}_open_dynamic_archive > } > > static int > -gld_${EMULATION_NAME}_find_potential_libraries > +gld${EMULATION_NAME}_find_potential_libraries > (char *name, lang_input_statement_type *entry) > { > return ldfile_open_file_search (name, entry, "", ".lib"); > } > > static char * > -gld_${EMULATION_NAME}_get_script (int *isfile) > +gld${EMULATION_NAME}_get_script (int *isfile) > EOF > > if test x"$COMPILE_IN" = xyes > @@ -2426,42 +2426,18 @@ fragment < EOF > fi > > -fragment < - > - > -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = > -{ > - gld_${EMULATION_NAME}_before_parse, > - syslib_default, > - hll_default, > - gld_${EMULATION_NAME}_after_parse, > - gld_${EMULATION_NAME}_after_open, > - after_check_relocs_default, > - before_place_orphans_default, > - after_allocation_default, > - set_output_arch_default, > - ldemul_default_target, > - gld_${EMULATION_NAME}_before_allocation, > - gld_${EMULATION_NAME}_get_script, > - "${EMULATION_NAME}", > - "${OUTPUT_FORMAT}", > - gld_${EMULATION_NAME}_finish, > - NULL, /* Create output section statements. */ > - gld_${EMULATION_NAME}_open_dynamic_archive, > - gld_${EMULATION_NAME}_place_orphan, > - gld_${EMULATION_NAME}_set_symbols, > - NULL, /* parse_args */ > - gld${EMULATION_NAME}_add_options, > - gld${EMULATION_NAME}_handle_option, > - gld_${EMULATION_NAME}_unrecognized_file, > - gld_${EMULATION_NAME}_list_options, > - gld_${EMULATION_NAME}_recognized_file, > - gld_${EMULATION_NAME}_find_potential_libraries, > - NULL, /* new_vers_pattern. */ > - NULL, /* extra_map_file_text. */ > - ${LDEMUL_EMIT_CTF_EARLY-NULL}, > - ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > - ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > - ${LDEMUL_PRINT_SYMBOL-NULL} > -}; > -EOF > +LDEMUL_AFTER_PARSE=gld${EMULATION_NAME}_after_parse > +LDEMUL_AFTER_OPEN=gld${EMULATION_NAME}_after_open > +LDEMUL_BEFORE_ALLOCATION=gld${EMULATION_NAME}_before_allocation > +LDEMUL_FINISH=gld${EMULATION_NAME}_finish > +LDEMUL_OPEN_DYNAMIC_ARCHIVE=gld${EMULATION_NAME}_open_dynamic_archive > +LDEMUL_PLACE_ORPHAN=gld${EMULATION_NAME}_place_orphan > +LDEMUL_SET_SYMBOLS=gld${EMULATION_NAME}_set_symbols > +LDEMUL_ADD_OPTIONS=gld${EMULATION_NAME}_add_options > +LDEMUL_HANDLE_OPTION=gld${EMULATION_NAME}_handle_option > +LDEMUL_UNRECOGNIZED_FILE=gld${EMULATION_NAME}_unrecognized_file > +LDEMUL_LIST_OPTIONS=gld${EMULATION_NAME}_list_options > +LDEMUL_RECOGNIZED_FILE=gld${EMULATION_NAME}_recognized_file > +LDEMUL_FIND_POTENTIAL_LIBRARIES=gld${EMULATION_NAME}_find_potential_libraries > + > +source_em ${srcdir}/emultempl/emulation.em > diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em > index 848daa16746..e68d1e69f17 100644 > --- a/ld/emultempl/pep.em > +++ b/ld/emultempl/pep.em > @@ -183,7 +183,7 @@ static int is_underscoring (void) > > > static void > -gld_${EMULATION_NAME}_before_parse (void) > +gld${EMULATION_NAME}_before_parse (void) > { > is_underscoring (); > ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`); > @@ -417,7 +417,7 @@ static definfo init[] = > > > static void > -gld_${EMULATION_NAME}_list_options (FILE *file) > +gld${EMULATION_NAME}_list_options (FILE *file) > { > fprintf (file, _(" --base_file Generate a base file for relocatable DLLs\n")); > fprintf (file, _(" --dll Set image base to the default for DLLs\n")); > @@ -945,7 +945,7 @@ compute_dll_image_base (const char *ofile) > read. */ > > static void > -gld_${EMULATION_NAME}_set_symbols (void) > +gld${EMULATION_NAME}_set_symbols (void) > { > /* Run through and invent symbols for all the > names and insert the defaults. */ > @@ -1012,7 +1012,7 @@ gld_${EMULATION_NAME}_set_symbols (void) > have been read. */ > > static void > -gld_${EMULATION_NAME}_after_parse (void) > +gld${EMULATION_NAME}_after_parse (void) > { > /* PR ld/6744: Warn the user if they have used an ELF-only > option hoping it will work on PE+. */ > @@ -1366,7 +1366,7 @@ setup_build_id (bfd *ibfd) > } > > static void > -gld_${EMULATION_NAME}_after_open (void) > +gld${EMULATION_NAME}_after_open (void) > { > after_open_default (); > > @@ -1694,7 +1694,7 @@ gld_${EMULATION_NAME}_after_open (void) > } > > static void > -gld_${EMULATION_NAME}_before_allocation (void) > +gld${EMULATION_NAME}_before_allocation (void) > { > is_underscoring (); > before_allocation_default (); > @@ -1719,7 +1719,7 @@ saw_option (char *option) > #endif /* DLL_SUPPORT */ > > static bool > -gld_${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED) > +gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED) > { > #ifdef DLL_SUPPORT > const char *ext = entry->filename + strlen (entry->filename) - 4; > @@ -1800,7 +1800,7 @@ gld_${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIB > } > > static bool > -gld_${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED) > +gld${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED) > { > is_underscoring (); > #ifdef DLL_SUPPORT > @@ -1814,7 +1814,7 @@ gld_${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUT > } > > static void > -gld_${EMULATION_NAME}_finish (void) > +gld${EMULATION_NAME}_finish (void) > { > is_underscoring (); > finish_default (); > @@ -1864,7 +1864,7 @@ gld_${EMULATION_NAME}_finish (void) > sort_sections. */ > > static lang_output_section_statement_type * > -gld_${EMULATION_NAME}_place_orphan (asection *s, > +gld${EMULATION_NAME}_place_orphan (asection *s, > const char *secname, > int constraint) > { > @@ -2063,7 +2063,7 @@ gld_${EMULATION_NAME}_place_orphan (asection *s, > } > > static bool > -gld_${EMULATION_NAME}_open_dynamic_archive > +gld${EMULATION_NAME}_open_dynamic_archive > (const char *arch ATTRIBUTE_UNUSED, > search_dirs_type *search, > lang_input_statement_type *entry) > @@ -2169,14 +2169,14 @@ gld_${EMULATION_NAME}_open_dynamic_archive > } > > static int > -gld_${EMULATION_NAME}_find_potential_libraries > +gld${EMULATION_NAME}_find_potential_libraries > (char *name, lang_input_statement_type *entry) > { > return ldfile_open_file_search (name, entry, "", ".lib"); > } > > static char * > -gld_${EMULATION_NAME}_get_script (int *isfile) > +gld${EMULATION_NAME}_get_script (int *isfile) > EOF > > if test x"$COMPILE_IN" = xyes > @@ -2238,42 +2238,18 @@ fragment < EOF > fi > > -fragment < - > - > -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = > -{ > - gld_${EMULATION_NAME}_before_parse, > - syslib_default, > - hll_default, > - gld_${EMULATION_NAME}_after_parse, > - gld_${EMULATION_NAME}_after_open, > - after_check_relocs_default, > - before_place_orphans_default, > - after_allocation_default, > - set_output_arch_default, > - ldemul_default_target, > - gld_${EMULATION_NAME}_before_allocation, > - gld_${EMULATION_NAME}_get_script, > - "${EMULATION_NAME}", > - "${OUTPUT_FORMAT}", > - gld_${EMULATION_NAME}_finish, > - NULL, /* Create output section statements. */ > - gld_${EMULATION_NAME}_open_dynamic_archive, > - gld_${EMULATION_NAME}_place_orphan, > - gld_${EMULATION_NAME}_set_symbols, > - NULL, /* parse_args */ > - gld${EMULATION_NAME}_add_options, > - gld${EMULATION_NAME}_handle_option, > - gld_${EMULATION_NAME}_unrecognized_file, > - gld_${EMULATION_NAME}_list_options, > - gld_${EMULATION_NAME}_recognized_file, > - gld_${EMULATION_NAME}_find_potential_libraries, > - NULL, /* new_vers_pattern. */ > - NULL, /* extra_map_file_text */ > - ${LDEMUL_EMIT_CTF_EARLY-NULL}, > - ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > - ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > - ${LDEMUL_PRINT_SYMBOL-NULL} > -}; > -EOF > +LDEMUL_AFTER_PARSE=gld${EMULATION_NAME}_after_parse > +LDEMUL_AFTER_OPEN=gld${EMULATION_NAME}_after_open > +LDEMUL_BEFORE_ALLOCATION=gld${EMULATION_NAME}_before_allocation > +LDEMUL_FINISH=gld${EMULATION_NAME}_finish > +LDEMUL_OPEN_DYNAMIC_ARCHIVE=gld${EMULATION_NAME}_open_dynamic_archive > +LDEMUL_PLACE_ORPHAN=gld${EMULATION_NAME}_place_orphan > +LDEMUL_SET_SYMBOLS=gld${EMULATION_NAME}_set_symbols > +LDEMUL_ADD_OPTIONS=gld${EMULATION_NAME}_add_options > +LDEMUL_HANDLE_OPTION=gld${EMULATION_NAME}_handle_option > +LDEMUL_UNRECOGNIZED_FILE=gld${EMULATION_NAME}_unrecognized_file > +LDEMUL_LIST_OPTIONS=gld${EMULATION_NAME}_list_options > +LDEMUL_RECOGNIZED_FILE=gld${EMULATION_NAME}_recognized_file > +LDEMUL_FIND_POTENTIAL_LIBRARIES=gld${EMULATION_NAME}_find_potential_libraries > + > +source_em ${srcdir}/emultempl/emulation.em > diff --git a/ld/emultempl/ticoff.em b/ld/emultempl/ticoff.em > index 1ac483b9c7f..a57e73bc5c3 100644 > --- a/ld/emultempl/ticoff.em > +++ b/ld/emultempl/ticoff.em > @@ -64,7 +64,7 @@ gld${EMULATION_NAME}_add_options > } > > static void > -gld_${EMULATION_NAME}_list_options (FILE * file) > +gld${EMULATION_NAME}_list_options (FILE * file) > { > fprintf (file, _(" --format 0|1|2 Specify which COFF version to use\n")); > } > @@ -96,7 +96,7 @@ gld${EMULATION_NAME}_handle_option (int optc) > } > > static void > -gld_${EMULATION_NAME}_before_parse(void) > +gld${EMULATION_NAME}_before_parse(void) > { > #ifndef TARGET_ /* I.e., if not generic. */ > ldfile_set_output_arch ("`echo ${ARCH}`", bfd_arch_unknown); > @@ -104,7 +104,7 @@ gld_${EMULATION_NAME}_before_parse(void) > } > > static char * > -gld_${EMULATION_NAME}_get_script (int *isfile) > +gld${EMULATION_NAME}_get_script (int *isfile) > EOF > if test x"$COMPILE_IN" = xyes > then > @@ -154,40 +154,8 @@ EOF > > fi > > -fragment < -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = > -{ > - gld_${EMULATION_NAME}_before_parse, > - syslib_default, > - hll_default, > - after_parse_default, > - after_open_default, > - after_check_relocs_default, > - before_place_orphans_default, > - after_allocation_default, > - set_output_arch_default, > - ldemul_default_target, > - before_allocation_default, > - gld_${EMULATION_NAME}_get_script, > - "${EMULATION_NAME}", > - "${OUTPUT_FORMAT}", > - finish_default, > - NULL, /* create output section statements */ > - NULL, /* open dynamic archive */ > - NULL, /* place orphan */ > - NULL, /* set_symbols */ > - NULL, /* parse_args */ > - gld${EMULATION_NAME}_add_options, > - gld${EMULATION_NAME}_handle_option, > - NULL, /* unrecognized_file */ > - gld_${EMULATION_NAME}_list_options, > - NULL, /* recognized file */ > - NULL, /* find_potential_libraries */ > - NULL, /* new_vers_pattern */ > - NULL, /* extra_map_file_text */ > - ${LDEMUL_EMIT_CTF_EARLY-NULL}, > - ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > - ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > - ${LDEMUL_PRINT_SYMBOL-NULL} > -}; > -EOF > +LDEMUL_ADD_OPTIONS=gld${EMULATION_NAME}_add_options > +LDEMUL_HANDLE_OPTION=gld${EMULATION_NAME}_handle_option > +LDEMUL_LIST_OPTIONS=gld${EMULATION_NAME}_list_options > + > +source_em ${srcdir}/emultempl/emulation.em > diff --git a/ld/emultempl/vanilla.em b/ld/emultempl/vanilla.em > index dc47ca13efb..c9aef37742f 100644 > --- a/ld/emultempl/vanilla.em > +++ b/ld/emultempl/vanilla.em > @@ -55,40 +55,12 @@ vanilla_get_script (int *isfile) > *isfile = 0; > return ""; > } > - > -struct ld_emulation_xfer_struct ld_vanilla_emulation = > -{ > - vanilla_before_parse, > - syslib_default, > - hll_default, > - after_parse_default, > - after_open_default, > - after_check_relocs_default, > - before_place_orphans_default, > - after_allocation_default, > - vanilla_set_output_arch, > - ldemul_default_target, > - before_allocation_default, > - vanilla_get_script, > - "vanilla", > - "a.out-sunos-big", > - finish_default, > - NULL, /* create output section statements */ > - NULL, /* open dynamic archive */ > - NULL, /* place orphan */ > - NULL, /* set symbols */ > - NULL, /* parse args */ > - NULL, /* add_options */ > - NULL, /* handle_option */ > - NULL, /* unrecognized file */ > - NULL, /* list options */ > - NULL, /* recognized file */ > - NULL, /* find_potential_libraries */ > - NULL, /* new_vers_pattern */ > - NULL, /* extra_map_file_text */ > - NULL, /* emit_ctf_early */ > - NULL, /* acquire_strings_for_ctf */ > - NULL, /* new_dynsym_for_ctf */ > - NULL /* print_symbol */ > -}; > EOF > + > +LDEMUL_BEFORE_PARSE=vanilla_before_parse > +LDEMUL_SET_OUTPUT_ARCH=vanilla_set_output_arch > +LDEMUL_GET_SCRIPT=vanilla_get_script > +EMULATION_NAME=vanilla > +OUTPUT_FORMAT=a.out-sunos-big > + > +source_em ${srcdir}/emultempl/emulation.em > -- > 2.34.1 > Here are diffs of generated emulation files. All changes are cosmetic. It passed all cross binutils tests. I am checking it in. -- H.J. --0000000000006824cf05d75a4285 Content-Type: text/x-patch; charset="US-ASCII"; name="ld.diff" Content-Disposition: attachment; filename="ld.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kzbcvpsu0 LS0tIC4uLy4uL2JpbnV0aWxzLWFsbC9idWlsZC14ODZfNjQtbGludXgvbGQvZWFpeDVwcGMuYwky MDIyLTAyLTA0IDExOjMzOjAxLjI4NTgyMTMwOSAtMDgwMAorKysgbGQvZWFpeDVwcGMuYwkyMDIy LTAyLTA2IDA2OjE5OjMxLjU2MjgwMjkwNiAtMDgwMApAQCAtMTU1OCw3ICsxNTU4LDggQEAgZ2xk YWl4NXBwY19wcmludF9zeW1ib2wgKHN0cnVjdCBiZmRfbGluawogICByZXR1cm4gdHJ1ZTsKIH0K IAotc3RydWN0IGxkX2VtdWxhdGlvbl94ZmVyX3N0cnVjdCBsZF9haXg1cHBjX2VtdWxhdGlvbiA9 IHsKK3N0cnVjdCBsZF9lbXVsYXRpb25feGZlcl9zdHJ1Y3QgbGRfYWl4NXBwY19lbXVsYXRpb24g PQorewogICBnbGRhaXg1cHBjX2JlZm9yZV9wYXJzZSwKICAgc3lzbGliX2RlZmF1bHQsCiAgIGhs bF9kZWZhdWx0LApAQCAtMTU3NiwxNyArMTU3NywxNyBAQCBzdHJ1Y3QgbGRfZW11bGF0aW9uX3hm ZXJfc3RydWN0IGxkX2FpeDVwCiAgIGZpbmlzaF9kZWZhdWx0LAogICBnbGRhaXg1cHBjX2NyZWF0 ZV9vdXRwdXRfc2VjdGlvbl9zdGF0ZW1lbnRzLAogICBnbGRhaXg1cHBjX29wZW5fZHluYW1pY19h cmNoaXZlLAotICAwLAkJCQkvKiBwbGFjZV9vcnBoYW4gKi8KLSAgMCwJCQkJLyogc2V0X3N5bWJv bHMgKi8KKyAgTlVMTCwKKyAgTlVMTCwKICAgZ2xkYWl4NXBwY19wYXJzZV9hcmdzLAogICBnbGRh aXg1cHBjX2FkZF9vcHRpb25zLAogICBnbGRhaXg1cHBjX2hhbmRsZV9vcHRpb24sCiAgIGdsZGFp eDVwcGNfdW5yZWNvZ25pemVkX2ZpbGUsCi0gIE5VTEwsCQkJCS8qIGxpc3Rfb3B0aW9ucyAqLwot ICBOVUxMLAkJCQkvKiByZWNvZ25pemVkX2ZpbGUgKi8KLSAgTlVMTCwJCQkJLyogZmluZCBwb3Rl bnRpYWxfbGlicmFyaWVzICovCi0gIE5VTEwsCQkJCS8qIG5ld192ZXJzX3BhdHRlcm4gKi8KLSAg TlVMTCwJCQkJLyogZXh0cmFfbWFwX2ZpbGVfdGV4dCAqLworICBOVUxMLAorICBOVUxMLAorICBO VUxMLAorICBOVUxMLAorICBOVUxMLAogICBOVUxMLAogICBOVUxMLAogICBOVUxMLAotLS0gLi4v Li4vYmludXRpbHMtYWxsL2J1aWxkLXg4Nl82NC1saW51eC9sZC9lYWl4NXJzNi5jCTIwMjItMDIt MDQgMTE6MzM6MDEuMzE1ODIxMjIyIC0wODAwCisrKyBsZC9lYWl4NXJzNi5jCTIwMjItMDItMDYg MDY6MTk6MzEuNTYzODAyOTAxIC0wODAwCkBAIC0xNTU4LDcgKzE1NTgsOCBAQCBnbGRhaXg1cnM2 X3ByaW50X3N5bWJvbCAoc3RydWN0IGJmZF9saW5rCiAgIHJldHVybiB0cnVlOwogfQogCi1zdHJ1 Y3QgbGRfZW11bGF0aW9uX3hmZXJfc3RydWN0IGxkX2FpeDVyczZfZW11bGF0aW9uID0geworc3Ry dWN0IGxkX2VtdWxhdGlvbl94ZmVyX3N0cnVjdCBsZF9haXg1cnM2X2VtdWxhdGlvbiA9Cit7CiAg IGdsZGFpeDVyczZfYmVmb3JlX3BhcnNlLAogICBzeXNsaWJfZGVmYXVsdCwKICAgaGxsX2RlZmF1 bHQsCkBAIC0xNTc2LDE3ICsxNTc3LDE3IEBAIHN0cnVjdCBsZF9lbXVsYXRpb25feGZlcl9zdHJ1 Y3QgbGRfYWl4NXIKICAgZmluaXNoX2RlZmF1bHQsCiAgIGdsZGFpeDVyczZfY3JlYXRlX291dHB1 dF9zZWN0aW9uX3N0YXRlbWVudHMsCiAgIGdsZGFpeDVyczZfb3Blbl9keW5hbWljX2FyY2hpdmUs Ci0gIDAsCQkJCS8qIHBsYWNlX29ycGhhbiAqLwotICAwLAkJCQkvKiBzZXRfc3ltYm9scyAqLwor ICBOVUxMLAorICBOVUxMLAogICBnbGRhaXg1cnM2X3BhcnNlX2FyZ3MsCiAgIGdsZGFpeDVyczZf YWRkX29wdGlvbnMsCiAgIGdsZGFpeDVyczZfaGFuZGxlX29wdGlvbiwKICAgZ2xkYWl4NXJzNl91 bnJlY29nbml6ZWRfZmlsZSwKLSAgTlVMTCwJCQkJLyogbGlzdF9vcHRpb25zICovCi0gIE5VTEws CQkJCS8qIHJlY29nbml6ZWRfZmlsZSAqLwotICBOVUxMLAkJCQkvKiBmaW5kIHBvdGVudGlhbF9s aWJyYXJpZXMgKi8KLSAgTlVMTCwJCQkJLyogbmV3X3ZlcnNfcGF0dGVybiAqLwotICBOVUxMLAkJ CQkvKiBleHRyYV9tYXBfZmlsZV90ZXh0ICovCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisg IE5VTEwsCisgIE5VTEwsCiAgIE5VTEwsCiAgIE5VTEwsCiAgIE5VTEwsCi0tLSAuLi8uLi9iaW51 dGlscy1hbGwvYnVpbGQteDg2XzY0LWxpbnV4L2xkL2VhaXhwcGMuYwkyMDIyLTAyLTA0IDExOjMz OjAxLjMyNjgyMTE5MCAtMDgwMAorKysgbGQvZWFpeHBwYy5jCTIwMjItMDItMDYgMDY6MTk6MzEu NTU5ODAyOTIxIC0wODAwCkBAIC0xNTU4LDcgKzE1NTgsOCBAQCBnbGRhaXhwcGNfcHJpbnRfc3lt Ym9sIChzdHJ1Y3QgYmZkX2xpbmtfCiAgIHJldHVybiB0cnVlOwogfQogCi1zdHJ1Y3QgbGRfZW11 bGF0aW9uX3hmZXJfc3RydWN0IGxkX2FpeHBwY19lbXVsYXRpb24gPSB7CitzdHJ1Y3QgbGRfZW11 bGF0aW9uX3hmZXJfc3RydWN0IGxkX2FpeHBwY19lbXVsYXRpb24gPQorewogICBnbGRhaXhwcGNf YmVmb3JlX3BhcnNlLAogICBzeXNsaWJfZGVmYXVsdCwKICAgaGxsX2RlZmF1bHQsCkBAIC0xNTc2 LDE3ICsxNTc3LDE3IEBAIHN0cnVjdCBsZF9lbXVsYXRpb25feGZlcl9zdHJ1Y3QgbGRfYWl4cHAK ICAgZmluaXNoX2RlZmF1bHQsCiAgIGdsZGFpeHBwY19jcmVhdGVfb3V0cHV0X3NlY3Rpb25fc3Rh dGVtZW50cywKICAgZ2xkYWl4cHBjX29wZW5fZHluYW1pY19hcmNoaXZlLAotICAwLAkJCQkvKiBw bGFjZV9vcnBoYW4gKi8KLSAgMCwJCQkJLyogc2V0X3N5bWJvbHMgKi8KKyAgTlVMTCwKKyAgTlVM TCwKICAgZ2xkYWl4cHBjX3BhcnNlX2FyZ3MsCiAgIGdsZGFpeHBwY19hZGRfb3B0aW9ucywKICAg Z2xkYWl4cHBjX2hhbmRsZV9vcHRpb24sCiAgIGdsZGFpeHBwY191bnJlY29nbml6ZWRfZmlsZSwK LSAgTlVMTCwJCQkJLyogbGlzdF9vcHRpb25zICovCi0gIE5VTEwsCQkJCS8qIHJlY29nbml6ZWRf ZmlsZSAqLwotICBOVUxMLAkJCQkvKiBmaW5kIHBvdGVudGlhbF9saWJyYXJpZXMgKi8KLSAgTlVM TCwJCQkJLyogbmV3X3ZlcnNfcGF0dGVybiAqLwotICBOVUxMLAkJCQkvKiBleHRyYV9tYXBfZmls ZV90ZXh0ICovCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCiAg IE5VTEwsCiAgIE5VTEwsCiAgIE5VTEwsCi0tLSAuLi8uLi9iaW51dGlscy1hbGwvYnVpbGQteDg2 XzY0LWxpbnV4L2xkL2VhaXhyczYuYwkyMDIyLTAyLTA0IDExOjMzOjAxLjQyNTgyMDkwMiAtMDgw MAorKysgbGQvZWFpeHJzNi5jCTIwMjItMDItMDYgMDY6MTk6MzEuNTYzODAyOTAxIC0wODAwCkBA IC0xNTU4LDcgKzE1NTgsOCBAQCBnbGRhaXhyczZfcHJpbnRfc3ltYm9sIChzdHJ1Y3QgYmZkX2xp bmtfCiAgIHJldHVybiB0cnVlOwogfQogCi1zdHJ1Y3QgbGRfZW11bGF0aW9uX3hmZXJfc3RydWN0 IGxkX2FpeHJzNl9lbXVsYXRpb24gPSB7CitzdHJ1Y3QgbGRfZW11bGF0aW9uX3hmZXJfc3RydWN0 IGxkX2FpeHJzNl9lbXVsYXRpb24gPQorewogICBnbGRhaXhyczZfYmVmb3JlX3BhcnNlLAogICBz eXNsaWJfZGVmYXVsdCwKICAgaGxsX2RlZmF1bHQsCkBAIC0xNTc2LDE3ICsxNTc3LDE3IEBAIHN0 cnVjdCBsZF9lbXVsYXRpb25feGZlcl9zdHJ1Y3QgbGRfYWl4cnMKICAgZmluaXNoX2RlZmF1bHQs CiAgIGdsZGFpeHJzNl9jcmVhdGVfb3V0cHV0X3NlY3Rpb25fc3RhdGVtZW50cywKICAgZ2xkYWl4 cnM2X29wZW5fZHluYW1pY19hcmNoaXZlLAotICAwLAkJCQkvKiBwbGFjZV9vcnBoYW4gKi8KLSAg MCwJCQkJLyogc2V0X3N5bWJvbHMgKi8KKyAgTlVMTCwKKyAgTlVMTCwKICAgZ2xkYWl4cnM2X3Bh cnNlX2FyZ3MsCiAgIGdsZGFpeHJzNl9hZGRfb3B0aW9ucywKICAgZ2xkYWl4cnM2X2hhbmRsZV9v cHRpb24sCiAgIGdsZGFpeHJzNl91bnJlY29nbml6ZWRfZmlsZSwKLSAgTlVMTCwJCQkJLyogbGlz dF9vcHRpb25zICovCi0gIE5VTEwsCQkJCS8qIHJlY29nbml6ZWRfZmlsZSAqLwotICBOVUxMLAkJ CQkvKiBmaW5kIHBvdGVudGlhbF9saWJyYXJpZXMgKi8KLSAgTlVMTCwJCQkJLyogbmV3X3ZlcnNf cGF0dGVybiAqLwotICBOVUxMLAkJCQkvKiBleHRyYV9tYXBfZmlsZV90ZXh0ICovCisgIE5VTEws CisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCiAgIE5VTEwsCiAgIE5VTEwsCiAg IE5VTEwsCi0tLSAuLi8uLi9iaW51dGlscy1hbGwvYnVpbGQteDg2XzY0LWxpbnV4L2xkL2Vhcm1w ZS5jCTIwMjItMDItMDQgMTE6MzM6MDMuMjg0ODE1NDk3IC0wODAwCisrKyBsZC9lYXJtcGUuYwky MDIyLTAyLTA2IDA2OjE5OjMzLjYwNDc5MjgzMSAtMDgwMApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0 YXRpYyBpbnQgaXNfdW5kZXJzY29yaW5nICh2b2lkKQogfQogCiBzdGF0aWMgdm9pZAotZ2xkX2Fy bXBlX2JlZm9yZV9wYXJzZSAodm9pZCkKK2dsZGFybXBlX2JlZm9yZV9wYXJzZSAodm9pZCkKIHsK ICAgaXNfdW5kZXJzY29yaW5nICgpOwogICBsZGZpbGVfc2V0X291dHB1dF9hcmNoICgiYXJtIiwg YmZkX2FyY2hfYXJtKTsKQEAgLTM5NCw3ICszOTQsNyBAQCBzdGF0aWMgZGVmaW5mbyBpbml0W10g PQogCiAKIHN0YXRpYyB2b2lkCi1nbGRfYXJtcGVfbGlzdF9vcHRpb25zIChGSUxFICpmaWxlKQor Z2xkYXJtcGVfbGlzdF9vcHRpb25zIChGSUxFICpmaWxlKQogewogICBmcHJpbnRmIChmaWxlLCBf KCIgIC0tYmFzZV9maWxlIDxiYXNlZmlsZT4gICAgICAgICAgICAgR2VuZXJhdGUgYSBiYXNlIGZp bGUgZm9yIHJlbG9jYXRhYmxlIERMTHNcbiIpKTsKICAgZnByaW50ZiAoZmlsZSwgXygiICAtLWRs bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCBpbWFnZSBiYXNlIHRvIHRoZSBkZWZh dWx0IGZvciBETExzXG4iKSk7CkBAIC05MjQsNyArOTI0LDcgQEAgY29tcHV0ZV9kbGxfaW1hZ2Vf YmFzZSAoY29uc3QgY2hhciAqb2ZpbAogICAgcmVhZC4gICovCiAKIHN0YXRpYyB2b2lkCi1nbGRf YXJtcGVfc2V0X3N5bWJvbHMgKHZvaWQpCitnbGRhcm1wZV9zZXRfc3ltYm9scyAodm9pZCkKIHsK ICAgLyogUnVuIHRocm91Z2ggYW5kIGludmVudCBzeW1ib2xzIGZvciBhbGwgdGhlCiAgICAgIG5h bWVzIGFuZCBpbnNlcnQgdGhlIGRlZmF1bHRzLiAgKi8KQEAgLTk5MSw3ICs5OTEsNyBAQCBnbGRf YXJtcGVfc2V0X3N5bWJvbHMgKHZvaWQpCiAgICBoYXZlIGJlZW4gcmVhZC4gICovCiAKIHN0YXRp YyB2b2lkCi1nbGRfYXJtcGVfYWZ0ZXJfcGFyc2UgKHZvaWQpCitnbGRhcm1wZV9hZnRlcl9wYXJz ZSAodm9pZCkKIHsKICAgLyogUFIgbGQvNjc0NDogIFdhcm4gdGhlIHVzZXIgaWYgdGhleSBoYXZl IHVzZWQgYW4gRUxGLW9ubHkKICAgICAgb3B0aW9uIGhvcGluZyBpdCB3aWxsIHdvcmsgb24gUEUu ICAqLwpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgc2V0dXBfYnVpbGRfaWQgKGJmZCAqaWJmZCkKIH0K IAogc3RhdGljIHZvaWQKLWdsZF9hcm1wZV9hZnRlcl9vcGVuICh2b2lkKQorZ2xkYXJtcGVfYWZ0 ZXJfb3BlbiAodm9pZCkKIHsKICAgYWZ0ZXJfb3Blbl9kZWZhdWx0ICgpOwogCkBAIC0xNzIzLDcg KzE3MjMsNyBAQCBnbGRfYXJtcGVfYWZ0ZXJfb3BlbiAodm9pZCkKIH0KIAwKIHN0YXRpYyB2b2lk Ci1nbGRfYXJtcGVfYmVmb3JlX2FsbG9jYXRpb24gKHZvaWQpCitnbGRhcm1wZV9iZWZvcmVfYWxs b2NhdGlvbiAodm9pZCkKIHsKICNpZiBkZWZpbmVkKFRBUkdFVF9JU19hcm1wZSkgfHwgZGVmaW5l ZChUQVJHRVRfSVNfYXJtX3dpbmNlX3BlKQogICAvKiBGSVhNRTogd2Ugc2hvdWxkIGJlIGFibGUg dG8gc2V0IHRoZSBzaXplIG9mIHRoZSBpbnRlcndvcmtpbmcgc3R1YgpAQCAtMTc2OSw3ICsxNzY5 LDcgQEAgc2F3X29wdGlvbiAoY2hhciAqb3B0aW9uKQogI2VuZGlmIC8qIERMTF9TVVBQT1JUICov CiAKIHN0YXRpYyBib29sCi1nbGRfYXJtcGVfdW5yZWNvZ25pemVkX2ZpbGUgKGxhbmdfaW5wdXRf c3RhdGVtZW50X3R5cGUgKmVudHJ5IEFUVFJJQlVURV9VTlVTRUQpCitnbGRhcm1wZV91bnJlY29n bml6ZWRfZmlsZSAobGFuZ19pbnB1dF9zdGF0ZW1lbnRfdHlwZSAqZW50cnkgQVRUUklCVVRFX1VO VVNFRCkKIHsKICNpZmRlZiBETExfU1VQUE9SVAogICBjb25zdCBjaGFyICpleHQgPSBlbnRyeS0+ ZmlsZW5hbWUgKyBzdHJsZW4gKGVudHJ5LT5maWxlbmFtZSkgLSA0OwpAQCAtMTg1MCw3ICsxODUw LDcgQEAgZ2xkX2FybXBlX3VucmVjb2duaXplZF9maWxlIChsYW5nX2lucHV0XwogfQogCiBzdGF0 aWMgYm9vbAotZ2xkX2FybXBlX3JlY29nbml6ZWRfZmlsZSAobGFuZ19pbnB1dF9zdGF0ZW1lbnRf dHlwZSAqZW50cnkgQVRUUklCVVRFX1VOVVNFRCkKK2dsZGFybXBlX3JlY29nbml6ZWRfZmlsZSAo bGFuZ19pbnB1dF9zdGF0ZW1lbnRfdHlwZSAqZW50cnkgQVRUUklCVVRFX1VOVVNFRCkKIHsKICNp ZmRlZiBETExfU1VQUE9SVAogI2lmZGVmIFRBUkdFVF9JU19pMzg2cGUKQEAgLTE4NzIsNyArMTg3 Miw3IEBAIGdsZF9hcm1wZV9yZWNvZ25pemVkX2ZpbGUgKGxhbmdfaW5wdXRfc3QKIH0KIAogc3Rh dGljIHZvaWQKLWdsZF9hcm1wZV9maW5pc2ggKHZvaWQpCitnbGRhcm1wZV9maW5pc2ggKHZvaWQp CiB7CiAjaWYgZGVmaW5lZChUQVJHRVRfSVNfYXJtcGUpIHx8IGRlZmluZWQoVEFSR0VUX0lTX2Fy bV93aW5jZV9wZSkKICAgc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkgKiBoOwpAQCAtMTk3Miw5 ICsxOTcyLDkgQEAgZ2xkX2FybXBlX2ZpbmlzaCAodm9pZCkKICAgIHNvcnRfc2VjdGlvbnMuICAq LwogCiBzdGF0aWMgbGFuZ19vdXRwdXRfc2VjdGlvbl9zdGF0ZW1lbnRfdHlwZSAqCi1nbGRfYXJt cGVfcGxhY2Vfb3JwaGFuIChhc2VjdGlvbiAqcywKLQkJCQkgICAgY29uc3QgY2hhciAqc2VjbmFt ZSwKLQkJCQkgICAgaW50IGNvbnN0cmFpbnQpCitnbGRhcm1wZV9wbGFjZV9vcnBoYW4gKGFzZWN0 aW9uICpzLAorCQkJCSAgIGNvbnN0IGNoYXIgKnNlY25hbWUsCisJCQkJICAgaW50IGNvbnN0cmFp bnQpCiB7CiAgIGNvbnN0IGNoYXIgKm9yaWdfc2VjbmFtZSA9IHNlY25hbWU7CiAgIGNoYXIgKmRv bGxhciA9IE5VTEw7CkBAIC0yMTcxLDcgKzIxNzEsNyBAQCBnbGRfYXJtcGVfcGxhY2Vfb3JwaGFu IChhc2VjdGlvbiAqcywKIH0KIAogc3RhdGljIGJvb2wKLWdsZF9hcm1wZV9vcGVuX2R5bmFtaWNf YXJjaGl2ZQorZ2xkYXJtcGVfb3Blbl9keW5hbWljX2FyY2hpdmUKICAgKGNvbnN0IGNoYXIgKmFy Y2ggQVRUUklCVVRFX1VOVVNFRCwKICAgIHNlYXJjaF9kaXJzX3R5cGUgKnNlYXJjaCwKICAgIGxh bmdfaW5wdXRfc3RhdGVtZW50X3R5cGUgKmVudHJ5KQpAQCAtMjI3NywxNCArMjI3NywxNCBAQCBn bGRfYXJtcGVfb3Blbl9keW5hbWljX2FyY2hpdmUKIH0KIAogc3RhdGljIGludAotZ2xkX2FybXBl X2ZpbmRfcG90ZW50aWFsX2xpYnJhcmllcworZ2xkYXJtcGVfZmluZF9wb3RlbnRpYWxfbGlicmFy aWVzCiAgIChjaGFyICpuYW1lLCBsYW5nX2lucHV0X3N0YXRlbWVudF90eXBlICplbnRyeSkKIHsK ICAgcmV0dXJuIGxkZmlsZV9vcGVuX2ZpbGVfc2VhcmNoIChuYW1lLCBlbnRyeSwgIiIsICIubGli Iik7CiB9CiAMCiBzdGF0aWMgY2hhciAqCi1nbGRfYXJtcGVfZ2V0X3NjcmlwdCAoaW50ICppc2Zp bGUpCitnbGRhcm1wZV9nZXRfc2NyaXB0IChpbnQgKmlzZmlsZSkKIHsKICAgKmlzZmlsZSA9IDE7 CiAKQEAgLTIzMDAsMzcgKzIzMDAsMzYgQEAgZ2xkX2FybXBlX2dldF9zY3JpcHQgKGludCAqaXNm aWxlKQogICAgIHJldHVybiAibGRzY3JpcHRzL2FybXBlLngiOwogfQogCi0KIHN0cnVjdCBsZF9l bXVsYXRpb25feGZlcl9zdHJ1Y3QgbGRfYXJtcGVfZW11bGF0aW9uID0KIHsKLSAgZ2xkX2FybXBl X2JlZm9yZV9wYXJzZSwKKyAgZ2xkYXJtcGVfYmVmb3JlX3BhcnNlLAogICBzeXNsaWJfZGVmYXVs dCwKICAgaGxsX2RlZmF1bHQsCi0gIGdsZF9hcm1wZV9hZnRlcl9wYXJzZSwKLSAgZ2xkX2FybXBl X2FmdGVyX29wZW4sCisgIGdsZGFybXBlX2FmdGVyX3BhcnNlLAorICBnbGRhcm1wZV9hZnRlcl9v cGVuLAogICBhZnRlcl9jaGVja19yZWxvY3NfZGVmYXVsdCwKICAgYmVmb3JlX3BsYWNlX29ycGhh bnNfZGVmYXVsdCwKICAgYWZ0ZXJfYWxsb2NhdGlvbl9kZWZhdWx0LAogICBzZXRfb3V0cHV0X2Fy Y2hfZGVmYXVsdCwKICAgbGRlbXVsX2RlZmF1bHRfdGFyZ2V0LAotICBnbGRfYXJtcGVfYmVmb3Jl X2FsbG9jYXRpb24sCi0gIGdsZF9hcm1wZV9nZXRfc2NyaXB0LAorICBnbGRhcm1wZV9iZWZvcmVf YWxsb2NhdGlvbiwKKyAgZ2xkYXJtcGVfZ2V0X3NjcmlwdCwKICAgImFybXBlIiwKICAgInBlaS1h cm0tbGl0dGxlIiwKLSAgZ2xkX2FybXBlX2ZpbmlzaCwKLSAgTlVMTCwgLyogQ3JlYXRlIG91dHB1 dCBzZWN0aW9uIHN0YXRlbWVudHMuICAqLwotICBnbGRfYXJtcGVfb3Blbl9keW5hbWljX2FyY2hp dmUsCi0gIGdsZF9hcm1wZV9wbGFjZV9vcnBoYW4sCi0gIGdsZF9hcm1wZV9zZXRfc3ltYm9scywK LSAgTlVMTCwgLyogcGFyc2VfYXJncyAqLworICBnbGRhcm1wZV9maW5pc2gsCisgIE5VTEwsCisg IGdsZGFybXBlX29wZW5fZHluYW1pY19hcmNoaXZlLAorICBnbGRhcm1wZV9wbGFjZV9vcnBoYW4s CisgIGdsZGFybXBlX3NldF9zeW1ib2xzLAorICBOVUxMLAogICBnbGRhcm1wZV9hZGRfb3B0aW9u cywKICAgZ2xkYXJtcGVfaGFuZGxlX29wdGlvbiwKLSAgZ2xkX2FybXBlX3VucmVjb2duaXplZF9m aWxlLAotICBnbGRfYXJtcGVfbGlzdF9vcHRpb25zLAotICBnbGRfYXJtcGVfcmVjb2duaXplZF9m aWxlLAotICBnbGRfYXJtcGVfZmluZF9wb3RlbnRpYWxfbGlicmFyaWVzLAotICBOVUxMLAkvKiBu ZXdfdmVyc19wYXR0ZXJuLiAgKi8KLSAgTlVMTCwJLyogZXh0cmFfbWFwX2ZpbGVfdGV4dC4gICov CisgIGdsZGFybXBlX3VucmVjb2duaXplZF9maWxlLAorICBnbGRhcm1wZV9saXN0X29wdGlvbnMs CisgIGdsZGFybXBlX3JlY29nbml6ZWRfZmlsZSwKKyAgZ2xkYXJtcGVfZmluZF9wb3RlbnRpYWxf bGlicmFyaWVzLAorICBOVUxMLAorICBOVUxMLAogICBOVUxMLAogICBOVUxMLAogICBOVUxMLAot LS0gLi4vLi4vYmludXRpbHMtYWxsL2J1aWxkLXg4Nl82NC1saW51eC9sZC9lYXJtX3dpbmNlX3Bl LmMJMjAyMi0wMi0wNCAxMTozMzowMS43NTY4MTk5MzkgLTA4MDAKKysrIGxkL2Vhcm1fd2luY2Vf cGUuYwkyMDIyLTAyLTA2IDA2OjE5OjMxLjc5NDgwMTc2MSAtMDgwMApAQCAtMTQ4LDcgKzE0OCw3 IEBAIHN0YXRpYyBpbnQgaXNfdW5kZXJzY29yaW5nICh2b2lkKQogfQogCiBzdGF0aWMgdm9pZAot Z2xkX2FybV93aW5jZV9wZV9iZWZvcmVfcGFyc2UgKHZvaWQpCitnbGRhcm1fd2luY2VfcGVfYmVm b3JlX3BhcnNlICh2b2lkKQogewogICBpc191bmRlcnNjb3JpbmcgKCk7CiAgIGxkZmlsZV9zZXRf b3V0cHV0X2FyY2ggKCJhcm0iLCBiZmRfYXJjaF9hcm0pOwpAQCAtMzk0LDcgKzM5NCw3IEBAIHN0 YXRpYyBkZWZpbmZvIGluaXRbXSA9CiAKIAogc3RhdGljIHZvaWQKLWdsZF9hcm1fd2luY2VfcGVf bGlzdF9vcHRpb25zIChGSUxFICpmaWxlKQorZ2xkYXJtX3dpbmNlX3BlX2xpc3Rfb3B0aW9ucyAo RklMRSAqZmlsZSkKIHsKICAgZnByaW50ZiAoZmlsZSwgXygiICAtLWJhc2VfZmlsZSA8YmFzZWZp bGU+ICAgICAgICAgICAgIEdlbmVyYXRlIGEgYmFzZSBmaWxlIGZvciByZWxvY2F0YWJsZSBETExz XG4iKSk7CiAgIGZwcmludGYgKGZpbGUsIF8oIiAgLS1kbGwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTZXQgaW1hZ2UgYmFzZSB0byB0aGUgZGVmYXVsdCBmb3IgRExMc1xuIikpOwpAQCAt OTI0LDcgKzkyNCw3IEBAIGNvbXB1dGVfZGxsX2ltYWdlX2Jhc2UgKGNvbnN0IGNoYXIgKm9maWwK ICAgIHJlYWQuICAqLwogCiBzdGF0aWMgdm9pZAotZ2xkX2FybV93aW5jZV9wZV9zZXRfc3ltYm9s cyAodm9pZCkKK2dsZGFybV93aW5jZV9wZV9zZXRfc3ltYm9scyAodm9pZCkKIHsKICAgLyogUnVu IHRocm91Z2ggYW5kIGludmVudCBzeW1ib2xzIGZvciBhbGwgdGhlCiAgICAgIG5hbWVzIGFuZCBp bnNlcnQgdGhlIGRlZmF1bHRzLiAgKi8KQEAgLTk5MSw3ICs5OTEsNyBAQCBnbGRfYXJtX3dpbmNl X3BlX3NldF9zeW1ib2xzICh2b2lkKQogICAgaGF2ZSBiZWVuIHJlYWQuICAqLwogCiBzdGF0aWMg dm9pZAotZ2xkX2FybV93aW5jZV9wZV9hZnRlcl9wYXJzZSAodm9pZCkKK2dsZGFybV93aW5jZV9w ZV9hZnRlcl9wYXJzZSAodm9pZCkKIHsKICAgLyogUFIgbGQvNjc0NDogIFdhcm4gdGhlIHVzZXIg aWYgdGhleSBoYXZlIHVzZWQgYW4gRUxGLW9ubHkKICAgICAgb3B0aW9uIGhvcGluZyBpdCB3aWxs IHdvcmsgb24gUEUuICAqLwpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgc2V0dXBfYnVpbGRfaWQgKGJm ZCAqaWJmZCkKIH0KIAogc3RhdGljIHZvaWQKLWdsZF9hcm1fd2luY2VfcGVfYWZ0ZXJfb3BlbiAo dm9pZCkKK2dsZGFybV93aW5jZV9wZV9hZnRlcl9vcGVuICh2b2lkKQogewogICBhZnRlcl9vcGVu X2RlZmF1bHQgKCk7CiAKQEAgLTE3MjMsNyArMTcyMyw3IEBAIGdsZF9hcm1fd2luY2VfcGVfYWZ0 ZXJfb3BlbiAodm9pZCkKIH0KIAwKIHN0YXRpYyB2b2lkCi1nbGRfYXJtX3dpbmNlX3BlX2JlZm9y ZV9hbGxvY2F0aW9uICh2b2lkKQorZ2xkYXJtX3dpbmNlX3BlX2JlZm9yZV9hbGxvY2F0aW9uICh2 b2lkKQogewogI2lmIGRlZmluZWQoVEFSR0VUX0lTX2FybXBlKSB8fCBkZWZpbmVkKFRBUkdFVF9J U19hcm1fd2luY2VfcGUpCiAgIC8qIEZJWE1FOiB3ZSBzaG91bGQgYmUgYWJsZSB0byBzZXQgdGhl IHNpemUgb2YgdGhlIGludGVyd29ya2luZyBzdHViCkBAIC0xNzY5LDcgKzE3NjksNyBAQCBzYXdf b3B0aW9uIChjaGFyICpvcHRpb24pCiAjZW5kaWYgLyogRExMX1NVUFBPUlQgKi8KIAogc3RhdGlj IGJvb2wKLWdsZF9hcm1fd2luY2VfcGVfdW5yZWNvZ25pemVkX2ZpbGUgKGxhbmdfaW5wdXRfc3Rh dGVtZW50X3R5cGUgKmVudHJ5IEFUVFJJQlVURV9VTlVTRUQpCitnbGRhcm1fd2luY2VfcGVfdW5y ZWNvZ25pemVkX2ZpbGUgKGxhbmdfaW5wdXRfc3RhdGVtZW50X3R5cGUgKmVudHJ5IEFUVFJJQlVU RV9VTlVTRUQpCiB7CiAjaWZkZWYgRExMX1NVUFBPUlQKICAgY29uc3QgY2hhciAqZXh0ID0gZW50 cnktPmZpbGVuYW1lICsgc3RybGVuIChlbnRyeS0+ZmlsZW5hbWUpIC0gNDsKQEAgLTE4NTAsNyAr MTg1MCw3IEBAIGdsZF9hcm1fd2luY2VfcGVfdW5yZWNvZ25pemVkX2ZpbGUgKGxhbmcKIH0KIAog c3RhdGljIGJvb2wKLWdsZF9hcm1fd2luY2VfcGVfcmVjb2duaXplZF9maWxlIChsYW5nX2lucHV0 X3N0YXRlbWVudF90eXBlICplbnRyeSBBVFRSSUJVVEVfVU5VU0VEKQorZ2xkYXJtX3dpbmNlX3Bl X3JlY29nbml6ZWRfZmlsZSAobGFuZ19pbnB1dF9zdGF0ZW1lbnRfdHlwZSAqZW50cnkgQVRUUklC VVRFX1VOVVNFRCkKIHsKICNpZmRlZiBETExfU1VQUE9SVAogI2lmZGVmIFRBUkdFVF9JU19pMzg2 cGUKQEAgLTE4NzIsNyArMTg3Miw3IEBAIGdsZF9hcm1fd2luY2VfcGVfcmVjb2duaXplZF9maWxl IChsYW5nX2kKIH0KIAogc3RhdGljIHZvaWQKLWdsZF9hcm1fd2luY2VfcGVfZmluaXNoICh2b2lk KQorZ2xkYXJtX3dpbmNlX3BlX2ZpbmlzaCAodm9pZCkKIHsKICNpZiBkZWZpbmVkKFRBUkdFVF9J U19hcm1wZSkgfHwgZGVmaW5lZChUQVJHRVRfSVNfYXJtX3dpbmNlX3BlKQogICBzdHJ1Y3QgYmZk X2xpbmtfaGFzaF9lbnRyeSAqIGg7CkBAIC0xOTcyLDkgKzE5NzIsOSBAQCBnbGRfYXJtX3dpbmNl X3BlX2ZpbmlzaCAodm9pZCkKICAgIHNvcnRfc2VjdGlvbnMuICAqLwogCiBzdGF0aWMgbGFuZ19v dXRwdXRfc2VjdGlvbl9zdGF0ZW1lbnRfdHlwZSAqCi1nbGRfYXJtX3dpbmNlX3BlX3BsYWNlX29y cGhhbiAoYXNlY3Rpb24gKnMsCi0JCQkJICAgIGNvbnN0IGNoYXIgKnNlY25hbWUsCi0JCQkJICAg IGludCBjb25zdHJhaW50KQorZ2xkYXJtX3dpbmNlX3BlX3BsYWNlX29ycGhhbiAoYXNlY3Rpb24g KnMsCisJCQkJICAgY29uc3QgY2hhciAqc2VjbmFtZSwKKwkJCQkgICBpbnQgY29uc3RyYWludCkK IHsKICAgY29uc3QgY2hhciAqb3JpZ19zZWNuYW1lID0gc2VjbmFtZTsKICAgY2hhciAqZG9sbGFy ID0gTlVMTDsKQEAgLTIxNzEsNyArMjE3MSw3IEBAIGdsZF9hcm1fd2luY2VfcGVfcGxhY2Vfb3Jw aGFuIChhc2VjdGlvbgogfQogCiBzdGF0aWMgYm9vbAotZ2xkX2FybV93aW5jZV9wZV9vcGVuX2R5 bmFtaWNfYXJjaGl2ZQorZ2xkYXJtX3dpbmNlX3BlX29wZW5fZHluYW1pY19hcmNoaXZlCiAgIChj b25zdCBjaGFyICphcmNoIEFUVFJJQlVURV9VTlVTRUQsCiAgICBzZWFyY2hfZGlyc190eXBlICpz ZWFyY2gsCiAgICBsYW5nX2lucHV0X3N0YXRlbWVudF90eXBlICplbnRyeSkKQEAgLTIyNzcsMTQg KzIyNzcsMTQgQEAgZ2xkX2FybV93aW5jZV9wZV9vcGVuX2R5bmFtaWNfYXJjaGl2ZQogfQogCiBz dGF0aWMgaW50Ci1nbGRfYXJtX3dpbmNlX3BlX2ZpbmRfcG90ZW50aWFsX2xpYnJhcmllcworZ2xk YXJtX3dpbmNlX3BlX2ZpbmRfcG90ZW50aWFsX2xpYnJhcmllcwogICAoY2hhciAqbmFtZSwgbGFu Z19pbnB1dF9zdGF0ZW1lbnRfdHlwZSAqZW50cnkpCiB7CiAgIHJldHVybiBsZGZpbGVfb3Blbl9m aWxlX3NlYXJjaCAobmFtZSwgZW50cnksICIiLCAiLmxpYiIpOwogfQogDAogc3RhdGljIGNoYXIg KgotZ2xkX2FybV93aW5jZV9wZV9nZXRfc2NyaXB0IChpbnQgKmlzZmlsZSkKK2dsZGFybV93aW5j ZV9wZV9nZXRfc2NyaXB0IChpbnQgKmlzZmlsZSkKIHsKICAgKmlzZmlsZSA9IDE7CiAKQEAgLTIz MDAsMzcgKzIzMDAsMzYgQEAgZ2xkX2FybV93aW5jZV9wZV9nZXRfc2NyaXB0IChpbnQgKmlzZmls ZQogICAgIHJldHVybiAibGRzY3JpcHRzL2FybV93aW5jZV9wZS54IjsKIH0KIAotCiBzdHJ1Y3Qg bGRfZW11bGF0aW9uX3hmZXJfc3RydWN0IGxkX2FybV93aW5jZV9wZV9lbXVsYXRpb24gPQogewot ICBnbGRfYXJtX3dpbmNlX3BlX2JlZm9yZV9wYXJzZSwKKyAgZ2xkYXJtX3dpbmNlX3BlX2JlZm9y ZV9wYXJzZSwKICAgc3lzbGliX2RlZmF1bHQsCiAgIGhsbF9kZWZhdWx0LAotICBnbGRfYXJtX3dp bmNlX3BlX2FmdGVyX3BhcnNlLAotICBnbGRfYXJtX3dpbmNlX3BlX2FmdGVyX29wZW4sCisgIGds ZGFybV93aW5jZV9wZV9hZnRlcl9wYXJzZSwKKyAgZ2xkYXJtX3dpbmNlX3BlX2FmdGVyX29wZW4s CiAgIGFmdGVyX2NoZWNrX3JlbG9jc19kZWZhdWx0LAogICBiZWZvcmVfcGxhY2Vfb3JwaGFuc19k ZWZhdWx0LAogICBhZnRlcl9hbGxvY2F0aW9uX2RlZmF1bHQsCiAgIHNldF9vdXRwdXRfYXJjaF9k ZWZhdWx0LAogICBsZGVtdWxfZGVmYXVsdF90YXJnZXQsCi0gIGdsZF9hcm1fd2luY2VfcGVfYmVm b3JlX2FsbG9jYXRpb24sCi0gIGdsZF9hcm1fd2luY2VfcGVfZ2V0X3NjcmlwdCwKKyAgZ2xkYXJt X3dpbmNlX3BlX2JlZm9yZV9hbGxvY2F0aW9uLAorICBnbGRhcm1fd2luY2VfcGVfZ2V0X3Njcmlw dCwKICAgImFybV93aW5jZV9wZSIsCiAgICJwZWktYXJtLXdpbmNlLWxpdHRsZSIsCi0gIGdsZF9h cm1fd2luY2VfcGVfZmluaXNoLAotICBOVUxMLCAvKiBDcmVhdGUgb3V0cHV0IHNlY3Rpb24gc3Rh dGVtZW50cy4gICovCi0gIGdsZF9hcm1fd2luY2VfcGVfb3Blbl9keW5hbWljX2FyY2hpdmUsCi0g IGdsZF9hcm1fd2luY2VfcGVfcGxhY2Vfb3JwaGFuLAotICBnbGRfYXJtX3dpbmNlX3BlX3NldF9z eW1ib2xzLAotICBOVUxMLCAvKiBwYXJzZV9hcmdzICovCisgIGdsZGFybV93aW5jZV9wZV9maW5p c2gsCisgIE5VTEwsCisgIGdsZGFybV93aW5jZV9wZV9vcGVuX2R5bmFtaWNfYXJjaGl2ZSwKKyAg Z2xkYXJtX3dpbmNlX3BlX3BsYWNlX29ycGhhbiwKKyAgZ2xkYXJtX3dpbmNlX3BlX3NldF9zeW1i b2xzLAorICBOVUxMLAogICBnbGRhcm1fd2luY2VfcGVfYWRkX29wdGlvbnMsCiAgIGdsZGFybV93 aW5jZV9wZV9oYW5kbGVfb3B0aW9uLAotICBnbGRfYXJtX3dpbmNlX3BlX3VucmVjb2duaXplZF9m aWxlLAotICBnbGRfYXJtX3dpbmNlX3BlX2xpc3Rfb3B0aW9ucywKLSAgZ2xkX2FybV93aW5jZV9w ZV9yZWNvZ25pemVkX2ZpbGUsCi0gIGdsZF9hcm1fd2luY2VfcGVfZmluZF9wb3RlbnRpYWxfbGli cmFyaWVzLAotICBOVUxMLAkvKiBuZXdfdmVyc19wYXR0ZXJuLiAgKi8KLSAgTlVMTCwJLyogZXh0 cmFfbWFwX2ZpbGVfdGV4dC4gICovCisgIGdsZGFybV93aW5jZV9wZV91bnJlY29nbml6ZWRfZmls ZSwKKyAgZ2xkYXJtX3dpbmNlX3BlX2xpc3Rfb3B0aW9ucywKKyAgZ2xkYXJtX3dpbmNlX3BlX3Jl Y29nbml6ZWRfZmlsZSwKKyAgZ2xkYXJtX3dpbmNlX3BlX2ZpbmRfcG90ZW50aWFsX2xpYnJhcmll cywKKyAgTlVMTCwKKyAgTlVMTCwKICAgTlVMTCwKICAgTlVMTCwKICAgTlVMTCwKLS0tIC4uLy4u L2JpbnV0aWxzLWFsbC9idWlsZC14ODZfNjQtbGludXgvbGQvZWkzODZiZW9zLmMJMjAyMi0wMi0w NCAxMTozMzowOS4yMTE3OTgyNjQgLTA4MDAKKysrIGxkL2VpMzg2YmVvcy5jCTIwMjItMDItMDYg MDY6MTk6NDEuNzM1NzUyNzE1IC0wODAwCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBpbnQgZGxs OwogZXh0ZXJuIGNvbnN0IGNoYXIgKm91dHB1dF9maWxlbmFtZTsKIAogc3RhdGljIHZvaWQKLWds ZF9pMzg2YmVvc19iZWZvcmVfcGFyc2UgKHZvaWQpCitnbGRpMzg2YmVvc19iZWZvcmVfcGFyc2Ug KHZvaWQpCiB7CiAgIGxkZmlsZV9zZXRfb3V0cHV0X2FyY2ggKCJpMzg2IiwgYmZkX2FyY2hfaTM4 Nik7CiAgIG91dHB1dF9maWxlbmFtZSA9ICJhLmV4ZSI7CkBAIC0zMTQsNyArMzE0LDcgQEAgZ2xk aTM4NmJlb3NfaGFuZGxlX29wdGlvbiAoaW50IG9wdGMpCiAgICByZWFkLiAgKi8KIAogc3RhdGlj IHZvaWQKLWdsZF9pMzg2YmVvc19zZXRfc3ltYm9scyAodm9pZCkKK2dsZGkzODZiZW9zX3NldF9z eW1ib2xzICh2b2lkKQogewogICAvKiBSdW4gdGhyb3VnaCBhbmQgaW52ZW50IHN5bWJvbHMgZm9y IGFsbCB0aGUKICAgICAgbmFtZXMgYW5kIGluc2VydCB0aGUgZGVmYXVsdHMuICovCkBAIC0zNjQs NyArMzY0LDcgQEAgZ2xkX2kzODZiZW9zX3NldF9zeW1ib2xzICh2b2lkKQogfQogCiBzdGF0aWMg dm9pZAotZ2xkX2kzODZiZW9zX2FmdGVyX29wZW4gKHZvaWQpCitnbGRpMzg2YmVvc19hZnRlcl9v cGVuICh2b2lkKQogewogICBhZnRlcl9vcGVuX2RlZmF1bHQgKCk7CiAKQEAgLTU5OCw3ICs1OTgs NyBAQCBzb3J0X3NlY3Rpb25zIChsYW5nX3N0YXRlbWVudF91bmlvbl90eXBlCiB9CiAKIHN0YXRp YyB2b2lkCi1nbGRfaTM4NmJlb3NfYmVmb3JlX2FsbG9jYXRpb24gKHZvaWQpCitnbGRpMzg2YmVv c19iZWZvcmVfYWxsb2NhdGlvbiAodm9pZCkKIHsKICNpZmRlZiBUQVJHRVRfSVNfYXJtcGUKICAg LyogRklYTUU6IHdlIHNob3VsZCBiZSBhYmxlIHRvIHNldCB0aGUgc2l6ZSBvZiB0aGUgaW50ZXJ3 b3JraW5nIHN0dWIKQEAgLTcwMiw3ICs3MDIsNyBAQCBnbGRpMzg2YmVvc19wbGFjZV9vcnBoYW4g KGFzZWN0aW9uICpzLAogfQogDAogc3RhdGljIGNoYXIgKgotZ2xkX2kzODZiZW9zX2dldF9zY3Jp cHQgKGludCAqaXNmaWxlKQorZ2xkaTM4NmJlb3NfZ2V0X3NjcmlwdCAoaW50ICppc2ZpbGUpCiB7 CiAgICppc2ZpbGUgPSAxOwogCkBAIC03MTgsMzcgKzcxOCwzNiBAQCBnbGRfaTM4NmJlb3NfZ2V0 X3NjcmlwdCAoaW50ICppc2ZpbGUpCiAgICAgcmV0dXJuICJsZHNjcmlwdHMvaTM4NmJlb3MueCI7 CiB9CiAKLQogc3RydWN0IGxkX2VtdWxhdGlvbl94ZmVyX3N0cnVjdCBsZF9pMzg2YmVvc19lbXVs YXRpb24gPQogewotICBnbGRfaTM4NmJlb3NfYmVmb3JlX3BhcnNlLAorICBnbGRpMzg2YmVvc19i ZWZvcmVfcGFyc2UsCiAgIHN5c2xpYl9kZWZhdWx0LAogICBobGxfZGVmYXVsdCwKICAgYWZ0ZXJf cGFyc2VfZGVmYXVsdCwKLSAgZ2xkX2kzODZiZW9zX2FmdGVyX29wZW4sCisgIGdsZGkzODZiZW9z X2FmdGVyX29wZW4sCiAgIGFmdGVyX2NoZWNrX3JlbG9jc19kZWZhdWx0LAogICBiZWZvcmVfcGxh Y2Vfb3JwaGFuc19kZWZhdWx0LAogICBhZnRlcl9hbGxvY2F0aW9uX2RlZmF1bHQsCiAgIHNldF9v dXRwdXRfYXJjaF9kZWZhdWx0LAogICBsZGVtdWxfZGVmYXVsdF90YXJnZXQsCi0gIGdsZF9pMzg2 YmVvc19iZWZvcmVfYWxsb2NhdGlvbiwKLSAgZ2xkX2kzODZiZW9zX2dldF9zY3JpcHQsCisgIGds ZGkzODZiZW9zX2JlZm9yZV9hbGxvY2F0aW9uLAorICBnbGRpMzg2YmVvc19nZXRfc2NyaXB0LAog ICAiaTM4NmJlb3MiLAogICAicGVpLWkzODYiLAogICBmaW5pc2hfZGVmYXVsdCwKLSAgTlVMTCwg LyogY3JlYXRlIG91dHB1dCBzZWN0aW9uIHN0YXRlbWVudHMgKi8KLSAgTlVMTCwgLyogb3BlbiBk eW5hbWljIGFyY2hpdmUgKi8KKyAgTlVMTCwKKyAgTlVMTCwKICAgZ2xkaTM4NmJlb3NfcGxhY2Vf b3JwaGFuLAotICBnbGRfaTM4NmJlb3Nfc2V0X3N5bWJvbHMsCi0gIE5VTEwsIC8qIHBhcnNlX2Fy Z3MgKi8KKyAgZ2xkaTM4NmJlb3Nfc2V0X3N5bWJvbHMsCisgIE5VTEwsCiAgIGdsZGkzODZiZW9z X2FkZF9vcHRpb25zLAogICBnbGRpMzg2YmVvc19oYW5kbGVfb3B0aW9uLAotICBOVUxMLAkvKiB1 bnJlY29nbml6ZWQgZmlsZSAqLwotICBOVUxMLAkvKiBsaXN0IG9wdGlvbnMgKi8KLSAgTlVMTCwJ LyogcmVjb2duaXplZCBmaWxlICovCi0gIE5VTEwsCS8qIGZpbmRfcG90ZW50aWFsX2xpYnJhcmll cyAqLwotICBOVUxMLAkvKiBuZXdfdmVyc19wYXR0ZXJuICovCi0gIE5VTEwsCS8qIGV4dHJhX21h cF9maWxlX3RleHQgKi8KKyAgTlVMTCwKKyAgTlVMTCwKKyAgTlVMTCwKKyAgTlVMTCwKKyAgTlVM TCwKKyAgTlVMTCwKICAgTlVMTCwKICAgTlVMTCwKICAgTlVMTCwKLS0tIC4uLy4uL2JpbnV0aWxz LWFsbC9idWlsZC14ODZfNjQtbGludXgvbGQvZWkzODZwZS5jCTIwMjItMDItMDQgMTE6MzM6MDku NDQ3Nzk3NTc4IC0wODAwCisrKyBsZC9laTM4NnBlLmMJMjAyMi0wMi0wNiAwNjoxOTo0Mi4wNjM3 NTEwOTcgLTA4MDAKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgaW50IGlzX3VuZGVyc2Nvcmlu ZyAodm9pZCkKIH0KIAogc3RhdGljIHZvaWQKLWdsZF9pMzg2cGVfYmVmb3JlX3BhcnNlICh2b2lk KQorZ2xkaTM4NnBlX2JlZm9yZV9wYXJzZSAodm9pZCkKIHsKICAgaXNfdW5kZXJzY29yaW5nICgp OwogICBsZGZpbGVfc2V0X291dHB1dF9hcmNoICgiaTM4NiIsIGJmZF9hcmNoX2kzODYpOwpAQCAt Mzk0LDcgKzM5NCw3IEBAIHN0YXRpYyBkZWZpbmZvIGluaXRbXSA9CiAKIAogc3RhdGljIHZvaWQK LWdsZF9pMzg2cGVfbGlzdF9vcHRpb25zIChGSUxFICpmaWxlKQorZ2xkaTM4NnBlX2xpc3Rfb3B0 aW9ucyAoRklMRSAqZmlsZSkKIHsKICAgZnByaW50ZiAoZmlsZSwgXygiICAtLWJhc2VfZmlsZSA8 YmFzZWZpbGU+ICAgICAgICAgICAgIEdlbmVyYXRlIGEgYmFzZSBmaWxlIGZvciByZWxvY2F0YWJs ZSBETExzXG4iKSk7CiAgIGZwcmludGYgKGZpbGUsIF8oIiAgLS1kbGwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTZXQgaW1hZ2UgYmFzZSB0byB0aGUgZGVmYXVsdCBmb3IgRExMc1xuIikp OwpAQCAtOTI0LDcgKzkyNCw3IEBAIGNvbXB1dGVfZGxsX2ltYWdlX2Jhc2UgKGNvbnN0IGNoYXIg Km9maWwKICAgIHJlYWQuICAqLwogCiBzdGF0aWMgdm9pZAotZ2xkX2kzODZwZV9zZXRfc3ltYm9s cyAodm9pZCkKK2dsZGkzODZwZV9zZXRfc3ltYm9scyAodm9pZCkKIHsKICAgLyogUnVuIHRocm91 Z2ggYW5kIGludmVudCBzeW1ib2xzIGZvciBhbGwgdGhlCiAgICAgIG5hbWVzIGFuZCBpbnNlcnQg dGhlIGRlZmF1bHRzLiAgKi8KQEAgLTk5MSw3ICs5OTEsNyBAQCBnbGRfaTM4NnBlX3NldF9zeW1i b2xzICh2b2lkKQogICAgaGF2ZSBiZWVuIHJlYWQuICAqLwogCiBzdGF0aWMgdm9pZAotZ2xkX2kz ODZwZV9hZnRlcl9wYXJzZSAodm9pZCkKK2dsZGkzODZwZV9hZnRlcl9wYXJzZSAodm9pZCkKIHsK ICAgLyogUFIgbGQvNjc0NDogIFdhcm4gdGhlIHVzZXIgaWYgdGhleSBoYXZlIHVzZWQgYW4gRUxG LW9ubHkKICAgICAgb3B0aW9uIGhvcGluZyBpdCB3aWxsIHdvcmsgb24gUEUuICAqLwpAQCAtMTMw NCw3ICsxMzA0LDcgQEAgc2V0dXBfYnVpbGRfaWQgKGJmZCAqaWJmZCkKIH0KIAogc3RhdGljIHZv aWQKLWdsZF9pMzg2cGVfYWZ0ZXJfb3BlbiAodm9pZCkKK2dsZGkzODZwZV9hZnRlcl9vcGVuICh2 b2lkKQogewogICBhZnRlcl9vcGVuX2RlZmF1bHQgKCk7CiAKQEAgLTE3MjMsNyArMTcyMyw3IEBA IGdsZF9pMzg2cGVfYWZ0ZXJfb3BlbiAodm9pZCkKIH0KIAwKIHN0YXRpYyB2b2lkCi1nbGRfaTM4 NnBlX2JlZm9yZV9hbGxvY2F0aW9uICh2b2lkKQorZ2xkaTM4NnBlX2JlZm9yZV9hbGxvY2F0aW9u ICh2b2lkKQogewogI2lmIGRlZmluZWQoVEFSR0VUX0lTX2FybXBlKSB8fCBkZWZpbmVkKFRBUkdF VF9JU19hcm1fd2luY2VfcGUpCiAgIC8qIEZJWE1FOiB3ZSBzaG91bGQgYmUgYWJsZSB0byBzZXQg dGhlIHNpemUgb2YgdGhlIGludGVyd29ya2luZyBzdHViCkBAIC0xNzY5LDcgKzE3NjksNyBAQCBz YXdfb3B0aW9uIChjaGFyICpvcHRpb24pCiAjZW5kaWYgLyogRExMX1NVUFBPUlQgKi8KIAogc3Rh dGljIGJvb2wKLWdsZF9pMzg2cGVfdW5yZWNvZ25pemVkX2ZpbGUgKGxhbmdfaW5wdXRfc3RhdGVt ZW50X3R5cGUgKmVudHJ5IEFUVFJJQlVURV9VTlVTRUQpCitnbGRpMzg2cGVfdW5yZWNvZ25pemVk X2ZpbGUgKGxhbmdfaW5wdXRfc3RhdGVtZW50X3R5cGUgKmVudHJ5IEFUVFJJQlVURV9VTlVTRUQp CiB7CiAjaWZkZWYgRExMX1NVUFBPUlQKICAgY29uc3QgY2hhciAqZXh0ID0gZW50cnktPmZpbGVu YW1lICsgc3RybGVuIChlbnRyeS0+ZmlsZW5hbWUpIC0gNDsKQEAgLTE4NTAsNyArMTg1MCw3IEBA IGdsZF9pMzg2cGVfdW5yZWNvZ25pemVkX2ZpbGUgKGxhbmdfaW5wdXQKIH0KIAogc3RhdGljIGJv b2wKLWdsZF9pMzg2cGVfcmVjb2duaXplZF9maWxlIChsYW5nX2lucHV0X3N0YXRlbWVudF90eXBl ICplbnRyeSBBVFRSSUJVVEVfVU5VU0VEKQorZ2xkaTM4NnBlX3JlY29nbml6ZWRfZmlsZSAobGFu Z19pbnB1dF9zdGF0ZW1lbnRfdHlwZSAqZW50cnkgQVRUUklCVVRFX1VOVVNFRCkKIHsKICNpZmRl ZiBETExfU1VQUE9SVAogI2lmZGVmIFRBUkdFVF9JU19pMzg2cGUKQEAgLTE4NzIsNyArMTg3Miw3 IEBAIGdsZF9pMzg2cGVfcmVjb2duaXplZF9maWxlIChsYW5nX2lucHV0X3MKIH0KIAogc3RhdGlj IHZvaWQKLWdsZF9pMzg2cGVfZmluaXNoICh2b2lkKQorZ2xkaTM4NnBlX2ZpbmlzaCAodm9pZCkK IHsKICNpZiBkZWZpbmVkKFRBUkdFVF9JU19hcm1wZSkgfHwgZGVmaW5lZChUQVJHRVRfSVNfYXJt X3dpbmNlX3BlKQogICBzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSAqIGg7CkBAIC0xOTcyLDkg KzE5NzIsOSBAQCBnbGRfaTM4NnBlX2ZpbmlzaCAodm9pZCkKICAgIHNvcnRfc2VjdGlvbnMuICAq LwogCiBzdGF0aWMgbGFuZ19vdXRwdXRfc2VjdGlvbl9zdGF0ZW1lbnRfdHlwZSAqCi1nbGRfaTM4 NnBlX3BsYWNlX29ycGhhbiAoYXNlY3Rpb24gKnMsCi0JCQkJICAgIGNvbnN0IGNoYXIgKnNlY25h bWUsCi0JCQkJICAgIGludCBjb25zdHJhaW50KQorZ2xkaTM4NnBlX3BsYWNlX29ycGhhbiAoYXNl Y3Rpb24gKnMsCisJCQkJICAgY29uc3QgY2hhciAqc2VjbmFtZSwKKwkJCQkgICBpbnQgY29uc3Ry YWludCkKIHsKICAgY29uc3QgY2hhciAqb3JpZ19zZWNuYW1lID0gc2VjbmFtZTsKICAgY2hhciAq ZG9sbGFyID0gTlVMTDsKQEAgLTIxNzEsNyArMjE3MSw3IEBAIGdsZF9pMzg2cGVfcGxhY2Vfb3Jw aGFuIChhc2VjdGlvbiAqcywKIH0KIAogc3RhdGljIGJvb2wKLWdsZF9pMzg2cGVfb3Blbl9keW5h bWljX2FyY2hpdmUKK2dsZGkzODZwZV9vcGVuX2R5bmFtaWNfYXJjaGl2ZQogICAoY29uc3QgY2hh ciAqYXJjaCBBVFRSSUJVVEVfVU5VU0VELAogICAgc2VhcmNoX2RpcnNfdHlwZSAqc2VhcmNoLAog ICAgbGFuZ19pbnB1dF9zdGF0ZW1lbnRfdHlwZSAqZW50cnkpCkBAIC0yMjc3LDE0ICsyMjc3LDE0 IEBAIGdsZF9pMzg2cGVfb3Blbl9keW5hbWljX2FyY2hpdmUKIH0KIAogc3RhdGljIGludAotZ2xk X2kzODZwZV9maW5kX3BvdGVudGlhbF9saWJyYXJpZXMKK2dsZGkzODZwZV9maW5kX3BvdGVudGlh bF9saWJyYXJpZXMKICAgKGNoYXIgKm5hbWUsIGxhbmdfaW5wdXRfc3RhdGVtZW50X3R5cGUgKmVu dHJ5KQogewogICByZXR1cm4gbGRmaWxlX29wZW5fZmlsZV9zZWFyY2ggKG5hbWUsIGVudHJ5LCAi IiwgIi5saWIiKTsKIH0KIAwKIHN0YXRpYyBjaGFyICoKLWdsZF9pMzg2cGVfZ2V0X3NjcmlwdCAo aW50ICppc2ZpbGUpCitnbGRpMzg2cGVfZ2V0X3NjcmlwdCAoaW50ICppc2ZpbGUpCiB7CiAgICpp c2ZpbGUgPSAxOwogCkBAIC0yMzAzLDM3ICsyMzAzLDM2IEBAIGdsZF9pMzg2cGVfZ2V0X3Njcmlw dCAoaW50ICppc2ZpbGUpCiAgICAgcmV0dXJuICJsZHNjcmlwdHMvaTM4NnBlLngiOwogfQogCi0K IHN0cnVjdCBsZF9lbXVsYXRpb25feGZlcl9zdHJ1Y3QgbGRfaTM4NnBlX2VtdWxhdGlvbiA9CiB7 Ci0gIGdsZF9pMzg2cGVfYmVmb3JlX3BhcnNlLAorICBnbGRpMzg2cGVfYmVmb3JlX3BhcnNlLAog ICBzeXNsaWJfZGVmYXVsdCwKICAgaGxsX2RlZmF1bHQsCi0gIGdsZF9pMzg2cGVfYWZ0ZXJfcGFy c2UsCi0gIGdsZF9pMzg2cGVfYWZ0ZXJfb3BlbiwKKyAgZ2xkaTM4NnBlX2FmdGVyX3BhcnNlLAor ICBnbGRpMzg2cGVfYWZ0ZXJfb3BlbiwKICAgYWZ0ZXJfY2hlY2tfcmVsb2NzX2RlZmF1bHQsCiAg IGJlZm9yZV9wbGFjZV9vcnBoYW5zX2RlZmF1bHQsCiAgIGFmdGVyX2FsbG9jYXRpb25fZGVmYXVs dCwKICAgc2V0X291dHB1dF9hcmNoX2RlZmF1bHQsCiAgIGxkZW11bF9kZWZhdWx0X3RhcmdldCwK LSAgZ2xkX2kzODZwZV9iZWZvcmVfYWxsb2NhdGlvbiwKLSAgZ2xkX2kzODZwZV9nZXRfc2NyaXB0 LAorICBnbGRpMzg2cGVfYmVmb3JlX2FsbG9jYXRpb24sCisgIGdsZGkzODZwZV9nZXRfc2NyaXB0 LAogICAiaTM4NnBlIiwKICAgInBlaS1pMzg2IiwKLSAgZ2xkX2kzODZwZV9maW5pc2gsCi0gIE5V TEwsIC8qIENyZWF0ZSBvdXRwdXQgc2VjdGlvbiBzdGF0ZW1lbnRzLiAgKi8KLSAgZ2xkX2kzODZw ZV9vcGVuX2R5bmFtaWNfYXJjaGl2ZSwKLSAgZ2xkX2kzODZwZV9wbGFjZV9vcnBoYW4sCi0gIGds ZF9pMzg2cGVfc2V0X3N5bWJvbHMsCi0gIE5VTEwsIC8qIHBhcnNlX2FyZ3MgKi8KKyAgZ2xkaTM4 NnBlX2ZpbmlzaCwKKyAgTlVMTCwKKyAgZ2xkaTM4NnBlX29wZW5fZHluYW1pY19hcmNoaXZlLAor ICBnbGRpMzg2cGVfcGxhY2Vfb3JwaGFuLAorICBnbGRpMzg2cGVfc2V0X3N5bWJvbHMsCisgIE5V TEwsCiAgIGdsZGkzODZwZV9hZGRfb3B0aW9ucywKICAgZ2xkaTM4NnBlX2hhbmRsZV9vcHRpb24s Ci0gIGdsZF9pMzg2cGVfdW5yZWNvZ25pemVkX2ZpbGUsCi0gIGdsZF9pMzg2cGVfbGlzdF9vcHRp b25zLAotICBnbGRfaTM4NnBlX3JlY29nbml6ZWRfZmlsZSwKLSAgZ2xkX2kzODZwZV9maW5kX3Bv dGVudGlhbF9saWJyYXJpZXMsCi0gIE5VTEwsCS8qIG5ld192ZXJzX3BhdHRlcm4uICAqLwotICBO VUxMLAkvKiBleHRyYV9tYXBfZmlsZV90ZXh0LiAgKi8KKyAgZ2xkaTM4NnBlX3VucmVjb2duaXpl ZF9maWxlLAorICBnbGRpMzg2cGVfbGlzdF9vcHRpb25zLAorICBnbGRpMzg2cGVfcmVjb2duaXpl ZF9maWxlLAorICBnbGRpMzg2cGVfZmluZF9wb3RlbnRpYWxfbGlicmFyaWVzLAorICBOVUxMLAor ICBOVUxMLAogICBOVUxMLAogICBOVUxMLAogICBOVUxMLAotLS0gLi4vLi4vYmludXRpbHMtYWxs L2J1aWxkLXg4Nl82NC1saW51eC9sZC9laTM4NnBlcC5jCTIwMjItMDItMDQgMTE6MzM6MTkuNzk3 NzY3NDg1IC0wODAwCisrKyBsZC9laTM4NnBlcC5jCTIwMjItMDItMDYgMDY6MTk6NTQuNDY2Njg5 OTA0IC0wODAwCkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIGludCBpc191bmRlcnNjb3Jpbmcg KHZvaWQpCiAKIAogc3RhdGljIHZvaWQKLWdsZF9pMzg2cGVwX2JlZm9yZV9wYXJzZSAodm9pZCkK K2dsZGkzODZwZXBfYmVmb3JlX3BhcnNlICh2b2lkKQogewogICBpc191bmRlcnNjb3JpbmcgKCk7 CiAgIGxkZmlsZV9zZXRfb3V0cHV0X2FyY2ggKCJpMzg2Ong4Ni02NCIsIGJmZF9hcmNoX2kzODYp OwpAQCAtMzc4LDcgKzM3OCw3IEBAIHN0YXRpYyBkZWZpbmZvIGluaXRbXSA9CiAKIAogc3RhdGlj IHZvaWQKLWdsZF9pMzg2cGVwX2xpc3Rfb3B0aW9ucyAoRklMRSAqZmlsZSkKK2dsZGkzODZwZXBf bGlzdF9vcHRpb25zIChGSUxFICpmaWxlKQogewogICBmcHJpbnRmIChmaWxlLCBfKCIgIC0tYmFz ZV9maWxlIDxiYXNlZmlsZT4gICAgICAgICAgICAgR2VuZXJhdGUgYSBiYXNlIGZpbGUgZm9yIHJl bG9jYXRhYmxlIERMTHNcbiIpKTsKICAgZnByaW50ZiAoZmlsZSwgXygiICAtLWRsbCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNldCBpbWFnZSBiYXNlIHRvIHRoZSBkZWZhdWx0IGZvciBE TExzXG4iKSk7CkBAIC04OTAsNyArODkwLDcgQEAgY29tcHV0ZV9kbGxfaW1hZ2VfYmFzZSAoY29u c3QgY2hhciAqb2ZpbAogICAgcmVhZC4gICovCiAKIHN0YXRpYyB2b2lkCi1nbGRfaTM4NnBlcF9z ZXRfc3ltYm9scyAodm9pZCkKK2dsZGkzODZwZXBfc2V0X3N5bWJvbHMgKHZvaWQpCiB7CiAgIC8q IFJ1biB0aHJvdWdoIGFuZCBpbnZlbnQgc3ltYm9scyBmb3IgYWxsIHRoZQogICAgICBuYW1lcyBh bmQgaW5zZXJ0IHRoZSBkZWZhdWx0cy4gICovCkBAIC05NTcsNyArOTU3LDcgQEAgZ2xkX2kzODZw ZXBfc2V0X3N5bWJvbHMgKHZvaWQpCiAgICBoYXZlIGJlZW4gcmVhZC4gICovCiAKIHN0YXRpYyB2 b2lkCi1nbGRfaTM4NnBlcF9hZnRlcl9wYXJzZSAodm9pZCkKK2dsZGkzODZwZXBfYWZ0ZXJfcGFy c2UgKHZvaWQpCiB7CiAgIC8qIFBSIGxkLzY3NDQ6ICBXYXJuIHRoZSB1c2VyIGlmIHRoZXkgaGF2 ZSB1c2VkIGFuIEVMRi1vbmx5CiAgICAgIG9wdGlvbiBob3BpbmcgaXQgd2lsbCB3b3JrIG9uIFBF Ky4gICovCkBAIC0xMzExLDcgKzEzMTEsNyBAQCBzZXR1cF9idWlsZF9pZCAoYmZkICppYmZkKQog fQogCiBzdGF0aWMgdm9pZAotZ2xkX2kzODZwZXBfYWZ0ZXJfb3BlbiAodm9pZCkKK2dsZGkzODZw ZXBfYWZ0ZXJfb3BlbiAodm9pZCkKIHsKICAgYWZ0ZXJfb3Blbl9kZWZhdWx0ICgpOwogCkBAIC0x NjM5LDcgKzE2MzksNyBAQCBnbGRfaTM4NnBlcF9hZnRlcl9vcGVuICh2b2lkKQogfQogDAogc3Rh dGljIHZvaWQKLWdsZF9pMzg2cGVwX2JlZm9yZV9hbGxvY2F0aW9uICh2b2lkKQorZ2xkaTM4NnBl cF9iZWZvcmVfYWxsb2NhdGlvbiAodm9pZCkKIHsKICAgaXNfdW5kZXJzY29yaW5nICgpOwogICBi ZWZvcmVfYWxsb2NhdGlvbl9kZWZhdWx0ICgpOwpAQCAtMTY2NCw3ICsxNjY0LDcgQEAgc2F3X29w dGlvbiAoY2hhciAqb3B0aW9uKQogI2VuZGlmIC8qIERMTF9TVVBQT1JUICovCiAKIHN0YXRpYyBi b29sCi1nbGRfaTM4NnBlcF91bnJlY29nbml6ZWRfZmlsZSAobGFuZ19pbnB1dF9zdGF0ZW1lbnRf dHlwZSAqZW50cnkgQVRUUklCVVRFX1VOVVNFRCkKK2dsZGkzODZwZXBfdW5yZWNvZ25pemVkX2Zp bGUgKGxhbmdfaW5wdXRfc3RhdGVtZW50X3R5cGUgKmVudHJ5IEFUVFJJQlVURV9VTlVTRUQpCiB7 CiAjaWZkZWYgRExMX1NVUFBPUlQKICAgY29uc3QgY2hhciAqZXh0ID0gZW50cnktPmZpbGVuYW1l ICsgc3RybGVuIChlbnRyeS0+ZmlsZW5hbWUpIC0gNDsKQEAgLTE3NDUsNyArMTc0NSw3IEBAIGds ZF9pMzg2cGVwX3VucmVjb2duaXplZF9maWxlIChsYW5nX2lucHUKIH0KIAogc3RhdGljIGJvb2wK LWdsZF9pMzg2cGVwX3JlY29nbml6ZWRfZmlsZSAobGFuZ19pbnB1dF9zdGF0ZW1lbnRfdHlwZSAq ZW50cnkgQVRUUklCVVRFX1VOVVNFRCkKK2dsZGkzODZwZXBfcmVjb2duaXplZF9maWxlIChsYW5n X2lucHV0X3N0YXRlbWVudF90eXBlICplbnRyeSBBVFRSSUJVVEVfVU5VU0VEKQogewogICBpc191 bmRlcnNjb3JpbmcgKCk7CiAjaWZkZWYgRExMX1NVUFBPUlQKQEAgLTE3NTksNyArMTc1OSw3IEBA IGdsZF9pMzg2cGVwX3JlY29nbml6ZWRfZmlsZSAobGFuZ19pbnB1dF8KIH0KIAogc3RhdGljIHZv aWQKLWdsZF9pMzg2cGVwX2ZpbmlzaCAodm9pZCkKK2dsZGkzODZwZXBfZmluaXNoICh2b2lkKQog ewogICBpc191bmRlcnNjb3JpbmcgKCk7CiAgIGZpbmlzaF9kZWZhdWx0ICgpOwpAQCAtMTgwOSw3 ICsxODA5LDcgQEAgZ2xkX2kzODZwZXBfZmluaXNoICh2b2lkKQogICAgc29ydF9zZWN0aW9ucy4g ICovCiAKIHN0YXRpYyBsYW5nX291dHB1dF9zZWN0aW9uX3N0YXRlbWVudF90eXBlICoKLWdsZF9p Mzg2cGVwX3BsYWNlX29ycGhhbiAoYXNlY3Rpb24gKnMsCitnbGRpMzg2cGVwX3BsYWNlX29ycGhh biAoYXNlY3Rpb24gKnMsCiAJCQkJICAgIGNvbnN0IGNoYXIgKnNlY25hbWUsCiAJCQkJICAgIGlu dCBjb25zdHJhaW50KQogewpAQCAtMjAwOCw3ICsyMDA4LDcgQEAgZ2xkX2kzODZwZXBfcGxhY2Vf b3JwaGFuIChhc2VjdGlvbiAqcywKIH0KIAogc3RhdGljIGJvb2wKLWdsZF9pMzg2cGVwX29wZW5f ZHluYW1pY19hcmNoaXZlCitnbGRpMzg2cGVwX29wZW5fZHluYW1pY19hcmNoaXZlCiAgIChjb25z dCBjaGFyICphcmNoIEFUVFJJQlVURV9VTlVTRUQsCiAgICBzZWFyY2hfZGlyc190eXBlICpzZWFy Y2gsCiAgICBsYW5nX2lucHV0X3N0YXRlbWVudF90eXBlICplbnRyeSkKQEAgLTIxMTQsMTQgKzIx MTQsMTQgQEAgZ2xkX2kzODZwZXBfb3Blbl9keW5hbWljX2FyY2hpdmUKIH0KIAogc3RhdGljIGlu dAotZ2xkX2kzODZwZXBfZmluZF9wb3RlbnRpYWxfbGlicmFyaWVzCitnbGRpMzg2cGVwX2ZpbmRf cG90ZW50aWFsX2xpYnJhcmllcwogICAoY2hhciAqbmFtZSwgbGFuZ19pbnB1dF9zdGF0ZW1lbnRf dHlwZSAqZW50cnkpCiB7CiAgIHJldHVybiBsZGZpbGVfb3Blbl9maWxlX3NlYXJjaCAobmFtZSwg ZW50cnksICIiLCAiLmxpYiIpOwogfQogDAogc3RhdGljIGNoYXIgKgotZ2xkX2kzODZwZXBfZ2V0 X3NjcmlwdCAoaW50ICppc2ZpbGUpCitnbGRpMzg2cGVwX2dldF9zY3JpcHQgKGludCAqaXNmaWxl KQogewogICAqaXNmaWxlID0gMTsKIApAQCAtMjE0MCwzNyArMjE0MCwzNiBAQCBnbGRfaTM4NnBl cF9nZXRfc2NyaXB0IChpbnQgKmlzZmlsZSkKICAgICByZXR1cm4gImxkc2NyaXB0cy9pMzg2cGVw LngiOwogfQogCi0KIHN0cnVjdCBsZF9lbXVsYXRpb25feGZlcl9zdHJ1Y3QgbGRfaTM4NnBlcF9l bXVsYXRpb24gPQogewotICBnbGRfaTM4NnBlcF9iZWZvcmVfcGFyc2UsCisgIGdsZGkzODZwZXBf YmVmb3JlX3BhcnNlLAogICBzeXNsaWJfZGVmYXVsdCwKICAgaGxsX2RlZmF1bHQsCi0gIGdsZF9p Mzg2cGVwX2FmdGVyX3BhcnNlLAotICBnbGRfaTM4NnBlcF9hZnRlcl9vcGVuLAorICBnbGRpMzg2 cGVwX2FmdGVyX3BhcnNlLAorICBnbGRpMzg2cGVwX2FmdGVyX29wZW4sCiAgIGFmdGVyX2NoZWNr X3JlbG9jc19kZWZhdWx0LAogICBiZWZvcmVfcGxhY2Vfb3JwaGFuc19kZWZhdWx0LAogICBhZnRl cl9hbGxvY2F0aW9uX2RlZmF1bHQsCiAgIHNldF9vdXRwdXRfYXJjaF9kZWZhdWx0LAogICBsZGVt dWxfZGVmYXVsdF90YXJnZXQsCi0gIGdsZF9pMzg2cGVwX2JlZm9yZV9hbGxvY2F0aW9uLAotICBn bGRfaTM4NnBlcF9nZXRfc2NyaXB0LAorICBnbGRpMzg2cGVwX2JlZm9yZV9hbGxvY2F0aW9uLAor ICBnbGRpMzg2cGVwX2dldF9zY3JpcHQsCiAgICJpMzg2cGVwIiwKICAgInBlaS14ODYtNjQiLAot ICBnbGRfaTM4NnBlcF9maW5pc2gsCi0gIE5VTEwsIC8qIENyZWF0ZSBvdXRwdXQgc2VjdGlvbiBz dGF0ZW1lbnRzLiAgKi8KLSAgZ2xkX2kzODZwZXBfb3Blbl9keW5hbWljX2FyY2hpdmUsCi0gIGds ZF9pMzg2cGVwX3BsYWNlX29ycGhhbiwKLSAgZ2xkX2kzODZwZXBfc2V0X3N5bWJvbHMsCi0gIE5V TEwsIC8qIHBhcnNlX2FyZ3MgKi8KKyAgZ2xkaTM4NnBlcF9maW5pc2gsCisgIE5VTEwsCisgIGds ZGkzODZwZXBfb3Blbl9keW5hbWljX2FyY2hpdmUsCisgIGdsZGkzODZwZXBfcGxhY2Vfb3JwaGFu LAorICBnbGRpMzg2cGVwX3NldF9zeW1ib2xzLAorICBOVUxMLAogICBnbGRpMzg2cGVwX2FkZF9v cHRpb25zLAogICBnbGRpMzg2cGVwX2hhbmRsZV9vcHRpb24sCi0gIGdsZF9pMzg2cGVwX3VucmVj b2duaXplZF9maWxlLAotICBnbGRfaTM4NnBlcF9saXN0X29wdGlvbnMsCi0gIGdsZF9pMzg2cGVw X3JlY29nbml6ZWRfZmlsZSwKLSAgZ2xkX2kzODZwZXBfZmluZF9wb3RlbnRpYWxfbGlicmFyaWVz LAotICBOVUxMLAkvKiBuZXdfdmVyc19wYXR0ZXJuLiAgKi8KLSAgTlVMTCwJLyogZXh0cmFfbWFw X2ZpbGVfdGV4dCAqLworICBnbGRpMzg2cGVwX3VucmVjb2duaXplZF9maWxlLAorICBnbGRpMzg2 cGVwX2xpc3Rfb3B0aW9ucywKKyAgZ2xkaTM4NnBlcF9yZWNvZ25pemVkX2ZpbGUsCisgIGdsZGkz ODZwZXBfZmluZF9wb3RlbnRpYWxfbGlicmFyaWVzLAorICBOVUxMLAorICBOVUxMLAogICBOVUxM LAogICBOVUxMLAogICBOVUxMLAotLS0gLi4vLi4vYmludXRpbHMtYWxsL2J1aWxkLXg4Nl82NC1s aW51eC9sZC9laTM4NnBlX3Bvc2l4LmMJMjAyMi0wMi0wNCAxMTozMzowOS40NzA3OTc1MTEgLTA4 MDAKKysrIGxkL2VpMzg2cGVfcG9zaXguYwkyMDIyLTAyLTA2IDA2OjE5OjQyLjE5MTc1MDQ2NSAt MDgwMApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBpbnQgaXNfdW5kZXJzY29yaW5nICh2b2lk KQogfQogCiBzdGF0aWMgdm9pZAotZ2xkX2kzODZwZV9wb3NpeF9iZWZvcmVfcGFyc2UgKHZvaWQp CitnbGRpMzg2cGVfcG9zaXhfYmVmb3JlX3BhcnNlICh2b2lkKQogewogICBpc191bmRlcnNjb3Jp bmcgKCk7CiAgIGxkZmlsZV9zZXRfb3V0cHV0X2FyY2ggKCJpMzg2IiwgYmZkX2FyY2hfaTM4Nik7 CkBAIC0zOTQsNyArMzk0LDcgQEAgc3RhdGljIGRlZmluZm8gaW5pdFtdID0KIAogCiBzdGF0aWMg dm9pZAotZ2xkX2kzODZwZV9wb3NpeF9saXN0X29wdGlvbnMgKEZJTEUgKmZpbGUpCitnbGRpMzg2 cGVfcG9zaXhfbGlzdF9vcHRpb25zIChGSUxFICpmaWxlKQogewogICBmcHJpbnRmIChmaWxlLCBf KCIgIC0tYmFzZV9maWxlIDxiYXNlZmlsZT4gICAgICAgICAgICAgR2VuZXJhdGUgYSBiYXNlIGZp bGUgZm9yIHJlbG9jYXRhYmxlIERMTHNcbiIpKTsKICAgZnByaW50ZiAoZmlsZSwgXygiICAtLWRs bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCBpbWFnZSBiYXNlIHRvIHRoZSBkZWZh dWx0IGZvciBETExzXG4iKSk7CkBAIC05MjQsNyArOTI0LDcgQEAgY29tcHV0ZV9kbGxfaW1hZ2Vf YmFzZSAoY29uc3QgY2hhciAqb2ZpbAogICAgcmVhZC4gICovCiAKIHN0YXRpYyB2b2lkCi1nbGRf aTM4NnBlX3Bvc2l4X3NldF9zeW1ib2xzICh2b2lkKQorZ2xkaTM4NnBlX3Bvc2l4X3NldF9zeW1i b2xzICh2b2lkKQogewogICAvKiBSdW4gdGhyb3VnaCBhbmQgaW52ZW50IHN5bWJvbHMgZm9yIGFs bCB0aGUKICAgICAgbmFtZXMgYW5kIGluc2VydCB0aGUgZGVmYXVsdHMuICAqLwpAQCAtOTkxLDcg Kzk5MSw3IEBAIGdsZF9pMzg2cGVfcG9zaXhfc2V0X3N5bWJvbHMgKHZvaWQpCiAgICBoYXZlIGJl ZW4gcmVhZC4gICovCiAKIHN0YXRpYyB2b2lkCi1nbGRfaTM4NnBlX3Bvc2l4X2FmdGVyX3BhcnNl ICh2b2lkKQorZ2xkaTM4NnBlX3Bvc2l4X2FmdGVyX3BhcnNlICh2b2lkKQogewogICAvKiBQUiBs ZC82NzQ0OiAgV2FybiB0aGUgdXNlciBpZiB0aGV5IGhhdmUgdXNlZCBhbiBFTEYtb25seQogICAg ICBvcHRpb24gaG9waW5nIGl0IHdpbGwgd29yayBvbiBQRS4gICovCkBAIC0xMzA0LDcgKzEzMDQs NyBAQCBzZXR1cF9idWlsZF9pZCAoYmZkICppYmZkKQogfQogCiBzdGF0aWMgdm9pZAotZ2xkX2kz ODZwZV9wb3NpeF9hZnRlcl9vcGVuICh2b2lkKQorZ2xkaTM4NnBlX3Bvc2l4X2FmdGVyX29wZW4g KHZvaWQpCiB7CiAgIGFmdGVyX29wZW5fZGVmYXVsdCAoKTsKIApAQCAtMTcyMyw3ICsxNzIzLDcg QEAgZ2xkX2kzODZwZV9wb3NpeF9hZnRlcl9vcGVuICh2b2lkKQogfQogDAogc3RhdGljIHZvaWQK LWdsZF9pMzg2cGVfcG9zaXhfYmVmb3JlX2FsbG9jYXRpb24gKHZvaWQpCitnbGRpMzg2cGVfcG9z aXhfYmVmb3JlX2FsbG9jYXRpb24gKHZvaWQpCiB7CiAjaWYgZGVmaW5lZChUQVJHRVRfSVNfYXJt cGUpIHx8IGRlZmluZWQoVEFSR0VUX0lTX2FybV93aW5jZV9wZSkKICAgLyogRklYTUU6IHdlIHNo b3VsZCBiZSBhYmxlIHRvIHNldCB0aGUgc2l6ZSBvZiB0aGUgaW50ZXJ3b3JraW5nIHN0dWIKQEAg LTE3NjksNyArMTc2OSw3IEBAIHNhd19vcHRpb24gKGNoYXIgKm9wdGlvbikKICNlbmRpZiAvKiBE TExfU1VQUE9SVCAqLwogCiBzdGF0aWMgYm9vbAotZ2xkX2kzODZwZV9wb3NpeF91bnJlY29nbml6 ZWRfZmlsZSAobGFuZ19pbnB1dF9zdGF0ZW1lbnRfdHlwZSAqZW50cnkgQVRUUklCVVRFX1VOVVNF RCkKK2dsZGkzODZwZV9wb3NpeF91bnJlY29nbml6ZWRfZmlsZSAobGFuZ19pbnB1dF9zdGF0ZW1l bnRfdHlwZSAqZW50cnkgQVRUUklCVVRFX1VOVVNFRCkKIHsKICNpZmRlZiBETExfU1VQUE9SVAog ICBjb25zdCBjaGFyICpleHQgPSBlbnRyeS0+ZmlsZW5hbWUgKyBzdHJsZW4gKGVudHJ5LT5maWxl bmFtZSkgLSA0OwpAQCAtMTg1MCw3ICsxODUwLDcgQEAgZ2xkX2kzODZwZV9wb3NpeF91bnJlY29n bml6ZWRfZmlsZSAobGFuZwogfQogCiBzdGF0aWMgYm9vbAotZ2xkX2kzODZwZV9wb3NpeF9yZWNv Z25pemVkX2ZpbGUgKGxhbmdfaW5wdXRfc3RhdGVtZW50X3R5cGUgKmVudHJ5IEFUVFJJQlVURV9V TlVTRUQpCitnbGRpMzg2cGVfcG9zaXhfcmVjb2duaXplZF9maWxlIChsYW5nX2lucHV0X3N0YXRl bWVudF90eXBlICplbnRyeSBBVFRSSUJVVEVfVU5VU0VEKQogewogI2lmZGVmIERMTF9TVVBQT1JU CiAjaWZkZWYgVEFSR0VUX0lTX2kzODZwZQpAQCAtMTg3Miw3ICsxODcyLDcgQEAgZ2xkX2kzODZw ZV9wb3NpeF9yZWNvZ25pemVkX2ZpbGUgKGxhbmdfaQogfQogCiBzdGF0aWMgdm9pZAotZ2xkX2kz ODZwZV9wb3NpeF9maW5pc2ggKHZvaWQpCitnbGRpMzg2cGVfcG9zaXhfZmluaXNoICh2b2lkKQog ewogI2lmIGRlZmluZWQoVEFSR0VUX0lTX2FybXBlKSB8fCBkZWZpbmVkKFRBUkdFVF9JU19hcm1f d2luY2VfcGUpCiAgIHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5ICogaDsKQEAgLTE5NzIsOSAr MTk3Miw5IEBAIGdsZF9pMzg2cGVfcG9zaXhfZmluaXNoICh2b2lkKQogICAgc29ydF9zZWN0aW9u cy4gICovCiAKIHN0YXRpYyBsYW5nX291dHB1dF9zZWN0aW9uX3N0YXRlbWVudF90eXBlICoKLWds ZF9pMzg2cGVfcG9zaXhfcGxhY2Vfb3JwaGFuIChhc2VjdGlvbiAqcywKLQkJCQkgICAgY29uc3Qg Y2hhciAqc2VjbmFtZSwKLQkJCQkgICAgaW50IGNvbnN0cmFpbnQpCitnbGRpMzg2cGVfcG9zaXhf cGxhY2Vfb3JwaGFuIChhc2VjdGlvbiAqcywKKwkJCQkgICBjb25zdCBjaGFyICpzZWNuYW1lLAor CQkJCSAgIGludCBjb25zdHJhaW50KQogewogICBjb25zdCBjaGFyICpvcmlnX3NlY25hbWUgPSBz ZWNuYW1lOwogICBjaGFyICpkb2xsYXIgPSBOVUxMOwpAQCAtMjE3MSw3ICsyMTcxLDcgQEAgZ2xk X2kzODZwZV9wb3NpeF9wbGFjZV9vcnBoYW4gKGFzZWN0aW9uCiB9CiAKIHN0YXRpYyBib29sCi1n bGRfaTM4NnBlX3Bvc2l4X29wZW5fZHluYW1pY19hcmNoaXZlCitnbGRpMzg2cGVfcG9zaXhfb3Bl bl9keW5hbWljX2FyY2hpdmUKICAgKGNvbnN0IGNoYXIgKmFyY2ggQVRUUklCVVRFX1VOVVNFRCwK ICAgIHNlYXJjaF9kaXJzX3R5cGUgKnNlYXJjaCwKICAgIGxhbmdfaW5wdXRfc3RhdGVtZW50X3R5 cGUgKmVudHJ5KQpAQCAtMjI3NywxNCArMjI3NywxNCBAQCBnbGRfaTM4NnBlX3Bvc2l4X29wZW5f ZHluYW1pY19hcmNoaXZlCiB9CiAKIHN0YXRpYyBpbnQKLWdsZF9pMzg2cGVfcG9zaXhfZmluZF9w b3RlbnRpYWxfbGlicmFyaWVzCitnbGRpMzg2cGVfcG9zaXhfZmluZF9wb3RlbnRpYWxfbGlicmFy aWVzCiAgIChjaGFyICpuYW1lLCBsYW5nX2lucHV0X3N0YXRlbWVudF90eXBlICplbnRyeSkKIHsK ICAgcmV0dXJuIGxkZmlsZV9vcGVuX2ZpbGVfc2VhcmNoIChuYW1lLCBlbnRyeSwgIiIsICIubGli Iik7CiB9CiAMCiBzdGF0aWMgY2hhciAqCi1nbGRfaTM4NnBlX3Bvc2l4X2dldF9zY3JpcHQgKGlu dCAqaXNmaWxlKQorZ2xkaTM4NnBlX3Bvc2l4X2dldF9zY3JpcHQgKGludCAqaXNmaWxlKQogewog ICAqaXNmaWxlID0gMTsKIApAQCAtMjMwMywzNyArMjMwMywzNiBAQCBnbGRfaTM4NnBlX3Bvc2l4 X2dldF9zY3JpcHQgKGludCAqaXNmaWxlCiAgICAgcmV0dXJuICJsZHNjcmlwdHMvaTM4NnBlX3Bv c2l4LngiOwogfQogCi0KIHN0cnVjdCBsZF9lbXVsYXRpb25feGZlcl9zdHJ1Y3QgbGRfaTM4NnBl X3Bvc2l4X2VtdWxhdGlvbiA9CiB7Ci0gIGdsZF9pMzg2cGVfcG9zaXhfYmVmb3JlX3BhcnNlLAor ICBnbGRpMzg2cGVfcG9zaXhfYmVmb3JlX3BhcnNlLAogICBzeXNsaWJfZGVmYXVsdCwKICAgaGxs X2RlZmF1bHQsCi0gIGdsZF9pMzg2cGVfcG9zaXhfYWZ0ZXJfcGFyc2UsCi0gIGdsZF9pMzg2cGVf cG9zaXhfYWZ0ZXJfb3BlbiwKKyAgZ2xkaTM4NnBlX3Bvc2l4X2FmdGVyX3BhcnNlLAorICBnbGRp Mzg2cGVfcG9zaXhfYWZ0ZXJfb3BlbiwKICAgYWZ0ZXJfY2hlY2tfcmVsb2NzX2RlZmF1bHQsCiAg IGJlZm9yZV9wbGFjZV9vcnBoYW5zX2RlZmF1bHQsCiAgIGFmdGVyX2FsbG9jYXRpb25fZGVmYXVs dCwKICAgc2V0X291dHB1dF9hcmNoX2RlZmF1bHQsCiAgIGxkZW11bF9kZWZhdWx0X3RhcmdldCwK LSAgZ2xkX2kzODZwZV9wb3NpeF9iZWZvcmVfYWxsb2NhdGlvbiwKLSAgZ2xkX2kzODZwZV9wb3Np eF9nZXRfc2NyaXB0LAorICBnbGRpMzg2cGVfcG9zaXhfYmVmb3JlX2FsbG9jYXRpb24sCisgIGds ZGkzODZwZV9wb3NpeF9nZXRfc2NyaXB0LAogICAiaTM4NnBlX3Bvc2l4IiwKICAgInBlaS1pMzg2 IiwKLSAgZ2xkX2kzODZwZV9wb3NpeF9maW5pc2gsCi0gIE5VTEwsIC8qIENyZWF0ZSBvdXRwdXQg c2VjdGlvbiBzdGF0ZW1lbnRzLiAgKi8KLSAgZ2xkX2kzODZwZV9wb3NpeF9vcGVuX2R5bmFtaWNf YXJjaGl2ZSwKLSAgZ2xkX2kzODZwZV9wb3NpeF9wbGFjZV9vcnBoYW4sCi0gIGdsZF9pMzg2cGVf cG9zaXhfc2V0X3N5bWJvbHMsCi0gIE5VTEwsIC8qIHBhcnNlX2FyZ3MgKi8KKyAgZ2xkaTM4NnBl X3Bvc2l4X2ZpbmlzaCwKKyAgTlVMTCwKKyAgZ2xkaTM4NnBlX3Bvc2l4X29wZW5fZHluYW1pY19h cmNoaXZlLAorICBnbGRpMzg2cGVfcG9zaXhfcGxhY2Vfb3JwaGFuLAorICBnbGRpMzg2cGVfcG9z aXhfc2V0X3N5bWJvbHMsCisgIE5VTEwsCiAgIGdsZGkzODZwZV9wb3NpeF9hZGRfb3B0aW9ucywK ICAgZ2xkaTM4NnBlX3Bvc2l4X2hhbmRsZV9vcHRpb24sCi0gIGdsZF9pMzg2cGVfcG9zaXhfdW5y ZWNvZ25pemVkX2ZpbGUsCi0gIGdsZF9pMzg2cGVfcG9zaXhfbGlzdF9vcHRpb25zLAotICBnbGRf aTM4NnBlX3Bvc2l4X3JlY29nbml6ZWRfZmlsZSwKLSAgZ2xkX2kzODZwZV9wb3NpeF9maW5kX3Bv dGVudGlhbF9saWJyYXJpZXMsCi0gIE5VTEwsCS8qIG5ld192ZXJzX3BhdHRlcm4uICAqLwotICBO VUxMLAkvKiBleHRyYV9tYXBfZmlsZV90ZXh0LiAgKi8KKyAgZ2xkaTM4NnBlX3Bvc2l4X3VucmVj b2duaXplZF9maWxlLAorICBnbGRpMzg2cGVfcG9zaXhfbGlzdF9vcHRpb25zLAorICBnbGRpMzg2 cGVfcG9zaXhfcmVjb2duaXplZF9maWxlLAorICBnbGRpMzg2cGVfcG9zaXhfZmluZF9wb3RlbnRp YWxfbGlicmFyaWVzLAorICBOVUxMLAorICBOVUxMLAogICBOVUxMLAogICBOVUxMLAogICBOVUxM LAotLS0gLi4vLi4vYmludXRpbHMtYWxsL2J1aWxkLXg4Nl82NC1saW51eC9sZC9lbWNvcmVwZS5j CTIwMjItMDItMDQgMTE6MzM6MTAuMDAzNzk1OTYxIC0wODAwCisrKyBsZC9lbWNvcmVwZS5jCTIw MjItMDItMDYgMDY6MTk6NDIuNzk4NzQ3NDcxIC0wODAwCkBAIC0xNDgsNyArMTQ4LDcgQEAgc3Rh dGljIGludCBpc191bmRlcnNjb3JpbmcgKHZvaWQpCiB9CiAKIHN0YXRpYyB2b2lkCi1nbGRfbWNv cmVwZV9iZWZvcmVfcGFyc2UgKHZvaWQpCitnbGRtY29yZXBlX2JlZm9yZV9wYXJzZSAodm9pZCkK IHsKICAgaXNfdW5kZXJzY29yaW5nICgpOwogICBsZGZpbGVfc2V0X291dHB1dF9hcmNoICgibWNv cmUiLCBiZmRfYXJjaF9tY29yZSk7CkBAIC0zOTQsNyArMzk0LDcgQEAgc3RhdGljIGRlZmluZm8g aW5pdFtdID0KIAogCiBzdGF0aWMgdm9pZAotZ2xkX21jb3JlcGVfbGlzdF9vcHRpb25zIChGSUxF ICpmaWxlKQorZ2xkbWNvcmVwZV9saXN0X29wdGlvbnMgKEZJTEUgKmZpbGUpCiB7CiAgIGZwcmlu dGYgKGZpbGUsIF8oIiAgLS1iYXNlX2ZpbGUgPGJhc2VmaWxlPiAgICAgICAgICAgICBHZW5lcmF0 ZSBhIGJhc2UgZmlsZSBmb3IgcmVsb2NhdGFibGUgRExMc1xuIikpOwogICBmcHJpbnRmIChmaWxl LCBfKCIgIC0tZGxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IGltYWdlIGJhc2Ug dG8gdGhlIGRlZmF1bHQgZm9yIERMTHNcbiIpKTsKQEAgLTkyNCw3ICs5MjQsNyBAQCBjb21wdXRl X2RsbF9pbWFnZV9iYXNlIChjb25zdCBjaGFyICpvZmlsCiAgICByZWFkLiAgKi8KIAogc3RhdGlj IHZvaWQKLWdsZF9tY29yZXBlX3NldF9zeW1ib2xzICh2b2lkKQorZ2xkbWNvcmVwZV9zZXRfc3lt Ym9scyAodm9pZCkKIHsKICAgLyogUnVuIHRocm91Z2ggYW5kIGludmVudCBzeW1ib2xzIGZvciBh bGwgdGhlCiAgICAgIG5hbWVzIGFuZCBpbnNlcnQgdGhlIGRlZmF1bHRzLiAgKi8KQEAgLTk5MSw3 ICs5OTEsNyBAQCBnbGRfbWNvcmVwZV9zZXRfc3ltYm9scyAodm9pZCkKICAgIGhhdmUgYmVlbiBy ZWFkLiAgKi8KIAogc3RhdGljIHZvaWQKLWdsZF9tY29yZXBlX2FmdGVyX3BhcnNlICh2b2lkKQor Z2xkbWNvcmVwZV9hZnRlcl9wYXJzZSAodm9pZCkKIHsKICAgLyogUFIgbGQvNjc0NDogIFdhcm4g dGhlIHVzZXIgaWYgdGhleSBoYXZlIHVzZWQgYW4gRUxGLW9ubHkKICAgICAgb3B0aW9uIGhvcGlu ZyBpdCB3aWxsIHdvcmsgb24gUEUuICAqLwpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgc2V0dXBfYnVp bGRfaWQgKGJmZCAqaWJmZCkKIH0KIAogc3RhdGljIHZvaWQKLWdsZF9tY29yZXBlX2FmdGVyX29w ZW4gKHZvaWQpCitnbGRtY29yZXBlX2FmdGVyX29wZW4gKHZvaWQpCiB7CiAgIGFmdGVyX29wZW5f ZGVmYXVsdCAoKTsKIApAQCAtMTcyMyw3ICsxNzIzLDcgQEAgZ2xkX21jb3JlcGVfYWZ0ZXJfb3Bl biAodm9pZCkKIH0KIAwKIHN0YXRpYyB2b2lkCi1nbGRfbWNvcmVwZV9iZWZvcmVfYWxsb2NhdGlv biAodm9pZCkKK2dsZG1jb3JlcGVfYmVmb3JlX2FsbG9jYXRpb24gKHZvaWQpCiB7CiAjaWYgZGVm aW5lZChUQVJHRVRfSVNfYXJtcGUpIHx8IGRlZmluZWQoVEFSR0VUX0lTX2FybV93aW5jZV9wZSkK ICAgLyogRklYTUU6IHdlIHNob3VsZCBiZSBhYmxlIHRvIHNldCB0aGUgc2l6ZSBvZiB0aGUgaW50 ZXJ3b3JraW5nIHN0dWIKQEAgLTE3NjksNyArMTc2OSw3IEBAIHNhd19vcHRpb24gKGNoYXIgKm9w dGlvbikKICNlbmRpZiAvKiBETExfU1VQUE9SVCAqLwogCiBzdGF0aWMgYm9vbAotZ2xkX21jb3Jl cGVfdW5yZWNvZ25pemVkX2ZpbGUgKGxhbmdfaW5wdXRfc3RhdGVtZW50X3R5cGUgKmVudHJ5IEFU VFJJQlVURV9VTlVTRUQpCitnbGRtY29yZXBlX3VucmVjb2duaXplZF9maWxlIChsYW5nX2lucHV0 X3N0YXRlbWVudF90eXBlICplbnRyeSBBVFRSSUJVVEVfVU5VU0VEKQogewogI2lmZGVmIERMTF9T VVBQT1JUCiAgIGNvbnN0IGNoYXIgKmV4dCA9IGVudHJ5LT5maWxlbmFtZSArIHN0cmxlbiAoZW50 cnktPmZpbGVuYW1lKSAtIDQ7CkBAIC0xODUwLDcgKzE4NTAsNyBAQCBnbGRfbWNvcmVwZV91bnJl Y29nbml6ZWRfZmlsZSAobGFuZ19pbnB1CiB9CiAKIHN0YXRpYyBib29sCi1nbGRfbWNvcmVwZV9y ZWNvZ25pemVkX2ZpbGUgKGxhbmdfaW5wdXRfc3RhdGVtZW50X3R5cGUgKmVudHJ5IEFUVFJJQlVU RV9VTlVTRUQpCitnbGRtY29yZXBlX3JlY29nbml6ZWRfZmlsZSAobGFuZ19pbnB1dF9zdGF0ZW1l bnRfdHlwZSAqZW50cnkgQVRUUklCVVRFX1VOVVNFRCkKIHsKICNpZmRlZiBETExfU1VQUE9SVAog I2lmZGVmIFRBUkdFVF9JU19pMzg2cGUKQEAgLTE4NzIsNyArMTg3Miw3IEBAIGdsZF9tY29yZXBl X3JlY29nbml6ZWRfZmlsZSAobGFuZ19pbnB1dF8KIH0KIAogc3RhdGljIHZvaWQKLWdsZF9tY29y ZXBlX2ZpbmlzaCAodm9pZCkKK2dsZG1jb3JlcGVfZmluaXNoICh2b2lkKQogewogI2lmIGRlZmlu ZWQoVEFSR0VUX0lTX2FybXBlKSB8fCBkZWZpbmVkKFRBUkdFVF9JU19hcm1fd2luY2VfcGUpCiAg IHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5ICogaDsKQEAgLTE5NzIsOSArMTk3Miw5IEBAIGds ZF9tY29yZXBlX2ZpbmlzaCAodm9pZCkKICAgIHNvcnRfc2VjdGlvbnMuICAqLwogCiBzdGF0aWMg bGFuZ19vdXRwdXRfc2VjdGlvbl9zdGF0ZW1lbnRfdHlwZSAqCi1nbGRfbWNvcmVwZV9wbGFjZV9v cnBoYW4gKGFzZWN0aW9uICpzLAotCQkJCSAgICBjb25zdCBjaGFyICpzZWNuYW1lLAotCQkJCSAg ICBpbnQgY29uc3RyYWludCkKK2dsZG1jb3JlcGVfcGxhY2Vfb3JwaGFuIChhc2VjdGlvbiAqcywK KwkJCQkgICBjb25zdCBjaGFyICpzZWNuYW1lLAorCQkJCSAgIGludCBjb25zdHJhaW50KQogewog ICBjb25zdCBjaGFyICpvcmlnX3NlY25hbWUgPSBzZWNuYW1lOwogICBjaGFyICpkb2xsYXIgPSBO VUxMOwpAQCAtMjE3MSw3ICsyMTcxLDcgQEAgZ2xkX21jb3JlcGVfcGxhY2Vfb3JwaGFuIChhc2Vj dGlvbiAqcywKIH0KIAogc3RhdGljIGJvb2wKLWdsZF9tY29yZXBlX29wZW5fZHluYW1pY19hcmNo aXZlCitnbGRtY29yZXBlX29wZW5fZHluYW1pY19hcmNoaXZlCiAgIChjb25zdCBjaGFyICphcmNo IEFUVFJJQlVURV9VTlVTRUQsCiAgICBzZWFyY2hfZGlyc190eXBlICpzZWFyY2gsCiAgICBsYW5n X2lucHV0X3N0YXRlbWVudF90eXBlICplbnRyeSkKQEAgLTIyNzcsMTQgKzIyNzcsMTQgQEAgZ2xk X21jb3JlcGVfb3Blbl9keW5hbWljX2FyY2hpdmUKIH0KIAogc3RhdGljIGludAotZ2xkX21jb3Jl cGVfZmluZF9wb3RlbnRpYWxfbGlicmFyaWVzCitnbGRtY29yZXBlX2ZpbmRfcG90ZW50aWFsX2xp YnJhcmllcwogICAoY2hhciAqbmFtZSwgbGFuZ19pbnB1dF9zdGF0ZW1lbnRfdHlwZSAqZW50cnkp CiB7CiAgIHJldHVybiBsZGZpbGVfb3Blbl9maWxlX3NlYXJjaCAobmFtZSwgZW50cnksICIiLCAi LmxpYiIpOwogfQogDAogc3RhdGljIGNoYXIgKgotZ2xkX21jb3JlcGVfZ2V0X3NjcmlwdCAoaW50 ICppc2ZpbGUpCitnbGRtY29yZXBlX2dldF9zY3JpcHQgKGludCAqaXNmaWxlKQogewogICAqaXNm aWxlID0gMTsKIApAQCAtMjMwMCwzNyArMjMwMCwzNiBAQCBnbGRfbWNvcmVwZV9nZXRfc2NyaXB0 IChpbnQgKmlzZmlsZSkKICAgICByZXR1cm4gImxkc2NyaXB0cy9tY29yZXBlLngiOwogfQogCi0K IHN0cnVjdCBsZF9lbXVsYXRpb25feGZlcl9zdHJ1Y3QgbGRfbWNvcmVwZV9lbXVsYXRpb24gPQog ewotICBnbGRfbWNvcmVwZV9iZWZvcmVfcGFyc2UsCisgIGdsZG1jb3JlcGVfYmVmb3JlX3BhcnNl LAogICBzeXNsaWJfZGVmYXVsdCwKICAgaGxsX2RlZmF1bHQsCi0gIGdsZF9tY29yZXBlX2FmdGVy X3BhcnNlLAotICBnbGRfbWNvcmVwZV9hZnRlcl9vcGVuLAorICBnbGRtY29yZXBlX2FmdGVyX3Bh cnNlLAorICBnbGRtY29yZXBlX2FmdGVyX29wZW4sCiAgIGFmdGVyX2NoZWNrX3JlbG9jc19kZWZh dWx0LAogICBiZWZvcmVfcGxhY2Vfb3JwaGFuc19kZWZhdWx0LAogICBhZnRlcl9hbGxvY2F0aW9u X2RlZmF1bHQsCiAgIHNldF9vdXRwdXRfYXJjaF9kZWZhdWx0LAogICBsZGVtdWxfZGVmYXVsdF90 YXJnZXQsCi0gIGdsZF9tY29yZXBlX2JlZm9yZV9hbGxvY2F0aW9uLAotICBnbGRfbWNvcmVwZV9n ZXRfc2NyaXB0LAorICBnbGRtY29yZXBlX2JlZm9yZV9hbGxvY2F0aW9uLAorICBnbGRtY29yZXBl X2dldF9zY3JpcHQsCiAgICJtY29yZXBlIiwKICAgInBlaS1tY29yZS1saXR0bGUiLAotICBnbGRf bWNvcmVwZV9maW5pc2gsCi0gIE5VTEwsIC8qIENyZWF0ZSBvdXRwdXQgc2VjdGlvbiBzdGF0ZW1l bnRzLiAgKi8KLSAgZ2xkX21jb3JlcGVfb3Blbl9keW5hbWljX2FyY2hpdmUsCi0gIGdsZF9tY29y ZXBlX3BsYWNlX29ycGhhbiwKLSAgZ2xkX21jb3JlcGVfc2V0X3N5bWJvbHMsCi0gIE5VTEwsIC8q IHBhcnNlX2FyZ3MgKi8KKyAgZ2xkbWNvcmVwZV9maW5pc2gsCisgIE5VTEwsCisgIGdsZG1jb3Jl cGVfb3Blbl9keW5hbWljX2FyY2hpdmUsCisgIGdsZG1jb3JlcGVfcGxhY2Vfb3JwaGFuLAorICBn bGRtY29yZXBlX3NldF9zeW1ib2xzLAorICBOVUxMLAogICBnbGRtY29yZXBlX2FkZF9vcHRpb25z LAogICBnbGRtY29yZXBlX2hhbmRsZV9vcHRpb24sCi0gIGdsZF9tY29yZXBlX3VucmVjb2duaXpl ZF9maWxlLAotICBnbGRfbWNvcmVwZV9saXN0X29wdGlvbnMsCi0gIGdsZF9tY29yZXBlX3JlY29n bml6ZWRfZmlsZSwKLSAgZ2xkX21jb3JlcGVfZmluZF9wb3RlbnRpYWxfbGlicmFyaWVzLAotICBO VUxMLAkvKiBuZXdfdmVyc19wYXR0ZXJuLiAgKi8KLSAgTlVMTCwJLyogZXh0cmFfbWFwX2ZpbGVf dGV4dC4gICovCisgIGdsZG1jb3JlcGVfdW5yZWNvZ25pemVkX2ZpbGUsCisgIGdsZG1jb3JlcGVf bGlzdF9vcHRpb25zLAorICBnbGRtY29yZXBlX3JlY29nbml6ZWRfZmlsZSwKKyAgZ2xkbWNvcmVw ZV9maW5kX3BvdGVudGlhbF9saWJyYXJpZXMsCisgIE5VTEwsCisgIE5VTEwsCiAgIE5VTEwsCiAg IE5VTEwsCiAgIE5VTEwsCi0tLSAuLi8uLi9iaW51dGlscy1hbGwvYnVpbGQteDg2XzY0LWxpbnV4 L2xkL2VwcGNtYWNvcy5jCTIwMjItMDItMDQgMTE6MzM6MTAuNjg0NzkzOTgxIC0wODAwCisrKyBs ZC9lcHBjbWFjb3MuYwkyMDIyLTAyLTA2IDA2OjE5OjQzLjgzMjc0MjM2OSAtMDgwMApAQCAtMTU1 OCw3ICsxNTU4LDggQEAgZ2xkcHBjbWFjb3NfcHJpbnRfc3ltYm9sIChzdHJ1Y3QgYmZkX2xpbgog ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RydWN0IGxkX2VtdWxhdGlvbl94ZmVyX3N0cnVjdCBsZF9w cGNtYWNvc19lbXVsYXRpb24gPSB7CitzdHJ1Y3QgbGRfZW11bGF0aW9uX3hmZXJfc3RydWN0IGxk X3BwY21hY29zX2VtdWxhdGlvbiA9Cit7CiAgIGdsZHBwY21hY29zX2JlZm9yZV9wYXJzZSwKICAg c3lzbGliX2RlZmF1bHQsCiAgIGhsbF9kZWZhdWx0LApAQCAtMTU3NiwxNyArMTU3NywxNyBAQCBz dHJ1Y3QgbGRfZW11bGF0aW9uX3hmZXJfc3RydWN0IGxkX3BwY21hCiAgIGZpbmlzaF9kZWZhdWx0 LAogICBnbGRwcGNtYWNvc19jcmVhdGVfb3V0cHV0X3NlY3Rpb25fc3RhdGVtZW50cywKICAgZ2xk cHBjbWFjb3Nfb3Blbl9keW5hbWljX2FyY2hpdmUsCi0gIDAsCQkJCS8qIHBsYWNlX29ycGhhbiAq LwotICAwLAkJCQkvKiBzZXRfc3ltYm9scyAqLworICBOVUxMLAorICBOVUxMLAogICBnbGRwcGNt YWNvc19wYXJzZV9hcmdzLAogICBnbGRwcGNtYWNvc19hZGRfb3B0aW9ucywKICAgZ2xkcHBjbWFj b3NfaGFuZGxlX29wdGlvbiwKICAgZ2xkcHBjbWFjb3NfdW5yZWNvZ25pemVkX2ZpbGUsCi0gIE5V TEwsCQkJCS8qIGxpc3Rfb3B0aW9ucyAqLwotICBOVUxMLAkJCQkvKiByZWNvZ25pemVkX2ZpbGUg Ki8KLSAgTlVMTCwJCQkJLyogZmluZCBwb3RlbnRpYWxfbGlicmFyaWVzICovCi0gIE5VTEwsCQkJ CS8qIG5ld192ZXJzX3BhdHRlcm4gKi8KLSAgTlVMTCwJCQkJLyogZXh0cmFfbWFwX2ZpbGVfdGV4 dCAqLworICBOVUxMLAorICBOVUxMLAorICBOVUxMLAorICBOVUxMLAorICBOVUxMLAogICBOVUxM LAogICBOVUxMLAogICBOVUxMLAotLS0gLi4vLi4vYmludXRpbHMtYWxsL2J1aWxkLXg4Nl82NC1s aW51eC9sZC9lc2hwZS5jCTIwMjItMDItMDQgMTE6MzM6MTEuNjk1NzkxMDQyIC0wODAwCisrKyBs ZC9lc2hwZS5jCTIwMjItMDItMDYgMDY6MTk6NDUuMDE2NzM2NTI4IC0wODAwCkBAIC0xNDgsNyAr MTQ4LDcgQEAgc3RhdGljIGludCBpc191bmRlcnNjb3JpbmcgKHZvaWQpCiB9CiAKIHN0YXRpYyB2 b2lkCi1nbGRfc2hwZV9iZWZvcmVfcGFyc2UgKHZvaWQpCitnbGRzaHBlX2JlZm9yZV9wYXJzZSAo dm9pZCkKIHsKICAgaXNfdW5kZXJzY29yaW5nICgpOwogICBsZGZpbGVfc2V0X291dHB1dF9hcmNo ICgic2giLCBiZmRfYXJjaF9zaCk7CkBAIC0zOTQsNyArMzk0LDcgQEAgc3RhdGljIGRlZmluZm8g aW5pdFtdID0KIAogCiBzdGF0aWMgdm9pZAotZ2xkX3NocGVfbGlzdF9vcHRpb25zIChGSUxFICpm aWxlKQorZ2xkc2hwZV9saXN0X29wdGlvbnMgKEZJTEUgKmZpbGUpCiB7CiAgIGZwcmludGYgKGZp bGUsIF8oIiAgLS1iYXNlX2ZpbGUgPGJhc2VmaWxlPiAgICAgICAgICAgICBHZW5lcmF0ZSBhIGJh c2UgZmlsZSBmb3IgcmVsb2NhdGFibGUgRExMc1xuIikpOwogICBmcHJpbnRmIChmaWxlLCBfKCIg IC0tZGxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IGltYWdlIGJhc2UgdG8gdGhl IGRlZmF1bHQgZm9yIERMTHNcbiIpKTsKQEAgLTkyNCw3ICs5MjQsNyBAQCBjb21wdXRlX2RsbF9p bWFnZV9iYXNlIChjb25zdCBjaGFyICpvZmlsCiAgICByZWFkLiAgKi8KIAogc3RhdGljIHZvaWQK LWdsZF9zaHBlX3NldF9zeW1ib2xzICh2b2lkKQorZ2xkc2hwZV9zZXRfc3ltYm9scyAodm9pZCkK IHsKICAgLyogUnVuIHRocm91Z2ggYW5kIGludmVudCBzeW1ib2xzIGZvciBhbGwgdGhlCiAgICAg IG5hbWVzIGFuZCBpbnNlcnQgdGhlIGRlZmF1bHRzLiAgKi8KQEAgLTk5MSw3ICs5OTEsNyBAQCBn bGRfc2hwZV9zZXRfc3ltYm9scyAodm9pZCkKICAgIGhhdmUgYmVlbiByZWFkLiAgKi8KIAogc3Rh dGljIHZvaWQKLWdsZF9zaHBlX2FmdGVyX3BhcnNlICh2b2lkKQorZ2xkc2hwZV9hZnRlcl9wYXJz ZSAodm9pZCkKIHsKICAgLyogUFIgbGQvNjc0NDogIFdhcm4gdGhlIHVzZXIgaWYgdGhleSBoYXZl IHVzZWQgYW4gRUxGLW9ubHkKICAgICAgb3B0aW9uIGhvcGluZyBpdCB3aWxsIHdvcmsgb24gUEUu ICAqLwpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgc2V0dXBfYnVpbGRfaWQgKGJmZCAqaWJmZCkKIH0K IAogc3RhdGljIHZvaWQKLWdsZF9zaHBlX2FmdGVyX29wZW4gKHZvaWQpCitnbGRzaHBlX2FmdGVy X29wZW4gKHZvaWQpCiB7CiAgIGFmdGVyX29wZW5fZGVmYXVsdCAoKTsKIApAQCAtMTcyMyw3ICsx NzIzLDcgQEAgZ2xkX3NocGVfYWZ0ZXJfb3BlbiAodm9pZCkKIH0KIAwKIHN0YXRpYyB2b2lkCi1n bGRfc2hwZV9iZWZvcmVfYWxsb2NhdGlvbiAodm9pZCkKK2dsZHNocGVfYmVmb3JlX2FsbG9jYXRp b24gKHZvaWQpCiB7CiAjaWYgZGVmaW5lZChUQVJHRVRfSVNfYXJtcGUpIHx8IGRlZmluZWQoVEFS R0VUX0lTX2FybV93aW5jZV9wZSkKICAgLyogRklYTUU6IHdlIHNob3VsZCBiZSBhYmxlIHRvIHNl dCB0aGUgc2l6ZSBvZiB0aGUgaW50ZXJ3b3JraW5nIHN0dWIKQEAgLTE3NjksNyArMTc2OSw3IEBA IHNhd19vcHRpb24gKGNoYXIgKm9wdGlvbikKICNlbmRpZiAvKiBETExfU1VQUE9SVCAqLwogCiBz dGF0aWMgYm9vbAotZ2xkX3NocGVfdW5yZWNvZ25pemVkX2ZpbGUgKGxhbmdfaW5wdXRfc3RhdGVt ZW50X3R5cGUgKmVudHJ5IEFUVFJJQlVURV9VTlVTRUQpCitnbGRzaHBlX3VucmVjb2duaXplZF9m aWxlIChsYW5nX2lucHV0X3N0YXRlbWVudF90eXBlICplbnRyeSBBVFRSSUJVVEVfVU5VU0VEKQog ewogI2lmZGVmIERMTF9TVVBQT1JUCiAgIGNvbnN0IGNoYXIgKmV4dCA9IGVudHJ5LT5maWxlbmFt ZSArIHN0cmxlbiAoZW50cnktPmZpbGVuYW1lKSAtIDQ7CkBAIC0xODUwLDcgKzE4NTAsNyBAQCBn bGRfc2hwZV91bnJlY29nbml6ZWRfZmlsZSAobGFuZ19pbnB1dF9zCiB9CiAKIHN0YXRpYyBib29s Ci1nbGRfc2hwZV9yZWNvZ25pemVkX2ZpbGUgKGxhbmdfaW5wdXRfc3RhdGVtZW50X3R5cGUgKmVu dHJ5IEFUVFJJQlVURV9VTlVTRUQpCitnbGRzaHBlX3JlY29nbml6ZWRfZmlsZSAobGFuZ19pbnB1 dF9zdGF0ZW1lbnRfdHlwZSAqZW50cnkgQVRUUklCVVRFX1VOVVNFRCkKIHsKICNpZmRlZiBETExf U1VQUE9SVAogI2lmZGVmIFRBUkdFVF9JU19pMzg2cGUKQEAgLTE4NzIsNyArMTg3Miw3IEBAIGds ZF9zaHBlX3JlY29nbml6ZWRfZmlsZSAobGFuZ19pbnB1dF9zdGEKIH0KIAogc3RhdGljIHZvaWQK LWdsZF9zaHBlX2ZpbmlzaCAodm9pZCkKK2dsZHNocGVfZmluaXNoICh2b2lkKQogewogI2lmIGRl ZmluZWQoVEFSR0VUX0lTX2FybXBlKSB8fCBkZWZpbmVkKFRBUkdFVF9JU19hcm1fd2luY2VfcGUp CiAgIHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5ICogaDsKQEAgLTE5NzIsOSArMTk3Miw5IEBA IGdsZF9zaHBlX2ZpbmlzaCAodm9pZCkKICAgIHNvcnRfc2VjdGlvbnMuICAqLwogCiBzdGF0aWMg bGFuZ19vdXRwdXRfc2VjdGlvbl9zdGF0ZW1lbnRfdHlwZSAqCi1nbGRfc2hwZV9wbGFjZV9vcnBo YW4gKGFzZWN0aW9uICpzLAotCQkJCSAgICBjb25zdCBjaGFyICpzZWNuYW1lLAotCQkJCSAgICBp bnQgY29uc3RyYWludCkKK2dsZHNocGVfcGxhY2Vfb3JwaGFuIChhc2VjdGlvbiAqcywKKwkJCQkg ICBjb25zdCBjaGFyICpzZWNuYW1lLAorCQkJCSAgIGludCBjb25zdHJhaW50KQogewogICBjb25z dCBjaGFyICpvcmlnX3NlY25hbWUgPSBzZWNuYW1lOwogICBjaGFyICpkb2xsYXIgPSBOVUxMOwpA QCAtMjE3MSw3ICsyMTcxLDcgQEAgZ2xkX3NocGVfcGxhY2Vfb3JwaGFuIChhc2VjdGlvbiAqcywK IH0KIAogc3RhdGljIGJvb2wKLWdsZF9zaHBlX29wZW5fZHluYW1pY19hcmNoaXZlCitnbGRzaHBl X29wZW5fZHluYW1pY19hcmNoaXZlCiAgIChjb25zdCBjaGFyICphcmNoIEFUVFJJQlVURV9VTlVT RUQsCiAgICBzZWFyY2hfZGlyc190eXBlICpzZWFyY2gsCiAgICBsYW5nX2lucHV0X3N0YXRlbWVu dF90eXBlICplbnRyeSkKQEAgLTIyNzcsMTQgKzIyNzcsMTQgQEAgZ2xkX3NocGVfb3Blbl9keW5h bWljX2FyY2hpdmUKIH0KIAogc3RhdGljIGludAotZ2xkX3NocGVfZmluZF9wb3RlbnRpYWxfbGli cmFyaWVzCitnbGRzaHBlX2ZpbmRfcG90ZW50aWFsX2xpYnJhcmllcwogICAoY2hhciAqbmFtZSwg bGFuZ19pbnB1dF9zdGF0ZW1lbnRfdHlwZSAqZW50cnkpCiB7CiAgIHJldHVybiBsZGZpbGVfb3Bl bl9maWxlX3NlYXJjaCAobmFtZSwgZW50cnksICIiLCAiLmxpYiIpOwogfQogDAogc3RhdGljIGNo YXIgKgotZ2xkX3NocGVfZ2V0X3NjcmlwdCAoaW50ICppc2ZpbGUpCitnbGRzaHBlX2dldF9zY3Jp cHQgKGludCAqaXNmaWxlKQogewogICAqaXNmaWxlID0gMTsKIApAQCAtMjMwMCwzNyArMjMwMCwz NiBAQCBnbGRfc2hwZV9nZXRfc2NyaXB0IChpbnQgKmlzZmlsZSkKICAgICByZXR1cm4gImxkc2Ny aXB0cy9zaHBlLngiOwogfQogCi0KIHN0cnVjdCBsZF9lbXVsYXRpb25feGZlcl9zdHJ1Y3QgbGRf c2hwZV9lbXVsYXRpb24gPQogewotICBnbGRfc2hwZV9iZWZvcmVfcGFyc2UsCisgIGdsZHNocGVf YmVmb3JlX3BhcnNlLAogICBzeXNsaWJfZGVmYXVsdCwKICAgaGxsX2RlZmF1bHQsCi0gIGdsZF9z aHBlX2FmdGVyX3BhcnNlLAotICBnbGRfc2hwZV9hZnRlcl9vcGVuLAorICBnbGRzaHBlX2FmdGVy X3BhcnNlLAorICBnbGRzaHBlX2FmdGVyX29wZW4sCiAgIGFmdGVyX2NoZWNrX3JlbG9jc19kZWZh dWx0LAogICBiZWZvcmVfcGxhY2Vfb3JwaGFuc19kZWZhdWx0LAogICBhZnRlcl9hbGxvY2F0aW9u X2RlZmF1bHQsCiAgIHNldF9vdXRwdXRfYXJjaF9kZWZhdWx0LAogICBsZGVtdWxfZGVmYXVsdF90 YXJnZXQsCi0gIGdsZF9zaHBlX2JlZm9yZV9hbGxvY2F0aW9uLAotICBnbGRfc2hwZV9nZXRfc2Ny aXB0LAorICBnbGRzaHBlX2JlZm9yZV9hbGxvY2F0aW9uLAorICBnbGRzaHBlX2dldF9zY3JpcHQs CiAgICJzaHBlIiwKICAgInBlaS1zaGwiLAotICBnbGRfc2hwZV9maW5pc2gsCi0gIE5VTEwsIC8q IENyZWF0ZSBvdXRwdXQgc2VjdGlvbiBzdGF0ZW1lbnRzLiAgKi8KLSAgZ2xkX3NocGVfb3Blbl9k eW5hbWljX2FyY2hpdmUsCi0gIGdsZF9zaHBlX3BsYWNlX29ycGhhbiwKLSAgZ2xkX3NocGVfc2V0 X3N5bWJvbHMsCi0gIE5VTEwsIC8qIHBhcnNlX2FyZ3MgKi8KKyAgZ2xkc2hwZV9maW5pc2gsCisg IE5VTEwsCisgIGdsZHNocGVfb3Blbl9keW5hbWljX2FyY2hpdmUsCisgIGdsZHNocGVfcGxhY2Vf b3JwaGFuLAorICBnbGRzaHBlX3NldF9zeW1ib2xzLAorICBOVUxMLAogICBnbGRzaHBlX2FkZF9v cHRpb25zLAogICBnbGRzaHBlX2hhbmRsZV9vcHRpb24sCi0gIGdsZF9zaHBlX3VucmVjb2duaXpl ZF9maWxlLAotICBnbGRfc2hwZV9saXN0X29wdGlvbnMsCi0gIGdsZF9zaHBlX3JlY29nbml6ZWRf ZmlsZSwKLSAgZ2xkX3NocGVfZmluZF9wb3RlbnRpYWxfbGlicmFyaWVzLAotICBOVUxMLAkvKiBu ZXdfdmVyc19wYXR0ZXJuLiAgKi8KLSAgTlVMTCwJLyogZXh0cmFfbWFwX2ZpbGVfdGV4dC4gICov CisgIGdsZHNocGVfdW5yZWNvZ25pemVkX2ZpbGUsCisgIGdsZHNocGVfbGlzdF9vcHRpb25zLAor ICBnbGRzaHBlX3JlY29nbml6ZWRfZmlsZSwKKyAgZ2xkc2hwZV9maW5kX3BvdGVudGlhbF9saWJy YXJpZXMsCisgIE5VTEwsCisgIE5VTEwsCiAgIE5VTEwsCiAgIE5VTEwsCiAgIE5VTEwsCi0tLSAu Li8uLi9iaW51dGlscy1hbGwvYnVpbGQteDg2XzY0LWxpbnV4L2xkL2V0aWMzeGNvZmYuYwkyMDIy LTAyLTA0IDExOjMzOjExLjgxNDc5MDY5NiAtMDgwMAorKysgbGQvZXRpYzN4Y29mZi5jCTIwMjIt MDItMDYgMDY6MTk6NDUuMjU0NzM1MzUzIC0wODAwCkBAIC02NCw3ICs2NCw3IEBAIGdsZHRpYzN4 Y29mZl9hZGRfb3B0aW9ucwogfQogCiBzdGF0aWMgdm9pZAotZ2xkX3RpYzN4Y29mZl9saXN0X29w dGlvbnMgKEZJTEUgKiBmaWxlKQorZ2xkdGljM3hjb2ZmX2xpc3Rfb3B0aW9ucyAoRklMRSAqIGZp bGUpCiB7CiAgIGZwcmludGYgKGZpbGUsIF8oIiAgLS1mb3JtYXQgMHwxfDIgICAgICAgICAgICAg IFNwZWNpZnkgd2hpY2ggQ09GRiB2ZXJzaW9uIHRvIHVzZVxuIikpOwogfQpAQCAtOTYsNyArOTYs NyBAQCBnbGR0aWMzeGNvZmZfaGFuZGxlX29wdGlvbiAoaW50IG9wdGMpCiB9CiAKIHN0YXRpYyB2 b2lkCi1nbGRfdGljM3hjb2ZmX2JlZm9yZV9wYXJzZSh2b2lkKQorZ2xkdGljM3hjb2ZmX2JlZm9y ZV9wYXJzZSh2b2lkKQogewogI2lmbmRlZiBUQVJHRVRfCQkJLyogSS5lLiwgaWYgbm90IGdlbmVy aWMuICAqLwogICBsZGZpbGVfc2V0X291dHB1dF9hcmNoICgidGljM3giLCBiZmRfYXJjaF91bmtu b3duKTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBnbGRfdGljM3hjb2ZmX2JlZm9yZV9wYXJzZSh2b2lk KQogfQogCiBzdGF0aWMgY2hhciAqCi1nbGRfdGljM3hjb2ZmX2dldF9zY3JpcHQgKGludCAqaXNm aWxlKQorZ2xkdGljM3hjb2ZmX2dldF9zY3JpcHQgKGludCAqaXNmaWxlKQogewogICAqaXNmaWxl ID0gMTsKIApAQCAtMTE5LDkgKzExOSwxMCBAQCBnbGRfdGljM3hjb2ZmX2dldF9zY3JpcHQgKGlu dCAqaXNmaWxlKQogICBlbHNlCiAgICAgcmV0dXJuICJsZHNjcmlwdHMvdGljM3hjb2ZmLngiOwog fQorCiBzdHJ1Y3QgbGRfZW11bGF0aW9uX3hmZXJfc3RydWN0IGxkX3RpYzN4Y29mZl9lbXVsYXRp b24gPQogewotICBnbGRfdGljM3hjb2ZmX2JlZm9yZV9wYXJzZSwKKyAgZ2xkdGljM3hjb2ZmX2Jl Zm9yZV9wYXJzZSwKICAgc3lzbGliX2RlZmF1bHQsCiAgIGhsbF9kZWZhdWx0LAogICBhZnRlcl9w YXJzZV9kZWZhdWx0LApAQCAtMTMyLDIzICsxMzMsMjMgQEAgc3RydWN0IGxkX2VtdWxhdGlvbl94 ZmVyX3N0cnVjdCBsZF90aWMzeAogICBzZXRfb3V0cHV0X2FyY2hfZGVmYXVsdCwKICAgbGRlbXVs X2RlZmF1bHRfdGFyZ2V0LAogICBiZWZvcmVfYWxsb2NhdGlvbl9kZWZhdWx0LAotICBnbGRfdGlj M3hjb2ZmX2dldF9zY3JpcHQsCisgIGdsZHRpYzN4Y29mZl9nZXRfc2NyaXB0LAogICAidGljM3hj b2ZmIiwKICAgImNvZmYyLXRpYzR4IiwKICAgZmluaXNoX2RlZmF1bHQsCi0gIE5VTEwsIC8qIGNy ZWF0ZSBvdXRwdXQgc2VjdGlvbiBzdGF0ZW1lbnRzICovCi0gIE5VTEwsIC8qIG9wZW4gZHluYW1p YyBhcmNoaXZlICovCi0gIE5VTEwsIC8qIHBsYWNlIG9ycGhhbiAqLwotICBOVUxMLCAvKiBzZXRf c3ltYm9scyAqLwotICBOVUxMLCAvKiBwYXJzZV9hcmdzICovCisgIE5VTEwsCisgIE5VTEwsCisg IE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCiAgIGdsZHRpYzN4Y29mZl9hZGRfb3B0aW9ucywKICAg Z2xkdGljM3hjb2ZmX2hhbmRsZV9vcHRpb24sCi0gIE5VTEwsIC8qIHVucmVjb2duaXplZF9maWxl ICovCi0gIGdsZF90aWMzeGNvZmZfbGlzdF9vcHRpb25zLAotICBOVUxMLCAvKiByZWNvZ25pemVk IGZpbGUgKi8KLSAgTlVMTCwJLyogZmluZF9wb3RlbnRpYWxfbGlicmFyaWVzICovCi0gIE5VTEws CS8qIG5ld192ZXJzX3BhdHRlcm4gKi8KLSAgTlVMTCwgIC8qIGV4dHJhX21hcF9maWxlX3RleHQg Ki8KKyAgTlVMTCwKKyAgZ2xkdGljM3hjb2ZmX2xpc3Rfb3B0aW9ucywKKyAgTlVMTCwKKyAgTlVM TCwKKyAgTlVMTCwKKyAgTlVMTCwKICAgTlVMTCwKICAgTlVMTCwKICAgTlVMTCwKLS0tIC4uLy4u L2JpbnV0aWxzLWFsbC9idWlsZC14ODZfNjQtbGludXgvbGQvZXRpYzN4Y29mZl9vbmNoaXAuYwky MDIyLTAyLTA0IDExOjMzOjExLjg1ODc5MDU2OCAtMDgwMAorKysgbGQvZXRpYzN4Y29mZl9vbmNo aXAuYwkyMDIyLTAyLTA2IDA2OjE5OjQ1LjQwMDczNDYzMyAtMDgwMApAQCAtNjQsNyArNjQsNyBA QCBnbGR0aWMzeGNvZmZfb25jaGlwX2FkZF9vcHRpb25zCiB9CiAKIHN0YXRpYyB2b2lkCi1nbGRf dGljM3hjb2ZmX29uY2hpcF9saXN0X29wdGlvbnMgKEZJTEUgKiBmaWxlKQorZ2xkdGljM3hjb2Zm X29uY2hpcF9saXN0X29wdGlvbnMgKEZJTEUgKiBmaWxlKQogewogICBmcHJpbnRmIChmaWxlLCBf KCIgIC0tZm9ybWF0IDB8MXwyICAgICAgICAgICAgICBTcGVjaWZ5IHdoaWNoIENPRkYgdmVyc2lv biB0byB1c2VcbiIpKTsKIH0KQEAgLTk2LDcgKzk2LDcgQEAgZ2xkdGljM3hjb2ZmX29uY2hpcF9o YW5kbGVfb3B0aW9uIChpbnQgbwogfQogCiBzdGF0aWMgdm9pZAotZ2xkX3RpYzN4Y29mZl9vbmNo aXBfYmVmb3JlX3BhcnNlKHZvaWQpCitnbGR0aWMzeGNvZmZfb25jaGlwX2JlZm9yZV9wYXJzZSh2 b2lkKQogewogI2lmbmRlZiBUQVJHRVRfCQkJLyogSS5lLiwgaWYgbm90IGdlbmVyaWMuICAqLwog ICBsZGZpbGVfc2V0X291dHB1dF9hcmNoICgidGljM3giLCBiZmRfYXJjaF91bmtub3duKTsKQEAg LTEwNCw3ICsxMDQsNyBAQCBnbGRfdGljM3hjb2ZmX29uY2hpcF9iZWZvcmVfcGFyc2Uodm9pZCkK IH0KIAogc3RhdGljIGNoYXIgKgotZ2xkX3RpYzN4Y29mZl9vbmNoaXBfZ2V0X3NjcmlwdCAoaW50 ICppc2ZpbGUpCitnbGR0aWMzeGNvZmZfb25jaGlwX2dldF9zY3JpcHQgKGludCAqaXNmaWxlKQog ewogICAqaXNmaWxlID0gMTsKIApAQCAtMTE5LDkgKzExOSwxMCBAQCBnbGRfdGljM3hjb2ZmX29u Y2hpcF9nZXRfc2NyaXB0IChpbnQgKmlzCiAgIGVsc2UKICAgICByZXR1cm4gImxkc2NyaXB0cy90 aWMzeGNvZmZfb25jaGlwLngiOwogfQorCiBzdHJ1Y3QgbGRfZW11bGF0aW9uX3hmZXJfc3RydWN0 IGxkX3RpYzN4Y29mZl9vbmNoaXBfZW11bGF0aW9uID0KIHsKLSAgZ2xkX3RpYzN4Y29mZl9vbmNo aXBfYmVmb3JlX3BhcnNlLAorICBnbGR0aWMzeGNvZmZfb25jaGlwX2JlZm9yZV9wYXJzZSwKICAg c3lzbGliX2RlZmF1bHQsCiAgIGhsbF9kZWZhdWx0LAogICBhZnRlcl9wYXJzZV9kZWZhdWx0LApA QCAtMTMyLDIzICsxMzMsMjMgQEAgc3RydWN0IGxkX2VtdWxhdGlvbl94ZmVyX3N0cnVjdCBsZF90 aWMzeAogICBzZXRfb3V0cHV0X2FyY2hfZGVmYXVsdCwKICAgbGRlbXVsX2RlZmF1bHRfdGFyZ2V0 LAogICBiZWZvcmVfYWxsb2NhdGlvbl9kZWZhdWx0LAotICBnbGRfdGljM3hjb2ZmX29uY2hpcF9n ZXRfc2NyaXB0LAorICBnbGR0aWMzeGNvZmZfb25jaGlwX2dldF9zY3JpcHQsCiAgICJ0aWMzeGNv ZmZfb25jaGlwIiwKICAgImNvZmYyLXRpYzR4IiwKICAgZmluaXNoX2RlZmF1bHQsCi0gIE5VTEws IC8qIGNyZWF0ZSBvdXRwdXQgc2VjdGlvbiBzdGF0ZW1lbnRzICovCi0gIE5VTEwsIC8qIG9wZW4g ZHluYW1pYyBhcmNoaXZlICovCi0gIE5VTEwsIC8qIHBsYWNlIG9ycGhhbiAqLwotICBOVUxMLCAv KiBzZXRfc3ltYm9scyAqLwotICBOVUxMLCAvKiBwYXJzZV9hcmdzICovCisgIE5VTEwsCisgIE5V TEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCiAgIGdsZHRpYzN4Y29mZl9vbmNoaXBfYWRk X29wdGlvbnMsCiAgIGdsZHRpYzN4Y29mZl9vbmNoaXBfaGFuZGxlX29wdGlvbiwKLSAgTlVMTCwg LyogdW5yZWNvZ25pemVkX2ZpbGUgKi8KLSAgZ2xkX3RpYzN4Y29mZl9vbmNoaXBfbGlzdF9vcHRp b25zLAotICBOVUxMLCAvKiByZWNvZ25pemVkIGZpbGUgKi8KLSAgTlVMTCwJLyogZmluZF9wb3Rl bnRpYWxfbGlicmFyaWVzICovCi0gIE5VTEwsCS8qIG5ld192ZXJzX3BhdHRlcm4gKi8KLSAgTlVM TCwgIC8qIGV4dHJhX21hcF9maWxlX3RleHQgKi8KKyAgTlVMTCwKKyAgZ2xkdGljM3hjb2ZmX29u Y2hpcF9saXN0X29wdGlvbnMsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCiAg IE5VTEwsCiAgIE5VTEwsCiAgIE5VTEwsCi0tLSAuLi8uLi9iaW51dGlscy1hbGwvYnVpbGQteDg2 XzY0LWxpbnV4L2xkL2V0aWM0eGNvZmYuYwkyMDIyLTAyLTA0IDExOjMzOjExLjg4NTc5MDQ4OSAt MDgwMAorKysgbGQvZXRpYzR4Y29mZi5jCTIwMjItMDItMDYgMDY6MTk6NDUuNDA1NzM0NjA4IC0w ODAwCkBAIC02NCw3ICs2NCw3IEBAIGdsZHRpYzR4Y29mZl9hZGRfb3B0aW9ucwogfQogCiBzdGF0 aWMgdm9pZAotZ2xkX3RpYzR4Y29mZl9saXN0X29wdGlvbnMgKEZJTEUgKiBmaWxlKQorZ2xkdGlj NHhjb2ZmX2xpc3Rfb3B0aW9ucyAoRklMRSAqIGZpbGUpCiB7CiAgIGZwcmludGYgKGZpbGUsIF8o IiAgLS1mb3JtYXQgMHwxfDIgICAgICAgICAgICAgIFNwZWNpZnkgd2hpY2ggQ09GRiB2ZXJzaW9u IHRvIHVzZVxuIikpOwogfQpAQCAtOTYsNyArOTYsNyBAQCBnbGR0aWM0eGNvZmZfaGFuZGxlX29w dGlvbiAoaW50IG9wdGMpCiB9CiAKIHN0YXRpYyB2b2lkCi1nbGRfdGljNHhjb2ZmX2JlZm9yZV9w YXJzZSh2b2lkKQorZ2xkdGljNHhjb2ZmX2JlZm9yZV9wYXJzZSh2b2lkKQogewogI2lmbmRlZiBU QVJHRVRfCQkJLyogSS5lLiwgaWYgbm90IGdlbmVyaWMuICAqLwogICBsZGZpbGVfc2V0X291dHB1 dF9hcmNoICgidGljNHgiLCBiZmRfYXJjaF91bmtub3duKTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBn bGRfdGljNHhjb2ZmX2JlZm9yZV9wYXJzZSh2b2lkKQogfQogCiBzdGF0aWMgY2hhciAqCi1nbGRf dGljNHhjb2ZmX2dldF9zY3JpcHQgKGludCAqaXNmaWxlKQorZ2xkdGljNHhjb2ZmX2dldF9zY3Jp cHQgKGludCAqaXNmaWxlKQogewogICAqaXNmaWxlID0gMTsKIApAQCAtMTE5LDkgKzExOSwxMCBA QCBnbGRfdGljNHhjb2ZmX2dldF9zY3JpcHQgKGludCAqaXNmaWxlKQogICBlbHNlCiAgICAgcmV0 dXJuICJsZHNjcmlwdHMvdGljNHhjb2ZmLngiOwogfQorCiBzdHJ1Y3QgbGRfZW11bGF0aW9uX3hm ZXJfc3RydWN0IGxkX3RpYzR4Y29mZl9lbXVsYXRpb24gPQogewotICBnbGRfdGljNHhjb2ZmX2Jl Zm9yZV9wYXJzZSwKKyAgZ2xkdGljNHhjb2ZmX2JlZm9yZV9wYXJzZSwKICAgc3lzbGliX2RlZmF1 bHQsCiAgIGhsbF9kZWZhdWx0LAogICBhZnRlcl9wYXJzZV9kZWZhdWx0LApAQCAtMTMyLDIzICsx MzMsMjMgQEAgc3RydWN0IGxkX2VtdWxhdGlvbl94ZmVyX3N0cnVjdCBsZF90aWM0eAogICBzZXRf b3V0cHV0X2FyY2hfZGVmYXVsdCwKICAgbGRlbXVsX2RlZmF1bHRfdGFyZ2V0LAogICBiZWZvcmVf YWxsb2NhdGlvbl9kZWZhdWx0LAotICBnbGRfdGljNHhjb2ZmX2dldF9zY3JpcHQsCisgIGdsZHRp YzR4Y29mZl9nZXRfc2NyaXB0LAogICAidGljNHhjb2ZmIiwKICAgImNvZmYyLXRpYzR4IiwKICAg ZmluaXNoX2RlZmF1bHQsCi0gIE5VTEwsIC8qIGNyZWF0ZSBvdXRwdXQgc2VjdGlvbiBzdGF0ZW1l bnRzICovCi0gIE5VTEwsIC8qIG9wZW4gZHluYW1pYyBhcmNoaXZlICovCi0gIE5VTEwsIC8qIHBs YWNlIG9ycGhhbiAqLwotICBOVUxMLCAvKiBzZXRfc3ltYm9scyAqLwotICBOVUxMLCAvKiBwYXJz ZV9hcmdzICovCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCiAg IGdsZHRpYzR4Y29mZl9hZGRfb3B0aW9ucywKICAgZ2xkdGljNHhjb2ZmX2hhbmRsZV9vcHRpb24s Ci0gIE5VTEwsIC8qIHVucmVjb2duaXplZF9maWxlICovCi0gIGdsZF90aWM0eGNvZmZfbGlzdF9v cHRpb25zLAotICBOVUxMLCAvKiByZWNvZ25pemVkIGZpbGUgKi8KLSAgTlVMTCwJLyogZmluZF9w b3RlbnRpYWxfbGlicmFyaWVzICovCi0gIE5VTEwsCS8qIG5ld192ZXJzX3BhdHRlcm4gKi8KLSAg TlVMTCwgIC8qIGV4dHJhX21hcF9maWxlX3RleHQgKi8KKyAgTlVMTCwKKyAgZ2xkdGljNHhjb2Zm X2xpc3Rfb3B0aW9ucywKKyAgTlVMTCwKKyAgTlVMTCwKKyAgTlVMTCwKKyAgTlVMTCwKICAgTlVM TCwKICAgTlVMTCwKICAgTlVMTCwKLS0tIC4uLy4uL2JpbnV0aWxzLWFsbC9idWlsZC14ODZfNjQt bGludXgvbGQvZXRpYzU0eGNvZmYuYwkyMDIyLTAyLTA0IDExOjMzOjExLjkzOTc5MDMzMiAtMDgw MAorKysgbGQvZXRpYzU0eGNvZmYuYwkyMDIyLTAyLTA2IDA2OjE5OjQ1LjQ5NDczNDE2OSAtMDgw MApAQCAtNjQsNyArNjQsNyBAQCBnbGR0aWM1NHhjb2ZmX2FkZF9vcHRpb25zCiB9CiAKIHN0YXRp YyB2b2lkCi1nbGRfdGljNTR4Y29mZl9saXN0X29wdGlvbnMgKEZJTEUgKiBmaWxlKQorZ2xkdGlj NTR4Y29mZl9saXN0X29wdGlvbnMgKEZJTEUgKiBmaWxlKQogewogICBmcHJpbnRmIChmaWxlLCBf KCIgIC0tZm9ybWF0IDB8MXwyICAgICAgICAgICAgICBTcGVjaWZ5IHdoaWNoIENPRkYgdmVyc2lv biB0byB1c2VcbiIpKTsKIH0KQEAgLTk2LDcgKzk2LDcgQEAgZ2xkdGljNTR4Y29mZl9oYW5kbGVf b3B0aW9uIChpbnQgb3B0YykKIH0KIAogc3RhdGljIHZvaWQKLWdsZF90aWM1NHhjb2ZmX2JlZm9y ZV9wYXJzZSh2b2lkKQorZ2xkdGljNTR4Y29mZl9iZWZvcmVfcGFyc2Uodm9pZCkKIHsKICNpZm5k ZWYgVEFSR0VUXwkJCS8qIEkuZS4sIGlmIG5vdCBnZW5lcmljLiAgKi8KICAgbGRmaWxlX3NldF9v dXRwdXRfYXJjaCAoInRpYzU0eCIsIGJmZF9hcmNoX3Vua25vd24pOwpAQCAtMTA0LDcgKzEwNCw3 IEBAIGdsZF90aWM1NHhjb2ZmX2JlZm9yZV9wYXJzZSh2b2lkKQogfQogCiBzdGF0aWMgY2hhciAq Ci1nbGRfdGljNTR4Y29mZl9nZXRfc2NyaXB0IChpbnQgKmlzZmlsZSkKK2dsZHRpYzU0eGNvZmZf Z2V0X3NjcmlwdCAoaW50ICppc2ZpbGUpCiB7CiAgICppc2ZpbGUgPSAxOwogCkBAIC0xMTksOSAr MTE5LDEwIEBAIGdsZF90aWM1NHhjb2ZmX2dldF9zY3JpcHQgKGludCAqaXNmaWxlKQogICBlbHNl CiAgICAgcmV0dXJuICJsZHNjcmlwdHMvdGljNTR4Y29mZi54IjsKIH0KKwogc3RydWN0IGxkX2Vt dWxhdGlvbl94ZmVyX3N0cnVjdCBsZF90aWM1NHhjb2ZmX2VtdWxhdGlvbiA9CiB7Ci0gIGdsZF90 aWM1NHhjb2ZmX2JlZm9yZV9wYXJzZSwKKyAgZ2xkdGljNTR4Y29mZl9iZWZvcmVfcGFyc2UsCiAg IHN5c2xpYl9kZWZhdWx0LAogICBobGxfZGVmYXVsdCwKICAgYWZ0ZXJfcGFyc2VfZGVmYXVsdCwK QEAgLTEzMiwyMyArMTMzLDIzIEBAIHN0cnVjdCBsZF9lbXVsYXRpb25feGZlcl9zdHJ1Y3QgbGRf dGljNTQKICAgc2V0X291dHB1dF9hcmNoX2RlZmF1bHQsCiAgIGxkZW11bF9kZWZhdWx0X3Rhcmdl dCwKICAgYmVmb3JlX2FsbG9jYXRpb25fZGVmYXVsdCwKLSAgZ2xkX3RpYzU0eGNvZmZfZ2V0X3Nj cmlwdCwKKyAgZ2xkdGljNTR4Y29mZl9nZXRfc2NyaXB0LAogICAidGljNTR4Y29mZiIsCiAgICJj b2ZmMS1jNTR4IiwKICAgZmluaXNoX2RlZmF1bHQsCi0gIE5VTEwsIC8qIGNyZWF0ZSBvdXRwdXQg c2VjdGlvbiBzdGF0ZW1lbnRzICovCi0gIE5VTEwsIC8qIG9wZW4gZHluYW1pYyBhcmNoaXZlICov Ci0gIE5VTEwsIC8qIHBsYWNlIG9ycGhhbiAqLwotICBOVUxMLCAvKiBzZXRfc3ltYm9scyAqLwot ICBOVUxMLCAvKiBwYXJzZV9hcmdzICovCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5V TEwsCisgIE5VTEwsCiAgIGdsZHRpYzU0eGNvZmZfYWRkX29wdGlvbnMsCiAgIGdsZHRpYzU0eGNv ZmZfaGFuZGxlX29wdGlvbiwKLSAgTlVMTCwgLyogdW5yZWNvZ25pemVkX2ZpbGUgKi8KLSAgZ2xk X3RpYzU0eGNvZmZfbGlzdF9vcHRpb25zLAotICBOVUxMLCAvKiByZWNvZ25pemVkIGZpbGUgKi8K LSAgTlVMTCwJLyogZmluZF9wb3RlbnRpYWxfbGlicmFyaWVzICovCi0gIE5VTEwsCS8qIG5ld192 ZXJzX3BhdHRlcm4gKi8KLSAgTlVMTCwgIC8qIGV4dHJhX21hcF9maWxlX3RleHQgKi8KKyAgTlVM TCwKKyAgZ2xkdGljNTR4Y29mZl9saXN0X29wdGlvbnMsCisgIE5VTEwsCisgIE5VTEwsCisgIE5V TEwsCisgIE5VTEwsCiAgIE5VTEwsCiAgIE5VTEwsCiAgIE5VTEwsCi0tLSAuLi8uLi9iaW51dGls cy1hbGwvYnVpbGQteDg2XzY0LWxpbnV4L2xkL2V2YW5pbGxhLmMJMjAyMi0wMi0wNCAxMTozMzox Mi4wMDI3OTAxNDkgLTA4MDAKKysrIGxkL2V2YW5pbGxhLmMJMjAyMi0wMi0wNiAwNjoxOTo0NS41 OTk3MzM2NTEgLTA4MDAKQEAgLTcwLDIxICs3MCwyMSBAQCBzdHJ1Y3QgbGRfZW11bGF0aW9uX3hm ZXJfc3RydWN0IGxkX3ZhbmlsCiAgICJ2YW5pbGxhIiwKICAgImEub3V0LXN1bm9zLWJpZyIsCiAg IGZpbmlzaF9kZWZhdWx0LAotICBOVUxMLAkvKiBjcmVhdGUgb3V0cHV0IHNlY3Rpb24gc3RhdGVt ZW50cyAqLwotICBOVUxMLAkvKiBvcGVuIGR5bmFtaWMgYXJjaGl2ZSAqLwotICBOVUxMLAkvKiBw bGFjZSBvcnBoYW4gKi8KLSAgTlVMTCwJLyogc2V0IHN5bWJvbHMgKi8KLSAgTlVMTCwJLyogcGFy c2UgYXJncyAqLwotICBOVUxMLAkvKiBhZGRfb3B0aW9ucyAqLwotICBOVUxMLAkvKiBoYW5kbGVf b3B0aW9uICovCi0gIE5VTEwsCS8qIHVucmVjb2duaXplZCBmaWxlICovCi0gIE5VTEwsCS8qIGxp c3Qgb3B0aW9ucyAqLwotICBOVUxMLAkvKiByZWNvZ25pemVkIGZpbGUgKi8KLSAgTlVMTCwJLyog ZmluZF9wb3RlbnRpYWxfbGlicmFyaWVzICovCi0gIE5VTEwsCS8qIG5ld192ZXJzX3BhdHRlcm4g Ki8KLSAgTlVMTCwJLyogZXh0cmFfbWFwX2ZpbGVfdGV4dCAqLwotICBOVUxMLCAvKiBlbWl0X2N0 Zl9lYXJseSAqLwotICBOVUxMLCAvKiBhY3F1aXJlX3N0cmluZ3NfZm9yX2N0ZiAqLwotICBOVUxM LCAvKiBuZXdfZHluc3ltX2Zvcl9jdGYgKi8KLSAgTlVMTCAgLyogcHJpbnRfc3ltYm9sICovCisg IE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5V TEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEws CisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwsCisgIE5VTEwKIH07Cg== --0000000000006824cf05d75a4285--