diff options
Diffstat (limited to 'poky/meta/recipes-devtools')
161 files changed, 2735 insertions, 4313 deletions
diff --git a/poky/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch b/poky/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch index e0e7e0cd58..a9a8eb6306 100644 --- a/poky/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch +++ b/poky/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch @@ -1,4 +1,4 @@ -From 382f8381ef8baf754057e376a6d9bf840ca6d543 Mon Sep 17 00:00:00 2001 +From 5fb6355c7dd00c97fe90e805ace075b6e9b6952d Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Fri, 10 May 2019 16:47:38 +0200 Subject: [PATCH] Do not init tables from dpkg configuration diff --git a/poky/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch b/poky/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch index c14dc2a414..34d0c4b4cd 100644 --- a/poky/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch +++ b/poky/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch @@ -1,4 +1,4 @@ -From a603b3281f3f60a87531c8cec4843f970170d409 Mon Sep 17 00:00:00 2001 +From 76f8386cac7f13688b386686e0b1fc4b1b574f53 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Thu, 21 May 2020 20:13:25 +0000 Subject: [PATCH] Revert "always run 'dpkg --configure -a' at the end of our diff --git a/poky/meta/recipes-devtools/apt/apt/0001-aptwebserver.cc-Include-array.patch b/poky/meta/recipes-devtools/apt/apt/0001-aptwebserver.cc-Include-array.patch new file mode 100644 index 0000000000..cfee50c7a0 --- /dev/null +++ b/poky/meta/recipes-devtools/apt/apt/0001-aptwebserver.cc-Include-array.patch @@ -0,0 +1,32 @@ +From f999aeb5ceb77b81c36e6a55300a521aaa2da882 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Wed, 26 May 2021 22:12:46 -0700 +Subject: [PATCH] aptwebserver.cc: Include <array> + +This helps getting std::array definition + +Fixes +test/interactive-helper/aptwebserver.cc:36:55: error: constexpr variable cannot have non-literal type 'const std::array<std::array<const char *, 2>, 6>' + constexpr std::array<std::array<char const *,2>,6> htmlencode = {{ + +Upstream-Status: Submitted [https://github.com/Debian/apt/pull/133] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + test/interactive-helper/aptwebserver.cc | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/test/interactive-helper/aptwebserver.cc b/test/interactive-helper/aptwebserver.cc +index 58ba54f84..0e030c7e9 100644 +--- a/test/interactive-helper/aptwebserver.cc ++++ b/test/interactive-helper/aptwebserver.cc +@@ -22,6 +22,7 @@ + #include <unistd.h> + + #include <algorithm> ++#include <array> + #include <fstream> + #include <iostream> + #include <list> +-- +2.31.1 + diff --git a/poky/meta/recipes-devtools/apt/apt_2.2.2.bb b/poky/meta/recipes-devtools/apt/apt_2.2.3.bb index 192aec46bf..fe00fb03ca 100644 --- a/poky/meta/recipes-devtools/apt/apt_2.2.2.bb +++ b/poky/meta/recipes-devtools/apt/apt_2.2.3.bb @@ -13,6 +13,7 @@ SRC_URI = "${DEBIAN_MIRROR}/main/a/apt/${BPN}_${PV}.tar.xz \ file://0001-srvrec-Keep-support-for-older-resolver.patch \ file://0001-cmake-Do-not-build-po-files.patch \ file://0001-Hide-fstatat64-and-prlimit64-defines-on-musl.patch \ + file://0001-aptwebserver.cc-Include-array.patch \ " SRC_URI_append_class-native = " \ @@ -25,7 +26,7 @@ SRC_URI_append_class-nativesdk = " \ file://0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch \ " -SRC_URI[sha256sum] = "c5449a4c2126a12497a9949cd10209926005d329f6ce7942a3781fa2fcf50487" +SRC_URI[sha256sum] = "2880474bc08c79f103cd30d24a9c30c78b480c65076e466d24df93b9fa05ab27" LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263" # the package is taken from snapshots.debian.org; that source is static and goes stale diff --git a/poky/meta/recipes-devtools/binutils/binutils-2.36.inc b/poky/meta/recipes-devtools/binutils/binutils-2.36.inc index 66080dfcee..d54e2a3457 100644 --- a/poky/meta/recipes-devtools/binutils/binutils-2.36.inc +++ b/poky/meta/recipes-devtools/binutils/binutils-2.36.inc @@ -36,6 +36,7 @@ SRC_URI = "\ file://0015-sync-with-OE-libtool-changes.patch \ file://0016-Check-for-clang-before-checking-gcc-version.patch \ file://0017-Add-support-for-the-DW_FORM_strx-forms-to-the-BFD-li.patch \ + file://0018-Add-DWARF-5-support-in-gold.patch \ file://CVE-2021-20197.patch \ " S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/binutils/binutils/0018-Add-DWARF-5-support-in-gold.patch b/poky/meta/recipes-devtools/binutils/binutils/0018-Add-DWARF-5-support-in-gold.patch new file mode 100644 index 0000000000..353b680857 --- /dev/null +++ b/poky/meta/recipes-devtools/binutils/binutils/0018-Add-DWARF-5-support-in-gold.patch @@ -0,0 +1,1374 @@ +From 29dab7648672342418a9d32767e3b3182d9e6a30 Mon Sep 17 00:00:00 2001 +From: Cary Coutant <ccoutant@gmail.com> +Date: Wed, 17 Mar 2021 21:31:15 -0700 +Subject: [PATCH] Add DWARF 5 support in gold. + +elfcpp/ + PR gold/27246 + * dwarf.h (enum DW_LNCT): Add line number table content type codes. + (enum DW_LINE_OPS): Reformat. + (enum DW_LINE_EXTENDED_OPS): Reformat. + (enum DW_CHILDREN): Reformat. + (enum DW_RLE): Add range list entry types. + (enum DW_SECT): Update values for DWARF 5. + +gold/ + PR gold/27246 + * dwarf_reader.cc (Dwarf_abbrev_table::do_get_abbrev): Handle + DW_FORM_implicit_const. + (Dwarf_ranges_table::read_ranges_table): Add version parameter; + Adjust all callers. Look for .debug_rnglists section if DWARF 5. + (Dwarf_ranges_table::read_range_list_v5): New method. + (Dwarf_die::read_attributes): Handle new DWARF 5 DW_FORM codes. + (Dwarf_die::skip_attributes): Likewise. + (Dwarf_info_reader::do_parse): Support DWARF 5 unit header format. + (Dwarf_info_reader::read_3bytes_from_pointer): New method. + (Sized_dwarf_line_info::Sized_dwarf_line_info): Initialize + str_buffer_, str_buffer_start, reloc_map_, line_number_map_. + Look for .debug_line_str section. + (Sized_dwarf_line_info::read_header_prolog): Support DWARF 5 prolog. + (Sized_dwarf_line_info::read_header_tables): Rename to... + (Sized_dwarf_line_info::read_header_tables_v2): ... this. + (Sized_dwarf_line_info::read_header_tables_v5): New method. + (Sized_dwarf_line_info::process_one_opcode): Insert missing "this->". + Change advance_line to signed int64_t. + (Sized_dwarf_line_info::read_lines): Add endptr parameter; adjust + callers. Insert missing "this->". + (Sized_dwarf_line_info::read_line_mappings): Support DWARF 5. + (Sized_dwarf_line_info::do_addr2line): Add debug code. + * dwarf_reader.h (Dwarf_abbrev_table::Attribute): Add implicit_const + field. Adjust constructor. + (Dwarf_abbrev_table::add_sttribute): Add implicit_const parameter. + (Dwarf_ranges_table::read_ranges_table): Add version parameter. + (Dwarf_ranges_table::read_range_list_v5): New method. + (Dwarf_die): Remove unused attr_off field. + (Dwarf_info_reader::Dwarf_info_reader): Initialize unit_type_ field. + (Dwarf_info_reader::is_type_unit): New method. + (Dwarf_info_reader::read_3bytes_from_pointer): New method. + (Dwarf_info_reader::read_range_list): Call read_range_list_v5 for + DWARF 5 range lists. + (Dwarf_info_reader::is_type_unit_): Remove. + (Dwarf_info_reader::unit_type_): New field. + (Sized_dwarf_line_info::~Sized_dwarf_line_info): Delete + str_buffer_start_. + (Sized_dwarf_line_info::read_header_tables): Rename to... + (Sized_dwarf_line_info::read_header_tables_v2): ... this. + (Sized_dwarf_line_info::read_header_tables_v5): New method. + (Sized_dwarf_line_info::read_lines): Add endptr parameter. + (Sized_dwarf_line_info::Dwarf_line_infoHeader): Add address_size field. + (Sized_dwarf_line_info::str_buffer_): New field. + (Sized_dwarf_line_info::str_buffer_end_): New field. + (Sized_dwarf_line_info::str_buffer_start_): New field. + (Sized_dwarf_line_info::end_of_header_length_): New field. + (Sized_dwarf_line_info::end_of_unit_): New field. + +Upstream-Status: Backport [5cde809b7b9 Add DWARF 5 support in gold.] + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + elfcpp/dwarf.h | 89 +++++-- + gold/dwarf_reader.cc | 591 +++++++++++++++++++++++++++++++++++++------ + gold/dwarf_reader.h | 103 ++++++-- + 3 files changed, 654 insertions(+), 129 deletions(-) + +diff --git a/elfcpp/dwarf.h b/elfcpp/dwarf.h +index e24347f8481..c9a9e02369c 100644 +--- a/elfcpp/dwarf.h ++++ b/elfcpp/dwarf.h +@@ -152,35 +152,48 @@ enum DW_EH_PE + DW_EH_PE_indirect = 0x80 + }; + ++// Line number table content type codes. ++ ++enum DW_LNCT ++{ ++ DW_LNCT_path = 0x1, ++ DW_LNCT_directory_index = 0x2, ++ DW_LNCT_timestamp = 0x3, ++ DW_LNCT_size = 0x4, ++ DW_LNCT_MD5 = 0x5, ++ DW_LNCT_lo_user = 0x2000, ++ DW_LNCT_hi_user = 0x3fff ++}; ++ + // Line number opcodes. + + enum DW_LINE_OPS + { +- DW_LNS_extended_op = 0, +- DW_LNS_copy = 1, +- DW_LNS_advance_pc = 2, +- DW_LNS_advance_line = 3, +- DW_LNS_set_file = 4, +- DW_LNS_set_column = 5, +- DW_LNS_negate_stmt = 6, +- DW_LNS_set_basic_block = 7, +- DW_LNS_const_add_pc = 8, +- DW_LNS_fixed_advance_pc = 9, ++ DW_LNS_extended_op = 0x00, ++ DW_LNS_copy = 0x01, ++ DW_LNS_advance_pc = 0x02, ++ DW_LNS_advance_line = 0x03, ++ DW_LNS_set_file = 0x04, ++ DW_LNS_set_column = 0x05, ++ DW_LNS_negate_stmt = 0x06, ++ DW_LNS_set_basic_block = 0x07, ++ DW_LNS_const_add_pc = 0x08, ++ DW_LNS_fixed_advance_pc = 0x09, + // DWARF 3. +- DW_LNS_set_prologue_end = 10, +- DW_LNS_set_epilogue_begin = 11, +- DW_LNS_set_isa = 12 ++ DW_LNS_set_prologue_end = 0x0a, ++ DW_LNS_set_epilogue_begin = 0x0b, ++ DW_LNS_set_isa = 0x0c + }; + + // Line number extended opcodes. + + enum DW_LINE_EXTENDED_OPS + { +- DW_LNE_end_sequence = 1, +- DW_LNE_set_address = 2, +- DW_LNE_define_file = 3, ++ DW_LNE_end_sequence = 0x01, ++ DW_LNE_set_address = 0x02, ++ DW_LNE_define_file = 0x03, + // DWARF4. +- DW_LNE_set_discriminator = 4, ++ DW_LNE_set_discriminator = 0x04, + // HP extensions. + DW_LNE_HP_negate_is_UV_update = 0x11, + DW_LNE_HP_push_context = 0x12, +@@ -191,13 +204,15 @@ enum DW_LINE_EXTENDED_OPS + DW_LNE_HP_negate_post_semantics = 0x17, + DW_LNE_HP_negate_function_exit = 0x18, + DW_LNE_HP_negate_front_end_logical = 0x19, +- DW_LNE_HP_define_proc = 0x20 ++ DW_LNE_HP_define_proc = 0x20, ++ DW_LNE_lo_user = 0x80, ++ DW_LNE_hi_user = 0xff + }; + + enum DW_CHILDREN + { +- DW_CHILDREN_no =0x00, +- DW_CHILDREN_yes =0x01 ++ DW_CHILDREN_no = 0, ++ DW_CHILDREN_yes = 1 + }; + + // Source language names and codes. +@@ -247,20 +262,38 @@ enum DW_LANG + DW_LANG_HP_Assembler = 0x8007 + }; + ++// Range list entry kinds in .debug_rnglists* section. ++ ++enum DW_RLE ++{ ++ DW_RLE_end_of_list = 0x00, ++ DW_RLE_base_addressx = 0x01, ++ DW_RLE_startx_endx = 0x02, ++ DW_RLE_startx_length = 0x03, ++ DW_RLE_offset_pair = 0x04, ++ DW_RLE_base_address = 0x05, ++ DW_RLE_start_end = 0x06, ++ DW_RLE_start_length = 0x07 ++}; ++ + // DWARF section identifiers used in the package format. + // Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFissionDWP. ++// Added (with changes) in DWARF 5. + + enum DW_SECT + { +- DW_SECT_INFO = 1, +- DW_SECT_TYPES = 2, +- DW_SECT_ABBREV = 3, +- DW_SECT_LINE = 4, +- DW_SECT_LOC = 5, ++ DW_SECT_INFO = 1, ++ DW_SECT_ABBREV = 3, ++ DW_SECT_LINE = 4, ++ DW_SECT_LOCLISTS = 5, + DW_SECT_STR_OFFSETS = 6, +- DW_SECT_MACINFO = 7, +- DW_SECT_MACRO = 8, +- DW_SECT_MAX = DW_SECT_MACRO, ++ DW_SECT_MACINFO = 7, ++ DW_SECT_RNGLISTS = 8, ++ DW_SECT_MAX = DW_SECT_RNGLISTS, ++ // These were used only for the experimental Fission support in DWARF 4. ++ DW_SECT_TYPES = 2, ++ DW_SECT_LOC = 5, ++ DW_SECT_MACRO = 8 + }; + + } // End namespace elfcpp. +diff --git a/gold/dwarf_reader.cc b/gold/dwarf_reader.cc +index f0e6b89bde2..83a0114ed39 100644 +--- a/gold/dwarf_reader.cc ++++ b/gold/dwarf_reader.cc +@@ -26,6 +26,7 @@ + #include <utility> + #include <vector> + ++#include "debug.h" + #include "elfcpp_swap.h" + #include "dwarf.h" + #include "object.h" +@@ -275,6 +276,14 @@ Dwarf_abbrev_table::do_get_abbrev(unsigned int code) + uint64_t form = read_unsigned_LEB_128(this->buffer_pos_, &len); + this->buffer_pos_ += len; + ++ // For DW_FORM_implicit_const, read the constant. ++ int64_t implicit_const = 0; ++ if (form == elfcpp::DW_FORM_implicit_const) ++ { ++ implicit_const = read_signed_LEB_128(this->buffer_pos_, &len); ++ this->buffer_pos_ += len; ++ } ++ + // A (0,0) pair terminates the list. + if (attr == 0 && form == 0) + break; +@@ -282,7 +291,7 @@ Dwarf_abbrev_table::do_get_abbrev(unsigned int code) + if (attr == elfcpp::DW_AT_sibling) + entry->has_sibling_attribute = true; + +- entry->add_attribute(attr, form); ++ entry->add_attribute(attr, form, implicit_const); + } + + this->store_abbrev(nextcode, entry); +@@ -302,8 +311,16 @@ Dwarf_ranges_table::read_ranges_table( + Relobj* object, + const unsigned char* symtab, + off_t symtab_size, +- unsigned int ranges_shndx) ++ unsigned int ranges_shndx, ++ unsigned int version) + { ++ const std::string section_name(version < 5 ++ ? ".debug_ranges" ++ : ".debug_rnglists"); ++ const std::string compressed_section_name(version < 5 ++ ? ".zdebug_ranges" ++ : ".zdebug_rnglists"); ++ + // If we've already read this abbrev table, return immediately. + if (this->ranges_shndx_ > 0 + && this->ranges_shndx_ == ranges_shndx) +@@ -318,7 +335,7 @@ Dwarf_ranges_table::read_ranges_table( + for (unsigned int i = 1; i < object->shnum(); ++i) + { + std::string name = object->section_name(i); +- if (name == ".debug_ranges" || name == ".zdebug_ranges") ++ if (name == section_name || name == compressed_section_name) + { + ranges_shndx = i; + this->output_section_offset_ = object->output_section_offset(i); +@@ -393,7 +410,7 @@ Dwarf_ranges_table::read_range_list( + { + Dwarf_range_list* ranges; + +- if (!this->read_ranges_table(object, symtab, symtab_size, ranges_shndx)) ++ if (!this->read_ranges_table(object, symtab, symtab_size, ranges_shndx, 4)) + return NULL; + + // Correct the offset. For incremental update links, we have a +@@ -459,6 +476,125 @@ Dwarf_ranges_table::read_range_list( + return ranges; + } + ++// Read a DWARF 5 range list from section RANGES_SHNDX at offset RANGES_OFFSET. ++ ++Dwarf_range_list* ++Dwarf_ranges_table::read_range_list_v5( ++ Relobj* object, ++ const unsigned char* symtab, ++ off_t symtab_size, ++ unsigned int addr_size, ++ unsigned int ranges_shndx, ++ off_t offset) ++{ ++ Dwarf_range_list* ranges; ++ ++ if (!this->read_ranges_table(object, symtab, symtab_size, ranges_shndx, 5)) ++ return NULL; ++ ++ ranges = new Dwarf_range_list(); ++ off_t base = 0; ++ unsigned int shndx0 = 0; ++ ++ // Correct the offset. For incremental update links, we have a ++ // relocated offset that is relative to the output section, but ++ // here we need an offset relative to the input section. ++ offset -= this->output_section_offset_; ++ ++ // Read the range list at OFFSET. ++ const unsigned char* prle = this->ranges_buffer_ + offset; ++ while (prle < this->ranges_buffer_end_) ++ { ++ off_t start; ++ off_t end; ++ unsigned int shndx1 = 0; ++ unsigned int shndx2 = 0; ++ size_t len; ++ ++ // Read the entry type. ++ unsigned int rle_type = *prle++; ++ offset += 1; ++ ++ if (rle_type == elfcpp::DW_RLE_end_of_list) ++ break; ++ ++ switch (rle_type) ++ { ++ case elfcpp::DW_RLE_base_address: ++ if (addr_size == 4) ++ base = this->dwinfo_->read_from_pointer<32>(prle); ++ else ++ base = this->dwinfo_->read_from_pointer<64>(prle); ++ if (this->ranges_reloc_mapper_ != NULL) ++ shndx0 = this->lookup_reloc(offset, &base); ++ prle += addr_size; ++ offset += addr_size; ++ break; ++ ++ case elfcpp::DW_RLE_offset_pair: ++ start = read_unsigned_LEB_128(prle, &len); ++ prle += len; ++ offset += len; ++ end = read_unsigned_LEB_128(prle, &len); ++ prle += len; ++ offset += len; ++ if (shndx0 == 0 || object->is_section_included(shndx0)) ++ ranges->add(shndx0, base + start, base + end); ++ break; ++ ++ case elfcpp::DW_RLE_start_end: ++ if (addr_size == 4) ++ { ++ start = this->dwinfo_->read_from_pointer<32>(prle); ++ end = this->dwinfo_->read_from_pointer<32>(prle + 4); ++ } ++ else ++ { ++ start = this->dwinfo_->read_from_pointer<64>(prle); ++ end = this->dwinfo_->read_from_pointer<64>(prle + 8); ++ } ++ if (this->ranges_reloc_mapper_ != NULL) ++ { ++ shndx1 = this->lookup_reloc(offset, &start); ++ shndx2 = this->lookup_reloc(offset + addr_size, &end); ++ if (shndx1 != shndx2) ++ gold_warning(_("%s: DWARF info may be corrupt; offsets in a " ++ "range list entry are in different sections"), ++ object->name().c_str()); ++ } ++ prle += addr_size * 2; ++ offset += addr_size * 2; ++ if (shndx1 == 0 || object->is_section_included(shndx1)) ++ ranges->add(shndx1, start, end); ++ break; ++ ++ case elfcpp::DW_RLE_start_length: ++ if (addr_size == 4) ++ start = this->dwinfo_->read_from_pointer<32>(prle); ++ else ++ start = this->dwinfo_->read_from_pointer<64>(prle); ++ if (this->ranges_reloc_mapper_ != NULL) ++ shndx1 = this->lookup_reloc(offset, &start); ++ prle += addr_size; ++ offset += addr_size; ++ end = start + read_unsigned_LEB_128(prle, &len); ++ prle += len; ++ offset += len; ++ if (shndx1 == 0 || object->is_section_included(shndx1)) ++ ranges->add(shndx1, start, end); ++ break; ++ ++ default: ++ gold_warning(_("%s: DWARF range list contains " ++ "unsupported entry type (%d)"), ++ object->name().c_str(), rle_type); ++ break; ++ } ++ } ++ ++ return ranges; ++} ++ + // Look for a relocation at offset OFF in the range table, + // and return the section index and offset of the target. + +@@ -709,7 +845,13 @@ Dwarf_die::read_attributes() + case elfcpp::DW_FORM_flag_present: + attr_value.val.intval = 1; + break; ++ case elfcpp::DW_FORM_implicit_const: ++ attr_value.val.intval = ++ this->abbrev_code_->attributes[i].implicit_const; ++ break; + case elfcpp::DW_FORM_strp: ++ case elfcpp::DW_FORM_strp_sup: ++ case elfcpp::DW_FORM_line_strp: + { + off_t str_off; + if (this->dwinfo_->offset_size() == 4) +@@ -722,6 +864,26 @@ Dwarf_die::read_attributes() + attr_value.val.refval = str_off; + break; + } ++ case elfcpp::DW_FORM_strx: ++ case elfcpp::DW_FORM_GNU_str_index: ++ attr_value.val.uintval = read_unsigned_LEB_128(pattr, &len); ++ pattr += len; ++ break; ++ case elfcpp::DW_FORM_strx1: ++ attr_value.val.uintval = *pattr++; ++ break; ++ case elfcpp::DW_FORM_strx2: ++ attr_value.val.uintval = ++ this->dwinfo_->read_from_pointer<16>(&pattr); ++ break; ++ case elfcpp::DW_FORM_strx3: ++ attr_value.val.uintval = ++ this->dwinfo_->read_3bytes_from_pointer(&pattr); ++ break; ++ case elfcpp::DW_FORM_strx4: ++ attr_value.val.uintval = ++ this->dwinfo_->read_from_pointer<32>(&pattr); ++ break; + case elfcpp::DW_FORM_sec_offset: + { + off_t sec_off; +@@ -747,7 +909,6 @@ Dwarf_die::read_attributes() + this->dwinfo_->lookup_reloc(attr_off, &sec_off); + attr_value.aux.shndx = shndx; + attr_value.val.refval = sec_off; +- ref_form = true; + break; + } + case elfcpp::DW_FORM_ref_addr: +@@ -815,6 +976,7 @@ Dwarf_die::read_attributes() + break; + } + case elfcpp::DW_FORM_ref4: ++ case elfcpp::DW_FORM_ref_sup4: + { + off_t sec_off; + sec_off = this->dwinfo_->read_from_pointer<32>(&pattr); +@@ -835,11 +997,20 @@ Dwarf_die::read_attributes() + attr_value.val.intval = sec_off; + break; + } ++ case elfcpp::DW_FORM_data16: ++ { ++ // For now, treat this as a 16-byte block. ++ attr_value.val.blockval = pattr; ++ attr_value.aux.blocklen = 16; ++ pattr += 16; ++ break; ++ } + case elfcpp::DW_FORM_ref_sig8: + attr_value.val.uintval = + this->dwinfo_->read_from_pointer<64>(&pattr); + break; + case elfcpp::DW_FORM_ref8: ++ case elfcpp::DW_FORM_ref_sup8: + { + off_t sec_off; + sec_off = this->dwinfo_->read_from_pointer<64>(&pattr); +@@ -856,11 +1027,29 @@ Dwarf_die::read_attributes() + pattr += len; + break; + case elfcpp::DW_FORM_udata: ++ attr_value.val.uintval = read_unsigned_LEB_128(pattr, &len); ++ pattr += len; ++ break; ++ case elfcpp::DW_FORM_addrx: + case elfcpp::DW_FORM_GNU_addr_index: +- case elfcpp::DW_FORM_GNU_str_index: + attr_value.val.uintval = read_unsigned_LEB_128(pattr, &len); + pattr += len; + break; ++ case elfcpp::DW_FORM_addrx1: ++ attr_value.val.uintval = *pattr++; ++ break; ++ case elfcpp::DW_FORM_addrx2: ++ attr_value.val.uintval = ++ this->dwinfo_->read_from_pointer<16>(&pattr); ++ break; ++ case elfcpp::DW_FORM_addrx3: ++ attr_value.val.uintval = ++ this->dwinfo_->read_3bytes_from_pointer(&pattr); ++ break; ++ case elfcpp::DW_FORM_addrx4: ++ attr_value.val.uintval = ++ this->dwinfo_->read_from_pointer<32>(&pattr); ++ break; + case elfcpp::DW_FORM_sdata: + attr_value.val.intval = read_signed_LEB_128(pattr, &len); + pattr += len; +@@ -870,6 +1059,11 @@ Dwarf_die::read_attributes() + len = strlen(attr_value.val.stringval); + pattr += len + 1; + break; ++ case elfcpp::DW_FORM_loclistx: ++ case elfcpp::DW_FORM_rnglistx: ++ attr_value.val.uintval = read_unsigned_LEB_128(pattr, &len); ++ pattr += len; ++ break; + default: + return false; + } +@@ -954,9 +1148,12 @@ Dwarf_die::skip_attributes() + switch(form) + { + case elfcpp::DW_FORM_flag_present: ++ case elfcpp::DW_FORM_implicit_const: + break; + case elfcpp::DW_FORM_strp: + case elfcpp::DW_FORM_sec_offset: ++ case elfcpp::DW_FORM_strp_sup: ++ case elfcpp::DW_FORM_line_strp: + pattr += this->dwinfo_->offset_size(); + break; + case elfcpp::DW_FORM_addr: +@@ -993,23 +1190,42 @@ Dwarf_die::skip_attributes() + case elfcpp::DW_FORM_data1: + case elfcpp::DW_FORM_ref1: + case elfcpp::DW_FORM_flag: ++ case elfcpp::DW_FORM_strx1: ++ case elfcpp::DW_FORM_addrx1: + pattr += 1; + break; + case elfcpp::DW_FORM_data2: + case elfcpp::DW_FORM_ref2: ++ case elfcpp::DW_FORM_strx2: ++ case elfcpp::DW_FORM_addrx2: + pattr += 2; + break; ++ case elfcpp::DW_FORM_strx3: ++ case elfcpp::DW_FORM_addrx3: ++ pattr += 3; ++ break; + case elfcpp::DW_FORM_data4: + case elfcpp::DW_FORM_ref4: ++ case elfcpp::DW_FORM_ref_sup4: ++ case elfcpp::DW_FORM_strx4: ++ case elfcpp::DW_FORM_addrx4: + pattr += 4; + break; + case elfcpp::DW_FORM_data8: + case elfcpp::DW_FORM_ref8: + case elfcpp::DW_FORM_ref_sig8: ++ case elfcpp::DW_FORM_ref_sup8: + pattr += 8; + break; ++ case elfcpp::DW_FORM_data16: ++ pattr += 16; ++ break; + case elfcpp::DW_FORM_ref_udata: + case elfcpp::DW_FORM_udata: ++ case elfcpp::DW_FORM_addrx: ++ case elfcpp::DW_FORM_strx: ++ case elfcpp::DW_FORM_loclistx: ++ case elfcpp::DW_FORM_rnglistx: + case elfcpp::DW_FORM_GNU_addr_index: + case elfcpp::DW_FORM_GNU_str_index: + read_unsigned_LEB_128(pattr, &len); +@@ -1313,6 +1529,13 @@ Dwarf_info_reader::do_parse() + elfcpp::Swap_unaligned<16, big_endian>::readval(pinfo); + pinfo += 2; + ++ // DWARF 5: Read the unit type (1 byte) and address size (1 byte). ++ if (this->cu_version_ >= 5) ++ { ++ this->unit_type_ = *pinfo++; ++ this->address_size_ = *pinfo++; ++ } ++ + // Read debug_abbrev_offset (4 or 8 bytes). + if (this->offset_size_ == 4) + abbrev_offset = elfcpp::Swap_unaligned<32, big_endian>::readval(pinfo); +@@ -1333,13 +1556,14 @@ Dwarf_info_reader::do_parse() + } + pinfo += this->offset_size_; + +- // Read address_size (1 byte). +- this->address_size_ = *pinfo++; ++ // DWARF 2-4: Read address_size (1 byte). ++ if (this->cu_version_ < 5) ++ this->address_size_ = *pinfo++; + + // For type units, read the two extra fields. + uint64_t signature = 0; + off_t type_offset = 0; +- if (this->is_type_unit_) ++ if (this->is_type_unit()) + { + if (!this->check_buffer(pinfo + 8 + this->offset_size_)) + break; +@@ -1369,7 +1593,7 @@ Dwarf_info_reader::do_parse() + if (root_die.tag() != 0) + { + // Visit the CU or TU. +- if (this->is_type_unit_) ++ if (this->is_type_unit()) + this->visit_type_unit(section_offset + this->cu_offset_, + cu_end - cu_start, type_offset, signature, + &root_die); +@@ -1460,6 +1684,19 @@ Dwarf_info_reader::read_from_pointer(const unsigned char** source) + return return_value; + } + ++// Read a 3-byte integer. Update SOURCE after read. ++inline typename elfcpp::Valtype_base<32>::Valtype ++Dwarf_info_reader::read_3bytes_from_pointer(const unsigned char** source) ++{ ++ typename elfcpp::Valtype_base<32>::Valtype return_value; ++ if (this->object_->is_big_endian()) ++ return_value = ((*source)[0] << 16) | ((*source)[1] << 8) | (*source)[2]; ++ else ++ return_value = ((*source)[2] << 16) | ((*source)[1] << 8) | (*source)[0]; ++ *source += 3; ++ return return_value; ++} ++ + // Look for a relocation at offset ATTR_OFF in the dwarf info, + // and return the section index and offset of the target. + +@@ -1561,27 +1798,40 @@ Sized_dwarf_line_info<size, big_endian>::Sized_dwarf_line_info( + Object* object, + unsigned int read_shndx) + : data_valid_(false), buffer_(NULL), buffer_start_(NULL), ++ str_buffer_(NULL), str_buffer_start_(NULL), + reloc_mapper_(NULL), symtab_buffer_(NULL), directories_(), files_(), +- current_header_index_(-1) ++ current_header_index_(-1), reloc_map_(), line_number_map_() + { +- unsigned int debug_shndx; ++ unsigned int debug_line_shndx = 0; ++ unsigned int debug_line_str_shndx = 0; + +- for (debug_shndx = 1; debug_shndx < object->shnum(); ++debug_shndx) ++ for (unsigned int i = 1; i < object->shnum(); ++i) + { ++ section_size_type buffer_size; ++ bool is_new = false; ++ + // FIXME: do this more efficiently: section_name() isn't super-fast +- std::string name = object->section_name(debug_shndx); ++ std::string name = object->section_name(i); + if (name == ".debug_line" || name == ".zdebug_line") + { +- section_size_type buffer_size; +- bool is_new = false; +- this->buffer_ = object->decompressed_section_contents(debug_shndx, +- &buffer_size, +- &is_new); ++ this->buffer_ = ++ object->decompressed_section_contents(i, &buffer_size, &is_new); + if (is_new) + this->buffer_start_ = this->buffer_; + this->buffer_end_ = this->buffer_ + buffer_size; +- break; ++ debug_line_shndx = i; ++ } ++ else if (name == ".debug_line_str" || name == ".zdebug_line_str") ++ { ++ this->str_buffer_ = ++ object->decompressed_section_contents(i, &buffer_size, &is_new); ++ if (is_new) ++ this->str_buffer_start_ = this->str_buffer_; ++ this->str_buffer_end_ = this->str_buffer_ + buffer_size; ++ debug_line_str_shndx = i; + } ++ if (debug_line_shndx > 0 && debug_line_str_shndx > 0) ++ break; + } + if (this->buffer_ == NULL) + return; +@@ -1594,7 +1844,7 @@ Sized_dwarf_line_info<size, big_endian>::Sized_dwarf_line_info( + unsigned int reloc_sh_type = object->section_type(i); + if ((reloc_sh_type == elfcpp::SHT_REL + || reloc_sh_type == elfcpp::SHT_RELA) +- && object->section_info(i) == debug_shndx) ++ && object->section_info(i) == debug_line_shndx) + { + reloc_shndx = i; + this->track_relocs_type_ = reloc_sh_type; +@@ -1640,65 +1890,80 @@ Sized_dwarf_line_info<size, big_endian>::read_header_prolog( + uint32_t initial_length = elfcpp::Swap_unaligned<32, big_endian>::readval(lineptr); + lineptr += 4; + +- // In DWARF2/3, if the initial length is all 1 bits, then the offset ++ // In DWARF, if the initial length is all 1 bits, then the offset + // size is 8 and we need to read the next 8 bytes for the real length. + if (initial_length == 0xffffffff) + { +- header_.offset_size = 8; ++ this->header_.offset_size = 8; + initial_length = elfcpp::Swap_unaligned<64, big_endian>::readval(lineptr); + lineptr += 8; + } + else +- header_.offset_size = 4; ++ this->header_.offset_size = 4; + +- header_.total_length = initial_length; ++ this->header_.total_length = initial_length; + +- gold_assert(lineptr + header_.total_length <= buffer_end_); ++ this->end_of_unit_ = lineptr + initial_length; ++ gold_assert(this->end_of_unit_ <= buffer_end_); + +- header_.version = elfcpp::Swap_unaligned<16, big_endian>::readval(lineptr); ++ this->header_.version = ++ elfcpp::Swap_unaligned<16, big_endian>::readval(lineptr); + lineptr += 2; + +- // Skip address size and segment selector for DWARF5. +- if (header_.version >= 5) +- lineptr += 2; ++ // We can only read versions 2-5 of the DWARF line number table. ++ // For other versions, just skip the entire line number table. ++ if (this->header_.version < 2 || this->header_.version > 5) ++ return this->end_of_unit_; + +- if (header_.offset_size == 4) +- header_.prologue_length = elfcpp::Swap_unaligned<32, big_endian>::readval(lineptr); ++ // DWARF 5 only: address size and segment selector. ++ if (this->header_.version >= 5) ++ { ++ this->header_.address_size = *lineptr; ++ // We ignore the segment selector. ++ lineptr += 2; ++ } ++ ++ if (this->header_.offset_size == 4) ++ this->header_.prologue_length = ++ elfcpp::Swap_unaligned<32, big_endian>::readval(lineptr); + else +- header_.prologue_length = elfcpp::Swap_unaligned<64, big_endian>::readval(lineptr); +- lineptr += header_.offset_size; ++ this->header_.prologue_length = ++ elfcpp::Swap_unaligned<64, big_endian>::readval(lineptr); ++ lineptr += this->header_.offset_size; + +- header_.min_insn_length = *lineptr; ++ this->end_of_header_length_ = lineptr; ++ ++ this->header_.min_insn_length = *lineptr; + lineptr += 1; + +- if (header_.version < 4) +- header_.max_ops_per_insn = 1; ++ if (this->header_.version < 4) ++ this->header_.max_ops_per_insn = 1; + else + { + // DWARF 4 added the maximum_operations_per_instruction field. +- header_.max_ops_per_insn = *lineptr; ++ this->header_.max_ops_per_insn = *lineptr; + lineptr += 1; + // TODO: Add support for values other than 1. +- gold_assert(header_.max_ops_per_insn == 1); ++ gold_assert(this->header_.max_ops_per_insn == 1); + } + +- header_.default_is_stmt = *lineptr; ++ this->header_.default_is_stmt = *lineptr; + lineptr += 1; + +- header_.line_base = *reinterpret_cast<const signed char*>(lineptr); ++ this->header_.line_base = *reinterpret_cast<const signed char*>(lineptr); + lineptr += 1; + +- header_.line_range = *lineptr; ++ this->header_.line_range = *lineptr; + lineptr += 1; + +- header_.opcode_base = *lineptr; ++ this->header_.opcode_base = *lineptr; + lineptr += 1; + +- header_.std_opcode_lengths.resize(header_.opcode_base + 1); +- header_.std_opcode_lengths[0] = 0; +- for (int i = 1; i < header_.opcode_base; i++) ++ this->header_.std_opcode_lengths.resize(this->header_.opcode_base + 1); ++ this->header_.std_opcode_lengths[0] = 0; ++ for (int i = 1; i < this->header_.opcode_base; i++) + { +- header_.std_opcode_lengths[i] = *lineptr; ++ this->header_.std_opcode_lengths[i] = *lineptr; + lineptr += 1; + } + +@@ -1707,10 +1972,11 @@ Sized_dwarf_line_info<size, big_endian>::read_header_prolog( + + // The header for a debug_line section is mildly complicated, because + // the line info is very tightly encoded. ++// This routine is for DWARF versions 2, 3, and 4. + + template<int size, bool big_endian> + const unsigned char* +-Sized_dwarf_line_info<size, big_endian>::read_header_tables( ++Sized_dwarf_line_info<size, big_endian>::read_header_tables_v2( + const unsigned char* lineptr) + { + ++this->current_header_index_; +@@ -1775,6 +2041,169 @@ Sized_dwarf_line_info<size, big_endian>::read_header_tables( + return lineptr; + } + ++// This routine is for DWARF version 5. ++ ++template<int size, bool big_endian> ++const unsigned char* ++Sized_dwarf_line_info<size, big_endian>::read_header_tables_v5( ++ const unsigned char* lineptr) ++{ ++ size_t len; ++ ++ ++this->current_header_index_; ++ ++ gold_assert(static_cast<int>(this->directories_.size()) ++ == this->current_header_index_); ++ gold_assert(static_cast<int>(this->files_.size()) ++ == this->current_header_index_); ++ ++ // Read the directory list. ++ unsigned int format_count = *lineptr; ++ lineptr += 1; ++ ++ unsigned int *types = new unsigned int[format_count]; ++ unsigned int *forms = new unsigned int[format_count]; ++ ++ for (unsigned int i = 0; i < format_count; i++) ++ { ++ types[i] = read_unsigned_LEB_128(lineptr, &len); ++ lineptr += len; ++ forms[i] = read_unsigned_LEB_128(lineptr, &len); ++ lineptr += len; ++ } ++ ++ uint64_t entry_count = read_unsigned_LEB_128(lineptr, &len); ++ lineptr += len; ++ this->directories_.push_back(std::vector<std::string>(0)); ++ std::vector<std::string>& dir_list = this->directories_.back(); ++ ++ for (unsigned int j = 0; j < entry_count; j++) ++ { ++ std::string dirname; ++ ++ for (unsigned int i = 0; i < format_count; i++) ++ { ++ if (types[i] == elfcpp::DW_LNCT_path) ++ { ++ if (forms[i] == elfcpp::DW_FORM_string) ++ { ++ dirname = reinterpret_cast<const char*>(lineptr); ++ lineptr += dirname.size() + 1; ++ } ++ else if (forms[i] == elfcpp::DW_FORM_line_strp) ++ { ++ uint64_t offset; ++ if (this->header_.offset_size == 4) ++ offset = ++ elfcpp::Swap_unaligned<32, big_endian>::readval(lineptr); ++ else ++ offset = ++ elfcpp::Swap_unaligned<64, big_endian>::readval(lineptr); ++ typename Reloc_map::const_iterator it ++ = this->reloc_map_.find(lineptr - this->buffer_); ++ if (it != reloc_map_.end()) ++ { ++ if (this->track_relocs_type_ == elfcpp::SHT_RELA) ++ offset = 0; ++ offset += it->second.second; ++ } ++ lineptr += this->header_.offset_size; ++ dirname = reinterpret_cast<const char*>(this->str_buffer_ ++ + offset); ++ } ++ else ++ return lineptr; ++ } ++ else ++ return lineptr; ++ } ++ dir_list.push_back(dirname); ++ } ++ ++ delete[] types; ++ delete[] forms; ++ ++ // Read the filenames list. ++ format_count = *lineptr; ++ lineptr += 1; ++ ++ types = new unsigned int[format_count]; ++ forms = new unsigned int[format_count]; ++ ++ for (unsigned int i = 0; i < format_count; i++) ++ { ++ types[i] = read_unsigned_LEB_128(lineptr, &len); ++ lineptr += len; ++ forms[i] = read_unsigned_LEB_128(lineptr, &len); ++ lineptr += len; ++ } ++ ++ entry_count = read_unsigned_LEB_128(lineptr, &len); ++ lineptr += len; ++ this->files_.push_back( ++ std::vector<std::pair<int, std::string> >(0)); ++ std::vector<std::pair<int, std::string> >& file_list = this->files_.back(); ++ ++ for (unsigned int j = 0; j < entry_count; j++) ++ { ++ const char* path = NULL; ++ int dirindex = 0; ++ ++ for (unsigned int i = 0; i < format_count; i++) ++ { ++ if (types[i] == elfcpp::DW_LNCT_path) ++ { ++ if (forms[i] == elfcpp::DW_FORM_string) ++ { ++ path = reinterpret_cast<const char*>(lineptr); ++ lineptr += strlen(path) + 1; ++ } ++ else if (forms[i] == elfcpp::DW_FORM_line_strp) ++ { ++ uint64_t offset; ++ if (this->header_.offset_size == 4) ++ offset = elfcpp::Swap_unaligned<32, big_endian>::readval(lineptr); ++ else ++ offset = elfcpp::Swap_unaligned<64, big_endian>::readval(lineptr); ++ typename Reloc_map::const_iterator it ++ = this->reloc_map_.find(lineptr - this->buffer_); ++ if (it != reloc_map_.end()) ++ { ++ if (this->track_relocs_type_ == elfcpp::SHT_RELA) ++ offset = 0; ++ offset += it->second.second; ++ } ++ lineptr += this->header_.offset_size; ++ path = reinterpret_cast<const char*>(this->str_buffer_ ++ + offset); ++ } ++ else ++ return lineptr; ++ } ++ else if (types[i] == elfcpp::DW_LNCT_directory_index) ++ { ++ if (forms[i] == elfcpp::DW_FORM_udata) ++ { ++ dirindex = read_unsigned_LEB_128(lineptr, &len); ++ lineptr += len; ++ } ++ else ++ return lineptr; ++ } ++ else ++ return lineptr; ++ } ++ gold_debug(DEBUG_LOCATION, "File %3d: %s", ++ static_cast<int>(file_list.size()), path); ++ file_list.push_back(std::make_pair(dirindex, path)); ++ } ++ ++ delete[] types; ++ delete[] forms; ++ ++ return lineptr; ++} ++ + // Process a single opcode in the .debug.line structure. + + template<int size, bool big_endian> +@@ -1790,15 +2219,15 @@ Sized_dwarf_line_info<size, big_endian>::process_one_opcode( + + // If the opcode is great than the opcode_base, it is a special + // opcode. Most line programs consist mainly of special opcodes. +- if (opcode >= header_.opcode_base) ++ if (opcode >= this->header_.opcode_base) + { +- opcode -= header_.opcode_base; +- const int advance_address = ((opcode / header_.line_range) +- * header_.min_insn_length); ++ opcode -= this->header_.opcode_base; ++ const int advance_address = ((opcode / this->header_.line_range) ++ * this->header_.min_insn_length); + lsm->address += advance_address; + +- const int advance_line = ((opcode % header_.line_range) +- + header_.line_base); ++ const int advance_line = ((opcode % this->header_.line_range) ++ + this->header_.line_base); + lsm->line_num += advance_line; + lsm->basic_block = true; + *len = oplen; +@@ -1818,13 +2247,13 @@ Sized_dwarf_line_info<size, big_endian>::process_one_opcode( + const uint64_t advance_address + = read_unsigned_LEB_128(start, &templen); + oplen += templen; +- lsm->address += header_.min_insn_length * advance_address; ++ lsm->address += this->header_.min_insn_length * advance_address; + } + break; + + case elfcpp::DW_LNS_advance_line: + { +- const uint64_t advance_line = read_signed_LEB_128(start, &templen); ++ const int64_t advance_line = read_signed_LEB_128(start, &templen); + oplen += templen; + lsm->line_num += advance_line; + } +@@ -1865,9 +2294,9 @@ Sized_dwarf_line_info<size, big_endian>::process_one_opcode( + + case elfcpp::DW_LNS_const_add_pc: + { +- const int advance_address = (header_.min_insn_length +- * ((255 - header_.opcode_base) +- / header_.line_range)); ++ const int advance_address = (this->header_.min_insn_length ++ * ((255 - this->header_.opcode_base) ++ / this->header_.line_range)); + lsm->address += advance_address; + } + break; +@@ -1950,7 +2379,7 @@ Sized_dwarf_line_info<size, big_endian>::process_one_opcode( + default: + { + // Ignore unknown opcode silently +- for (int i = 0; i < header_.std_opcode_lengths[opcode]; i++) ++ for (int i = 0; i < this->header_.std_opcode_lengths[opcode]; i++) + { + size_t templen; + read_unsigned_LEB_128(start, &templen); +@@ -1970,28 +2399,24 @@ Sized_dwarf_line_info<size, big_endian>::process_one_opcode( + template<int size, bool big_endian> + unsigned const char* + Sized_dwarf_line_info<size, big_endian>::read_lines(unsigned const char* lineptr, ++ unsigned const char* endptr, + unsigned int shndx) + { + struct LineStateMachine lsm; + +- // LENGTHSTART is the place the length field is based on. It is the +- // point in the header after the initial length field. +- const unsigned char* lengthstart = buffer_; +- +- // In 64 bit dwarf, the initial length is 12 bytes, because of the +- // 0xffffffff at the start. +- if (header_.offset_size == 8) +- lengthstart += 12; +- else +- lengthstart += 4; +- +- while (lineptr < lengthstart + header_.total_length) ++ while (lineptr < endptr) + { +- ResetLineStateMachine(&lsm, header_.default_is_stmt); ++ ResetLineStateMachine(&lsm, this->header_.default_is_stmt); + while (!lsm.end_sequence) + { + size_t oplength; ++ ++ if (lineptr >= endptr) ++ break; ++ + bool add_line = this->process_one_opcode(lineptr, &lsm, &oplength); ++ lineptr += oplength; ++ + if (add_line + && (shndx == -1U || lsm.shndx == -1U || shndx == lsm.shndx)) + { +@@ -2012,11 +2437,10 @@ Sized_dwarf_line_info<size, big_endian>::read_lines(unsigned const char* lineptr + map.back().last_line_for_offset = false; + map.push_back(entry); + } +- lineptr += oplength; + } + } + +- return lengthstart + header_.total_length; ++ return endptr; + } + + // Read the relocations into a Reloc_map. +@@ -2057,9 +2481,17 @@ Sized_dwarf_line_info<size, big_endian>::read_line_mappings(unsigned int shndx) + { + const unsigned char* lineptr = this->buffer_; + lineptr = this->read_header_prolog(lineptr); +- lineptr = this->read_header_tables(lineptr); +- lineptr = this->read_lines(lineptr, shndx); +- this->buffer_ = lineptr; ++ if (this->header_.version >= 2 && this->header_.version <= 4) ++ { ++ lineptr = this->read_header_tables_v2(lineptr); ++ lineptr = this->read_lines(lineptr, this->end_of_unit_, shndx); ++ } ++ else if (this->header_.version == 5) ++ { ++ lineptr = this->read_header_tables_v5(lineptr); ++ lineptr = this->read_lines(lineptr, this->end_of_unit_, shndx); ++ } ++ this->buffer_ = this->end_of_unit_; + } + + // Sort the lines numbers, so addr2line can use binary search. +@@ -2215,6 +2647,9 @@ Sized_dwarf_line_info<size, big_endian>::do_addr2line( + off_t offset, + std::vector<std::string>* other_lines) + { ++ gold_debug(DEBUG_LOCATION, "do_addr2line: shndx %u offset %08x", ++ shndx, static_cast<int>(offset)); ++ + if (this->data_valid_ == false) + return ""; + +diff --git a/gold/dwarf_reader.h b/gold/dwarf_reader.h +index 80b2231327c..921a1f7c876 100644 +--- a/gold/dwarf_reader.h ++++ b/gold/dwarf_reader.h +@@ -173,11 +173,12 @@ class Dwarf_abbrev_table + // An attribute list entry. + struct Attribute + { +- Attribute(unsigned int a, unsigned int f) +- : attr(a), form(f) ++ Attribute(unsigned int a, unsigned int f, int c) ++ : attr(a), form(f), implicit_const(c) + { } + unsigned int attr; + unsigned int form; ++ int implicit_const; + }; + + // An abbrev code entry. +@@ -190,9 +191,9 @@ class Dwarf_abbrev_table + } + + void +- add_attribute(unsigned int attr, unsigned int form) ++ add_attribute(unsigned int attr, unsigned int form, int implicit_const) + { +- this->attributes.push_back(Attribute(attr, form)); ++ this->attributes.push_back(Attribute(attr, form, implicit_const)); + } + + // The DWARF tag. +@@ -349,14 +350,15 @@ class Dwarf_ranges_table + delete this->ranges_reloc_mapper_; + } + +- // Read the ranges table from an object file. ++ // Fetch the contents of the ranges table from an object file. + bool + read_ranges_table(Relobj* object, + const unsigned char* symtab, + off_t symtab_size, +- unsigned int ranges_shndx); ++ unsigned int ranges_shndx, ++ unsigned int version); + +- // Read the range table from an object file. ++ // Read the DWARF 2/3/4 range table. + Dwarf_range_list* + read_range_list(Relobj* object, + const unsigned char* symtab, +@@ -365,6 +367,15 @@ class Dwarf_ranges_table + unsigned int ranges_shndx, + off_t ranges_offset); + ++ // Read the DWARF 5 rnglists table. ++ Dwarf_range_list* ++ read_range_list_v5(Relobj* object, ++ const unsigned char* symtab, ++ off_t symtab_size, ++ unsigned int address_size, ++ unsigned int ranges_shndx, ++ off_t ranges_offset); ++ + // Look for a relocation at offset OFF in the range table, + // and return the section index and offset of the target. + unsigned int +@@ -490,8 +501,6 @@ class Dwarf_die + unsigned int shndx; + // Block length for block forms. + unsigned int blocklen; +- // Attribute offset for DW_FORM_strp. +- unsigned int attr_off; + } aux; + }; + +@@ -684,6 +693,10 @@ class Dwarf_die + // calls the various visit_xxx() methods for each header. Clients + // should derive a new class from this one and implement the + // visit_compilation_unit() and visit_type_unit() functions. ++// IS_TYPE_UNIT is true if we are reading from a .debug_types section, ++// which is used only in DWARF 4. For DWARF 5, it will be false, ++// and we will determine whether it's a type init when we parse the ++// header. + + class Dwarf_info_reader + { +@@ -695,7 +708,7 @@ class Dwarf_info_reader + unsigned int shndx, + unsigned int reloc_shndx, + unsigned int reloc_type) +- : is_type_unit_(is_type_unit), object_(object), symtab_(symtab), ++ : object_(object), symtab_(symtab), + symtab_size_(symtab_size), shndx_(shndx), reloc_shndx_(reloc_shndx), + reloc_type_(reloc_type), abbrev_shndx_(0), string_shndx_(0), + buffer_(NULL), buffer_end_(NULL), cu_offset_(0), cu_length_(0), +@@ -703,7 +716,12 @@ class Dwarf_info_reader + abbrev_table_(), ranges_table_(this), + reloc_mapper_(NULL), string_buffer_(NULL), string_buffer_end_(NULL), + owns_string_buffer_(false), string_output_section_offset_(0) +- { } ++ { ++ // For DWARF 4, we infer the unit type from the section name. ++ // For DWARF 5, we will read this from the unit header. ++ this->unit_type_ = ++ (is_type_unit ? elfcpp::DW_UT_type : elfcpp::DW_UT_compile); ++ } + + virtual + ~Dwarf_info_reader() +@@ -714,6 +732,13 @@ class Dwarf_info_reader + delete[] this->string_buffer_; + } + ++ bool ++ is_type_unit() const ++ { ++ return (this->unit_type_ == elfcpp::DW_UT_type ++ || this->unit_type_ == elfcpp::DW_UT_split_type); ++ } ++ + // Begin parsing the debug info. This calls visit_compilation_unit() + // or visit_type_unit() for each compilation or type unit found in the + // section, and visit_die() for each top-level DIE. +@@ -745,6 +770,9 @@ class Dwarf_info_reader + inline typename elfcpp::Valtype_base<valsize>::Valtype + read_from_pointer(const unsigned char** source); + ++ inline typename elfcpp::Valtype_base<32>::Valtype ++ read_3bytes_from_pointer(const unsigned char** source); ++ + // Look for a relocation at offset ATTR_OFF in the dwarf info, + // and return the section index and offset of the target. + unsigned int +@@ -818,12 +846,20 @@ class Dwarf_info_reader + Dwarf_range_list* + read_range_list(unsigned int ranges_shndx, off_t ranges_offset) + { +- return this->ranges_table_.read_range_list(this->object_, +- this->symtab_, +- this->symtab_size_, +- this->address_size_, +- ranges_shndx, +- ranges_offset); ++ if (this->cu_version_ < 5) ++ return this->ranges_table_.read_range_list(this->object_, ++ this->symtab_, ++ this->symtab_size_, ++ this->address_size_, ++ ranges_shndx, ++ ranges_offset); ++ else ++ return this->ranges_table_.read_range_list_v5(this->object_, ++ this->symtab_, ++ this->symtab_size_, ++ this->address_size_, ++ ranges_shndx, ++ ranges_offset); + } + + // Return the object. +@@ -873,8 +909,8 @@ class Dwarf_info_reader + bool + do_read_string_table(unsigned int string_shndx); + +- // True if this is a type unit; false for a compilation unit. +- bool is_type_unit_; ++ // The unit type (DW_UT_xxx). ++ unsigned int unit_type_; + // The object containing the .debug_info or .debug_types input section. + Relobj* object_; + // The ELF symbol table. +@@ -1008,6 +1044,8 @@ class Sized_dwarf_line_info : public Dwarf_line_info + { + if (this->buffer_start_ != NULL) + delete[] this->buffer_start_; ++ if (this->str_buffer_start_ != NULL) ++ delete[] this->str_buffer_start_; + } + + private: +@@ -1030,19 +1068,23 @@ class Sized_dwarf_line_info : public Dwarf_line_info + void + read_relocs(); + +- // Reads the DWARF2/3 header for this line info. Each takes as input ++ // Reads the DWARF header for this line info. Each takes as input + // a starting buffer position, and returns the ending position. + const unsigned char* + read_header_prolog(const unsigned char* lineptr); + + const unsigned char* +- read_header_tables(const unsigned char* lineptr); ++ read_header_tables_v2(const unsigned char* lineptr); ++ ++ const unsigned char* ++ read_header_tables_v5(const unsigned char* lineptr); + +- // Reads the DWARF2/3 line information. If shndx is non-negative, ++ // Reads the DWARF line information. If shndx is non-negative, + // discard all line information that doesn't pertain to the given + // section. + const unsigned char* +- read_lines(const unsigned char* lineptr, unsigned int shndx); ++ read_lines(const unsigned char* lineptr, const unsigned char* endptr, ++ unsigned int shndx); + + // Process a single line info opcode at START using the state + // machine at LSM. Return true if we should define a line using the +@@ -1069,6 +1111,7 @@ class Sized_dwarf_line_info : public Dwarf_line_info + { + off_t total_length; + int version; ++ int address_size; + off_t prologue_length; + int min_insn_length; // insn stands for instruction + int max_ops_per_insn; // Added in DWARF-4. +@@ -1089,6 +1132,20 @@ class Sized_dwarf_line_info : public Dwarf_line_info + // of the buffer. + const unsigned char* buffer_start_; + ++ // str_buffer is the buffer for the line table strings. ++ const unsigned char* str_buffer_; ++ const unsigned char* str_buffer_end_; ++ // If the buffer was allocated temporarily, and therefore must be ++ // deallocated in the dtor, this contains a pointer to the start ++ // of the buffer. ++ const unsigned char* str_buffer_start_; ++ ++ // Pointer to the end of the header_length field (aka prologue_length). ++ const unsigned char* end_of_header_length_; ++ ++ // Pointer to the end of the current compilation unit. ++ const unsigned char* end_of_unit_; ++ + // This has relocations that point into buffer. + Sized_elf_reloc_mapper<size, big_endian>* reloc_mapper_; + // The type of the reloc section in track_relocs_--SHT_REL or SHT_RELA. diff --git a/poky/meta/recipes-devtools/bison/bison_3.7.5.bb b/poky/meta/recipes-devtools/bison/bison_3.7.6.bb index c8bbea4454..a8d57f2742 100644 --- a/poky/meta/recipes-devtools/bison/bison_3.7.5.bb +++ b/poky/meta/recipes-devtools/bison/bison_3.7.6.bb @@ -5,7 +5,7 @@ grammars ought to work with Bison with no change. Anyone familiar with Yacc shou little trouble." HOMEPAGE = "http://www.gnu.org/software/bison/" LICENSE = "GPLv3" -LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" +LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464" SECTION = "devel" DEPENDS = "bison-native flex-native" @@ -13,12 +13,27 @@ SRC_URI = "${GNU_MIRROR}/bison/bison-${PV}.tar.xz \ file://add-with-bisonlocaledir.patch \ file://0001-Use-mapped-file-name-for-symbols.patch \ " -SRC_URI[sha256sum] = "e8c53bc5bc396d636622d0f25e31ca92fd53f00b09629f13ef540d564a6b31ab" +SRC_URI[sha256sum] = "67d68ce1e22192050525643fc0a7a22297576682bef6a5c51446903f5aeef3cf" + +inherit autotools gettext texinfo # No point in hardcoding path to m4, just use PATH -EXTRA_OECONF += "M4=m4" +CACHED_CONFIGUREVARS = "ac_cv_path_M4=m4" -inherit autotools gettext texinfo +PACKAGECONFIG ??= "readline ${@ 'textstyle' if d.getVar('USE_NLS') == 'yes' else ''}" +PACKAGECONFIG_class-native ??= "" + +# Make readline and textstyle optional. There are recipie for these, but leave them +# disabled for the native recipe. This prevents host contamination of the native tool. +PACKAGECONFIG[readline] = "--with-libreadline-prefix,--without-libreadline-prefix,readline" +PACKAGECONFIG[textstyle] = "--with-libtextstyle-prefix,--without-libtextstyle-prefix,gettext" + +# Include the cached configure variables, configure is really good at finding +# libreadline, even if we don't want it. +CACHED_CONFIGUREVARS += "${@bb.utils.contains('PACKAGECONFIG', 'readline', '', ' \ + ac_cv_header_readline_history_h=no \ + ac_cv_header_readline_readline_h=no \ + gl_cv_lib_readline=no', d)}" # The automatic m4 path detection gets confused, so force the right value acpaths = "-I ./m4" diff --git a/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.11.1.bb b/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.12.1.bb index b5e0561c15..3fc959bf8e 100644 --- a/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.11.1.bb +++ b/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.12.1.bb @@ -7,10 +7,10 @@ btrfs and an utility (btrfs-convert) to make a btrfs filesystem from an ext3." HOMEPAGE = "https://btrfs.wiki.kernel.org" -LICENSE = "GPLv2 & LGPLv3+" +LICENSE = "GPLv2 & LGPLv2.1+" LIC_FILES_CHKSUM = " \ file://COPYING;md5=fcb02dc552a041dee27e4b85c7396067 \ - file://libbtrfsutil/COPYING.LESSER;md5=3000208d539ec061b899bce1d9ce9404 \ + file://libbtrfsutil/COPYING;md5=4fbd65380cdd255951079008b364516c \ " SECTION = "base" DEPENDS = "lzo util-linux zlib" @@ -19,7 +19,7 @@ DEPENDS_append_class-target = " udev" SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git \ file://0001-Add-a-possibility-to-specify-where-python-modules-ar.patch \ " -SRCREV = "8d5051f279f7994fb80536ef8f846f06d121d898" +SRCREV = "96d77fcefdd3b9fd297b5aabbce6dc43e2315ee2" S = "${WORKDIR}/git" PACKAGECONFIG ??= " \ @@ -31,6 +31,7 @@ PACKAGECONFIG ??= " \ PACKAGECONFIG[manpages] = "--enable-documentation, --disable-documentation, asciidoc-native xmlto-native" PACKAGECONFIG[programs] = "--enable-programs,--disable-programs" PACKAGECONFIG[convert] = "--enable-convert --with-convert=ext2,--disable-convert --without-convert,e2fsprogs" +PACKAGECONFIG[zoned] = "--enable-zoned,--disable-zoned" PACKAGECONFIG[python] = "--enable-python,--disable-python,python3-setuptools-native" PACKAGECONFIG[zstd] = "--enable-zstd,--disable-zstd,zstd" diff --git a/poky/meta/recipes-devtools/ccache/ccache/0001-doc-allow-disabling-docs-man-page-generation.patch b/poky/meta/recipes-devtools/ccache/ccache/0001-doc-allow-disabling-docs-man-page-generation.patch deleted file mode 100644 index 51ca0e82f6..0000000000 --- a/poky/meta/recipes-devtools/ccache/ccache/0001-doc-allow-disabling-docs-man-page-generation.patch +++ /dev/null @@ -1,161 +0,0 @@ -From aebabafe085dd1b84027a1e31e5566c82528bd62 Mon Sep 17 00:00:00 2001 -From: Bastian Krause <bst@pengutronix.de> -Date: Tue, 4 May 2021 11:41:56 +0200 -Subject: [PATCH] doc: allow disabling docs/man page generation - -The assumption that HTML documentation and manual pages should be -generated if the required tools (asciidoc) are present is not always -true. So add a cmake option that allows disabling the docs/man page -generation. The default is to generate docs/man pages like before. - -Origin: https://github.com/ccache/ccache/pull/844 -Upstream-Status: Submitted -Signed-off-by: Bastian Krause <bst@pengutronix.de> ---- - doc/CMakeLists.txt | 128 +++++++++++++++++++++++---------------------- - 1 file changed, 66 insertions(+), 62 deletions(-) - -diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt -index c5ce224d..74b7831b 100644 ---- a/doc/CMakeLists.txt -+++ b/doc/CMakeLists.txt -@@ -1,70 +1,74 @@ -+option(BUILD_DOCS "Indicates whether HTML documentation and manual pages should be built or not" ON) -+ - find_program(ASCIIDOC_EXE asciidoc) - mark_as_advanced(ASCIIDOC_EXE) # Don't show in CMake UIs - --if(NOT ASCIIDOC_EXE) -- message(WARNING "Could not find asciidoc; documentation will not be generated") --else() -- # -- # HTML documentation -- # -- function(generate_html adoc_file) -- get_filename_component(base_name "${adoc_file}" NAME_WE) -- set(html_file "${base_name}.html") -- add_custom_command( -- OUTPUT "${html_file}" -- COMMAND -- ${ASCIIDOC_EXE} -- -o "${html_file}" -- -a revnumber="${CCACHE_VERSION}" -- -a toc -- -b xhtml11 -- "${CMAKE_SOURCE_DIR}/${adoc_file}" -- MAIN_DEPENDENCY "${CMAKE_SOURCE_DIR}/${adoc_file}" -- ) -- set(html_files "${html_files}" "${html_file}" PARENT_SCOPE) -- endfunction() -+if (BUILD_DOCS) -+ if(NOT ASCIIDOC_EXE) -+ message(WARNING "Could not find asciidoc; documentation will not be generated") -+ else() -+ # -+ # HTML documentation -+ # -+ function(generate_html adoc_file) -+ get_filename_component(base_name "${adoc_file}" NAME_WE) -+ set(html_file "${base_name}.html") -+ add_custom_command( -+ OUTPUT "${html_file}" -+ COMMAND -+ ${ASCIIDOC_EXE} -+ -o "${html_file}" -+ -a revnumber="${CCACHE_VERSION}" -+ -a toc -+ -b xhtml11 -+ "${CMAKE_SOURCE_DIR}/${adoc_file}" -+ MAIN_DEPENDENCY "${CMAKE_SOURCE_DIR}/${adoc_file}" -+ ) -+ set(html_files "${html_files}" "${html_file}" PARENT_SCOPE) -+ endfunction() - -- generate_html(LICENSE.adoc) -- generate_html(doc/AUTHORS.adoc) -- generate_html(doc/MANUAL.adoc) -- generate_html(doc/NEWS.adoc) -+ generate_html(LICENSE.adoc) -+ generate_html(doc/AUTHORS.adoc) -+ generate_html(doc/MANUAL.adoc) -+ generate_html(doc/NEWS.adoc) - -- add_custom_target(doc-html DEPENDS "${html_files}") -- set(doc_files "${html_files}") -+ add_custom_target(doc-html DEPENDS "${html_files}") -+ set(doc_files "${html_files}") - -- # -- # Man page -- # -- find_program(A2X_EXE a2x) -- mark_as_advanced(A2X_EXE) # Don't show in CMake UIs -- if(NOT A2X_EXE) -- message(WARNING "Could not find a2x; man page will not be generated") -- else() -- # MANUAL.adoc -> MANUAL.xml -> man page -- add_custom_command( -- OUTPUT MANUAL.xml -- COMMAND -- ${ASCIIDOC_EXE} -- -o - -- -a revnumber=${CCACHE_VERSION} -- -d manpage -- -b docbook "${CMAKE_SOURCE_DIR}/doc/MANUAL.adoc" -- | perl -pe 's!<literal>\(.*?\)</literal>!<emphasis role="strong">\\1</emphasis>!g' -- >MANUAL.xml -- MAIN_DEPENDENCY "${CMAKE_SOURCE_DIR}/doc/MANUAL.adoc" -- ) -- add_custom_command( -- OUTPUT ccache.1 -- COMMAND ${A2X_EXE} --doctype manpage --format manpage MANUAL.xml -- MAIN_DEPENDENCY MANUAL.xml -- ) -- add_custom_target(doc-man-page DEPENDS ccache.1) -- install( -- FILES "${CMAKE_CURRENT_BINARY_DIR}/ccache.1" -- DESTINATION "${CMAKE_INSTALL_MANDIR}/man1" -- ) -- set(doc_files "${doc_files}" ccache.1) -- endif() -+ # -+ # Man page -+ # -+ find_program(A2X_EXE a2x) -+ mark_as_advanced(A2X_EXE) # Don't show in CMake UIs -+ if(NOT A2X_EXE) -+ message(WARNING "Could not find a2x; man page will not be generated") -+ else() -+ # MANUAL.adoc -> MANUAL.xml -> man page -+ add_custom_command( -+ OUTPUT MANUAL.xml -+ COMMAND -+ ${ASCIIDOC_EXE} -+ -o - -+ -a revnumber=${CCACHE_VERSION} -+ -d manpage -+ -b docbook "${CMAKE_SOURCE_DIR}/doc/MANUAL.adoc" -+ | perl -pe 's!<literal>\(.*?\)</literal>!<emphasis role="strong">\\1</emphasis>!g' -+ >MANUAL.xml -+ MAIN_DEPENDENCY "${CMAKE_SOURCE_DIR}/doc/MANUAL.adoc" -+ ) -+ add_custom_command( -+ OUTPUT ccache.1 -+ COMMAND ${A2X_EXE} --doctype manpage --format manpage MANUAL.xml -+ MAIN_DEPENDENCY MANUAL.xml -+ ) -+ add_custom_target(doc-man-page DEPENDS ccache.1) -+ install( -+ FILES "${CMAKE_CURRENT_BINARY_DIR}/ccache.1" -+ DESTINATION "${CMAKE_INSTALL_MANDIR}/man1" -+ ) -+ set(doc_files "${doc_files}" ccache.1) -+ endif() - -- add_custom_target(doc ALL DEPENDS "${doc_files}") -+ add_custom_target(doc ALL DEPENDS "${doc_files}") -+ endif() - endif() --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/ccache/ccache_4.2.1.bb b/poky/meta/recipes-devtools/ccache/ccache_4.3.bb index 8dd5893d68..53a0bcf7ae 100644 --- a/poky/meta/recipes-devtools/ccache/ccache_4.2.1.bb +++ b/poky/meta/recipes-devtools/ccache/ccache_4.3.bb @@ -11,10 +11,8 @@ LIC_FILES_CHKSUM = "file://LICENSE.adoc;md5=698a26b57e513d678e1e7727bf56395b" DEPENDS = "zstd" -SRC_URI = "https://github.com/ccache/ccache/releases/download/v${PV}/${BP}.tar.gz \ - file://0001-doc-allow-disabling-docs-man-page-generation.patch \ - " -SRC_URI[sha256sum] = "320d2b17d2f76393e5d4bb28c8dee5ca783248e9cd23dff0654694d60f8a4b62" +SRC_URI = "https://github.com/ccache/ccache/releases/download/v${PV}/${BP}.tar.gz" +SRC_URI[sha256sum] = "b9789c42e52c73e99428f311a34def9ffec3462736439afd12dbacc7987c1533" UPSTREAM_CHECK_URI = "https://github.com/ccache/ccache/releases/" @@ -24,4 +22,4 @@ PATCHTOOL = "patch" BBCLASSEXTEND = "native nativesdk" -PACKAGECONFIG[docs] = "-DBUILD_DOCS=ON,-DBUILD_DOCS=OFF,asciidoc" +PACKAGECONFIG[docs] = "-DENABLE_DOCUMENTATION=ON,-DENABLE_DOCUMENTATION=OFF,asciidoc" diff --git a/poky/meta/recipes-devtools/cmake/cmake-native_3.19.5.bb b/poky/meta/recipes-devtools/cmake/cmake-native_3.20.2.bb index d91e42ef9a..335097d387 100644 --- a/poky/meta/recipes-devtools/cmake/cmake-native_3.19.5.bb +++ b/poky/meta/recipes-devtools/cmake/cmake-native_3.20.2.bb @@ -1,7 +1,7 @@ require cmake.inc inherit native -DEPENDS += "bzip2-replacement-native xz-native zlib-native curl-native ncurses-native" +DEPENDS += "bzip2-replacement-native xz-native zlib-native curl-native ncurses-native zstd-native" SRC_URI += "file://OEToolchainConfig.cmake \ file://environment.d-cmake.sh \ diff --git a/poky/meta/recipes-devtools/cmake/cmake.inc b/poky/meta/recipes-devtools/cmake/cmake.inc index e0f59a6c67..be43760628 100644 --- a/poky/meta/recipes-devtools/cmake/cmake.inc +++ b/poky/meta/recipes-devtools/cmake/cmake.inc @@ -10,19 +10,18 @@ HOMEPAGE = "http://www.cmake.org/" BUGTRACKER = "http://public.kitware.com/Bug/my_view_page.php" SECTION = "console/utils" LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://Copyright.txt;md5=c721f56fce89ba2eadc2fdd8ba1f4d83 \ +LIC_FILES_CHKSUM = "file://Copyright.txt;md5=31023e1d3f51ca90a58f55bcee8e2339 \ file://Source/cmake.h;beginline=1;endline=2;md5=a5f70e1fef8614734eae0d62b4f5891b \ " CMAKE_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}" SRC_URI = "https://cmake.org/files/v${CMAKE_MAJOR_VERSION}/cmake-${PV}.tar.gz \ - file://0002-cmake-Prevent-the-detection-of-Qt5.patch \ file://0003-cmake-support-OpenEmbedded-Qt4-tool-binary-names.patch \ file://0004-Fail-silently-if-system-Qt-installation-is-broken.patch \ " -SRC_URI[sha256sum] = "c432296eb5dec6d71eae15d140f6297d63df44e9ffe3e453628d1dc8fc4201ce" +SRC_URI[sha256sum] = "aecf6ecb975179eb3bb6a4a50cae192d41e92b9372b02300f9e8f1d5f559544e" UPSTREAM_CHECK_REGEX = "cmake-(?P<pver>\d+(\.\d+)+)\.tar" diff --git a/poky/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch b/poky/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch index 8181510324..9609f5f7c2 100644 --- a/poky/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch +++ b/poky/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch @@ -1,4 +1,4 @@ -From 66d5b27dc37ef6243f6549e16d0285ba6c064a6e Mon Sep 17 00:00:00 2001 +From e75f76b00cc9c1cfc231c5e731e975552f5dd13e Mon Sep 17 00:00:00 2001 From: Cody P Schafer <dev@codyps.com> Date: Thu, 27 Apr 2017 11:35:05 -0400 Subject: [PATCH] CMakeDetermineSystem: use oe environment vars to load default @@ -25,7 +25,7 @@ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> 1 file changed, 7 insertions(+) diff --git a/Modules/CMakeDetermineSystem.cmake b/Modules/CMakeDetermineSystem.cmake -index bae270d..5bb6bc0 100644 +index bae270de..5bb6bc0d 100644 --- a/Modules/CMakeDetermineSystem.cmake +++ b/Modules/CMakeDetermineSystem.cmake @@ -111,6 +111,13 @@ else() diff --git a/poky/meta/recipes-devtools/cmake/cmake/0002-cmake-Prevent-the-detection-of-Qt5.patch b/poky/meta/recipes-devtools/cmake/cmake/0002-cmake-Prevent-the-detection-of-Qt5.patch deleted file mode 100644 index 33db07ccf0..0000000000 --- a/poky/meta/recipes-devtools/cmake/cmake/0002-cmake-Prevent-the-detection-of-Qt5.patch +++ /dev/null @@ -1,122 +0,0 @@ -From 98abade8cc119e076e4c5f1461c5188f6d49c1d8 Mon Sep 17 00:00:00 2001 -From: Otavio Salvador <otavio@ossystems.com.br> -Date: Wed, 17 Jan 2018 10:02:14 -0200 -Subject: [PATCH] cmake: Prevent the detection of Qt5 - -Organization: O.S. Systems Software LTDA. - -CMake doesn't have dependency on qt4/qt5, so these tests usually fail -but still can cause undeterministic results or build failures (when -OE_QMAKE_PATH_EXTERNAL_HOST_BINS is undefined or native qmake removed -while running the test in cmake) - -Upstream-Status: Inappropriate [configuration] - -Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> - ---- - Source/QtDialog/CMakeLists.txt | 2 +- - Tests/CMakeLists.txt | 2 +- - Tests/Qt4And5Automoc/CMakeLists.txt | 4 ++-- - Tests/QtAutogen/AutogenGuiTest.cmake | 3 +-- - Tests/QtAutogen/MacOsFW/CMakeLists.txt | 2 +- - Tests/RunCMake/CMakeLists.txt | 2 +- - Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake | 2 +- - 7 files changed, 8 insertions(+), 9 deletions(-) - -diff --git a/Source/QtDialog/CMakeLists.txt b/Source/QtDialog/CMakeLists.txt -index 452a303..d0a9fb4 100644 ---- a/Source/QtDialog/CMakeLists.txt -+++ b/Source/QtDialog/CMakeLists.txt -@@ -3,7 +3,7 @@ - - project(QtDialog) - CMake_OPTIONAL_COMPONENT(cmake-gui) --find_package(Qt5Widgets REQUIRED) -+#find_package(Qt5Widgets REQUIRED) - - set(CMake_QT_EXTRA_LIBRARIES) - -diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt -index 1fb47cb..e022229 100644 ---- a/Tests/CMakeLists.txt -+++ b/Tests/CMakeLists.txt -@@ -251,7 +251,7 @@ if(BUILD_TESTING) - set(CMake_TEST_Qt5 1) - endif() - if(CMake_TEST_Qt5) -- find_package(Qt5Widgets QUIET NO_MODULE) -+ #find_package(Qt5Widgets QUIET NO_MODULE) - endif() - - if(NOT CMake_TEST_EXTERNAL_CMAKE) -diff --git a/Tests/Qt4And5Automoc/CMakeLists.txt b/Tests/Qt4And5Automoc/CMakeLists.txt -index ad74961..a9dd74b 100644 ---- a/Tests/Qt4And5Automoc/CMakeLists.txt -+++ b/Tests/Qt4And5Automoc/CMakeLists.txt -@@ -3,11 +3,11 @@ cmake_minimum_required(VERSION 2.8.12) - project(Qt4And5Automoc) - - if (QT_REVERSE_FIND_ORDER) -- find_package(Qt5Core REQUIRED) -+ #find_package(Qt5Core REQUIRED) - find_package(Qt4 REQUIRED) - else() - find_package(Qt4 REQUIRED) -- find_package(Qt5Core REQUIRED) -+ #find_package(Qt5Core REQUIRED) - endif() - - set(CMAKE_AUTOMOC ON) -diff --git a/Tests/QtAutogen/AutogenGuiTest.cmake b/Tests/QtAutogen/AutogenGuiTest.cmake -index b76d341..a6e0acb 100644 ---- a/Tests/QtAutogen/AutogenGuiTest.cmake -+++ b/Tests/QtAutogen/AutogenGuiTest.cmake -@@ -22,8 +22,7 @@ if (QT_TEST_VERSION EQUAL 4) - endmacro() - - elseif(QT_TEST_VERSION EQUAL 5) -- -- find_package(Qt5Widgets REQUIRED) -+ #find_package(Qt5Widgets REQUIRED) - - set(QT_QTCORE_TARGET Qt5::Core) - set(QT_LIBRARIES Qt5::Widgets) -diff --git a/Tests/QtAutogen/MacOsFW/CMakeLists.txt b/Tests/QtAutogen/MacOsFW/CMakeLists.txt -index c08efc4..87e25d9 100644 ---- a/Tests/QtAutogen/MacOsFW/CMakeLists.txt -+++ b/Tests/QtAutogen/MacOsFW/CMakeLists.txt -@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.10) - project(MacOsFW) - include("../AutogenGuiTest.cmake") - --find_package(Qt5Test REQUIRED) -+#find_package(Qt5Test REQUIRED) - - set(CMAKE_CXX_STANDARD 11) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output/bin) -diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt -index 370dd76..6bacbff 100644 ---- a/Tests/RunCMake/CMakeLists.txt -+++ b/Tests/RunCMake/CMakeLists.txt -@@ -473,7 +473,7 @@ if(NOT WIN32) - endif () - - find_package(Qt4 QUIET) --find_package(Qt5Core QUIET) -+#find_package(Qt5Core QUIET) - if (QT4_FOUND AND Qt5Core_FOUND AND NOT Qt5Core_VERSION VERSION_LESS 5.1.0) - add_RunCMake_test(IncompatibleQt) - endif() -diff --git a/Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake b/Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake -index 4fccdc4..b76e1e5 100644 ---- a/Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake -+++ b/Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake -@@ -1,6 +1,6 @@ - - find_package(Qt4 REQUIRED) --find_package(Qt5Core REQUIRED) -+#find_package(Qt5Core REQUIRED) - - add_executable(mainexe main.cpp) - target_link_libraries(mainexe Qt4::QtCore Qt5::Core) diff --git a/poky/meta/recipes-devtools/cmake/cmake_3.19.5.bb b/poky/meta/recipes-devtools/cmake/cmake_3.20.2.bb index 64c92b89f2..64c92b89f2 100644 --- a/poky/meta/recipes-devtools/cmake/cmake_3.19.5.bb +++ b/poky/meta/recipes-devtools/cmake/cmake_3.20.2.bb diff --git a/poky/meta/recipes-devtools/createrepo-c/createrepo-c/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch b/poky/meta/recipes-devtools/createrepo-c/createrepo-c/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch index d675af4f8b..4b844574ea 100644 --- a/poky/meta/recipes-devtools/createrepo-c/createrepo-c/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch +++ b/poky/meta/recipes-devtools/createrepo-c/createrepo-c/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch @@ -1,4 +1,4 @@ -From 218a4760945be7a404df6515ffbc769c92791f9b Mon Sep 17 00:00:00 2001 +From 6f8f6d151b831b60f6e7892aa9294a6361353c72 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Fri, 30 Dec 2016 18:31:02 +0200 Subject: [PATCH] Do not set PYTHON_INSTALL_DIR by running python @@ -11,11 +11,11 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python/CMakeLists.txt b/src/python/CMakeLists.txt -index 855127f..dff1d97 100644 +index ecc262d..a86514c 100644 --- a/src/python/CMakeLists.txt +++ b/src/python/CMakeLists.txt @@ -14,7 +14,7 @@ if (NOT SKBUILD) - FIND_PACKAGE(PythonInterp 3 EXACT REQUIRED) + FIND_PACKAGE(PythonLibs 3 REQUIRED) endif (NOT SKBUILD) -EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from distutils import sysconfig; stdout.write(sysconfig.get_python_lib(True))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR) diff --git a/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.0.bb b/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.2.bb index e0433806b2..76bdd69836 100644 --- a/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.0.bb +++ b/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.2.bb @@ -8,7 +8,7 @@ SRC_URI = "git://github.com/rpm-software-management/createrepo_c \ file://0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \ " -SRCREV = "909a0636665ed96f97babc3b887f9badc88875c3" +SRCREV = "8eff6ed99f5fd0ba844cb8513963435caab5fd3c" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/dejagnu/dejagnu_1.6.2.bb b/poky/meta/recipes-devtools/dejagnu/dejagnu_1.6.2.bb index 0a007bb2cd..ce242c3593 100644 --- a/poky/meta/recipes-devtools/dejagnu/dejagnu_1.6.2.bb +++ b/poky/meta/recipes-devtools/dejagnu/dejagnu_1.6.2.bb @@ -7,6 +7,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" SECTION = "devel" DEPENDS += "expect-native" +RDEPENDS_${PN} = "expect" inherit autotools diff --git a/poky/meta/recipes-devtools/distcc/distcc_3.3.5.bb b/poky/meta/recipes-devtools/distcc/distcc_3.4.bb index 5c2644199e..3bab6d53eb 100644 --- a/poky/meta/recipes-devtools/distcc/distcc_3.3.5.bb +++ b/poky/meta/recipes-devtools/distcc/distcc_3.4.bb @@ -20,7 +20,7 @@ SRC_URI = "git://github.com/distcc/distcc.git \ file://distcc \ file://distcc.service \ " -SRCREV = "8572e2a1af39e69b2a2d74622fed6d2dd7dca9b7" +SRCREV = "50d821efe99cae82c05be0a4ab3b4035ef0d3883" S = "${WORKDIR}/git" UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)" diff --git a/poky/meta/recipes-devtools/dnf/dnf/0001-dnf-rpm-miscutils.py-fix-usage-of-_.patch b/poky/meta/recipes-devtools/dnf/dnf/0001-dnf-rpm-miscutils.py-fix-usage-of-_.patch new file mode 100644 index 0000000000..99afe09840 --- /dev/null +++ b/poky/meta/recipes-devtools/dnf/dnf/0001-dnf-rpm-miscutils.py-fix-usage-of-_.patch @@ -0,0 +1,39 @@ +From 2729c00f0060beab8537a9bebc796b170949093d Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Tue, 4 May 2021 22:03:30 +0200 +Subject: [PATCH 1/2] dnf/rpm/miscutils.py: fix usage of _() + +Specifically: +- an import of _ was missing +- _ was reused for a different purpose + +Upstream-Status: Submitted [https://github.com/rpm-software-management/dnf/pull/1762] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + dnf/rpm/miscutils.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/dnf/rpm/miscutils.py b/dnf/rpm/miscutils.py +index 235aaf28f..7e33d4c42 100644 +--- a/dnf/rpm/miscutils.py ++++ b/dnf/rpm/miscutils.py +@@ -22,6 +22,7 @@ import subprocess + import logging + + from dnf.i18n import ucd ++from dnf.i18n import _ + from shutil import which + + +@@ -46,7 +47,7 @@ def _verifyPkgUsingRpmkeys(package, installroot): + env={'LC_ALL': 'C'}, + stdout=subprocess.PIPE, + cwd='/') as p: +- data, _ = p.communicate() ++ data, err = p.communicate() + if p.returncode != 0 or data != (package.encode('ascii', 'strict') + b': digests signatures OK\n'): + return 0 + else: +-- +2.31.1 + diff --git a/poky/meta/recipes-devtools/dnf/dnf/0002-dnf-rpm-miscutils.py-do-not-hardcode-usr-bin-rpmkeys.patch b/poky/meta/recipes-devtools/dnf/dnf/0002-dnf-rpm-miscutils.py-do-not-hardcode-usr-bin-rpmkeys.patch new file mode 100644 index 0000000000..b4c9e074d6 --- /dev/null +++ b/poky/meta/recipes-devtools/dnf/dnf/0002-dnf-rpm-miscutils.py-do-not-hardcode-usr-bin-rpmkeys.patch @@ -0,0 +1,37 @@ +From dc14022a99dc017c52c484efb32729729baf854c Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Tue, 4 May 2021 22:07:32 +0200 +Subject: [PATCH 2/2] dnf/rpm/miscutils.py: do not hardcode /usr/bin/rpmkeys + +Some build systems (e.g. Yocto) place a specially configured +rpmkeys executable elsewhere and set up PATH accordingly; +it's better to always take it from there. + +Upstream-Status: Submitted [https://github.com/rpm-software-management/dnf/pull/1763] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + dnf/rpm/miscutils.py | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/dnf/rpm/miscutils.py b/dnf/rpm/miscutils.py +index 7e33d4c42..fcd956db9 100644 +--- a/dnf/rpm/miscutils.py ++++ b/dnf/rpm/miscutils.py +@@ -30,11 +30,9 @@ logger = logging.getLogger('dnf') + + + def _verifyPkgUsingRpmkeys(package, installroot): +- rpmkeys_binary = '/usr/bin/rpmkeys' +- if not os.path.isfile(rpmkeys_binary): +- rpmkeys_binary = which("rpmkeys") +- logger.info(_('Using rpmkeys executable from {path} to verify signature for package: {package}.').format( +- path=rpmkeys_binary, package=package)) ++ rpmkeys_binary = which("rpmkeys") ++ logger.info(_('Using rpmkeys executable from {path} to verify signature for package: {package}.').format( ++ path=rpmkeys_binary, package=package)) + + if not os.path.isfile(rpmkeys_binary): + logger.critical(_('Cannot find rpmkeys executable to verify signatures.')) +-- +2.31.1 + diff --git a/poky/meta/recipes-devtools/dnf/dnf_4.6.0.bb b/poky/meta/recipes-devtools/dnf/dnf_4.7.0.bb index 6651e64352..7314eaf7b8 100644 --- a/poky/meta/recipes-devtools/dnf/dnf_4.6.0.bb +++ b/poky/meta/recipes-devtools/dnf/dnf_4.7.0.bb @@ -16,9 +16,11 @@ SRC_URI = "git://github.com/rpm-software-management/dnf.git \ file://0030-Run-python-scripts-using-env.patch \ file://0001-set-python-path-for-completion_helper.patch \ file://0001-dnf-write-the-log-lock-to-root.patch \ + file://0001-dnf-rpm-miscutils.py-fix-usage-of-_.patch \ + file://0002-dnf-rpm-miscutils.py-do-not-hardcode-usr-bin-rpmkeys.patch \ " -SRCREV = "c826d7db401ebf9b59b2fa74570a919e4af2673e" +SRCREV = "395541fbf8f87f81cdca7567f22be1182e55bea7" UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/dpkg/dpkg_1.20.7.1.bb b/poky/meta/recipes-devtools/dpkg/dpkg_1.20.9.bb index 55ac84f724..60ae3ff736 100644 --- a/poky/meta/recipes-devtools/dpkg/dpkg_1.20.7.1.bb +++ b/poky/meta/recipes-devtools/dpkg/dpkg_1.20.9.bb @@ -1,7 +1,7 @@ require dpkg.inc LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" -SRC_URI = "git://salsa.debian.org/dpkg-team/dpkg.git;protocol=https;branch=sid \ +SRC_URI = "git://salsa.debian.org/dpkg-team/dpkg.git;protocol=https;branch=1.20.x \ file://noman.patch \ file://remove-tar-no-timestamp.patch \ file://arch_pm.patch \ @@ -19,6 +19,6 @@ SRC_URI = "git://salsa.debian.org/dpkg-team/dpkg.git;protocol=https;branch=sid \ SRC_URI_append_class-native = " file://0001-build.c-ignore-return-of-1-from-tar-cf.patch" -SRCREV = "667bf0aeb92e0e7bb225ee273569c5e2389083bd" +SRCREV = "2177b782b16e77e97c9643961a5ae3c639bcc4a3" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-do-unlock-on-error.patch b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-do-unlock-on-error.patch new file mode 100644 index 0000000000..26f972b313 --- /dev/null +++ b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-do-unlock-on-error.patch @@ -0,0 +1,24 @@ +From 42ba67f9a51ef959e7fd8dac29b5398c121c6976 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Fri, 30 Apr 2021 23:45:56 +0200 +Subject: [PATCH] lib/ext2fs/unix_io.c: do unlock on error + +Upstream-Status: Submitted [https://github.com/tytso/e2fsprogs/pull/68] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + lib/ext2fs/unix_io.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c +index 64eee342..528c2fbc 100644 +--- a/lib/ext2fs/unix_io.c ++++ b/lib/ext2fs/unix_io.c +@@ -398,7 +398,7 @@ static errcode_t raw_write_blk(io_channel channel, + mutex_lock(data, BOUNCE_MTX); + if (ext2fs_llseek(data->dev, location, SEEK_SET) < 0) { + retval = errno ? errno : EXT2_ET_LLSEEK_FAILED; +- goto error_out; ++ goto error_unlock; + } + actual = write(data->dev, buf, size); + mutex_unlock(data, BOUNCE_MTX); diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-revert-parts-of-libext2fs-fix-p.patch b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-revert-parts-of-libext2fs-fix-p.patch new file mode 100644 index 0000000000..2452f7e08e --- /dev/null +++ b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-revert-parts-of-libext2fs-fix-p.patch @@ -0,0 +1,48 @@ +From 3593063f735f453d43f461292e26913436c11ca3 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Sat, 1 May 2021 13:06:12 +0200 +Subject: [PATCH] lib/ext2fs/unix_io.c: revert parts of "libext2fs: fix + potential races in unix_io" + +Upstream-Status: Submitted [https://github.com/tytso/e2fsprogs/pull/68] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + lib/ext2fs/unix_io.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c +index 528c2fbc..f4916b21 100644 +--- a/lib/ext2fs/unix_io.c ++++ b/lib/ext2fs/unix_io.c +@@ -311,10 +311,10 @@ bounce_read: + size += really_read; + goto short_read; + } +- actual = size; +- if (actual > align_size) +- actual = align_size; +- actual -= offset; ++ if ((actual + offset) > align_size) ++ actual = align_size - offset; ++ if (actual > size) ++ actual = size; + memcpy(buf, data->bounce + offset, actual); + + really_read += actual; +@@ -455,9 +455,10 @@ bounce_write: + } + } + actual = size; +- if (actual > align_size) +- actual = align_size; +- actual -= offset; ++ if ((actual + offset) > align_size) ++ actual = align_size - offset; ++ if (actual > size) ++ actual = size; + memcpy(((char *)data->bounce) + offset, buf, actual); + if (ext2fs_llseek(data->dev, aligned_blk * align_size, SEEK_SET) < 0) { + retval = errno ? errno : EXT2_ET_LLSEEK_FAILED; +-- +2.24.0 + diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch index d7c07c3b0f..e8b2aafbf3 100644 --- a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch +++ b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch @@ -1,4 +1,4 @@ -From 9263b8764702f2b26ddaaf80808ebab31a1dba3b Mon Sep 17 00:00:00 2001 +From 8957443bcbea43685c76eb3cbc5009f7fd529283 Mon Sep 17 00:00:00 2001 From: Jackie Huang <jackie.huang@windriver.com> Date: Wed, 10 Aug 2016 11:19:44 +0800 Subject: [PATCH] Fix missing check for permission denied. diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch index 88d0ae77c9..96eb7f20df 100644 --- a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch +++ b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch @@ -1,4 +1,4 @@ -From 6e4c1644a3a8cacf7c1f5953cc378589bb046d5a Mon Sep 17 00:00:00 2001 +From 3b75308cc75adc249db6ca36e42fe93309b9a018 Mon Sep 17 00:00:00 2001 From: Ross Burton <ross.burton@intel.com> Date: Mon, 23 Dec 2013 13:38:34 +0000 Subject: [PATCH] e2fsprogs: silence debugfs @@ -14,10 +14,10 @@ Signed-off-by: Ross Burton <ross.burton@intel.com> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c -index 132c5f9d..98063727 100644 +index b67a88bc..76dd5556 100644 --- a/debugfs/debugfs.c +++ b/debugfs/debugfs.c -@@ -2510,7 +2510,7 @@ static int source_file(const char *cmd_file, int ss_idx) +@@ -2518,7 +2518,7 @@ static int source_file(const char *cmd_file, int ss_idx) cp = strchr(buf, '\r'); if (cp) *cp = 0; diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.1.bb b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.2.bb index be8b67c35d..fc022f37de 100644 --- a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.1.bb +++ b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.2.bb @@ -4,6 +4,8 @@ SRC_URI += "file://remove.ldconfig.call.patch \ file://run-ptest \ file://ptest.patch \ file://mkdir_p.patch \ + file://0001-lib-ext2fs-unix_io.c-do-unlock-on-error.patch \ + file://0001-lib-ext2fs-unix_io.c-revert-parts-of-libext2fs-fix-p.patch \ " SRC_URI_append_class-native = " file://e2fsprogs-fix-missing-check-for-permission-denied.patch \ @@ -11,7 +13,7 @@ SRC_URI_append_class-native = " file://e2fsprogs-fix-missing-check-for-permissio " -SRCREV = "3114c623f56b0d61f5f34b85f7b23d28f6c848c0" +SRCREV = "1eea0e2bd9a6760ebad834d5d2cf700fffe5ebe2" UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+\.\d+(\.\d+)*)$" EXTRA_OECONF += "--libdir=${base_libdir} --sbindir=${base_sbindir} \ diff --git a/poky/meta/recipes-devtools/erofs-utils/erofs-utils_1.2.1.bb b/poky/meta/recipes-devtools/erofs-utils/erofs-utils_1.2.1.bb new file mode 100644 index 0000000000..6435fea68c --- /dev/null +++ b/poky/meta/recipes-devtools/erofs-utils/erofs-utils_1.2.1.bb @@ -0,0 +1,21 @@ +SUMMARY = "Tools for erofs filesystems" +LICENSE = "GPLv2+" +SECTION = "base" +LIC_FILES_CHKSUM = "file://COPYING;md5=94fa01670a2a8f2d3ab2de15004e0848" +HOMEPAGE = "https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/tree/README" + +SRCREV = "d1f4953edfcf4f51c71ba91586e21fc6ce9f6db9" +SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git" + +S = "${WORKDIR}/git" + +DEPENDS = "util-linux-libuuid" + +inherit pkgconfig autotools + +PACKAGECONFIG ??= "lz4" +PACKAGECONFIG[lz4] = "--enable-lz4,--disable-lz4,lz4" + +EXTRA_OECONF = "${PACKAGECONFIG_CONFARGS} --disable-fuse" + +BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-devtools/flex/flex_2.6.4.bb b/poky/meta/recipes-devtools/flex/flex_2.6.4.bb index 1d43d2228a..54e7e01729 100644 --- a/poky/meta/recipes-devtools/flex/flex_2.6.4.bb +++ b/poky/meta/recipes-devtools/flex/flex_2.6.4.bb @@ -3,12 +3,14 @@ DESCRIPTION = "Flex is a fast lexical analyser generator. Flex is a tool for ge lexical patterns in text." HOMEPAGE = "http://sourceforge.net/projects/flex/" SECTION = "devel" -LICENSE = "BSD-2-Clause" +LICENSE = "BSD-3-Clause & LGPL-2.0+" +LICENSE_${PN}-libfl = "BSD-3-Clause" DEPENDS = "${@bb.utils.contains('PTEST_ENABLED', '1', 'bison-native flex-native', '', d)}" BBCLASSEXTEND = "native nativesdk" -LIC_FILES_CHKSUM = "file://COPYING;md5=e4742cf92e89040b39486a6219b68067" +LIC_FILES_CHKSUM = "file://COPYING;md5=e4742cf92e89040b39486a6219b68067 \ + file://src/gettext.h;beginline=1;endline=17;md5=9c05dda2f58d89b850c399cf22e1a00c" SRC_URI = "https://github.com/westes/flex/releases/download/v${PV}/flex-${PV}.tar.gz \ file://run-ptest \ diff --git a/poky/meta/recipes-devtools/gcc/gcc-11.1.inc b/poky/meta/recipes-devtools/gcc/gcc-11.1.inc index 713002266a..bf29879ded 100644 --- a/poky/meta/recipes-devtools/gcc/gcc-11.1.inc +++ b/poky/meta/recipes-devtools/gcc/gcc-11.1.inc @@ -6,7 +6,7 @@ PV = "11.1.0" # BINV should be incremented to a revision after a minor gcc release -BINV = "11.1.0" +BINV = "11.1.1" FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc:${FILE_DIRNAME}/gcc/backport:" @@ -25,7 +25,10 @@ LIC_FILES_CHKSUM = "\ #RELEASE ?= "5b2ac9b40c325e9209c0bd55955db84aad4a0cc5" #BASEURI ?= "https://github.com/gcc-mirror/gcc/archive/${RELEASE}.zip;downloadfilename=gcc-${PV}-${RELEASE}.zip" -BASEURI ?= "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.xz" + +BASEURI ?= "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.xz \ + http://downloads.yoctoproject.org/mirror/sources/gcc-11.1.0-9ee61d2b51df012c659359873637cc2162ecccf3.patch;apply=yes;name=backports \ + " SRC_URI = "\ ${BASEURI} \ file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \ @@ -65,8 +68,10 @@ SRC_URI = "\ file://0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch \ file://0036-mingw32-Enable-operation_not_supported.patch \ file://0037-libatomic-Do-not-enforce-march-on-aarch64.patch \ + file://0001-Revert-libstdc-Install-libstdc-gdb.py-more-robustly-.patch \ " SRC_URI[sha256sum] = "4c4a6fb8a8396059241c2e674b85b351c26a5d678274007f076957afa1cc9ddf" +SRC_URI[backports.sha256sum] = "69274bebd6c069a13443d4af61070e854740a639ec4d66eedf3e80070363587b" S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}" diff --git a/poky/meta/recipes-devtools/gcc/gcc-cross-canadian.inc b/poky/meta/recipes-devtools/gcc/gcc-cross-canadian.inc index 878feaf810..1872faee1b 100644 --- a/poky/meta/recipes-devtools/gcc/gcc-cross-canadian.inc +++ b/poky/meta/recipes-devtools/gcc/gcc-cross-canadian.inc @@ -124,7 +124,7 @@ do_install () { dest=${D}${libexecdir}/gcc/${TARGET_SYS}/${BINV}/ install -d $dest suffix=${EXEEXT} - for t in ar as ld nm objcopy objdump ranlib strip g77 gcc cpp gfortran; do + for t in ar as ld ld.bfd ld.gold nm objcopy objdump ranlib strip g77 gcc cpp gfortran; do if [ "$t" = "g77" -o "$t" = "gfortran" ] && [ ! -e ${D}${bindir}/${TARGET_PREFIX}$t$suffix ]; then continue fi diff --git a/poky/meta/recipes-devtools/gcc/gcc-sanitizers.inc b/poky/meta/recipes-devtools/gcc/gcc-sanitizers.inc index d0348c4817..59e91daaea 100644 --- a/poky/meta/recipes-devtools/gcc/gcc-sanitizers.inc +++ b/poky/meta/recipes-devtools/gcc/gcc-sanitizers.inc @@ -90,7 +90,9 @@ FILES_libasan-dev += "\ ${libdir}/libhwasan.so \ ${libdir}/libasan.la \ " -FILES_libasan-staticdev += "${libdir}/libasan.a" +FILES_libasan-staticdev += "${libdir}/libasan.a \ + ${libdir}/libhwasan.a \ +" FILES_libubsan += "${libdir}/libubsan.so.*" FILES_libubsan-dev += "\ diff --git a/poky/meta/recipes-devtools/gcc/gcc/0001-Revert-libstdc-Install-libstdc-gdb.py-more-robustly-.patch b/poky/meta/recipes-devtools/gcc/gcc/0001-Revert-libstdc-Install-libstdc-gdb.py-more-robustly-.patch new file mode 100644 index 0000000000..a3e31e4f9d --- /dev/null +++ b/poky/meta/recipes-devtools/gcc/gcc/0001-Revert-libstdc-Install-libstdc-gdb.py-more-robustly-.patch @@ -0,0 +1,76 @@ +This change breaks installation on baremetal targets, so whilst the cause is +investigated revert the commit. + +Upstream-Status: Inappropriate +Signed-off-by: Ross Burton <ross.burton@arm.com> + +From 8ec52bd0ba2141ef0bcc6f93e26a23d662b40f78 Mon Sep 17 00:00:00 2001 +From: Ross Burton <ross.burton@arm.com> +Date: Wed, 26 May 2021 19:54:29 +0100 +Subject: [PATCH] Revert "libstdc++: Install libstdc++*-gdb.py more robustly + [PR 99453]" + +This reverts commit dbb87d6a9c37c8eca80d77782717a8144515c16d. +--- + libstdc++-v3/python/Makefile.am | 20 ++++++++++++++++---- + libstdc++-v3/python/Makefile.in | 14 ++++++++++++-- + 2 files changed, 28 insertions(+), 6 deletions(-) + +diff --git a/libstdc++-v3/python/Makefile.am b/libstdc++-v3/python/Makefile.am +index 0c2b207b86e..01517a2a522 100644 +--- a/libstdc++-v3/python/Makefile.am ++++ b/libstdc++-v3/python/Makefile.am +@@ -44,9 +44,21 @@ gdb.py: hook.in Makefile + install-data-local: gdb.py + @$(mkdir_p) $(DESTDIR)$(toolexeclibdir) + ## We want to install gdb.py as SOMETHING-gdb.py. SOMETHING is the +-## full name of the final library. We use the libtool .la file to get +-## the correct name. +- @libname=`sed -ne "/^library_names=/{s/.*='//;s/'$$//;s/ .*//;p;}" \ +- $(DESTDIR)$(toolexeclibdir)/libstdc++.la`; \ ++## full name of the final library. We want to ignore symlinks, the ++## .la file, and any previous -gdb.py file. This is inherently ++## fragile, but there does not seem to be a better option, because ++## libtool hides the real names from us. ++ @here=`pwd`; cd $(DESTDIR)$(toolexeclibdir); \ ++ for file in libstdc++.*; do \ ++ case $$file in \ ++ *-gdb.py) ;; \ ++ *.la) ;; \ ++ *) if test -h $$file; then \ ++ continue; \ ++ fi; \ ++ libname=$$file;; \ ++ esac; \ ++ done; \ ++ cd $$here; \ + echo " $(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py"; \ + $(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py +diff --git a/libstdc++-v3/python/Makefile.in b/libstdc++-v3/python/Makefile.in +index 2efe0b96a19..c35dbe55961 100644 +--- a/libstdc++-v3/python/Makefile.in ++++ b/libstdc++-v3/python/Makefile.in +@@ -607,8 +607,18 @@ gdb.py: hook.in Makefile + + install-data-local: gdb.py + @$(mkdir_p) $(DESTDIR)$(toolexeclibdir) +- @libname=`sed -ne "/^library_names=/{s/.*='//;s/'$$//;s/ .*//;p;}" \ +- $(DESTDIR)$(toolexeclibdir)/libstdc++.la`; \ ++ @here=`pwd`; cd $(DESTDIR)$(toolexeclibdir); \ ++ for file in libstdc++.*; do \ ++ case $$file in \ ++ *-gdb.py) ;; \ ++ *.la) ;; \ ++ *) if test -h $$file; then \ ++ continue; \ ++ fi; \ ++ libname=$$file;; \ ++ esac; \ ++ done; \ ++ cd $$here; \ + echo " $(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py"; \ + $(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py + +-- +2.25.1 + diff --git a/poky/meta/recipes-devtools/gcc/gcc/0019-Ensure-target-gcc-headers-can-be-included.patch b/poky/meta/recipes-devtools/gcc/gcc/0019-Ensure-target-gcc-headers-can-be-included.patch index 98472dd2b5..120d5a29b2 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0019-Ensure-target-gcc-headers-can-be-included.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0019-Ensure-target-gcc-headers-can-be-included.patch @@ -1,4 +1,4 @@ -From 9b4eb0e18a953d79d20c78d3ba741af6d71ab9ca Mon Sep 17 00:00:00 2001 +From 6f410ed8fb7eee11ba7a25634c2257666b98ef52 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 20 Feb 2015 10:25:11 +0000 Subject: [PATCH] Ensure target gcc headers can be included @@ -11,14 +11,18 @@ found by gcc with the existing search paths. Add support for picking up these headers under the sysroot supplied on the gcc command line in order to resolve this. +Extend target gcc headers search to musl too + Upstream-Status: Pending Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Khem Raj <raj.khem@gmail.com> --- - gcc/Makefile.in | 2 ++ - gcc/cppdefault.c | 4 ++++ - 2 files changed, 6 insertions(+) + gcc/Makefile.in | 2 ++ + gcc/config/linux.h | 8 ++++++++ + gcc/config/rs6000/sysv4.h | 8 ++++++++ + gcc/cppdefault.c | 4 ++++ + 4 files changed, 22 insertions(+) diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 59c45c81393..9b17d120aa1 100644 @@ -40,6 +44,58 @@ index 59c45c81393..9b17d120aa1 100644 -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \ -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \ +diff --git a/gcc/config/linux.h b/gcc/config/linux.h +index 87efc5f69fe..b525bcd56b3 100644 +--- a/gcc/config/linux.h ++++ b/gcc/config/linux.h +@@ -165,6 +165,13 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + #define INCLUDE_DEFAULTS_MUSL_TOOL + #endif + ++#ifdef GCC_INCLUDE_SUBDIR_TARGET ++#define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \ ++ { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0}, ++#else ++#define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET ++#endif ++ + #ifdef NATIVE_SYSTEM_HEADER_DIR + #define INCLUDE_DEFAULTS_MUSL_NATIVE \ + { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \ +@@ -191,6 +198,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + INCLUDE_DEFAULTS_MUSL_PREFIX \ + INCLUDE_DEFAULTS_MUSL_CROSS \ + INCLUDE_DEFAULTS_MUSL_TOOL \ ++ INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \ + INCLUDE_DEFAULTS_MUSL_NATIVE \ + { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \ + { 0, 0, 0, 0, 0, 0 } \ +diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h +index 510abe169c5..0c2bba5ea32 100644 +--- a/gcc/config/rs6000/sysv4.h ++++ b/gcc/config/rs6000/sysv4.h +@@ -995,6 +995,13 @@ ncrtn.o%s" + #define INCLUDE_DEFAULTS_MUSL_TOOL + #endif + ++#ifdef GCC_INCLUDE_SUBDIR_TARGET ++#define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \ ++ { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0}, ++#else ++#define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET ++#endif ++ + #ifdef NATIVE_SYSTEM_HEADER_DIR + #define INCLUDE_DEFAULTS_MUSL_NATIVE \ + { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \ +@@ -1021,6 +1028,7 @@ ncrtn.o%s" + INCLUDE_DEFAULTS_MUSL_PREFIX \ + INCLUDE_DEFAULTS_MUSL_CROSS \ + INCLUDE_DEFAULTS_MUSL_TOOL \ ++ INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \ + INCLUDE_DEFAULTS_MUSL_NATIVE \ + { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \ + { 0, 0, 0, 0, 0, 0 } \ diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c index c503d14fc3f..d54d6ce0076 100644 --- a/gcc/cppdefault.c diff --git a/poky/meta/recipes-devtools/gcc/gcc/0024-handle-sysroot-support-for-nativesdk-gcc.patch b/poky/meta/recipes-devtools/gcc/gcc/0024-handle-sysroot-support-for-nativesdk-gcc.patch index 3958e9c212..b1054fa749 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0024-handle-sysroot-support-for-nativesdk-gcc.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0024-handle-sysroot-support-for-nativesdk-gcc.patch @@ -1,4 +1,4 @@ -From 35c084a051bcd6587ebc73e4acb045cb2bdf7e99 Mon Sep 17 00:00:00 2001 +From 354682ad8f71f62643dcd83f64b51b5979615a0c Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Mon, 7 Dec 2015 23:39:54 +0000 Subject: [PATCH] handle sysroot support for nativesdk-gcc @@ -23,6 +23,9 @@ b) Add other paths which need relocation into a .gccrelocprefix section Upstream-Status: Inappropriate RP 2015/7/28 +Extend the gccrelocprefix support to musl config too, this ensures +that gcc will get right bits in SDK installations + Signed-off-by: Khem Raj <raj.khem@gmail.com> Added PREFIXVAR and EXEC_PREFIXVAR to support runtime relocation. Without @@ -32,16 +35,18 @@ implementation.) Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org> --- - gcc/c-family/c-opts.c | 4 +-- - gcc/cppdefault.c | 63 ++++++++++++++++++++++++++----------------- - gcc/cppdefault.h | 13 ++++----- - gcc/gcc.c | 20 +++++++++----- - gcc/incpath.c | 12 ++++----- - gcc/prefix.c | 6 +++-- - 6 files changed, 70 insertions(+), 48 deletions(-) + gcc/c-family/c-opts.c | 4 +-- + gcc/config/linux.h | 24 +++++++-------- + gcc/config/rs6000/sysv4.h | 24 +++++++-------- + gcc/cppdefault.c | 63 ++++++++++++++++++++++++--------------- + gcc/cppdefault.h | 13 ++++---- + gcc/gcc.c | 20 +++++++++---- + gcc/incpath.c | 12 ++++---- + gcc/prefix.c | 6 ++-- + 8 files changed, 94 insertions(+), 72 deletions(-) diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c -index bd15b9cd902..2bd667e3f58 100644 +index 89e05a4c551..5577383665d 100644 --- a/gcc/c-family/c-opts.c +++ b/gcc/c-family/c-opts.c @@ -1436,8 +1436,8 @@ add_prefixed_path (const char *suffix, incpath_kind chain) @@ -55,6 +60,162 @@ index bd15b9cd902..2bd667e3f58 100644 path = (char *) xmalloc (prefix_len + suffix_len + 1); memcpy (path, prefix, prefix_len); +diff --git a/gcc/config/linux.h b/gcc/config/linux.h +index b525bcd56b3..ba02c013e30 100644 +--- a/gcc/config/linux.h ++++ b/gcc/config/linux.h +@@ -129,53 +129,53 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + * Unfortunately, this is mostly duplicated from cppdefault.c */ + #if DEFAULT_LIBC == LIBC_MUSL + #define INCLUDE_DEFAULTS_MUSL_GPP \ +- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \ ++ { GPLUSPLUS_INCLUDE_DIRVAR, "G++", 1, 1, \ + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \ +- { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \ ++ { GPLUSPLUS_TOOL_INCLUDE_DIRVAR, "G++", 1, 1, \ + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \ +- { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \ ++ { GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR, "G++", 1, 1, \ + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, + + #ifdef LOCAL_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_LOCAL \ +- { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \ +- { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, ++ { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 2 }, \ ++ { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 0 }, + #else + #define INCLUDE_DEFAULTS_MUSL_LOCAL + #endif + + #ifdef PREFIX_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_PREFIX \ +- { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0}, ++ { PREFIX_INCLUDE_DIRVAR, 0, 0, 1, 0, 0}, + #else + #define INCLUDE_DEFAULTS_MUSL_PREFIX + #endif + + #ifdef CROSS_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_CROSS \ +- { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0}, ++ { CROSS_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0}, + #else + #define INCLUDE_DEFAULTS_MUSL_CROSS + #endif + + #ifdef TOOL_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_TOOL \ +- { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0}, ++ { TOOL_INCLUDE_DIRVAR, "BINUTILS", 0, 1, 0, 0}, + #else + #define INCLUDE_DEFAULTS_MUSL_TOOL + #endif + + #ifdef GCC_INCLUDE_SUBDIR_TARGET + #define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \ +- { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0}, ++ { STANDARD_STARTFILE_PREFIX_2VAR, "GCC", 0, 0, 1, 0}, + #else + #define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET + #endif + + #ifdef NATIVE_SYSTEM_HEADER_DIR + #define INCLUDE_DEFAULTS_MUSL_NATIVE \ +- { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \ +- { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 }, ++ { NATIVE_SYSTEM_HEADER_DIRVAR, 0, 0, 0, 1, 2 }, \ ++ { NATIVE_SYSTEM_HEADER_DIRVAR, 0, 0, 0, 1, 0 }, + #else + #define INCLUDE_DEFAULTS_MUSL_NATIVE + #endif +@@ -200,7 +200,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + INCLUDE_DEFAULTS_MUSL_TOOL \ + INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \ + INCLUDE_DEFAULTS_MUSL_NATIVE \ +- { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \ ++ { GCC_INCLUDE_DIRVAR, "GCC", 0, 1, 0, 0 }, \ + { 0, 0, 0, 0, 0, 0 } \ + } + #endif +diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h +index 0c2bba5ea32..313a8de4417 100644 +--- a/gcc/config/rs6000/sysv4.h ++++ b/gcc/config/rs6000/sysv4.h +@@ -959,53 +959,53 @@ ncrtn.o%s" + /* Include order changes for musl, same as in generic linux.h. */ + #if DEFAULT_LIBC == LIBC_MUSL + #define INCLUDE_DEFAULTS_MUSL_GPP \ +- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \ ++ { GPLUSPLUS_INCLUDE_DIRVAR, "G++", 1, 1, \ + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \ +- { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \ ++ { GPLUSPLUS_TOOL_INCLUDE_DIRVAR, "G++", 1, 1, \ + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \ +- { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \ ++ { GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR, "G++", 1, 1, \ + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, + + #ifdef LOCAL_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_LOCAL \ +- { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \ +- { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, ++ { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 2 }, \ ++ { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 0 }, + #else + #define INCLUDE_DEFAULTS_MUSL_LOCAL + #endif + + #ifdef PREFIX_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_PREFIX \ +- { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0}, ++ { PREFIX_INCLUDE_DIRVAR, 0, 0, 1, 0, 0}, + #else + #define INCLUDE_DEFAULTS_MUSL_PREFIX + #endif + + #ifdef CROSS_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_CROSS \ +- { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0}, ++ { CROSS_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0}, + #else + #define INCLUDE_DEFAULTS_MUSL_CROSS + #endif + + #ifdef TOOL_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_TOOL \ +- { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0}, ++ { TOOL_INCLUDE_DIRVAR, "BINUTILS", 0, 1, 0, 0}, + #else + #define INCLUDE_DEFAULTS_MUSL_TOOL + #endif + + #ifdef GCC_INCLUDE_SUBDIR_TARGET + #define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \ +- { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0}, ++ { STANDARD_STARTFILE_PREFIX_2VAR, "GCC", 0, 0, 1, 0}, + #else + #define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET + #endif + + #ifdef NATIVE_SYSTEM_HEADER_DIR + #define INCLUDE_DEFAULTS_MUSL_NATIVE \ +- { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \ +- { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 }, ++ { NATIVE_SYSTEM_HEADER_DIRVAR, 0, 0, 0, 1, 2 }, \ ++ { NATIVE_SYSTEM_HEADER_DIRVAR, 0, 0, 0, 1, 0 }, + #else + #define INCLUDE_DEFAULTS_MUSL_NATIVE + #endif +@@ -1030,7 +1030,7 @@ ncrtn.o%s" + INCLUDE_DEFAULTS_MUSL_TOOL \ + INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \ + INCLUDE_DEFAULTS_MUSL_NATIVE \ +- { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \ ++ { GCC_INCLUDE_DIRVAR, "GCC", 0, 1, 0, 0 }, \ + { 0, 0, 0, 0, 0, 0 } \ + } + #endif diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c index d54d6ce0076..784a92a0c24 100644 --- a/gcc/cppdefault.c diff --git a/poky/meta/recipes-devtools/gcc/gcc/0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch b/poky/meta/recipes-devtools/gcc/gcc/0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch index edca9e3ca4..9c616d24d0 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch @@ -22,12 +22,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> gcc/config/rs6000/linux64.h | 10 ++++++++++ 3 files changed, 27 insertions(+) -diff --git a/gcc/config/linux.h b/gcc/config/linux.h -index 87efc5f69fe..3c7b7c538b9 100644 --- a/gcc/config/linux.h +++ b/gcc/config/linux.h -@@ -195,6 +195,13 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see - { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \ +@@ -203,6 +203,13 @@ see the files COPYING3 and COPYING.RUNTI + { GCC_INCLUDE_DIRVAR, "GCC", 0, 1, 0, 0 }, \ { 0, 0, 0, 0, 0, 0 } \ } +#ifdef TARGET_LIBC_PROVIDES_SSP @@ -40,8 +38,6 @@ index 87efc5f69fe..3c7b7c538b9 100644 #endif #if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */ -diff --git a/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h -index 47c9d9ac0b6..d065f88b377 100644 --- a/gcc/config/rs6000/linux.h +++ b/gcc/config/rs6000/linux.h @@ -94,6 +94,16 @@ @@ -61,8 +57,6 @@ index 47c9d9ac0b6..d065f88b377 100644 #undef LINK_OS_LINUX_SPEC #define LINK_OS_LINUX_SPEC LINK_OS_LINUX_EMUL " %{!shared: %{!static: \ %{!static-pie: \ -diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h -index a11e01faa3d..ce464f3626b 100644 --- a/gcc/config/rs6000/linux64.h +++ b/gcc/config/rs6000/linux64.h @@ -369,6 +369,16 @@ extern int dot_symbols; diff --git a/poky/meta/recipes-devtools/gnu-config/gnu-config_git.bb b/poky/meta/recipes-devtools/gnu-config/gnu-config_git.bb index d4ec4593fa..8d7d6ac3ee 100644 --- a/poky/meta/recipes-devtools/gnu-config/gnu-config_git.bb +++ b/poky/meta/recipes-devtools/gnu-config/gnu-config_git.bb @@ -9,8 +9,8 @@ DEPENDS_class-native = "hostperl-runtime-native" INHIBIT_DEFAULT_DEPS = "1" -SRCREV = "277b4ed1776f721145b2649d888f1deb445fecc5" -PV = "20210424+git${SRCPV}" +SRCREV = "92fac9b5ceb9f111a04d7f8f98831570e77886c6" +PV = "20210522+git${SRCPV}" SRC_URI = "git://git.savannah.gnu.org/config.git \ file://gnu-configize.in" diff --git a/poky/meta/recipes-devtools/go/go-1.16.3.inc b/poky/meta/recipes-devtools/go/go-1.16.4.inc index ebd25a5eaa..71c17de310 100644 --- a/poky/meta/recipes-devtools/go/go-1.16.3.inc +++ b/poky/meta/recipes-devtools/go/go-1.16.4.inc @@ -1,7 +1,7 @@ require go-common.inc GO_BASEVERSION = "1.16" -PV = "1.16.3" +PV = "1.16.4" FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:" LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707" @@ -17,4 +17,4 @@ SRC_URI += "\ file://0008-use-GOBUILDMODE-to-set-buildmode.patch \ file://0009-Revert-cmd-go-make-sure-CC-and-CXX-are-absolute.patch \ " -SRC_URI[main.sha256sum] = "b298d29de9236ca47a023e382313bcc2d2eed31dfa706b60a04103ce83a71a25" +SRC_URI[main.sha256sum] = "ae4f6b6e2a1677d31817984655a762074b5356da50fb58722b99104870d43503" diff --git a/poky/meta/recipes-devtools/go/go-binary-native_1.16.3.bb b/poky/meta/recipes-devtools/go/go-binary-native_1.16.4.bb index d01a2bd8f1..8c046e8e53 100644 --- a/poky/meta/recipes-devtools/go/go-binary-native_1.16.3.bb +++ b/poky/meta/recipes-devtools/go/go-binary-native_1.16.4.bb @@ -8,8 +8,8 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707" PROVIDES = "go-native" SRC_URI = "https://dl.google.com/go/go${PV}.${BUILD_GOOS}-${BUILD_GOARCH}.tar.gz;name=go_${BUILD_GOTUPLE}" -SRC_URI[go_linux_amd64.sha256sum] = "951a3c7c6ce4e56ad883f97d9db74d3d6d80d5fec77455c6ada6c1f7ac4776d2" -SRC_URI[go_linux_arm64.sha256sum] = "566b1d6f17d2bc4ad5f81486f0df44f3088c3ed47a3bec4099d8ed9939e90d5d" +SRC_URI[go_linux_amd64.sha256sum] = "7154e88f5a8047aad4b80ebace58a059e36e7e2e4eb3b383127a28c711b4ff59" +SRC_URI[go_linux_arm64.sha256sum] = "8b18eb05ddda2652d69ab1b1dd1f40dd731799f43c6a58b512ad01ae5b5bba21" UPSTREAM_CHECK_URI = "https://golang.org/dl/" UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux" diff --git a/poky/meta/recipes-devtools/go/go-common.inc b/poky/meta/recipes-devtools/go/go-common.inc index c368b95b69..39a681a712 100644 --- a/poky/meta/recipes-devtools/go/go-common.inc +++ b/poky/meta/recipes-devtools/go/go-common.inc @@ -14,7 +14,7 @@ LICENSE = "BSD-3-Clause" inherit goarch -SRC_URI = "https://dl.google.com/go/go${PV}.src.tar.gz;name=main" +SRC_URI = "https://golang.org/dl/go${PV}.src.tar.gz;name=main" S = "${WORKDIR}/go" B = "${S}" UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.src\.tar" diff --git a/poky/meta/recipes-devtools/go/go-cross-canadian_1.16.3.bb b/poky/meta/recipes-devtools/go/go-cross-canadian_1.16.4.bb index 7ac9449e47..7ac9449e47 100644 --- a/poky/meta/recipes-devtools/go/go-cross-canadian_1.16.3.bb +++ b/poky/meta/recipes-devtools/go/go-cross-canadian_1.16.4.bb diff --git a/poky/meta/recipes-devtools/go/go-cross_1.16.3.bb b/poky/meta/recipes-devtools/go/go-cross_1.16.4.bb index 80b5a03f6c..80b5a03f6c 100644 --- a/poky/meta/recipes-devtools/go/go-cross_1.16.3.bb +++ b/poky/meta/recipes-devtools/go/go-cross_1.16.4.bb diff --git a/poky/meta/recipes-devtools/go/go-crosssdk_1.16.3.bb b/poky/meta/recipes-devtools/go/go-crosssdk_1.16.4.bb index 1857c8a577..1857c8a577 100644 --- a/poky/meta/recipes-devtools/go/go-crosssdk_1.16.3.bb +++ b/poky/meta/recipes-devtools/go/go-crosssdk_1.16.4.bb diff --git a/poky/meta/recipes-devtools/go/go-native_1.16.3.bb b/poky/meta/recipes-devtools/go/go-native_1.16.4.bb index f14892cdb0..f14892cdb0 100644 --- a/poky/meta/recipes-devtools/go/go-native_1.16.3.bb +++ b/poky/meta/recipes-devtools/go/go-native_1.16.4.bb diff --git a/poky/meta/recipes-devtools/go/go-runtime_1.16.3.bb b/poky/meta/recipes-devtools/go/go-runtime_1.16.4.bb index 63464a1501..63464a1501 100644 --- a/poky/meta/recipes-devtools/go/go-runtime_1.16.3.bb +++ b/poky/meta/recipes-devtools/go/go-runtime_1.16.4.bb diff --git a/poky/meta/recipes-devtools/go/go_1.16.3.bb b/poky/meta/recipes-devtools/go/go_1.16.4.bb index 4e9e0ebec8..4e9e0ebec8 100644 --- a/poky/meta/recipes-devtools/go/go_1.16.3.bb +++ b/poky/meta/recipes-devtools/go/go_1.16.4.bb diff --git a/poky/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb b/poky/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb index 231c1c20ec..61b8487c7e 100644 --- a/poky/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb +++ b/poky/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb @@ -11,6 +11,7 @@ PR = "r2" DEPENDS = "" INHIBIT_DEFAULT_DEPS = "1" +ICECC_DISABLED = "1" # This is needed, because otherwise there is dependency loop from quilt-native # Dependency loop #1 found: diff --git a/poky/meta/recipes-devtools/jquery/jquery_3.6.0.bb b/poky/meta/recipes-devtools/jquery/jquery_3.6.0.bb index 65905966c1..03792730fd 100644 --- a/poky/meta/recipes-devtools/jquery/jquery_3.6.0.bb +++ b/poky/meta/recipes-devtools/jquery/jquery_3.6.0.bb @@ -19,6 +19,11 @@ SRC_URI[map.sha256sum] = "399548fb0e7b146c12f5ba18099a47d594a970fee96212eee0ab48 UPSTREAM_CHECK_REGEX = "jquery-(?P<pver>\d+(\.\d+)+)\.js" +# https://github.com/jquery/jquery/issues/3927 +# There are ways jquery can expose security issues but any issues are in the apps exposing them +# and there is little we can directly do +CVE_CHECK_WHITELIST += "CVE-2007-2379" + inherit allarch do_install() { diff --git a/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch b/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch index f8d256e011..b740521fda 100644 --- a/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch +++ b/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch @@ -1,23 +1,26 @@ -From 8aa5402393fabaf4fff51be3af4868e8dfab6da7 Mon Sep 17 00:00:00 2001 +From fc0b81bb717db3f41513f09f6661676a7aea6dd4 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Tue, 9 Mar 2021 19:30:42 +0000 Subject: [PATCH] libdnf/config.h: avoid the use of non-portable __WORDSIZE Upstream-Status: Submitted [https://github.com/rpm-software-management/libdnf/pull/1159] Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> + --- - libdnf/config.h | 8 +++----- - 1 file changed, 3 insertions(+), 5 deletions(-) + libdnf/config.h | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/libdnf/config.h b/libdnf/config.h -index 16121f6f..2925923e 100644 +index 01b330b4..dbd53f5e 100644 --- a/libdnf/config.h +++ b/libdnf/config.h -@@ -18,12 +18,10 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ +@@ -20,14 +20,11 @@ + #ifdef __APPLE__ + #include <stdint.h> +-#else -#include <bits/wordsize.h> + #endif +#include <limits.h> -#if __WORDSIZE == 32 diff --git a/poky/meta/recipes-devtools/libdnf/libdnf_0.58.0.bb b/poky/meta/recipes-devtools/libdnf/libdnf_0.63.0.bb index dbe68d5a15..79e8865456 100644 --- a/poky/meta/recipes-devtools/libdnf/libdnf_0.58.0.bb +++ b/poky/meta/recipes-devtools/libdnf/libdnf_0.63.0.bb @@ -14,8 +14,8 @@ SRC_URI = "git://github.com/rpm-software-management/libdnf;branch=dnf-4-master \ file://0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch \ " -SRCREV = "85278894f21bc1957dc47a2a09ddacf59bc3cda8" -UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)" +SRCREV = "669a5c691acba91693d238d6262ac99a440aa9b3" +UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(?!4\.90)\d+(\.\d+)+)" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/libedit/libedit_20210419-3.1.bb b/poky/meta/recipes-devtools/libedit/libedit_20210522-3.1.bb index a34b773288..43e6f2244b 100644 --- a/poky/meta/recipes-devtools/libedit/libedit_20210419-3.1.bb +++ b/poky/meta/recipes-devtools/libedit/libedit_20210522-3.1.bb @@ -13,7 +13,7 @@ inherit autotools SRC_URI = "http://www.thrysoee.dk/editline/${BP}.tar.gz \ file://stdc-predef.patch \ " -SRC_URI[sha256sum] = "571ebe44b74860823e24a08cf04086ff104fd7dfa1020abf26c52543134f5602" +SRC_URI[sha256sum] = "0220bc2047e927c0c1984ef5f7b4eb2a9469a5b7bf12ba573ca3b23ca02bbb6f" BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb b/poky/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb index 2f60ce8e02..771b2c094f 100644 --- a/poky/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb +++ b/poky/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb @@ -8,8 +8,8 @@ SRC_URI = "git://github.com/fedora-modularity/libmodulemd;protocol=https;branch= file://0001-modulemd-generate-the-manpage-only-if-the-feature-is.patch \ " -PV = "2.12.0" -SRCREV = "aaed38c899a958a88a6a368a70510e350ebe336c" +PV = "2.12.1" +SRCREV = "c0897fa0e9d7d1305fd4813b1010c1d4cca42346" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/meson/meson.inc b/poky/meta/recipes-devtools/meson/meson.inc index e186dede92..f60381453b 100644 --- a/poky/meta/recipes-devtools/meson/meson.inc +++ b/poky/meta/recipes-devtools/meson/meson.inc @@ -12,21 +12,13 @@ SRC_URI = "https://github.com/mesonbuild/meson/releases/download/${PV}/meson-${P file://0003-native_bindir.patch \ file://0001-python-module-do-not-manipulate-the-environment-when.patch \ file://disable-rpath-handling.patch \ - file://cross-prop-default.patch \ file://0001-modules-python.py-do-not-substitute-python-s-install.patch \ - file://0001-minstall-Correctly-set-uid-gid-of-installed-files.patch \ file://gi-target-dep.patch \ + file://0001-Make-CPU-family-warnings-fatal.patch \ + file://0002-Support-building-allarch-recipes-again.patch \ + file://4e312c19e693a69b0650ce6c8a8903163c959996.patch \ " -SRC_URI[sha256sum] = "72e1c782ba9bda204f4a1ed57f98d027d7b6eb9414c723eebbd6ec7f1955c8a6" - -SRC_URI_append_class-native = " \ - file://0001-Make-CPU-family-warnings-fatal.patch \ - file://0002-Support-building-allarch-recipes-again.patch \ -" - -# remove at next version upgrade or when output changes -PR = "r1" -HASHEQUIV_HASH_VERSION .= ".1" +SRC_URI[sha256sum] = "f4820df0bc969c99019fd4af8ca5f136ee94c63d8a5ad67e7eb73bdbc9182fdd" UPSTREAM_CHECK_URI = "https://github.com/mesonbuild/meson/releases" UPSTREAM_CHECK_REGEX = "meson-(?P<pver>\d+(\.\d+)+)\.tar" diff --git a/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch b/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch index 48941c97f3..bcccfabd17 100644 --- a/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch +++ b/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch @@ -1,41 +1,43 @@ -From 76934bcbf2cfa7304e8864e28c51f58adda0392f Mon Sep 17 00:00:00 2001 +From b64032a2eb1fb760f4ffd5b4b666e2433cf80d39 Mon Sep 17 00:00:00 2001 From: Ross Burton <ross.burton@intel.com> Date: Tue, 3 Jul 2018 13:59:09 +0100 -Subject: [PATCH] Make CPU family warnings fatal +Subject: [PATCH 1/2] Make CPU family warnings fatal Upstream-Status: Inappropriate [OE specific] Signed-off-by: Ross Burton <ross.burton@intel.com> - --- mesonbuild/envconfig.py | 2 +- mesonbuild/environment.py | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/mesonbuild/envconfig.py b/mesonbuild/envconfig.py -index ba35d16..2d3c34c 100644 +index c6a4df3..4d58c91 100644 --- a/mesonbuild/envconfig.py +++ b/mesonbuild/envconfig.py -@@ -254,7 +254,7 @@ class MachineInfo: - +@@ -266,7 +266,7 @@ class MachineInfo: + cpu_family = literal['cpu_family'] if cpu_family not in known_cpu_families: -- mlog.warning('Unknown CPU family {}, please report this at https://github.com/mesonbuild/meson/issues/new'.format(cpu_family)) +- mlog.warning(f'Unknown CPU family {cpu_family}, please report this at https://github.com/mesonbuild/meson/issues/new') + raise EnvironmentException('Unknown CPU family {}, see https://wiki.yoctoproject.org/wiki/Meson/UnknownCPU for directions.'.format(cpu_family)) - + endian = literal['endian'] if endian not in ('little', 'big'): diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py -index 756dd81..4d2c2b6 100644 +index fc9b703..eea8345 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py -@@ -434,9 +434,7 @@ def detect_cpu_family(compilers: CompilersDict) -> str: +@@ -436,9 +436,7 @@ def detect_cpu_family(compilers: CompilersDict) -> str: trial = 'ppc64' - + if trial not in known_cpu_families: - mlog.warning('Unknown CPU family {!r}, please report this at ' - 'https://github.com/mesonbuild/meson/issues/new with the ' - 'output of `uname -a` and `cat /proc/cpuinfo`'.format(trial)) + raise EnvironmentException('Unknown CPU family %s, see https://wiki.yoctoproject.org/wiki/Meson/UnknownCPU for directions.' % trial) - + return trial + +-- +2.24.0 diff --git a/poky/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch b/poky/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch index 471f1500da..ce90e515da 100644 --- a/poky/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch +++ b/poky/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch @@ -1,4 +1,4 @@ -From d3ef01a4208a801acad380a4aaceb6a21f8fa603 Mon Sep 17 00:00:00 2001 +From 2f9c59e0489e569c5382404667c10f5c200a72ad Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Fri, 4 Aug 2017 16:16:41 +0300 Subject: [PATCH] gtkdoc: fix issues that arise when cross-compiling @@ -20,11 +20,11 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 1 file changed, 4 insertions(+) diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py -index bcf77b9..6a4b472 100644 +index dc2979e..c9ff9bd 100644 --- a/mesonbuild/modules/gnome.py +++ b/mesonbuild/modules/gnome.py -@@ -974,6 +974,10 @@ This will become a hard error in the future.''') - args.append('--{}={}'.format(program_name, path)) +@@ -1053,6 +1053,10 @@ class GnomeModule(ExtensionModule): + args.append(f'--{program_name}={path}') if namespace: args.append('--namespace=' + namespace) + gtkdoc_exe_wrapper = state.environment.properties.host.get('gtkdoc_exe_wrapper', None) diff --git a/poky/meta/recipes-devtools/meson/meson/0001-minstall-Correctly-set-uid-gid-of-installed-files.patch b/poky/meta/recipes-devtools/meson/meson/0001-minstall-Correctly-set-uid-gid-of-installed-files.patch deleted file mode 100644 index d55b7cc7c7..0000000000 --- a/poky/meta/recipes-devtools/meson/meson/0001-minstall-Correctly-set-uid-gid-of-installed-files.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 3f6f4964dc79ae986f44afe1687922381f237edd Mon Sep 17 00:00:00 2001 -From: Peter Kjellerstedt <pkj@axis.com> -Date: Wed, 3 Mar 2021 12:47:28 +0100 -Subject: [PATCH] minstall: Correctly set uid/gid of installed files - -In commit caab4d3d, the uid and gid arguments passed to os.chown() by -set_chown() were accidentally swapped, causing files to end up with -incorrect owner/group if the owner and group are not the same. - -Upstream-Status: Backport [https://github.com/mesonbuild/meson/commit/6226ac26ef63335bfb817db02b3f295c78214a82] -Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> ---- - mesonbuild/minstall.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/mesonbuild/minstall.py b/mesonbuild/minstall.py -index 785ff5869..07da408aa 100644 ---- a/mesonbuild/minstall.py -+++ b/mesonbuild/minstall.py -@@ -148,7 +148,7 @@ def set_chown(path: str, user: T.Optional[str] = None, group: T.Optional[str] = - Use a real function rather than a lambda to help mypy out. Also real - functions are faster. - """ -- real_os_chown(path, gid, uid, dir_fd=dir_fd, follow_symlinks=follow_symlinks) -+ real_os_chown(path, uid, gid, dir_fd=dir_fd, follow_symlinks=follow_symlinks) - - try: - os.chown = chown diff --git a/poky/meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch b/poky/meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch index eb0e90dbdd..fdadc6869b 100644 --- a/poky/meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch +++ b/poky/meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch @@ -1,4 +1,4 @@ -From 689e28c49b85311f93f39df70cbee702fc44afb6 Mon Sep 17 00:00:00 2001 +From 2264e67d7c2c22ca634fd26ea8ada6f0344ab280 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Mon, 19 Nov 2018 14:24:26 +0100 Subject: [PATCH] python module: do not manipulate the environment when calling @@ -12,10 +12,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 1 file changed, 12 deletions(-) diff --git a/mesonbuild/modules/python.py b/mesonbuild/modules/python.py -index 07be318..b770603 100644 +index 422155b..aaf5844 100644 --- a/mesonbuild/modules/python.py +++ b/mesonbuild/modules/python.py -@@ -71,11 +71,6 @@ class PythonDependency(ExternalDependency): +@@ -70,11 +70,6 @@ class PythonDependency(ExternalDependency): old_pkg_libdir = os.environ.get('PKG_CONFIG_LIBDIR') old_pkg_path = os.environ.get('PKG_CONFIG_PATH') @@ -26,9 +26,9 @@ index 07be318..b770603 100644 - try: self.pkgdep = PkgConfigDependency(pkg_name, environment, kwargs) - mlog.debug('Found "{}" via pkgconfig lookup in LIBPC ({})'.format(pkg_name, pkg_libdir)) -@@ -84,13 +79,6 @@ class PythonDependency(ExternalDependency): - mlog.debug('"{}" could not be found in LIBPC ({})'.format(pkg_name, pkg_libdir)) + mlog.debug(f'Found "{pkg_name}" via pkgconfig lookup in LIBPC ({pkg_libdir})') +@@ -83,13 +78,6 @@ class PythonDependency(ExternalDependency): + mlog.debug(f'"{pkg_name}" could not be found in LIBPC ({pkg_libdir})') mlog.debug(e) - if old_pkg_path is not None: @@ -39,5 +39,5 @@ index 07be318..b770603 100644 - else: - os.environ.pop('PKG_CONFIG_LIBDIR', None) else: - mlog.debug('"{}" could not be found in LIBPC ({}), this is likely due to a relocated python installation'.format(pkg_name, pkg_libdir)) + mlog.debug(f'"{pkg_name}" could not be found in LIBPC ({pkg_libdir}), this is likely due to a relocated python installation') diff --git a/poky/meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch b/poky/meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch index d0fe1126f5..dcc1ce9c27 100644 --- a/poky/meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch +++ b/poky/meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch @@ -1,26 +1,28 @@ -From 6efb6114836fd4a1e012aa03b37f3beeeb22b466 Mon Sep 17 00:00:00 2001 +From 656bf55fed01df2d2e2ad6d9d9887173cb16b85c Mon Sep 17 00:00:00 2001 From: Peter Kjellerstedt <pkj@axis.com> Date: Thu, 26 Jul 2018 16:32:49 +0200 -Subject: [PATCH] Support building allarch recipes again +Subject: [PATCH 2/2] Support building allarch recipes again This registers "allarch" as a known CPU family. Upstream-Status: Inappropriate [OE specific] Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> - --- mesonbuild/envconfig.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mesonbuild/envconfig.py b/mesonbuild/envconfig.py -index 2d3c34c..b9e7908 100644 +index 4d58c91..ff01ad1 100644 --- a/mesonbuild/envconfig.py +++ b/mesonbuild/envconfig.py -@@ -38,6 +38,7 @@ _T = T.TypeVar('_T') - - +@@ -36,6 +36,7 @@ from pathlib import Path + + known_cpu_families = ( + 'allarch', 'aarch64', 'alpha', 'arc', +-- +2.24.0 + diff --git a/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch b/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch index ed85116c4f..89257b9e05 100644 --- a/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch +++ b/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch @@ -1,4 +1,4 @@ -From 1546e1f95a119175b7a4e4272a26dd85505e5ede Mon Sep 17 00:00:00 2001 +From 30e97d4090a3d3f5b7ddcaf27cfa17f3c8c1d462 Mon Sep 17 00:00:00 2001 From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> Date: Wed, 15 Nov 2017 15:05:01 +0100 Subject: [PATCH] native_bindir @@ -18,23 +18,22 @@ Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> --- mesonbuild/dependencies/base.py | 19 +++++++++++-------- - mesonbuild/dependencies/ui.py | 6 +++--- - 2 files changed, 14 insertions(+), 11 deletions(-) + 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py -index cd77b4b..7e3f338 100644 +index 14380d4..d0c443f 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py -@@ -192,7 +192,7 @@ class Dependency: +@@ -179,7 +179,7 @@ class Dependency: def get_exe_args(self, compiler): return [] - def get_pkgconfig_variable(self, variable_name: str, kwargs: T.Dict[str, T.Any]) -> str: + def get_pkgconfig_variable(self, variable_name: str, kwargs: T.Dict[str, T.Any], use_native=False) -> str: - raise DependencyException('{!r} is not a pkgconfig dependency'.format(self.name)) + raise DependencyException(f'{self.name!r} is not a pkgconfig dependency') def get_configtool_variable(self, variable_name): -@@ -280,7 +280,7 @@ class InternalDependency(Dependency): +@@ -267,7 +267,7 @@ class InternalDependency(Dependency): return True return any(d.is_built() for d in self.ext_deps) @@ -43,7 +42,7 @@ index cd77b4b..7e3f338 100644 raise DependencyException('Method "get_pkgconfig_variable()" is ' 'invalid for an internal dependency') -@@ -658,8 +658,11 @@ class PkgConfigDependency(ExternalDependency): +@@ -645,8 +645,11 @@ class PkgConfigDependency(ExternalDependency): return s.format(self.__class__.__name__, self.name, self.is_found, self.version_reqs) @@ -57,16 +56,16 @@ index cd77b4b..7e3f338 100644 p, out, err = Popen_safe(cmd, env=env) rc, out, err = p.returncode, out.strip(), err.strip() call = ' '.join(cmd) -@@ -685,7 +688,7 @@ class PkgConfigDependency(ExternalDependency): - env['PKG_CONFIG_LIBDIR'] = new_pkg_config_libdir - mlog.debug('PKG_CONFIG_LIBDIR: ' + new_pkg_config_libdir) +@@ -674,7 +677,7 @@ class PkgConfigDependency(ExternalDependency): + if key.startswith('PKG_'): + mlog.debug(f'env[{key}]: {value}') - def _call_pkgbin(self, args, env=None): + def _call_pkgbin(self, args, env=None, use_native=False): # Always copy the environment since we're going to modify it # with pkg-config variables if env is None: -@@ -699,7 +702,7 @@ class PkgConfigDependency(ExternalDependency): +@@ -688,7 +691,7 @@ class PkgConfigDependency(ExternalDependency): targs = tuple(args) cache = PkgConfigDependency.pkgbin_cache if (self.pkgbin, targs, fenv) not in cache: @@ -75,7 +74,7 @@ index cd77b4b..7e3f338 100644 return cache[(self.pkgbin, targs, fenv)] def _convert_mingw_paths(self, args: T.List[str]) -> T.List[str]: -@@ -905,7 +908,7 @@ class PkgConfigDependency(ExternalDependency): +@@ -894,7 +897,7 @@ class PkgConfigDependency(ExternalDependency): (self.name, out_raw)) self.link_args, self.raw_link_args = self._search_libs(out, out_raw) @@ -84,7 +83,7 @@ index cd77b4b..7e3f338 100644 options = ['--variable=' + variable_name, self.name] if 'define_variable' in kwargs: -@@ -918,7 +921,7 @@ class PkgConfigDependency(ExternalDependency): +@@ -907,7 +910,7 @@ class PkgConfigDependency(ExternalDependency): options = ['--define-variable=' + '='.join(definition)] + options @@ -93,34 +92,3 @@ index cd77b4b..7e3f338 100644 variable = '' if ret != 0: if self.required: -diff --git a/mesonbuild/dependencies/ui.py b/mesonbuild/dependencies/ui.py -index d897d76..a598d2e 100644 ---- a/mesonbuild/dependencies/ui.py -+++ b/mesonbuild/dependencies/ui.py -@@ -325,7 +325,7 @@ class QtBaseDependency(ExternalDependency): - self.bindir = self.get_pkgconfig_host_bins(core) - if not self.bindir: - # If exec_prefix is not defined, the pkg-config file is broken -- prefix = core.get_pkgconfig_variable('exec_prefix', {}) -+ prefix = core.get_pkgconfig_variable('exec_prefix', {}, use_native=True) - if prefix: - self.bindir = os.path.join(prefix, 'bin') - -@@ -528,7 +528,7 @@ class Qt4Dependency(QtBaseDependency): - applications = ['moc', 'uic', 'rcc', 'lupdate', 'lrelease'] - for application in applications: - try: -- return os.path.dirname(core.get_pkgconfig_variable('%s_location' % application, {})) -+ return os.path.dirname(core.get_pkgconfig_variable('%s_location' % application, {}, use_native=True)) - except MesonException: - pass - -@@ -538,7 +538,7 @@ class Qt5Dependency(QtBaseDependency): - QtBaseDependency.__init__(self, 'qt5', env, kwargs) - - def get_pkgconfig_host_bins(self, core): -- return core.get_pkgconfig_variable('host_bins', {}) -+ return core.get_pkgconfig_variable('host_bins', {}, use_native=True) - - def get_private_includes(self, mod_inc_dir, module): - return _qt_get_private_includes(mod_inc_dir, module, self.version) diff --git a/poky/meta/recipes-devtools/meson/meson/4e312c19e693a69b0650ce6c8a8903163c959996.patch b/poky/meta/recipes-devtools/meson/meson/4e312c19e693a69b0650ce6c8a8903163c959996.patch new file mode 100644 index 0000000000..76daf019b0 --- /dev/null +++ b/poky/meta/recipes-devtools/meson/meson/4e312c19e693a69b0650ce6c8a8903163c959996.patch @@ -0,0 +1,412 @@ +From 4e312c19e693a69b0650ce6c8a8903163c959996 Mon Sep 17 00:00:00 2001 +From: Xavier Claessens <xavier.claessens@collabora.com> +Date: Tue, 11 May 2021 09:18:47 -0400 +Subject: [PATCH] gnome: Fix gtkdoc generation + +install_scripts used to replace @BUILD_ROOT@ and @SOURCE_ROOT@ but it +was not documented and got removed in Meson 0.58.0. gnome.gtkdoc() was +relying on that behaviour, but it has always been broken in the case the +source or build directory contains spaces. + +Fix this by changing get_include_args() to substitue paths directly +which will then get escaped correctly. + +Add a unit test that builds GObject documentation which is where this +issue has been spotted. + +Fixes: #8744 +Upstream-Status: Backport +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + mesonbuild/modules/__init__.py | 54 +++++++++---------- + mesonbuild/modules/gnome.py | 15 +++--- + mesonbuild/modules/hotdoc.py | 3 +- + mesonbuild/modules/qt.py | 4 +- + mesonbuild/modules/windows.py | 5 +- + .../10 gtk-doc/doc/foobar1/foobar-docs.sgml | 2 +- + .../doc/foobar1/foobar-sections.txt | 16 ++++++ + .../10 gtk-doc/doc/foobar1/foobar.types | 4 ++ + .../10 gtk-doc/doc/foobar1/meson.build | 6 ++- + test cases/frameworks/10 gtk-doc/foo.c | 30 +++++++++++ + .../frameworks/10 gtk-doc/include/foo.h | 18 +++++++ + test cases/frameworks/10 gtk-doc/meson.build | 12 +++++ + test cases/frameworks/10 gtk-doc/test.json | 4 +- + 13 files changed, 127 insertions(+), 46 deletions(-) + create mode 100644 test cases/frameworks/10 gtk-doc/doc/foobar1/foobar-sections.txt + create mode 100644 test cases/frameworks/10 gtk-doc/doc/foobar1/foobar.types + create mode 100644 test cases/frameworks/10 gtk-doc/foo.c + +diff --git a/mesonbuild/modules/__init__.py b/mesonbuild/modules/__init__.py +index ddb5e3e6cf3..c0970294c34 100644 +--- a/mesonbuild/modules/__init__.py ++++ b/mesonbuild/modules/__init__.py +@@ -56,6 +56,33 @@ def __init__(self, interpreter: 'Interpreter') -> None: + self.target_machine = interpreter.builtin['target_machine'].held_object + self.current_node = interpreter.current_node + ++ def get_include_args(self, include_dirs, prefix='-I'): ++ if not include_dirs: ++ return [] ++ ++ srcdir = self.environment.get_source_dir() ++ builddir = self.environment.get_build_dir() ++ ++ dirs_str = [] ++ for dirs in unholder(include_dirs): ++ if isinstance(dirs, str): ++ dirs_str += [f'{prefix}{dirs}'] ++ continue ++ ++ # Should be build.IncludeDirs object. ++ basedir = dirs.get_curdir() ++ for d in dirs.get_incdirs(): ++ expdir = os.path.join(basedir, d) ++ srctreedir = os.path.join(srcdir, expdir) ++ buildtreedir = os.path.join(builddir, expdir) ++ dirs_str += [f'{prefix}{buildtreedir}', ++ f'{prefix}{srctreedir}'] ++ for d in dirs.get_extra_build_dirs(): ++ dirs_str += [f'{prefix}{d}'] ++ ++ return dirs_str ++ ++ + class ModuleObject: + """Base class for all objects returned by modules + """ +@@ -71,33 +98,6 @@ def __init__(self, interpreter: T.Optional['Interpreter'] = None) -> None: + class ExtensionModule(ModuleObject): + pass + +-def get_include_args(include_dirs, prefix='-I'): +- ''' +- Expand include arguments to refer to the source and build dirs +- by using @SOURCE_ROOT@ and @BUILD_ROOT@ for later substitution +- ''' +- if not include_dirs: +- return [] +- +- dirs_str = [] +- for dirs in unholder(include_dirs): +- if isinstance(dirs, str): +- dirs_str += [f'{prefix}{dirs}'] +- continue +- +- # Should be build.IncludeDirs object. +- basedir = dirs.get_curdir() +- for d in dirs.get_incdirs(): +- expdir = os.path.join(basedir, d) +- srctreedir = os.path.join('@SOURCE_ROOT@', expdir) +- buildtreedir = os.path.join('@BUILD_ROOT@', expdir) +- dirs_str += [f'{prefix}{buildtreedir}', +- f'{prefix}{srctreedir}'] +- for d in dirs.get_extra_build_dirs(): +- dirs_str += [f'{prefix}{d}'] +- +- return dirs_str +- + def is_module_library(fname): + ''' + Check if the file is a library-like file generated by a module-specific +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index d0b053d4f76..c91cda66f8b 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -26,7 +26,6 @@ + from .. import mesonlib + from .. import interpreter + from . import GResourceTarget, GResourceHeaderTarget, GirTarget, TypelibTarget, VapiTarget +-from . import get_include_args + from . import ExtensionModule + from . import ModuleReturnValue + from ..mesonlib import ( +@@ -394,7 +393,7 @@ def _get_dependencies_flags(self, deps, state, depends, include_rpath=False, + gi_includes.update([girdir]) + if isinstance(dep, InternalDependency): + cflags.update(dep.get_compile_args()) +- cflags.update(get_include_args(dep.include_directories)) ++ cflags.update(state.get_include_args(dep.include_directories)) + for lib in unholder(dep.libraries): + if isinstance(lib, build.SharedLibrary): + internal_ldflags.update(self._get_link_args(state, lib, depends, include_rpath)) +@@ -443,7 +442,7 @@ def _get_dependencies_flags(self, deps, state, depends, include_rpath=False, + else: + external_ldflags.update([lib]) + elif isinstance(dep, (build.StaticLibrary, build.SharedLibrary)): +- cflags.update(get_include_args(dep.get_include_dirs())) ++ cflags.update(state.get_include_args(dep.get_include_dirs())) + depends.append(dep) + else: + mlog.log(f'dependency {dep!r} not handled to build gir files') +@@ -853,7 +852,7 @@ def generate_gir(self, state, args, kwargs): + scan_command += self._scan_header(kwargs) + scan_command += self._scan_extra_args(kwargs) + scan_command += ['-I' + srcdir, '-I' + builddir] +- scan_command += get_include_args(girtargets_inc_dirs) ++ scan_command += state.get_include_args(girtargets_inc_dirs) + scan_command += ['--filelist=' + self._make_gir_filelist(state, srcdir, ns, nsversion, girtargets, libsources)] + scan_command += self._scan_link_withs(state, depends, kwargs) + scan_command += self._scan_include(state, depends, gir_inc_dirs, kwargs) +@@ -863,8 +862,8 @@ def generate_gir(self, state, args, kwargs): + scan_command += ['--cflags-begin'] + scan_command += cflags + scan_command += ['--cflags-end'] +- scan_command += get_include_args(inc_dirs) +- scan_command += get_include_args(list(gi_includes) + gir_inc_dirs + inc_dirs, prefix='--add-include-path=') ++ scan_command += state.get_include_args(inc_dirs) ++ scan_command += state.get_include_args(list(gi_includes) + gir_inc_dirs + inc_dirs, prefix='--add-include-path=') + scan_command += list(internal_ldflags) + scan_command += self._scan_gir_targets(state, girtargets) + scan_command += self._scan_langs(state, [lc[0] for lc in langs_compilers]) +@@ -886,7 +885,7 @@ def generate_gir(self, state, args, kwargs): + + typelib_output = f'{ns}-{nsversion}.typelib' + typelib_cmd = [gicompiler, scan_target, '--output', '@OUTPUT@'] +- typelib_cmd += get_include_args(gir_inc_dirs, prefix='--includedir=') ++ typelib_cmd += state.get_include_args(gir_inc_dirs, prefix='--includedir=') + + for incdir in typelib_includes: + typelib_cmd += ["--includedir=" + incdir] +@@ -1127,7 +1126,7 @@ def _get_build_args(self, kwargs, state, depends): + 'Gir include dirs should be include_directories().') + + cflags.extend(deps_cflags) +- cflags.extend(get_include_args(inc_dirs)) ++ cflags.extend(state.get_include_args(inc_dirs)) + ldflags = [] + ldflags.extend(internal_ldflags) + ldflags.extend(external_ldflags) +diff --git a/mesonbuild/modules/hotdoc.py b/mesonbuild/modules/hotdoc.py +index bf8cd229c0d..89a5d938ea7 100644 +--- a/mesonbuild/modules/hotdoc.py ++++ b/mesonbuild/modules/hotdoc.py +@@ -22,7 +22,6 @@ + from mesonbuild.coredata import MesonException + from . import ModuleReturnValue + from . import ExtensionModule +-from . import get_include_args + from ..dependencies import Dependency, InternalDependency + from ..interpreterbase import FeatureNew, InvalidArguments, noPosargs, noKwargs + from ..interpreter import CustomTargetHolder +@@ -191,7 +190,7 @@ def process_dependencies(self, deps): + for dep in mesonlib.listify(ensure_list(deps)): + dep = getattr(dep, "held_object", dep) + if isinstance(dep, InternalDependency): +- inc_args = get_include_args(dep.include_directories) ++ inc_args = self.state.get_include_args(dep.include_directories) + cflags.update([self.replace_dirs_in_string(x) + for x in inc_args]) + cflags.update(self.process_dependencies(dep.libraries)) +diff --git a/mesonbuild/modules/qt.py b/mesonbuild/modules/qt.py +index b7389bd59af..1bf0099d1df 100644 +--- a/mesonbuild/modules/qt.py ++++ b/mesonbuild/modules/qt.py +@@ -23,7 +23,7 @@ + from ..mesonlib import MesonException, extract_as_list, File, unholder, version_compare + from ..dependencies import Dependency + import xml.etree.ElementTree as ET +-from . import ModuleReturnValue, get_include_args, ExtensionModule ++from . import ModuleReturnValue, ExtensionModule + from ..interpreterbase import noPosargs, permittedKwargs, FeatureNew, FeatureNewKwargs + from ..interpreter import extract_required_kwarg + from ..programs import NonExistingExternalProgram +@@ -239,7 +239,7 @@ def preprocess(self, state, args, kwargs): + ui_gen = build.Generator([self.uic], ui_kwargs) + ui_output = ui_gen.process_files(f'Qt{self.qt_version} ui', ui_files, state) + sources.append(ui_output) +- inc = get_include_args(include_dirs=include_directories) ++ inc = state.get_include_args(include_dirs=include_directories) + compile_args = [] + for dep in unholder(dependencies): + if isinstance(dep, Dependency): +diff --git a/mesonbuild/modules/windows.py b/mesonbuild/modules/windows.py +index d7a86380885..c4fdc196681 100644 +--- a/mesonbuild/modules/windows.py ++++ b/mesonbuild/modules/windows.py +@@ -19,7 +19,6 @@ + from .. import mlog + from .. import mesonlib, build + from ..mesonlib import MachineChoice, MesonException, extract_as_list, unholder +-from . import get_include_args + from . import ModuleReturnValue + from . import ExtensionModule + from ..interpreter import CustomTargetHolder +@@ -83,12 +82,12 @@ def compile_resources(self, state, args, kwargs): + wrc_depends = extract_as_list(kwargs, 'depends', pop = True) + for d in wrc_depends: + if isinstance(d, CustomTargetHolder): +- extra_args += get_include_args([d.outdir_include()]) ++ extra_args += state.get_include_args([d.outdir_include()]) + inc_dirs = extract_as_list(kwargs, 'include_directories', pop = True) + for incd in inc_dirs: + if not isinstance(incd.held_object, (str, build.IncludeDirs)): + raise MesonException('Resource include dirs should be include_directories().') +- extra_args += get_include_args(inc_dirs) ++ extra_args += state.get_include_args(inc_dirs) + + rescomp, rescomp_type = self._find_resource_compiler(state) + if rescomp_type == ResourceCompilerType.rc: +diff --git a/test cases/frameworks/10 gtk-doc/doc/foobar1/foobar-docs.sgml b/test cases/frameworks/10 gtk-doc/doc/foobar1/foobar-docs.sgml +index 95f73efdf45..6ccd087dc18 100644 +--- a/test cases/frameworks/10 gtk-doc/doc/foobar1/foobar-docs.sgml ++++ b/test cases/frameworks/10 gtk-doc/doc/foobar1/foobar-docs.sgml +@@ -35,7 +35,7 @@ + </partintro> + <xi:include href="xml/foo.xml"/> + <xi:include href="../../include/bar.xml"/> +- <xi:include href="xml/foo-version.xml"/> ++ <xi:include href="xml/version.xml"/> + </reference> + + </book> +diff --git a/test cases/frameworks/10 gtk-doc/doc/foobar1/foobar-sections.txt b/test cases/frameworks/10 gtk-doc/doc/foobar1/foobar-sections.txt +new file mode 100644 +index 00000000000..d14c8dab010 +--- /dev/null ++++ b/test cases/frameworks/10 gtk-doc/doc/foobar1/foobar-sections.txt +@@ -0,0 +1,16 @@ ++<SECTION> ++<FILE>foo</FILE> ++<TITLE>FooObj</TITLE> ++FooObj ++FooObjClass ++foo_do_something ++</SECTION> ++ ++<SECTION> ++<FILE>version</FILE> ++<TITLE>version</TITLE> ++FOO_MAJOR_VERSION ++FOO_MINOR_VERSION ++FOO_MICRO_VERSION ++</SECTION> ++ +diff --git a/test cases/frameworks/10 gtk-doc/doc/foobar1/foobar.types b/test cases/frameworks/10 gtk-doc/doc/foobar1/foobar.types +new file mode 100644 +index 00000000000..0a9c046f3ed +--- /dev/null ++++ b/test cases/frameworks/10 gtk-doc/doc/foobar1/foobar.types +@@ -0,0 +1,4 @@ ++% This include is useless it's a regression test for https://github.com/mesonbuild/meson/issues/8744 ++#include <foo.h> ++ ++foo_obj_get_type +diff --git a/test cases/frameworks/10 gtk-doc/doc/foobar1/meson.build b/test cases/frameworks/10 gtk-doc/doc/foobar1/meson.build +index 149c6e956aa..f4b3724dbae 100644 +--- a/test cases/frameworks/10 gtk-doc/doc/foobar1/meson.build ++++ b/test cases/frameworks/10 gtk-doc/doc/foobar1/meson.build +@@ -1,5 +1,9 @@ + gnome.gtkdoc('foobar', +- src_dir : inc, ++ src_dir : [inc, '.'], + main_sgml : 'foobar-docs.sgml', + content_files : [docbook, version_xml], ++ dependencies: foo_dep, ++ # Manually written types file for regression test: ++ # https://github.com/mesonbuild/meson/issues/8744 ++ gobject_typesfile: 'foobar.types', + install : true) +diff --git a/test cases/frameworks/10 gtk-doc/foo.c b/test cases/frameworks/10 gtk-doc/foo.c +new file mode 100644 +index 00000000000..36c0639ec08 +--- /dev/null ++++ b/test cases/frameworks/10 gtk-doc/foo.c +@@ -0,0 +1,30 @@ ++#include <foo.h> ++ ++ ++struct _FooObj { ++ GObject parent; ++ int dummy; ++}; ++ ++G_DEFINE_TYPE(FooObj, foo_obj, G_TYPE_OBJECT) ++ ++static void foo_obj_init (FooObj *self) ++{ ++} ++ ++static void foo_obj_class_init (FooObjClass *klass) ++{ ++} ++ ++/** ++ * foo_do_something: ++ * @self: self ++ * ++ * Useless function. ++ * ++ * Returns: 0. ++ */ ++int foo_do_something(FooObj *self) ++{ ++ return 0; ++} +diff --git a/test cases/frameworks/10 gtk-doc/include/foo.h b/test cases/frameworks/10 gtk-doc/include/foo.h +index 7b8946b6a86..510f3d1ecb5 100644 +--- a/test cases/frameworks/10 gtk-doc/include/foo.h ++++ b/test cases/frameworks/10 gtk-doc/include/foo.h +@@ -1,5 +1,7 @@ + #pragma once + ++#include <glib-object.h> ++ + /** + * FooIndecision: + * @FOO_MAYBE: Something maybe +@@ -13,3 +15,19 @@ typedef enum { + FOO_POSSIBLY, + } FooIndecision; + ++/** ++ * FooObjClass: ++ * ++ * The class ++ */ ++ ++/** ++ * FooObj: ++ * ++ * The instance ++ */ ++ ++#define FOO_TYPE_OBJ foo_obj_get_type() ++G_DECLARE_FINAL_TYPE(FooObj, foo_obj, FOO, OBJ, GObject) ++ ++int foo_do_something(FooObj *self); +diff --git a/test cases/frameworks/10 gtk-doc/meson.build b/test cases/frameworks/10 gtk-doc/meson.build +index 5c22ad0afa4..292980fafa7 100644 +--- a/test cases/frameworks/10 gtk-doc/meson.build ++++ b/test cases/frameworks/10 gtk-doc/meson.build +@@ -24,4 +24,16 @@ if gtkdoc_ver.version_compare('<1.26') + error('MESON_SKIP_TEST gtk-doc test requires gtkdoc >= 1.26.') + endif + ++gobject = dependency('gobject-2.0') ++ ++libfoo = library('foo', 'foo.c', ++ include_directories: inc, ++ dependencies: gobject, ++) ++ ++foo_dep = declare_dependency( ++ link_with: libfoo, ++ include_directories: inc, ++) ++ + subdir('doc') +diff --git a/test cases/frameworks/10 gtk-doc/test.json b/test cases/frameworks/10 gtk-doc/test.json +index c44126cc741..03ad0595817 100644 +--- a/test cases/frameworks/10 gtk-doc/test.json ++++ b/test cases/frameworks/10 gtk-doc/test.json +@@ -4,8 +4,8 @@ + {"type": "file", "file": "usr/share/gtk-doc/html/foobar/BAR.html"}, + {"type": "file", "file": "usr/share/gtk-doc/html/foobar/foobar.devhelp2"}, + {"type": "file", "file": "usr/share/gtk-doc/html/foobar/foobar.html"}, +- {"type": "file", "file": "usr/share/gtk-doc/html/foobar/foobar-foo.html"}, +- {"type": "file", "file": "usr/share/gtk-doc/html/foobar/foobar-foo-version.html"}, ++ {"type": "file", "file": "usr/share/gtk-doc/html/foobar/FooObj.html"}, ++ {"type": "file", "file": "usr/share/gtk-doc/html/foobar/foo-version.html"}, + {"type": "file", "file": "usr/share/gtk-doc/html/foobar/home.png"}, + {"type": "file", "file": "usr/share/gtk-doc/html/foobar/index.html"}, + {"type": "file", "file": "usr/share/gtk-doc/html/foobar/left.png"}, diff --git a/poky/meta/recipes-devtools/meson/meson/cross-prop-default.patch b/poky/meta/recipes-devtools/meson/meson/cross-prop-default.patch deleted file mode 100644 index 772395e879..0000000000 --- a/poky/meta/recipes-devtools/meson/meson/cross-prop-default.patch +++ /dev/null @@ -1,23 +0,0 @@ -meson.build files that use cc.run() in native builds can silently fallback to -meson.get_cross_property() in cross builds without an exe-wrapper, but there's -no way to know that this is happening. - -As the defaults may be pessimistic (for example, disabling the support for a -feature that should be enabled) emit a warning when the default is used, so that -the recipe can explicitly set the cross property as relevant. - -Upstream-Status: Submitted [https://github.com/mesonbuild/meson/pull/5071] -Signed-off-by: Ross Burton <ross.burton@intel.com> - -diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py -index 3c3cfae0..10e741ae 100644 ---- a/mesonbuild/interpreter.py -+++ b/mesonbuild/interpreter.py -@@ -1890,6 +1890,7 @@ class MesonMain(InterpreterObject): - return props[propname] - except Exception: - if len(args) == 2: -+ mlog.warning('Cross property %s is using default value %s' % (propname, args[1])) - return args[1] - raise InterpreterException('Unknown cross property: %s.' % propname) - diff --git a/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch b/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch index 25b30ca27a..29e164ccc7 100644 --- a/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch +++ b/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch @@ -3,7 +3,7 @@ to be executed) but *host* gobject-introspection libraries, as otherwise the native pkg-config can be used and the build will try to link native and host binaries together. -Upstream-Status: Pending +Upstream-Status: Backport [589236226856f591c9e8daf0cb7aa1aef8862388] Signed-off-by: Ross Burton <ross.burton@arm.com> diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py diff --git a/poky/meta/recipes-devtools/meson/meson_0.57.1.bb b/poky/meta/recipes-devtools/meson/meson_0.58.0.bb index de9b905c12..de9b905c12 100644 --- a/poky/meta/recipes-devtools/meson/meson_0.57.1.bb +++ b/poky/meta/recipes-devtools/meson/meson_0.58.0.bb diff --git a/poky/meta/recipes-devtools/meson/nativesdk-meson_0.57.1.bb b/poky/meta/recipes-devtools/meson/nativesdk-meson_0.58.0.bb index 8778cab124..74e1a7104a 100644 --- a/poky/meta/recipes-devtools/meson/nativesdk-meson_0.57.1.bb +++ b/poky/meta/recipes-devtools/meson/nativesdk-meson_0.58.0.bb @@ -1,21 +1,11 @@ include meson.inc -inherit siteinfo +inherit meson-routines inherit nativesdk SRC_URI += "file://meson-setup.py \ file://meson-wrapper" -def meson_endian(prefix, d): - arch, os = d.getVar(prefix + "_ARCH"), d.getVar(prefix + "_OS") - sitedata = siteinfo_data_for_machine(arch, os, d) - if "endian-little" in sitedata: - return "little" - elif "endian-big" in sitedata: - return "big" - else: - bb.fatal("Cannot determine endianism for %s-%s" % (arch, os)) - # The cross file logic is similar but not identical to that in meson.bbclass, # since it's generating for an SDK rather than a cross-compile. Important # differences are: @@ -44,7 +34,7 @@ sys_root = @OECORE_TARGET_SYSROOT [host_machine] system = '${SDK_OS}' -cpu_family = '${SDK_ARCH}' +cpu_family = '${@meson_cpu_family("SDK_ARCH", d)}' cpu = '${SDK_ARCH}' endian = '${@meson_endian("SDK", d)}' EOF diff --git a/poky/meta/recipes-devtools/mklibs/files/ac_init_fix.patch b/poky/meta/recipes-devtools/mklibs/files/ac_init_fix.patch deleted file mode 100644 index 422af10420..0000000000 --- a/poky/meta/recipes-devtools/mklibs/files/ac_init_fix.patch +++ /dev/null @@ -1,19 +0,0 @@ -Get the version of mklibs by simpler means. The MKLIBS_VERSION string in the -configure.ac file is replaced with real version string by the -do_configure_prepend() function from the recipe .bb file. - -Upstream-Status: Inappropriate [configuration] - -Nitin A Kamble <nitin.a.kamble@intel.com> -Date: 2011/01/24 - -Index: mklibs/configure.ac -=================================================================== ---- mklibs.orig/configure.ac 2010-02-21 17:34:56.000000000 -0800 -+++ mklibs/configure.ac 2011-01-24 18:52:19.943242079 -0800 -@@ -1,4 +1,4 @@ --AC_INIT([mklibs],m4_esyscmd(dpkg-parsechangelog | perl -ne 'print $1 if m/^Version: (.*)$/;')) -+AC_INIT([mklibs], MKLIBS_VERSION) - AM_INIT_AUTOMAKE([foreign no-define]) - AC_CONFIG_HEADERS([config.h]) - AM_MAINTAINER_MODE diff --git a/poky/meta/recipes-devtools/mklibs/files/avoid-failure-on-symbol-provided-by-application.patch b/poky/meta/recipes-devtools/mklibs/files/avoid-failure-on-symbol-provided-by-application.patch deleted file mode 100644 index 17d9af4de4..0000000000 --- a/poky/meta/recipes-devtools/mklibs/files/avoid-failure-on-symbol-provided-by-application.patch +++ /dev/null @@ -1,103 +0,0 @@ -From dcb45256970b15b672d0004533826c94083356e5 Mon Sep 17 00:00:00 2001 -From: Yuanjie Huang <yuanjie.huang@windriver.com> -Date: Fri, 17 Apr 2015 14:48:20 +0800 -Subject: [PATCH 4/6] avoid failure on symbol provided by application - -Upstream-Status: Pending - -Undefined symbols in a library can be provided by the application -that links to the library, such as `logsink' in libmultipath.so.0. -This fix checks the type of object in which the symbol is needed -and the existence of the symbol in application, when a symbol -cannot be provided by libraries. It prevents false alarm on absence -of symbols. - -Signed-off-by: Yuanjie Huang <yuanjie.huang@windriver.com> - ---- - src/mklibs | 28 ++++++++++++++++++++++++---- - 1 file changed, 24 insertions(+), 4 deletions(-) - -diff --git a/src/mklibs b/src/mklibs -index a3533c0..66b7a09 100755 ---- a/src/mklibs -+++ b/src/mklibs -@@ -133,9 +133,9 @@ class Symbol(object): - return '@'.join(ret) - - class UndefinedSymbol(Symbol): -- def __init__(self, name, weak, version, library): -+ def __init__(self, name, weak, version, library, object): - super(UndefinedSymbol, self).__init__(name, version, library) -- self.weak, self.library = weak, library -+ self.weak, self.library, self.object = weak, library, object - - def symbol_is_blacklisted(name): - # The ARM Embedded ABI spec states symbols under this namespace as -@@ -152,6 +152,11 @@ def undefined_symbols(obj): - - output = command("mklibs-readelf", "--print-symbols-undefined", obj) - -+ if len(obj) > len(dest_path) and obj[:len(dest_path)] == dest_path: -+ object = obj[len(dest_path) + 1:-len('-so-stripped')] -+ else: -+ object = obj -+ - result = [] - for line in output: - name, weak_string, version_string, library_string = line.split()[:4] -@@ -171,7 +176,7 @@ def undefined_symbols(obj): - if library_string.lower() != 'none': - library = library_string - -- result.append(UndefinedSymbol(name, weak, version, library)) -+ result.append(UndefinedSymbol(name, weak, version, library, object)) - - return result - -@@ -498,12 +503,13 @@ while 1: - and re.search("^ps_", str(symbol))) - and not (re.search("ld-linux.so.3$", str(symbol))) - and not (re.search("^__gnu_local_gp", str(symbol)))): -- debug(DEBUG_SPAM, "needed_symbols adding %s, weak: %s" % (symbol, symbol.weak)) -+ debug(DEBUG_SPAM, "needed_symbols adding %s, weak: %s, for %s" % (symbol, symbol.weak, obj)) - needed_symbols[str(symbol)] = symbol - libraries.update(library_depends(obj)) - - # calculate what symbols are present in small_libs and available_libs - present_symbols = {} -+ present_symbol_progs = {} - checked_libs = small_libs - checked_libs.extend(available_libs) - checked_libs.append(sysroot + ldlib) -@@ -513,6 +519,12 @@ while 1: - names = symbol.base_names() - for name in names: - present_symbols[name] = symbol -+ if not so_pattern.match(lib): -+ debug(DEBUG_SPAM, "present_symbol_progs adding %s, from executable %s" % (' '.join(names), lib)) -+ for name in names: -+ progs = present_symbol_progs.get(name, set()) -+ progs.add(lib) -+ present_symbol_progs[name] = progs - - # are we finished? - num_unresolved = 0 -@@ -568,6 +580,14 @@ while 1: - for name in needed_symbols: - if not name in symbol_provider: - if not needed_symbols[name].weak: -+ # WORKAROUND: Undefined symbols in a library can be provided by the application -+ # that links to the library. So if the object which requires the symbol is a library -+ # and some application can provide the symbol, the undefined symbol is skipped. -+ symbol = needed_symbols[name] -+ if so_pattern.match(symbol.object) and present_symbol_progs.get(name, None): -+ debug(DEBUG_SPAM, "symbol %s in library %s is provided by executable %s" \ -+ % (name, symbol.object, ' '.join(present_symbol_progs[name]))) -+ continue - raise Exception("No library provides non-weak %s" % name) - else: - lib = symbol_provider[name] --- -2.16.1 - diff --git a/poky/meta/recipes-devtools/mklibs/files/fix_STT_GNU_IFUNC.patch b/poky/meta/recipes-devtools/mklibs/files/fix_STT_GNU_IFUNC.patch deleted file mode 100644 index d27a48916d..0000000000 --- a/poky/meta/recipes-devtools/mklibs/files/fix_STT_GNU_IFUNC.patch +++ /dev/null @@ -1,26 +0,0 @@ -The libc6-dev in Ubuntu 9.04 is so old that the elf.h doesn't -define STT_GNU_IFUNC, so we have to define it ourselves. - -Upstream-Status: Inappropriate [other] - old release specific, maybe removable - --- Dexuan Cui (dexuan.cui@intel.com) Feb 16, 2011. - -diff --git a/src/mklibs-readelf/main.cpp b/src/mklibs-readelf/main.cpp -index 2444c39..56d93f8 100644 ---- a/src/mklibs-readelf/main.cpp -+++ b/src/mklibs-readelf/main.cpp -@@ -6,6 +6,14 @@ - #include <vector> - - #include <elf.h> -+/* -+ * The /usr/include/elf.h in some distributions(like Ubuntu 9.04) doesn't -+ * define the macro. We need to define it here. -+ */ -+#ifndef STT_GNU_IFUNC -+#define STT_GNU_IFUNC 10 /* Symbol is indirect code object */ -+#endif -+ - #include <getopt.h> - - #include "elf.hpp" diff --git a/poky/meta/recipes-devtools/mklibs/files/fix_cross_compile.patch b/poky/meta/recipes-devtools/mklibs/files/fix_cross_compile.patch deleted file mode 100644 index 13e4606b80..0000000000 --- a/poky/meta/recipes-devtools/mklibs/files/fix_cross_compile.patch +++ /dev/null @@ -1,81 +0,0 @@ -Remove dependency on dpkg - -Upstream-Status: Submitted - -Asking the host OS whether it supports multiarch is not useful -in a cross-compilation environment, or if the user has specified -a libdir explicitly. So this patch, based on the work of Mentor -Graphics, removes mklibs's dependency on dpkg package. - -Signed-off-by: Yuanjie Huang <Yuanjie.Huang@windriver.com> - src/mklibs | 30 +++++++++++++++++++----------- - 1 file changed, 19 insertions(+), 11 deletions(-) - -diff --git a/src/mklibs b/src/mklibs -index d9b784b..c5614ea 100755 ---- a/src/mklibs -+++ b/src/mklibs -@@ -261,6 +261,11 @@ def extract_soname(so_file): - return "" - - def multiarch(paths): -+ # Asking the host OS whether it supports multiarch is not useful -+ # in a cross-compilation environment, or if the user has specified -+ # a libdir explicitly. -+ if sysroot != "" or libdir != "": -+ return paths - devnull = open('/dev/null', 'w') - dpkg_architecture = subprocess.Popen( - ['dpkg-architecture', '-qDEB_HOST_MULTIARCH'], -@@ -340,7 +345,7 @@ lib_path = [] - dest_path = "DEST" - ldlib = "LDLIB" - include_default_lib_path = "yes" --default_lib_path = multiarch(["/lib/", "/usr/lib/", "/usr/X11R6/lib/"]) -+default_lib_path = ["/lib/", "/usr/lib/", "/usr/X11R6/lib/"] - libc_extras_dir = "/usr/lib/libc_pic" - libc_extras_dir_default = True - libdir = "lib" -@@ -386,7 +391,7 @@ for opt, arg in optlist: - elif opt == "--libdir": - libdir = arg - elif opt in ("--help", "-h"): -- usage(0) -+ usage(0) - sys.exit(0) - elif opt in ("--version", "-V"): - version(vers) -@@ -395,6 +400,7 @@ for opt, arg in optlist: - print "WARNING: unknown option: " + opt + "\targ: " + arg - - if include_default_lib_path == "yes": -+ default_lib_path = multiarch(default_lib_path) - lib_path.extend([a.replace("/lib/", "/" + libdir + "/") for a in default_lib_path]) - - if libc_extras_dir_default: -@@ -661,16 +669,16 @@ ld_path_name = os.path.dirname(ldlib) - ld_full_path = "../" + ldlib - ld_file = find_lib(ld_file_name) - --if ld_path_name != "/lib": -- if os.access(dest_path + "/" + ld_file_name, os.F_OK): -- os.remove(dest_path + "/" + ld_file_name) -+#if ld_path_name != "/lib": -+# if os.access(dest_path + "/" + ld_file_name, os.F_OK): -+# os.remove(dest_path + "/" + ld_file_name) - --if not os.path.exists(dest_path + "/../" + ld_path_name): -- os.mkdir(dest_path + "/../" + ld_path_name) -+#if not os.path.exists(dest_path + "/../" + ld_path_name): -+# os.mkdir(dest_path + "/../" + ld_path_name) - --if not os.access(dest_path + "/" + ld_full_path, os.F_OK): -- debug(DEBUG_NORMAL, "I: stripping and copying dynamic linker to " + ld_full_path) -+if not os.access(dest_path + "/" + ld_file_name, os.F_OK): -+ debug(DEBUG_NORMAL, "I: stripping and copying dynamic linker to " + ld_file_name) - command(target + "objcopy", "--strip-unneeded -R .note -R .comment", -- ld_file, dest_path + "/" + ld_full_path) -+ ld_file, dest_path + "/" + ld_file_name) - --os.chmod(dest_path + "/" + ld_full_path, 0755) -+os.chmod(dest_path + "/" + ld_file_name, 0755) diff --git a/poky/meta/recipes-devtools/mklibs/files/show-GNU-unique-symbols-as-provided-symbols.patch b/poky/meta/recipes-devtools/mklibs/files/show-GNU-unique-symbols-as-provided-symbols.patch deleted file mode 100644 index bc56593e6a..0000000000 --- a/poky/meta/recipes-devtools/mklibs/files/show-GNU-unique-symbols-as-provided-symbols.patch +++ /dev/null @@ -1,34 +0,0 @@ -From eddf04c7f8312e9c29cdb24e431b7e4fb2cc70ed Mon Sep 17 00:00:00 2001 -From: Yuanjie Huang <yuanjie.huang@windriver.com> -Date: Wed, 15 Apr 2015 14:00:06 +0800 -Subject: [PATCH] Show GNU unique symbols as provided symbols - -Upstream-Status: Submitted - -GNU Unique symbol is a GNU extension employed by new version of GCC -by default. Even Standard C++ library in GCC 4.9 provides some symbols, -such as _ZNSs4_Rep20_S_empty_rep_storageE in this binding type instead -of ELF standard weak binding. -This patch adds support of this new binding type to mklibs-readelf. - -Signed-off-by: Yuanjie Huang <yuanjie.huang@windriver.com> ---- - src/mklibs-readelf/main.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/mklibs-readelf/main.cpp b/src/mklibs-readelf/main.cpp -index 56d93f8..0134530 100644 ---- a/src/mklibs-readelf/main.cpp -+++ b/src/mklibs-readelf/main.cpp -@@ -88,7 +88,7 @@ static void process_symbols_provided (const Elf::section_type<Elf::section_type_ - uint8_t type = symbol->get_type (); - const std::string &name = symbol->get_name_string (); - -- if (bind != STB_GLOBAL && bind != STB_WEAK) -+ if (bind != STB_GLOBAL && bind != STB_WEAK && bind != STB_GNU_UNIQUE) - continue; - if (shndx == SHN_UNDEF || shndx == SHN_ABS) - continue; --- -1.8.5.2.233.g932f7e4 - diff --git a/poky/meta/recipes-devtools/mklibs/files/sysrooted-ldso.patch b/poky/meta/recipes-devtools/mklibs/files/sysrooted-ldso.patch deleted file mode 100644 index 75500a029a..0000000000 --- a/poky/meta/recipes-devtools/mklibs/files/sysrooted-ldso.patch +++ /dev/null @@ -1,18 +0,0 @@ -In cross builds we will have to respect sysroot - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending - -Index: mklibs-0.1.39/src/mklibs -=================================================================== ---- mklibs-0.1.39.orig/src/mklibs 2014-03-01 18:25:36.000000000 +0000 -+++ mklibs-0.1.39/src/mklibs 2014-10-19 00:51:46.813534596 +0000 -@@ -495,7 +495,7 @@ - present_symbols = {} - checked_libs = small_libs - checked_libs.extend(available_libs) -- checked_libs.append(ldlib) -+ checked_libs.append(sysroot + ldlib) - for lib in checked_libs: - for symbol in provided_symbols(lib): - debug(DEBUG_SPAM, "present_symbols adding %s" % symbol) diff --git a/poky/meta/recipes-devtools/mklibs/mklibs-native_0.1.44.bb b/poky/meta/recipes-devtools/mklibs/mklibs-native_0.1.44.bb deleted file mode 100644 index 1784af1f4c..0000000000 --- a/poky/meta/recipes-devtools/mklibs/mklibs-native_0.1.44.bb +++ /dev/null @@ -1,22 +0,0 @@ -SUMMARY = "Shared library optimisation tool" -DESCRIPTION = "mklibs produces cut-down shared libraries that contain only the routines required by a particular set of executables." -HOMEPAGE = "https://launchpad.net/mklibs" -SECTION = "devel" -LICENSE = "GPLv2+" -LIC_FILES_CHKSUM = "file://debian/copyright;md5=98d31037b13d896e33890738ef01af64" - -SRC_URI = "http://snapshot.debian.org/archive/debian/20180828T214102Z/pool/main/m/mklibs/mklibs_${PV}.tar.xz \ - file://ac_init_fix.patch\ - file://fix_STT_GNU_IFUNC.patch\ - file://sysrooted-ldso.patch \ - file://avoid-failure-on-symbol-provided-by-application.patch \ - file://show-GNU-unique-symbols-as-provided-symbols.patch \ - file://fix_cross_compile.patch \ -" - -SRC_URI[md5sum] = "6b6eeb9b4016c6a7317acc28c89e32cc" -SRC_URI[sha256sum] = "3af0b6bd35e5b6fc58d8b68827fbae2ff6b7e20dd2b238ccb9b49d84722066c2" - -UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/m/mklibs/" - -inherit autotools gettext native diff --git a/poky/meta/recipes-devtools/mmc/mmc-utils/0001-mmc_cmd.c-Use-extra-braces-when-initializing-subobje.patch b/poky/meta/recipes-devtools/mmc/mmc-utils/0001-mmc_cmd.c-Use-extra-braces-when-initializing-subobje.patch deleted file mode 100644 index 12707357b2..0000000000 --- a/poky/meta/recipes-devtools/mmc/mmc-utils/0001-mmc_cmd.c-Use-extra-braces-when-initializing-subobje.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 04fbe6ddb5f1e02efbcae3cdf5beb16757a98948 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 10 May 2019 12:58:01 -0700 -Subject: [PATCH] mmc_cmd.c: Use extra braces when initializing subobjects - -clang warns with -Werror,-Wmissing-braces, as following error -| mmc_cmds.c:1886:36: error: suggest braces around initialization of subobject [-Werror,-W -missing-braces] -| struct rpmb_frame frame_status = {0}; -| ^ -| {} - -Upstream-Status: Pending - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - mmc_cmds.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/mmc_cmds.c b/mmc_cmds.c -index 19a9da1..838e8c3 100644 ---- a/mmc_cmds.c -+++ b/mmc_cmds.c -@@ -1883,7 +1883,7 @@ static int do_rpmb_op(int fd, - u_int16_t rpmb_type; - struct mmc_ioc_multi_cmd *mioc; - struct mmc_ioc_cmd *ioc; -- struct rpmb_frame frame_status = {0}; -+ struct rpmb_frame frame_status = {{0}}; - - if (!frame_in || !frame_out || !out_cnt) - return -EINVAL; diff --git a/poky/meta/recipes-devtools/mmc/mmc-utils_git.bb b/poky/meta/recipes-devtools/mmc/mmc-utils_git.bb index 8fe606915e..bdd0bf7f1b 100644 --- a/poky/meta/recipes-devtools/mmc/mmc-utils_git.bb +++ b/poky/meta/recipes-devtools/mmc/mmc-utils_git.bb @@ -5,13 +5,11 @@ LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://mmc.c;beginline=1;endline=20;md5=fae32792e20f4d27ade1c5a762d16b7d" SRCBRANCH ?= "master" -SRCREV = "73d6c59af8d1bcedf5de4aa1f5d5b7f765f545f5" +SRCREV = "43282e80e174cc73b09b81a4d17cb3a7b4dc5cfc" PV = "0.1+git${SRCPV}" -SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git;branch=${SRCBRANCH} \ - file://0001-mmc_cmd.c-Use-extra-braces-when-initializing-subobje.patch \ - " +SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git;branch=${SRCBRANCH}" UPSTREAM_CHECK_COMMITS = "1" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/perl/libtest-needs-perl_0.002006.bb b/poky/meta/recipes-devtools/perl/libtest-needs-perl_0.002009.bb index c44ee6340c..2234f6a74b 100644 --- a/poky/meta/recipes-devtools/perl/libtest-needs-perl_0.002006.bb +++ b/poky/meta/recipes-devtools/perl/libtest-needs-perl_0.002009.bb @@ -17,8 +17,8 @@ DEPENDS += "perl" SRC_URI = "https://cpan.metacpan.org/authors/id/H/HA/${CPAN_AUTHOR}/${CPAN_NAME}-${PV}.tar.gz" -SRC_URI[md5sum] = "d5c96d51d8d5510f7c0b7f354c49af1c" -SRC_URI[sha256sum] = "77f9fff0c96c5e09f34d0416b3533c3319f7cd0bb1f7fe8f8072ad59f433f0e5" +SRC_URI[md5sum] = "5643cd323afb77d20363acbaf9b12bcc" +SRC_URI[sha256sum] = "571c21193ad16195df58b06b268798796a391b398c443271721d2cc0fb7c4ac3" S = "${WORKDIR}/${CPAN_NAME}-${PV}" diff --git a/poky/meta/recipes-devtools/pkgconf/pkgconf_1.7.3.bb b/poky/meta/recipes-devtools/pkgconf/pkgconf_1.7.4.bb index 12496c3849..93832105f0 100644 --- a/poky/meta/recipes-devtools/pkgconf/pkgconf_1.7.3.bb +++ b/poky/meta/recipes-devtools/pkgconf/pkgconf_1.7.4.bb @@ -20,7 +20,7 @@ SRC_URI = "\ file://pkg-config-native.in \ file://pkg-config-esdk.in \ " -SRC_URI[sha256sum] = "b846aea51cf696c3392a0ae58bef93e2e72f8e7073ca6ad1ed8b01c85871f9c0" +SRC_URI[sha256sum] = "d73f32c248a4591139a6b17777c80d4deab6b414ec2b3d21d0a24be348c476ab" inherit autotools diff --git a/poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb b/poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb index 72db876ad0..964d85fa38 100644 --- a/poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb +++ b/poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb @@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" SRCREV = "edf8e6f0ea77ede073f07bff0d2ae1fc7a38103b" PV = "0.29.2+git${SRCPV}" -SRC_URI = "git://anongit.freedesktop.org/pkg-config \ +SRC_URI = "git://gitlab.freedesktop.org/pkg-config/pkg-config.git;branch=master;protocol=https \ file://pkg-config-esdk.in \ file://pkg-config-native.in \ file://fix-glib-configure-libtool-usage.patch \ diff --git a/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.20.2.bb b/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.20.3.bb index 0a60ca7467..d160fd655b 100644 --- a/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.20.2.bb +++ b/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.20.3.bb @@ -12,7 +12,7 @@ SRC_URI = "https://github.com/${SRCNAME}/${SRCNAME}/releases/download/v${PV}/${S file://0001-numpy-core-Define-RISCV-32-support.patch \ file://run-ptest \ " -SRC_URI[sha256sum] = "c049f410c78e76ffb0af830a8afbdf8baac09897b4152b97b1a3b8345ee338ff" +SRC_URI[sha256sum] = "b7340f0628ce1823c151e3d2a2a8cba2a3ff1357fba4475a24b1816e75c21f90" UPSTREAM_CHECK_URI = "https://github.com/numpy/numpy/releases" UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar" diff --git a/poky/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch b/poky/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch index 680edbe704..1082fe79be 100644 --- a/poky/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch +++ b/poky/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch @@ -1,4 +1,4 @@ -From 6380cc63f79abe8b8404c9be5ed5f213a70c8c6a Mon Sep 17 00:00:00 2001 +From f6afc18e08a6c428ce8becd114c535a6840f1b9f Mon Sep 17 00:00:00 2001 From: Hongxu Jia <hongxu.jia@windriver.com> Date: Tue, 17 Jul 2018 10:13:38 +0800 Subject: [PATCH] conditionally do not fetch code by easy_install @@ -15,7 +15,7 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> 1 file changed, 5 insertions(+) diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py -index eeb21b5..eca1edd 100644 +index 45adb6a..9ac3342 100644 --- a/setuptools/command/easy_install.py +++ b/setuptools/command/easy_install.py @@ -636,6 +636,11 @@ class easy_install(Command): diff --git a/poky/meta/recipes-devtools/python/python3-attrs_20.3.0.bb b/poky/meta/recipes-devtools/python/python3-attrs_21.2.0.bb index 55cfda7180..e89fbc96f2 100644 --- a/poky/meta/recipes-devtools/python/python3-attrs_20.3.0.bb +++ b/poky/meta/recipes-devtools/python/python3-attrs_21.2.0.bb @@ -3,8 +3,7 @@ HOMEPAGE = "http://www.attrs.org/" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=d4ab25949a73fe7d4fdee93bcbdbf8ff" -SRC_URI[sha256sum] = "832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" -SRC_URI[md5sum] = "4fe38f89297b2b446d83190fce189f29" +SRC_URI[sha256sum] = "ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb" inherit pypi setuptools3 diff --git a/poky/meta/recipes-devtools/python/python3-git_3.1.14.bb b/poky/meta/recipes-devtools/python/python3-git_3.1.17.bb index 911c8f1487..009cac6609 100644 --- a/poky/meta/recipes-devtools/python/python3-git_3.1.14.bb +++ b/poky/meta/recipes-devtools/python/python3-git_3.1.17.bb @@ -12,7 +12,7 @@ PYPI_PACKAGE = "GitPython" inherit pypi setuptools3 -SRC_URI[sha256sum] = "be27633e7509e58391f10207cd32b2a6cf5b908f92d9cd30da2e514e1137af61" +SRC_URI[sha256sum] = "ee24bdc93dce357630764db659edaf6b8d664d4ff5447ccfeedd2dc5c253f41e" DEPENDS += " ${PYTHON_PN}-gitdb" diff --git a/poky/meta/recipes-devtools/python/python3-hypothesis_6.2.0.bb b/poky/meta/recipes-devtools/python/python3-hypothesis_6.13.7.bb index be9418386f..7688ff6d18 100644 --- a/poky/meta/recipes-devtools/python/python3-hypothesis_6.2.0.bb +++ b/poky/meta/recipes-devtools/python/python3-hypothesis_6.13.7.bb @@ -7,7 +7,7 @@ PYPI_PACKAGE = "hypothesis" inherit pypi setuptools3 -SRC_URI[sha256sum] = "c16fbde26b65c98a2464c48209b066c2f6dab5e8e38acd9d959021eb8d58b6c0" +SRC_URI[sha256sum] = "262bb8cee0293ad06c453e78cf89bddcb613b91f82ea5587f3787611ee62861b" RDEPENDS_${PN} += "python3-attrs python3-core python3-sortedcontainers" diff --git a/poky/meta/recipes-devtools/python/python3-importlib-metadata_3.4.0.bb b/poky/meta/recipes-devtools/python/python3-importlib-metadata_4.3.0.bb index 81f24e55c2..f4ac3c44ec 100644 --- a/poky/meta/recipes-devtools/python/python3-importlib-metadata_3.4.0.bb +++ b/poky/meta/recipes-devtools/python/python3-importlib-metadata_4.3.0.bb @@ -8,7 +8,7 @@ inherit pypi setuptools3 PYPI_PACKAGE = "importlib_metadata" UPSTREAM_CHECK_REGEX = "/importlib-metadata/(?P<pver>(\d+[\.\-_]*)+)/" -SRC_URI[sha256sum] = "fa5daa4477a7414ae34e95942e4dd07f62adf589143c875c133c1e53c4eff38d" +SRC_URI[sha256sum] = "c4646abbce80191bb548636f846e353ff1edc46a06bc536ea0a60d53211dc690" S = "${WORKDIR}/importlib_metadata-${PV}" diff --git a/poky/meta/recipes-devtools/python/python3-jinja2_2.11.3.bb b/poky/meta/recipes-devtools/python/python3-jinja2_3.0.1.bb index 11a4d5432c..b37a043ccb 100644 --- a/poky/meta/recipes-devtools/python/python3-jinja2_2.11.3.bb +++ b/poky/meta/recipes-devtools/python/python3-jinja2_3.0.1.bb @@ -4,7 +4,7 @@ HOMEPAGE = "https://pypi.org/project/Jinja/" LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=5dc88300786f1c214c1e9827a5229462" -SRC_URI[sha256sum] = "a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6" +SRC_URI[sha256sum] = "703f484b47a6af502e743c9122595cc812b0271f661722403114f71a79d0f5a4" PYPI_PACKAGE = "Jinja2" diff --git a/poky/meta/recipes-devtools/python/python3-libarchive-c_2.9.bb b/poky/meta/recipes-devtools/python/python3-libarchive-c_3.0.bb index 3a2d8733e9..d29195545f 100644 --- a/poky/meta/recipes-devtools/python/python3-libarchive-c_2.9.bb +++ b/poky/meta/recipes-devtools/python/python3-libarchive-c_3.0.bb @@ -9,8 +9,8 @@ PYPI_PACKAGE = "libarchive-c" inherit pypi setuptools3 -SRC_URI[md5sum] = "083bd2cb0043c1e22a52cb9a05e31532" -SRC_URI[sha256sum] = "9919344cec203f5db6596a29b5bc26b07ba9662925a05e24980b84709232ef60" +SRC_URI[md5sum] = "920885f5910aa8245e30896996e0415b" +SRC_URI[sha256sum] = "6f12fa9cf0e44579e5f45bbf11aa455a930fbfdb13ea0ce3c3dfe7b9b9a452ba" RDEPENDS_${PN} += "\ libarchive \ diff --git a/poky/meta/recipes-devtools/python/python3-markdown_3.3.4.bb b/poky/meta/recipes-devtools/python/python3-markdown_3.3.4.bb new file mode 100644 index 0000000000..47cccbe5bd --- /dev/null +++ b/poky/meta/recipes-devtools/python/python3-markdown_3.3.4.bb @@ -0,0 +1,13 @@ +SUMMARY = "A Python implementation of John Gruber's Markdown." +HOMEPAGE = "https://python-markdown.github.io/" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.md;md5=745aaad0c69c60039e638bff9ffc59ed" + +inherit pypi setuptools3 + +PYPI_PACKAGE = "Markdown" +SRC_URI[sha256sum] = "31b5b491868dcc87d6c24b7e3d19a0d730d59d3e46f4eea6430a321bed387a49" + +BBCLASSEXTEND = "native" + +RDEPENDS_${PN} += "${PYTHON_PN}-logging ${PYTHON_PN}-setuptools" diff --git a/poky/meta/recipes-devtools/python/python3-markupsafe_1.1.1.bb b/poky/meta/recipes-devtools/python/python3-markupsafe_2.0.1.bb index cade4e0f51..5be43b6c56 100644 --- a/poky/meta/recipes-devtools/python/python3-markupsafe_1.1.1.bb +++ b/poky/meta/recipes-devtools/python/python3-markupsafe_2.0.1.bb @@ -3,8 +3,7 @@ HOMEPAGE = "http://github.com/mitsuhiko/markupsafe" LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75" -SRC_URI[md5sum] = "43fd756864fe42063068e092e220c57b" -SRC_URI[sha256sum] = "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b" +SRC_URI[sha256sum] = "594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a" PYPI_PACKAGE = "MarkupSafe" inherit pypi setuptools3 diff --git a/poky/meta/recipes-devtools/python/python3-more-itertools_8.7.0.bb b/poky/meta/recipes-devtools/python/python3-more-itertools_8.8.0.bb index 0cb61915bf..1c0e84d27f 100644 --- a/poky/meta/recipes-devtools/python/python3-more-itertools_8.7.0.bb +++ b/poky/meta/recipes-devtools/python/python3-more-itertools_8.8.0.bb @@ -3,7 +3,7 @@ HOMEPAGE = "https://github.com/erikrose/more-itertools" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=3396ea30f9d21389d7857719816f83b5" -SRC_URI[sha256sum] = "c5d6da9ca3ff65220c3bfd2a8db06d698f05d4d2b9be57e1deb2be5a45019713" +SRC_URI[sha256sum] = "83f0308e05477c68f56ea3a888172c78ed5d5b3c282addb67508e7ba6c8f813a" inherit pypi setuptools3 ptest @@ -11,9 +11,13 @@ SRC_URI += " \ file://run-ptest \ " +RDEPENDS_${PN} += " \ + ${PYTHON_PN}-asyncio \ + " + RDEPENDS_${PN}-ptest += " \ ${PYTHON_PN}-pytest \ -" + " do_install_ptest() { install -d ${D}${PTEST_PATH}/tests diff --git a/poky/meta/recipes-devtools/python/python3-pygments_2.8.1.bb b/poky/meta/recipes-devtools/python/python3-pygments_2.9.0.bb index a2e0083483..7fedcb5a88 100644 --- a/poky/meta/recipes-devtools/python/python3-pygments_2.8.1.bb +++ b/poky/meta/recipes-devtools/python/python3-pygments_2.9.0.bb @@ -5,7 +5,7 @@ LICENSE = "BSD-2-Clause" LIC_FILES_CHKSUM = "file://LICENSE;md5=98419e351433ac106a24e3ad435930bc" inherit setuptools3 -SRC_URI[sha256sum] = "2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94" +SRC_URI[sha256sum] = "a18f47b506a429f6f4b9df81bb02beab9ca21d0a5fee38ed15aef65f0545519f" DEPENDS += "\ ${PYTHON_PN} \ diff --git a/poky/meta/recipes-devtools/python/python3-pytest_6.2.2.bb b/poky/meta/recipes-devtools/python/python3-pytest_6.2.4.bb index d221cbcd7f..fa43e6ebf0 100644 --- a/poky/meta/recipes-devtools/python/python3-pytest_6.2.2.bb +++ b/poky/meta/recipes-devtools/python/python3-pytest_6.2.4.bb @@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=81eb9f71d006c6b268cf4388e3c98f7b" SRC_URI_append = " file://0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch " -SRC_URI[sha256sum] = "9d1edf9e7d0b84d72ea3dbcdfd22b35fb543a5e8f2a60092dd578936bf63d7f9" +SRC_URI[sha256sum] = "50bcad0a0b9c5a72c8e4e7c9855a3ad496ca6a881a3641b4260605450772c54b" inherit update-alternatives pypi setuptools3 diff --git a/poky/meta/recipes-devtools/python/python3-setuptools-scm_5.0.1.bb b/poky/meta/recipes-devtools/python/python3-setuptools-scm_6.0.1.bb index ead80da7b4..24409eddc5 100644 --- a/poky/meta/recipes-devtools/python/python3-setuptools-scm_5.0.1.bb +++ b/poky/meta/recipes-devtools/python/python3-setuptools-scm_6.0.1.bb @@ -4,7 +4,7 @@ DESCRIPTION = "setuptools_scm handles managing your Python package versions in S LICENSE = "MIT" LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489" -SRC_URI[sha256sum] = "c85b6b46d0edd40d2301038cdea96bb6adc14d62ef943e75afb08b3e7bcf142a" +SRC_URI[sha256sum] = "d1925a69cb07e9b29416a275b9fadb009a23c148ace905b2fb220649a6c18e92" PYPI_PACKAGE = "setuptools_scm" inherit pypi setuptools3 diff --git a/poky/meta/recipes-devtools/python/python3-setuptools/reproducibility.patch b/poky/meta/recipes-devtools/python/python3-setuptools/reproducibility.patch new file mode 100644 index 0000000000..149d8ad5ce --- /dev/null +++ b/poky/meta/recipes-devtools/python/python3-setuptools/reproducibility.patch @@ -0,0 +1,40 @@ +The License-File lines in PKG-INFO change ordering depending on the order on disk, +for example for python-packaging, one build shows: + +License-File: LICENSE +License-File: LICENSE.APACHE +License-File: LICENSE.BSD + +and the other shows: + +License-File: LICENSE +License-File: LICENSE.BSD +License-File: LICENSE.APACHE + +This is because glob uses os.listdir() which is unsorted. Sort the result to avoid this. + +Upstream-Status: Submitted [https://github.com/pypa/setuptools/issues/2691] +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> + +Index: setuptools-57.0.0/setuptools/dist.py +=================================================================== +--- setuptools-57.0.0.orig/setuptools/dist.py ++++ setuptools-57.0.0/setuptools/dist.py +@@ -15,7 +15,7 @@ import distutils.command + from distutils.util import strtobool + from distutils.debug import DEBUG + from distutils.fancy_getopt import translate_longopt +-from glob import iglob ++from glob import glob + import itertools + import textwrap + from typing import List, Optional, TYPE_CHECKING +@@ -603,7 +603,7 @@ class Distribution(_Distribution): + return ( + path + for pattern in patterns +- for path in iglob(pattern) ++ for path in sorted(glob(pattern)) + if not path.endswith('~') + and os.path.isfile(path) + ) diff --git a/poky/meta/recipes-devtools/python/python3-setuptools_56.0.0.bb b/poky/meta/recipes-devtools/python/python3-setuptools_57.0.0.bb index 07a82ad21b..a15b51e31c 100644 --- a/poky/meta/recipes-devtools/python/python3-setuptools_56.0.0.bb +++ b/poky/meta/recipes-devtools/python/python3-setuptools_57.0.0.bb @@ -8,9 +8,10 @@ inherit pypi setuptools3 SRC_URI_append_class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch" -SRC_URI += "file://0001-change-shebang-to-python3.patch" +SRC_URI += "file://0001-change-shebang-to-python3.patch \ + file://reproducibility.patch" -SRC_URI[sha256sum] = "08a1c0f99455307c48690f00d5c2ac2c1ccfab04df00454fef854ec145b81302" +SRC_URI[sha256sum] = "401cbf33a7bf817d08014d51560fc003b895c4cdc1a5b521ad2969e928a07535" DEPENDS += "${PYTHON_PN}" diff --git a/poky/meta/recipes-devtools/python/python3-six_1.15.0.bb b/poky/meta/recipes-devtools/python/python3-six_1.15.0.bb deleted file mode 100644 index 6c6f3f9629..0000000000 --- a/poky/meta/recipes-devtools/python/python3-six_1.15.0.bb +++ /dev/null @@ -1,5 +0,0 @@ -inherit setuptools3 -require python-six.inc - -SRC_URI[md5sum] = "9f90a0eaa0ea7747fda01ca79d21ebcb" -SRC_URI[sha256sum] = "30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259" diff --git a/poky/meta/recipes-devtools/python/python3-six_1.16.0.bb b/poky/meta/recipes-devtools/python/python3-six_1.16.0.bb new file mode 100644 index 0000000000..1ba48d4f47 --- /dev/null +++ b/poky/meta/recipes-devtools/python/python3-six_1.16.0.bb @@ -0,0 +1,4 @@ +inherit setuptools3 +require python-six.inc + +SRC_URI[sha256sum] = "1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926" diff --git a/poky/meta/recipes-devtools/python/python3-smartypants_2.0.0.bb b/poky/meta/recipes-devtools/python/python3-smartypants_2.0.0.bb new file mode 100644 index 0000000000..ba3408247b --- /dev/null +++ b/poky/meta/recipes-devtools/python/python3-smartypants_2.0.0.bb @@ -0,0 +1,13 @@ +SUMMARY = "Translator of plain ASCII punctuation characters into 'smart' typographic punctuation HTML entities" +HOMEPAGE = "https://pythonhosted.org/smartypants/" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://COPYING;md5=977036977591ac666c728921ecc54c4f" + +inherit pypi setuptools3 + +PYPI_PACKAGE = "smartypants" +SRC_URI[sha256sum] = "7812353a32022699a1aa8cd5626e01c94a946dcaeedaee2d0b382bae4c4cbf36" + +BBCLASSEXTEND = "native" + +UPSTREAM_CHECK_REGEX = "/${PYPI_PACKAGE}/(?P<pver>(?!2\.0\.1)(\d+[\.\-_]*)+)/" diff --git a/poky/meta/recipes-devtools/python/python3-sortedcontainers_2.3.0.bb b/poky/meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb index 6060c03723..0755d3e177 100644 --- a/poky/meta/recipes-devtools/python/python3-sortedcontainers_2.3.0.bb +++ b/poky/meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb @@ -4,6 +4,6 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=7c7c6a1a12ec816da16c1839137d53ae" inherit pypi setuptools3 -SRC_URI[sha256sum] = "59cc937650cf60d677c16775597c89a960658a09cf7c1a668f86e1e4464b10a1" +SRC_URI[sha256sum] = "25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88" BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-devtools/python/python3-typogrify_2.0.7.bb b/poky/meta/recipes-devtools/python/python3-typogrify_2.0.7.bb new file mode 100644 index 0000000000..3becb0dd8d --- /dev/null +++ b/poky/meta/recipes-devtools/python/python3-typogrify_2.0.7.bb @@ -0,0 +1,14 @@ +SUMMARY = "Filters to enhance web typography, including support for Django & Jinja templates" +HOMEPAGE = "https://github.com/mintchaos/typogrify" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=12bc792d6f5415dbf421f3fd183c6dd2" + +inherit pypi setuptools3 + +PYPI_PACKAGE = "typogrify" +SRC_URI[sha256sum] = "8be4668cda434163ce229d87ca273a11922cb1614cb359970b7dc96eed13cb38" + +BBCLASSEXTEND = "native" + +RDEPENDS_${PN} += "${PYTHON_PN}-smartypants" + diff --git a/poky/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch b/poky/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch index 237645bc60..9ed03858d4 100644 --- a/poky/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch +++ b/poky/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch @@ -9,8 +9,7 @@ installs python-config there) to race, resulting in a failure due to attempting to install python-config into a nonexistent BINDIR. Ensure it also exists in the libainstall target. -Upstream-Status: Submitted [https://github.com/python/cpython/pull/13186] - +Upstream-Status: Backport [https://github.com/python/cpython/commit/a25c46bd7dd47a2f95b32d17ee2f66de214892c6] Signed-off-by: Changqing Li <changqing.li@windriver.com> --- Makefile.pre.in | 2 +- diff --git a/poky/meta/recipes-devtools/python/python3_3.9.4.bb b/poky/meta/recipes-devtools/python/python3_3.9.5.bb index cb371ceed7..f4002f2516 100644 --- a/poky/meta/recipes-devtools/python/python3_3.9.4.bb +++ b/poky/meta/recipes-devtools/python/python3_3.9.5.bb @@ -38,7 +38,7 @@ SRC_URI_append_class-native = " \ file://12-distutils-prefix-is-inside-staging-area.patch \ file://0001-Don-t-search-system-for-headers-libraries.patch \ " -SRC_URI[sha256sum] = "4b0e6644a76f8df864ae24ac500a51bbf68bd098f6a173e27d3b61cdca9aa134" +SRC_URI[sha256sum] = "0c5a140665436ec3dbfbb79e2dfb6d192655f26ef4a29aeffcb6d1820d716d83" # exclude pre-releases for both python 2.x and 3.x UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar" @@ -344,6 +344,7 @@ PACKAGES =+ "libpython3 libpython3-staticdev" FILES_libpython3 = "${libdir}/libpython*.so.*" FILES_libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}-*/libpython${PYTHON_MAJMIN}.a" INSANE_SKIP_${PN}-dev += "dev-elf" +INSANE_SKIP_${PN}-ptest = "dev-deps" # catch all the rest (unsorted) PACKAGES += "${PN}-misc" @@ -367,7 +368,7 @@ FILES_${PN}-man = "${datadir}/man" # See https://bugs.python.org/issue18748 and https://bugs.python.org/issue37395 RDEPENDS_libpython3_append_libc-glibc = " libgcc" RDEPENDS_${PN}-ctypes_append_libc-glibc = " ${MLPREFIX}ldconfig" -RDEPENDS_${PN}-ptest = "${PN}-modules ${PN}-tests unzip bzip2 libgcc tzdata-europe coreutils sed" +RDEPENDS_${PN}-ptest = "${PN}-modules ${PN}-tests ${PN}-dev unzip bzip2 libgcc tzdata-europe coreutils sed" RDEPENDS_${PN}-ptest_append_libc-glibc = " locale-base-tr-tr.iso-8859-9" RDEPENDS_${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', 'tk tk-lib', '', d)}" RDEPENDS_${PN}-idle += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${PN}-tkinter tcl', '', d)}" diff --git a/poky/meta/recipes-devtools/qemu/qemu-native_5.2.0.bb b/poky/meta/recipes-devtools/qemu/qemu-native_6.0.0.bb index c8acff8e19..d23d7a8ada 100644 --- a/poky/meta/recipes-devtools/qemu/qemu-native_5.2.0.bb +++ b/poky/meta/recipes-devtools/qemu/qemu-native_6.0.0.bb @@ -6,4 +6,4 @@ require qemu-native.inc EXTRA_OECONF_append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-blobs --disable-guest-agent" -PACKAGECONFIG ??= "" +PACKAGECONFIG ??= "pie" diff --git a/poky/meta/recipes-devtools/qemu/qemu-system-native_5.2.0.bb b/poky/meta/recipes-devtools/qemu/qemu-system-native_6.0.0.bb index 390dadea48..9d7d0cdceb 100644 --- a/poky/meta/recipes-devtools/qemu/qemu-system-native_5.2.0.bb +++ b/poky/meta/recipes-devtools/qemu/qemu-system-native_6.0.0.bb @@ -11,7 +11,7 @@ DEPENDS = "glib-2.0-native zlib-native pixman-native qemu-native bison-native" EXTRA_OECONF_append = " --target-list=${@get_qemu_system_target_list(d)}" -PACKAGECONFIG ??= "fdt alsa kvm \ +PACKAGECONFIG ??= "fdt alsa kvm pie \ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer glx', '', d)} \ " diff --git a/poky/meta/recipes-devtools/qemu/qemu.inc b/poky/meta/recipes-devtools/qemu/qemu.inc index 384b0c19b0..0cbd66301e 100644 --- a/poky/meta/recipes-devtools/qemu/qemu.inc +++ b/poky/meta/recipes-devtools/qemu/qemu.inc @@ -25,46 +25,29 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \ file://0010-configure-Add-pkg-config-handling-for-libgcrypt.patch \ file://0001-Add-enable-disable-udev.patch \ file://0001-qemu-Do-not-include-file-if-not-exists.patch \ - file://mingwfix.patch \ - file://mmap.patch \ file://mmap2.patch \ file://determinism.patch \ file://0001-tests-meson.build-use-relative-path-to-refer-to-file.patch \ - file://CVE-2021-20203.patch \ - file://CVE-2020-35517_1.patch \ - file://CVE-2020-35517_2.patch \ - file://CVE-2020-35517_3.patch \ - file://CVE-2021-20181.patch \ - file://CVE-2020-29443.patch \ - file://CVE-2021-20221.patch \ - file://CVE-2021-3409_1.patch \ - file://CVE-2021-3409_2.patch \ - file://CVE-2021-3409_3.patch \ - file://CVE-2021-3409_4.patch \ - file://CVE-2021-3409_5.patch \ - file://CVE-2021-3409_6.patch \ - file://CVE-2021-3416_1.patch \ - file://CVE-2021-3416_2.patch \ - file://CVE-2021-3416_3.patch \ - file://CVE-2021-3416_4.patch \ - file://CVE-2021-3416_5.patch \ - file://CVE-2021-3416_6.patch \ - file://CVE-2021-3416_7.patch \ - file://CVE-2021-3416_8.patch \ - file://CVE-2021-3416_9.patch \ - file://CVE-2021-3416_10.patch \ - file://CVE-2021-20257.patch \ - file://CVE-2020-27821.patch \ - file://CVE-2021-20263.patch \ - file://CVE-2021-3392.patch \ + file://0001-configure-fix-detection-of-gdbus-codegen.patch \ " UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar" -SRC_URI[sha256sum] = "cb18d889b628fbe637672b0326789d9b0e3b8027e0445b936537c78549df17bc" +SRC_URI[sha256sum] = "87bc1a471ca24b97e7005711066007d443423d19aacda3d442558ae032fa30b9" SRC_URI_append_class-target = " file://cross.patch" SRC_URI_append_class-nativesdk = " file://cross.patch" +# Applies against virglrender < 0.6.0 and not qemu itself +CVE_CHECK_WHITELIST += "CVE-2017-5957" + +# The VNC server can expose host files uder some circumstances. We don't +# enable it by default. +CVE_CHECK_WHITELIST += "CVE-2007-0998" + +# 'The issues identified by this CVE were determined to not constitute a vulnerability.' +# https://bugzilla.redhat.com/show_bug.cgi?id=1609015#c11 +CVE_CHECK_WHITELIST += "CVE-2018-18438" + COMPATIBLE_HOST_mipsarchn32 = "null" COMPATIBLE_HOST_mipsarchn64 = "null" @@ -82,8 +65,6 @@ do_install_ptest() { find ${D}${PTEST_PATH}/tests -type f -name "*.[Sshcodp]" | xargs -i rm -rf {} # Don't check the file genreated by configure - sed -i -e 's,${HOSTTOOLS_DIR}/python3,${bindir}/python3,' \ - ${D}/${PTEST_PATH}/tests/qemu-iotests/common.env sed -i -e "1s,#!/usr/bin/bash,#!${base_bindir}/bash," ${D}${PTEST_PATH}/tests/data/acpi/disassemle-aml.sh # Strip the paths from the QEMU variable, we can use PATH @@ -110,7 +91,7 @@ EXTRA_OECONF = " \ --extra-cflags='${CFLAGS}' \ --extra-ldflags='${LDFLAGS}' \ --with-git=/bin/false \ - --disable-git-update \ + --with-git-submodules=ignore \ --meson=meson \ ${PACKAGECONFIG_CONFARGS} \ " diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-Add-enable-disable-udev.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-Add-enable-disable-udev.patch index c99adee8a9..4b37967e7a 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0001-Add-enable-disable-udev.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0001-Add-enable-disable-udev.patch @@ -12,13 +12,13 @@ Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> configure | 4 ++++ 1 file changed, 4 insertions(+) -Index: qemu-5.2.0/configure +Index: qemu-6.0.0/configure =================================================================== ---- qemu-5.2.0.orig/configure -+++ qemu-5.2.0/configure -@@ -1525,6 +1525,10 @@ for opt do +--- qemu-6.0.0.orig/configure ++++ qemu-6.0.0/configure +@@ -1565,6 +1565,10 @@ for opt do ;; - --disable-libdaxctl) libdaxctl=no + --disable-gio) gio=no ;; + --enable-libudev) libudev="yes" + ;; diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-configure-fix-detection-of-gdbus-codegen.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-configure-fix-detection-of-gdbus-codegen.patch new file mode 100644 index 0000000000..8bffc31293 --- /dev/null +++ b/poky/meta/recipes-devtools/qemu/qemu/0001-configure-fix-detection-of-gdbus-codegen.patch @@ -0,0 +1,50 @@ +From 464cfc64201b21386030b8f353fe9724a3413a85 Mon Sep 17 00:00:00 2001 +From: Paolo Bonzini <pbonzini@redhat.com> +Date: Wed, 5 May 2021 10:15:34 -0400 +Subject: [PATCH] configure: fix detection of gdbus-codegen + +"pkg-config --variable=gdbus_codegen gio-2.0" returns "gdbus-codegen", +and it does not pass test -x (which does not walk the path). + +Meson 0.58.0 notices that something is iffy, as the dbus_vmstate1 +assignment in tests/qtest/meson.build uses an empty string as the +command, and fails very eloquently: + +../tests/qtest/meson.build:92:2: ERROR: No program name specified. + +Use the "has" function instead of test -x, and fix the generation +of config-host.mak since meson.build expects that GDBUS_CODEGEN +is absent, rather than empty, if the tool is unavailable. + +Reported-by: Sebastian Mitterle <smitterl@redhat.com> +Fixes: #178 +Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> +Upstream-Status: Backport [https://git.qemu.org/?p=qemu.git;a=commitdiff;h=5ecfb76ccc056eb6127e44268e475827ae73b9e0] +(not in 6.0.0, should be kept when upgrading) +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + configure | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +Index: qemu-6.0.0/configure +=================================================================== +--- qemu-6.0.0.orig/configure ++++ qemu-6.0.0/configure +@@ -3366,7 +3366,7 @@ if ! test "$gio" = "no"; then + gio_cflags=$($pkg_config --cflags gio-2.0) + gio_libs=$($pkg_config --libs gio-2.0) + gdbus_codegen=$($pkg_config --variable=gdbus_codegen gio-2.0) +- if [ ! -x "$gdbus_codegen" ]; then ++ if ! has "$gdbus_codegen"; then + gdbus_codegen= + fi + # Check that the libraries actually work -- Ubuntu 18.04 ships +@@ -5704,6 +5704,8 @@ if test "$gio" = "yes" ; then + echo "CONFIG_GIO=y" >> $config_host_mak + echo "GIO_CFLAGS=$gio_cflags" >> $config_host_mak + echo "GIO_LIBS=$gio_libs" >> $config_host_mak ++fi ++if test "$gdbus_codegen" != "" ; then + echo "GDBUS_CODEGEN=$gdbus_codegen" >> $config_host_mak + fi + echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch index 8ce12bdb43..2f2d19f536 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch @@ -20,10 +20,10 @@ Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> hw/usb/dev-wacom.c | 94 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 93 insertions(+), 1 deletion(-) -Index: qemu-5.2.0/hw/usb/dev-wacom.c +Index: qemu-6.0.0/hw/usb/dev-wacom.c =================================================================== ---- qemu-5.2.0.orig/hw/usb/dev-wacom.c -+++ qemu-5.2.0/hw/usb/dev-wacom.c +--- qemu-6.0.0.orig/hw/usb/dev-wacom.c ++++ qemu-6.0.0/hw/usb/dev-wacom.c @@ -69,6 +69,89 @@ static const USBDescStrings desc_strings [STR_SERIALNUMBER] = "1", }; diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Do-not-include-file-if-not-exists.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Do-not-include-file-if-not-exists.patch index 3fe9aa6eb5..b8d288d3a2 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Do-not-include-file-if-not-exists.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Do-not-include-file-if-not-exists.patch @@ -15,11 +15,11 @@ Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> linux-user/syscall.c | 2 ++ 1 file changed, 2 insertions(+) -Index: qemu-5.2.0/linux-user/syscall.c +Index: qemu-6.0.0/linux-user/syscall.c =================================================================== ---- qemu-5.2.0.orig/linux-user/syscall.c -+++ qemu-5.2.0/linux-user/syscall.c -@@ -109,7 +109,9 @@ +--- qemu-6.0.0.orig/linux-user/syscall.c ++++ qemu-6.0.0/linux-user/syscall.c +@@ -113,7 +113,9 @@ #include <linux/blkpg.h> #include <netpacket/packet.h> #include <linux/netlink.h> @@ -28,4 +28,4 @@ Index: qemu-5.2.0/linux-user/syscall.c +#endif #include <linux/rtc.h> #include <sound/asound.h> - #ifdef CONFIG_BTRFS + #ifdef HAVE_BTRFS_H diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-tests-meson.build-use-relative-path-to-refer-to-file.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-tests-meson.build-use-relative-path-to-refer-to-file.patch index 5cb5757c37..d5e1ab4d51 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0001-tests-meson.build-use-relative-path-to-refer-to-file.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0001-tests-meson.build-use-relative-path-to-refer-to-file.patch @@ -16,19 +16,16 @@ Signed-off-by: Changqing Li <changqing.li@windriver.com> tests/meson.build | 2 +- 1 files changed, 1 insertions(+), 1 deletion(-) -diff --git a/tests/meson.build b/tests/meson.build -index afeb6be..54684b5 100644 ---- a/tests/meson.build -+++ b/tests/meson.build -@@ -113,7 +113,7 @@ tests = { +Index: qemu-6.0.0/tests/unit/meson.build +=================================================================== +--- qemu-6.0.0.orig/tests/unit/meson.build ++++ qemu-6.0.0/tests/unit/meson.build +@@ -42,7 +42,7 @@ tests = { 'test-keyval': [testqapi], 'test-logging': [], 'test-uuid': [], - 'ptimer-test': ['ptimer-test-stubs.c', meson.source_root() / 'hw/core/ptimer.c'], -+ 'ptimer-test': ['ptimer-test-stubs.c', '../hw/core/ptimer.c'], ++ 'ptimer-test': ['ptimer-test-stubs.c', '../../hw/core/ptimer.c'], 'test-qapi-util': [], } --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch b/poky/meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch index fd54f96b03..733789be29 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch @@ -18,13 +18,13 @@ Signed-off-by: Roy Li <rongqing.li@windriver.com> hw/mips/malta.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: qemu-5.2.0/hw/mips/malta.c +Index: qemu-6.0.0/hw/mips/malta.c =================================================================== ---- qemu-5.2.0.orig/hw/mips/malta.c -+++ qemu-5.2.0/hw/mips/malta.c -@@ -62,7 +62,7 @@ - - #define ENVP_ADDR 0x80002000l +--- qemu-6.0.0.orig/hw/mips/malta.c ++++ qemu-6.0.0/hw/mips/malta.c +@@ -65,7 +65,7 @@ + #define ENVP_PADDR 0x2000 + #define ENVP_VADDR cpu_mips_phys_to_kseg0(NULL, ENVP_PADDR) #define ENVP_NB_ENTRIES 16 -#define ENVP_ENTRY_SIZE 256 +#define ENVP_ENTRY_SIZE 1024 diff --git a/poky/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch b/poky/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch index a0bd1c5ebc..330bcaef0a 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch @@ -12,11 +12,11 @@ Signed-off-by: Ross Burton <ross.burton@intel.com> configure | 9 --------- 1 file changed, 9 deletions(-) -Index: qemu-5.2.0/configure +Index: qemu-6.0.0/configure =================================================================== ---- qemu-5.2.0.orig/configure -+++ qemu-5.2.0/configure -@@ -5001,15 +5001,6 @@ fi +--- qemu-6.0.0.orig/configure ++++ qemu-6.0.0/configure +@@ -4648,15 +4648,6 @@ fi # check if we have valgrind/valgrind.h valgrind_h=no diff --git a/poky/meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch b/poky/meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch index 201125c1f4..05dc849dad 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch @@ -51,11 +51,11 @@ Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> qapi/char.json | 5 +++ 3 files changed, 109 insertions(+) -Index: qemu-5.2.0/chardev/char-socket.c +Index: qemu-6.0.0/chardev/char-socket.c =================================================================== ---- qemu-5.2.0.orig/chardev/char-socket.c -+++ qemu-5.2.0/chardev/char-socket.c -@@ -1308,6 +1308,67 @@ static bool qmp_chardev_validate_socket( +--- qemu-6.0.0.orig/chardev/char-socket.c ++++ qemu-6.0.0/chardev/char-socket.c +@@ -1362,6 +1362,67 @@ static bool qmp_chardev_validate_socket( return true; } @@ -123,7 +123,7 @@ Index: qemu-5.2.0/chardev/char-socket.c static void qmp_chardev_open_socket(Chardev *chr, ChardevBackend *backend, -@@ -1316,6 +1377,9 @@ static void qmp_chardev_open_socket(Char +@@ -1370,6 +1431,9 @@ static void qmp_chardev_open_socket(Char { SocketChardev *s = SOCKET_CHARDEV(chr); ChardevSocket *sock = backend->u.socket.data; @@ -133,7 +133,7 @@ Index: qemu-5.2.0/chardev/char-socket.c bool do_nodelay = sock->has_nodelay ? sock->nodelay : false; bool is_listen = sock->has_server ? sock->server : true; bool is_telnet = sock->has_telnet ? sock->telnet : false; -@@ -1381,6 +1445,14 @@ static void qmp_chardev_open_socket(Char +@@ -1446,6 +1510,14 @@ static void qmp_chardev_open_socket(Char update_disconnected_filename(s); @@ -148,7 +148,7 @@ Index: qemu-5.2.0/chardev/char-socket.c if (s->is_listen) { if (qmp_chardev_open_socket_server(chr, is_telnet || is_tn3270, is_waitconnect, errp) < 0) { -@@ -1400,6 +1472,9 @@ static void qemu_chr_parse_socket(QemuOp +@@ -1465,6 +1537,9 @@ static void qemu_chr_parse_socket(QemuOp const char *host = qemu_opt_get(opts, "host"); const char *port = qemu_opt_get(opts, "port"); const char *fd = qemu_opt_get(opts, "fd"); @@ -158,7 +158,7 @@ Index: qemu-5.2.0/chardev/char-socket.c #ifdef CONFIG_LINUX bool tight = qemu_opt_get_bool(opts, "tight", true); bool abstract = qemu_opt_get_bool(opts, "abstract", false); -@@ -1407,6 +1482,20 @@ static void qemu_chr_parse_socket(QemuOp +@@ -1472,6 +1547,20 @@ static void qemu_chr_parse_socket(QemuOp SocketAddressLegacy *addr; ChardevSocket *sock; @@ -179,7 +179,7 @@ Index: qemu-5.2.0/chardev/char-socket.c if ((!!path + !!fd + !!host) != 1) { error_setg(errp, "Exactly one of 'path', 'fd' or 'host' required"); -@@ -1448,13 +1537,24 @@ static void qemu_chr_parse_socket(QemuOp +@@ -1522,13 +1611,24 @@ static void qemu_chr_parse_socket(QemuOp sock->tls_creds = g_strdup(qemu_opt_get(opts, "tls-creds")); sock->has_tls_authz = qemu_opt_get(opts, "tls-authz"); sock->tls_authz = g_strdup(qemu_opt_get(opts, "tls-authz")); @@ -204,11 +204,11 @@ Index: qemu-5.2.0/chardev/char-socket.c #ifdef CONFIG_LINUX q_unix->has_tight = true; q_unix->tight = tight; -Index: qemu-5.2.0/chardev/char.c +Index: qemu-6.0.0/chardev/char.c =================================================================== ---- qemu-5.2.0.orig/chardev/char.c -+++ qemu-5.2.0/chardev/char.c -@@ -839,6 +839,9 @@ QemuOptsList qemu_chardev_opts = { +--- qemu-6.0.0.orig/chardev/char.c ++++ qemu-6.0.0/chardev/char.c +@@ -840,6 +840,9 @@ QemuOptsList qemu_chardev_opts = { .name = "path", .type = QEMU_OPT_STRING, },{ @@ -218,10 +218,10 @@ Index: qemu-5.2.0/chardev/char.c .name = "host", .type = QEMU_OPT_STRING, },{ -Index: qemu-5.2.0/qapi/char.json +Index: qemu-6.0.0/qapi/char.json =================================================================== ---- qemu-5.2.0.orig/qapi/char.json -+++ qemu-5.2.0/qapi/char.json +--- qemu-6.0.0.orig/qapi/char.json ++++ qemu-6.0.0/qapi/char.json @@ -250,6 +250,10 @@ # # @addr: socket address to listen on (server=true) diff --git a/poky/meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch b/poky/meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch index 294cf5129f..3491fa8a53 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch @@ -29,11 +29,11 @@ Signed-off-by: He Zhe <zhe.he@windriver.com> hw/intc/apic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: qemu-5.2.0/hw/intc/apic.c +Index: qemu-6.0.0/hw/intc/apic.c =================================================================== ---- qemu-5.2.0.orig/hw/intc/apic.c -+++ qemu-5.2.0/hw/intc/apic.c -@@ -605,7 +605,7 @@ int apic_accept_pic_intr(DeviceState *de +--- qemu-6.0.0.orig/hw/intc/apic.c ++++ qemu-6.0.0/hw/intc/apic.c +@@ -606,7 +606,7 @@ int apic_accept_pic_intr(DeviceState *de APICCommonState *s = APIC(dev); uint32_t lvt0; diff --git a/poky/meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch b/poky/meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch index c5d206b91b..cc6a5fe754 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch @@ -14,11 +14,11 @@ Signed-off-by: He Zhe <zhe.he@windriver.com> configure | 48 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 8 deletions(-) -Index: qemu-5.2.0/configure +Index: qemu-6.0.0/configure =================================================================== ---- qemu-5.2.0.orig/configure -+++ qemu-5.2.0/configure -@@ -2956,6 +2956,30 @@ has_libgcrypt() { +--- qemu-6.0.0.orig/configure ++++ qemu-6.0.0/configure +@@ -2847,6 +2847,30 @@ has_libgcrypt() { return 0 } @@ -49,7 +49,7 @@ Index: qemu-5.2.0/configure if test "$nettle" != "no"; then pass="no" -@@ -2994,7 +3018,14 @@ fi +@@ -2885,7 +2909,14 @@ fi if test "$gcrypt" != "no"; then pass="no" @@ -65,7 +65,7 @@ Index: qemu-5.2.0/configure gcrypt_cflags=$(libgcrypt-config --cflags) gcrypt_libs=$(libgcrypt-config --libs) # Debian has removed -lgpg-error from libgcrypt-config -@@ -3004,12 +3035,12 @@ if test "$gcrypt" != "no"; then +@@ -2895,12 +2926,12 @@ if test "$gcrypt" != "no"; then then gcrypt_libs="$gcrypt_libs -lgpg-error" fi diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-27821.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-27821.patch deleted file mode 100644 index 58622f0487..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-27821.patch +++ /dev/null @@ -1,143 +0,0 @@ -From 279f90a9ab07304f0a49fc10e4bfd1243a8cddbe Mon Sep 17 00:00:00 2001 -From: Paolo Bonzini <pbonzini@redhat.com> -Date: Tue, 1 Dec 2020 09:29:56 -0500 -Subject: [PATCH 1/2] memory: clamp cached translation in case it points to an - MMIO region - -In using the address_space_translate_internal API, address_space_cache_init -forgot one piece of advice that can be found in the code for -address_space_translate_internal: - - /* MMIO registers can be expected to perform full-width accesses based only - * on their address, without considering adjacent registers that could - * decode to completely different MemoryRegions. When such registers - * exist (e.g. I/O ports 0xcf8 and 0xcf9 on most PC chipsets), MMIO - * regions overlap wildly. For this reason we cannot clamp the accesses - * here. - * - * If the length is small (as is the case for address_space_ldl/stl), - * everything works fine. If the incoming length is large, however, - * the caller really has to do the clamping through memory_access_size. - */ - -address_space_cache_init is exactly one such case where "the incoming length -is large", therefore we need to clamp the resulting length---not to -memory_access_size though, since we are not doing an access yet, but to -the size of the resulting section. This ensures that subsequent accesses -to the cached MemoryRegionSection will be in range. - -With this patch, the enclosed testcase notices that the used ring does -not fit into the MSI-X table and prints a "qemu-system-x86_64: Cannot map used" -error. - -Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> - -Upstream-Status: Backport [4bfb024bc76973d40a359476dc0291f46e435442] -CVE: CVE-2020-27821 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - softmmu/physmem.c | 10 ++++++++ - tests/qtest/fuzz-test.c | 51 +++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 61 insertions(+) - -diff --git a/softmmu/physmem.c b/softmmu/physmem.c -index 3027747c0..2cd1de4a2 100644 ---- a/softmmu/physmem.c -+++ b/softmmu/physmem.c -@@ -3255,6 +3255,7 @@ int64_t address_space_cache_init(MemoryRegionCache *cache, - AddressSpaceDispatch *d; - hwaddr l; - MemoryRegion *mr; -+ Int128 diff; - - assert(len > 0); - -@@ -3263,6 +3264,15 @@ int64_t address_space_cache_init(MemoryRegionCache *cache, - d = flatview_to_dispatch(cache->fv); - cache->mrs = *address_space_translate_internal(d, addr, &cache->xlat, &l, true); - -+ /* -+ * cache->xlat is now relative to cache->mrs.mr, not to the section itself. -+ * Take that into account to compute how many bytes are there between -+ * cache->xlat and the end of the section. -+ */ -+ diff = int128_sub(cache->mrs.size, -+ int128_make64(cache->xlat - cache->mrs.offset_within_region)); -+ l = int128_get64(int128_min(diff, int128_make64(l))); -+ - mr = cache->mrs.mr; - memory_region_ref(mr); - if (memory_access_is_direct(mr, is_write)) { -diff --git a/tests/qtest/fuzz-test.c b/tests/qtest/fuzz-test.c -index 9cb4c42bd..28739248e 100644 ---- a/tests/qtest/fuzz-test.c -+++ b/tests/qtest/fuzz-test.c -@@ -47,6 +47,55 @@ static void test_lp1878642_pci_bus_get_irq_level_assert(void) - qtest_outl(s, 0x5d02, 0xebed205d); - } - -+/* -+ * Here a MemoryRegionCache pointed to an MMIO region but had a -+ * larger size than the underlying region. -+ */ -+static void test_mmio_oob_from_memory_region_cache(void) -+{ -+ QTestState *s; -+ -+ s = qtest_init("-M pc-q35-5.2 -display none -m 512M " -+ "-device virtio-scsi,num_queues=8,addr=03.0 "); -+ -+ qtest_outl(s, 0xcf8, 0x80001811); -+ qtest_outb(s, 0xcfc, 0x6e); -+ qtest_outl(s, 0xcf8, 0x80001824); -+ qtest_outl(s, 0xcf8, 0x80001813); -+ qtest_outl(s, 0xcfc, 0xa080000); -+ qtest_outl(s, 0xcf8, 0x80001802); -+ qtest_outl(s, 0xcfc, 0x5a175a63); -+ qtest_outb(s, 0x6e08, 0x9e); -+ qtest_writeb(s, 0x9f003, 0xff); -+ qtest_writeb(s, 0x9f004, 0x01); -+ qtest_writeb(s, 0x9e012, 0x0e); -+ qtest_writeb(s, 0x9e01b, 0x0e); -+ qtest_writeb(s, 0x9f006, 0x01); -+ qtest_writeb(s, 0x9f008, 0x01); -+ qtest_writeb(s, 0x9f00a, 0x01); -+ qtest_writeb(s, 0x9f00c, 0x01); -+ qtest_writeb(s, 0x9f00e, 0x01); -+ qtest_writeb(s, 0x9f010, 0x01); -+ qtest_writeb(s, 0x9f012, 0x01); -+ qtest_writeb(s, 0x9f014, 0x01); -+ qtest_writeb(s, 0x9f016, 0x01); -+ qtest_writeb(s, 0x9f018, 0x01); -+ qtest_writeb(s, 0x9f01a, 0x01); -+ qtest_writeb(s, 0x9f01c, 0x01); -+ qtest_writeb(s, 0x9f01e, 0x01); -+ qtest_writeb(s, 0x9f020, 0x01); -+ qtest_writeb(s, 0x9f022, 0x01); -+ qtest_writeb(s, 0x9f024, 0x01); -+ qtest_writeb(s, 0x9f026, 0x01); -+ qtest_writeb(s, 0x9f028, 0x01); -+ qtest_writeb(s, 0x9f02a, 0x01); -+ qtest_writeb(s, 0x9f02c, 0x01); -+ qtest_writeb(s, 0x9f02e, 0x01); -+ qtest_writeb(s, 0x9f030, 0x01); -+ qtest_outb(s, 0x6e10, 0x00); -+ qtest_quit(s); -+} -+ - int main(int argc, char **argv) - { - const char *arch = qtest_get_arch(); -@@ -58,6 +107,8 @@ int main(int argc, char **argv) - test_lp1878263_megasas_zero_iov_cnt); - qtest_add_func("fuzz/test_lp1878642_pci_bus_get_irq_level_assert", - test_lp1878642_pci_bus_get_irq_level_assert); -+ qtest_add_func("fuzz/test_mmio_oob_from_memory_region_cache", -+ test_mmio_oob_from_memory_region_cache); - } - - return g_test_run(); --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-29443.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-29443.patch deleted file mode 100644 index c72324fce6..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-29443.patch +++ /dev/null @@ -1,107 +0,0 @@ -From c9a71afe182be5b62bd2ccdaf861695e0ec0731a Mon Sep 17 00:00:00 2001 -From: Prasad J Pandit <pjp@fedoraproject.org> -Date: Mon, 18 Jan 2021 17:21:30 +0530 -Subject: [PATCH] ide: atapi: check logical block address and read size - (CVE-2020-29443) - -While processing ATAPI cmd_read/cmd_read_cd commands, -Logical Block Address (LBA) maybe invalid OR closer to the last block, -leading to an OOB access issues. Add range check to avoid it. - -Fixes: CVE-2020-29443 -Reported-by: Wenxiang Qian <leonwxqian@gmail.com> -Suggested-by: Paolo Bonzini <pbonzini@redhat.com> -Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> -Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> -Message-Id: <20210118115130.457044-1-ppandit@redhat.com> -Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> - -Upstream-Status: Backport [b8d7f1bc59276fec85e4d09f1567613a3e14d31e] -CVE: CVE-2020-29443 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/ide/atapi.c | 30 ++++++++++++++++++++++++------ - 1 file changed, 24 insertions(+), 6 deletions(-) - -diff --git a/hw/ide/atapi.c b/hw/ide/atapi.c -index e79157863..b626199e3 100644 ---- a/hw/ide/atapi.c -+++ b/hw/ide/atapi.c -@@ -322,6 +322,8 @@ static void ide_atapi_cmd_reply(IDEState *s, int size, int max_size) - static void ide_atapi_cmd_read_pio(IDEState *s, int lba, int nb_sectors, - int sector_size) - { -+ assert(0 <= lba && lba < (s->nb_sectors >> 2)); -+ - s->lba = lba; - s->packet_transfer_size = nb_sectors * sector_size; - s->elementary_transfer_size = 0; -@@ -420,6 +422,8 @@ eot: - static void ide_atapi_cmd_read_dma(IDEState *s, int lba, int nb_sectors, - int sector_size) - { -+ assert(0 <= lba && lba < (s->nb_sectors >> 2)); -+ - s->lba = lba; - s->packet_transfer_size = nb_sectors * sector_size; - s->io_buffer_size = 0; -@@ -973,35 +977,49 @@ static void cmd_prevent_allow_medium_removal(IDEState *s, uint8_t* buf) - - static void cmd_read(IDEState *s, uint8_t* buf) - { -- int nb_sectors, lba; -+ unsigned int nb_sectors, lba; -+ -+ /* Total logical sectors of ATAPI_SECTOR_SIZE(=2048) bytes */ -+ uint64_t total_sectors = s->nb_sectors >> 2; - - if (buf[0] == GPCMD_READ_10) { - nb_sectors = lduw_be_p(buf + 7); - } else { - nb_sectors = ldl_be_p(buf + 6); - } -- -- lba = ldl_be_p(buf + 2); - if (nb_sectors == 0) { - ide_atapi_cmd_ok(s); - return; - } - -+ lba = ldl_be_p(buf + 2); -+ if (lba >= total_sectors || lba + nb_sectors - 1 >= total_sectors) { -+ ide_atapi_cmd_error(s, ILLEGAL_REQUEST, ASC_LOGICAL_BLOCK_OOR); -+ return; -+ } -+ - ide_atapi_cmd_read(s, lba, nb_sectors, 2048); - } - - static void cmd_read_cd(IDEState *s, uint8_t* buf) - { -- int nb_sectors, lba, transfer_request; -+ unsigned int nb_sectors, lba, transfer_request; - -- nb_sectors = (buf[6] << 16) | (buf[7] << 8) | buf[8]; -- lba = ldl_be_p(buf + 2); -+ /* Total logical sectors of ATAPI_SECTOR_SIZE(=2048) bytes */ -+ uint64_t total_sectors = s->nb_sectors >> 2; - -+ nb_sectors = (buf[6] << 16) | (buf[7] << 8) | buf[8]; - if (nb_sectors == 0) { - ide_atapi_cmd_ok(s); - return; - } - -+ lba = ldl_be_p(buf + 2); -+ if (lba >= total_sectors || lba + nb_sectors - 1 >= total_sectors) { -+ ide_atapi_cmd_error(s, ILLEGAL_REQUEST, ASC_LOGICAL_BLOCK_OOR); -+ return; -+ } -+ - transfer_request = buf[9] & 0xf8; - if (transfer_request == 0x00) { - /* nothing */ --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-35517_1.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-35517_1.patch deleted file mode 100644 index 73a4cb2064..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-35517_1.patch +++ /dev/null @@ -1,153 +0,0 @@ -From 8afaaee976965b7fb90ec225a51d60f35c5f173c Mon Sep 17 00:00:00 2001 -From: Stefan Hajnoczi <stefanha@redhat.com> -Date: Thu, 4 Feb 2021 15:02:06 +0000 -Subject: [PATCH] virtiofsd: extract lo_do_open() from lo_open() - -Both lo_open() and lo_create() have similar code to open a file. Extract -a common lo_do_open() function from lo_open() that will be used by -lo_create() in a later commit. - -Since lo_do_open() does not otherwise need fuse_req_t req, convert -lo_add_fd_mapping() to use struct lo_data *lo instead. - -Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> -Message-Id: <20210204150208.367837-2-stefanha@redhat.com> -Reviewed-by: Greg Kurz <groug@kaod.org> -Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> - -Upstream-Status: Backport -[https://github.com/qemu/qemu/commit/8afaaee976965b7fb90ec225a51d60f35c5f173c] - -CVE: CVE-2020-35517 - -Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> -Signed-off-by: Khairul Rohaizzat Jamaluddin <khairul.rohaizzat.jamaluddin@intel.com> ---- - tools/virtiofsd/passthrough_ll.c | 73 +++++++++++++++++++++++++--------------- - 1 file changed, 46 insertions(+), 27 deletions(-) - -diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c -index 5fb36d9..f14fa51 100644 ---- a/tools/virtiofsd/passthrough_ll.c -+++ b/tools/virtiofsd/passthrough_ll.c -@@ -459,17 +459,17 @@ static void lo_map_remove(struct lo_map *map, size_t key) - } - - /* Assumes lo->mutex is held */ --static ssize_t lo_add_fd_mapping(fuse_req_t req, int fd) -+static ssize_t lo_add_fd_mapping(struct lo_data *lo, int fd) - { - struct lo_map_elem *elem; - -- elem = lo_map_alloc_elem(&lo_data(req)->fd_map); -+ elem = lo_map_alloc_elem(&lo->fd_map); - if (!elem) { - return -1; - } - - elem->fd = fd; -- return elem - lo_data(req)->fd_map.elems; -+ return elem - lo->fd_map.elems; - } - - /* Assumes lo->mutex is held */ -@@ -1651,6 +1651,38 @@ static void update_open_flags(int writeback, int allow_direct_io, - } - } - -+static int lo_do_open(struct lo_data *lo, struct lo_inode *inode, -+ struct fuse_file_info *fi) -+{ -+ char buf[64]; -+ ssize_t fh; -+ int fd; -+ -+ update_open_flags(lo->writeback, lo->allow_direct_io, fi); -+ -+ sprintf(buf, "%i", inode->fd); -+ fd = openat(lo->proc_self_fd, buf, fi->flags & ~O_NOFOLLOW); -+ if (fd == -1) { -+ return errno; -+ } -+ -+ pthread_mutex_lock(&lo->mutex); -+ fh = lo_add_fd_mapping(lo, fd); -+ pthread_mutex_unlock(&lo->mutex); -+ if (fh == -1) { -+ close(fd); -+ return ENOMEM; -+ } -+ -+ fi->fh = fh; -+ if (lo->cache == CACHE_NONE) { -+ fi->direct_io = 1; -+ } else if (lo->cache == CACHE_ALWAYS) { -+ fi->keep_cache = 1; -+ } -+ return 0; -+} -+ - static void lo_create(fuse_req_t req, fuse_ino_t parent, const char *name, - mode_t mode, struct fuse_file_info *fi) - { -@@ -1691,7 +1723,7 @@ static void lo_create(fuse_req_t req, fuse_ino_t parent, const char *name, - ssize_t fh; - - pthread_mutex_lock(&lo->mutex); -- fh = lo_add_fd_mapping(req, fd); -+ fh = lo_add_fd_mapping(lo, fd); - pthread_mutex_unlock(&lo->mutex); - if (fh == -1) { - close(fd); -@@ -1892,38 +1924,25 @@ static void lo_fsyncdir(fuse_req_t req, fuse_ino_t ino, int datasync, - - static void lo_open(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi) - { -- int fd; -- ssize_t fh; -- char buf[64]; - struct lo_data *lo = lo_data(req); -+ struct lo_inode *inode = lo_inode(req, ino); -+ int err; - - fuse_log(FUSE_LOG_DEBUG, "lo_open(ino=%" PRIu64 ", flags=%d)\n", ino, - fi->flags); - -- update_open_flags(lo->writeback, lo->allow_direct_io, fi); -- -- sprintf(buf, "%i", lo_fd(req, ino)); -- fd = openat(lo->proc_self_fd, buf, fi->flags & ~O_NOFOLLOW); -- if (fd == -1) { -- return (void)fuse_reply_err(req, errno); -- } -- -- pthread_mutex_lock(&lo->mutex); -- fh = lo_add_fd_mapping(req, fd); -- pthread_mutex_unlock(&lo->mutex); -- if (fh == -1) { -- close(fd); -- fuse_reply_err(req, ENOMEM); -+ if (!inode) { -+ fuse_reply_err(req, EBADF); - return; - } - -- fi->fh = fh; -- if (lo->cache == CACHE_NONE) { -- fi->direct_io = 1; -- } else if (lo->cache == CACHE_ALWAYS) { -- fi->keep_cache = 1; -+ err = lo_do_open(lo, inode, fi); -+ lo_inode_put(lo, &inode); -+ if (err) { -+ fuse_reply_err(req, err); -+ } else { -+ fuse_reply_open(req, fi); - } -- fuse_reply_open(req, fi); - } - - static void lo_release(fuse_req_t req, fuse_ino_t ino, --- -1.8.3.1 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-35517_2.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-35517_2.patch deleted file mode 100644 index bf11bdb6f8..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-35517_2.patch +++ /dev/null @@ -1,117 +0,0 @@ -From 22d2ece71e533310da31f2857ebc4a00d91968b3 Mon Sep 17 00:00:00 2001 -From: Stefan Hajnoczi <stefanha@redhat.com> -Date: Thu, 4 Feb 2021 15:02:07 +0000 -Subject: [PATCH] virtiofsd: optionally return inode pointer from - lo_do_lookup() - -lo_do_lookup() finds an existing inode or allocates a new one. It -increments nlookup so that the inode stays alive until the client -releases it. - -Existing callers don't need the struct lo_inode so the function doesn't -return it. Extend the function to optionally return the inode. The next -commit will need it. - -Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> -Reviewed-by: Greg Kurz <groug@kaod.org> -Message-Id: <20210204150208.367837-3-stefanha@redhat.com> -Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> - -Upstream-Status: Backport -[https://github.com/qemu/qemu/commit/22d2ece71e533310da31f2857ebc4a00d91968b3] - -CVE: CVE-2020-35517 - -Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> -Signed-off-by: Khairul Rohaizzat Jamaluddin <khairul.rohaizzat.jamaluddin@intel.com> ---- - tools/virtiofsd/passthrough_ll.c | 29 +++++++++++++++++++++-------- - 1 file changed, 21 insertions(+), 8 deletions(-) - -diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c -index f14fa51..aa35fc6 100644 ---- a/tools/virtiofsd/passthrough_ll.c -+++ b/tools/virtiofsd/passthrough_ll.c -@@ -831,11 +831,13 @@ static int do_statx(struct lo_data *lo, int dirfd, const char *pathname, - } - - /* -- * Increments nlookup and caller must release refcount using -- * lo_inode_put(&parent). -+ * Increments nlookup on the inode on success. unref_inode_lolocked() must be -+ * called eventually to decrement nlookup again. If inodep is non-NULL, the -+ * inode pointer is stored and the caller must call lo_inode_put(). - */ - static int lo_do_lookup(fuse_req_t req, fuse_ino_t parent, const char *name, -- struct fuse_entry_param *e) -+ struct fuse_entry_param *e, -+ struct lo_inode **inodep) - { - int newfd; - int res; -@@ -845,6 +847,10 @@ static int lo_do_lookup(fuse_req_t req, fuse_ino_t parent, const char *name, - struct lo_inode *inode = NULL; - struct lo_inode *dir = lo_inode(req, parent); - -+ if (inodep) { -+ *inodep = NULL; -+ } -+ - /* - * name_to_handle_at() and open_by_handle_at() can reach here with fuse - * mount point in guest, but we don't have its inode info in the -@@ -913,7 +919,14 @@ static int lo_do_lookup(fuse_req_t req, fuse_ino_t parent, const char *name, - pthread_mutex_unlock(&lo->mutex); - } - e->ino = inode->fuse_ino; -- lo_inode_put(lo, &inode); -+ -+ /* Transfer ownership of inode pointer to caller or drop it */ -+ if (inodep) { -+ *inodep = inode; -+ } else { -+ lo_inode_put(lo, &inode); -+ } -+ - lo_inode_put(lo, &dir); - - fuse_log(FUSE_LOG_DEBUG, " %lli/%s -> %lli\n", (unsigned long long)parent, -@@ -948,7 +961,7 @@ static void lo_lookup(fuse_req_t req, fuse_ino_t parent, const char *name) - return; - } - -- err = lo_do_lookup(req, parent, name, &e); -+ err = lo_do_lookup(req, parent, name, &e, NULL); - if (err) { - fuse_reply_err(req, err); - } else { -@@ -1056,7 +1069,7 @@ static void lo_mknod_symlink(fuse_req_t req, fuse_ino_t parent, - goto out; - } - -- saverr = lo_do_lookup(req, parent, name, &e); -+ saverr = lo_do_lookup(req, parent, name, &e, NULL); - if (saverr) { - goto out; - } -@@ -1534,7 +1547,7 @@ static void lo_do_readdir(fuse_req_t req, fuse_ino_t ino, size_t size, - - if (plus) { - if (!is_dot_or_dotdot(name)) { -- err = lo_do_lookup(req, ino, name, &e); -+ err = lo_do_lookup(req, ino, name, &e, NULL); - if (err) { - goto error; - } -@@ -1732,7 +1745,7 @@ static void lo_create(fuse_req_t req, fuse_ino_t parent, const char *name, - } - - fi->fh = fh; -- err = lo_do_lookup(req, parent, name, &e); -+ err = lo_do_lookup(req, parent, name, &e, NULL); - } - if (lo->cache == CACHE_NONE) { - fi->direct_io = 1; --- -1.8.3.1 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-35517_3.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-35517_3.patch deleted file mode 100644 index f348f3f2bd..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-35517_3.patch +++ /dev/null @@ -1,303 +0,0 @@ -From a3fdbbc7f271bff7d53d0501b29d910ece0b3789 Mon Sep 17 00:00:00 2001 -From: Stefan Hajnoczi <stefanha@redhat.com> -Date: Thu, 4 Feb 2021 15:02:08 +0000 -Subject: [PATCH] virtiofsd: prevent opening of special files (CVE-2020-35517) - -A well-behaved FUSE client does not attempt to open special files with -FUSE_OPEN because they are handled on the client side (e.g. device nodes -are handled by client-side device drivers). - -The check to prevent virtiofsd from opening special files is missing in -a few cases, most notably FUSE_OPEN. A malicious client can cause -virtiofsd to open a device node, potentially allowing the guest to -escape. This can be exploited by a modified guest device driver. It is -not exploitable from guest userspace since the guest kernel will handle -special files inside the guest instead of sending FUSE requests. - -This patch fixes this issue by introducing the lo_inode_open() function -to check the file type before opening it. This is a short-term solution -because it does not prevent a compromised virtiofsd process from opening -device nodes on the host. - -Restructure lo_create() to try O_CREAT | O_EXCL first. Note that O_CREAT -| O_EXCL does not follow symlinks, so O_NOFOLLOW masking is not -necessary here. If the file exists and the user did not specify O_EXCL, -open it via lo_do_open(). - -Reported-by: Alex Xu <alex@alxu.ca> -Fixes: CVE-2020-35517 -Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> -Reviewed-by: Vivek Goyal <vgoyal@redhat.com> -Reviewed-by: Greg Kurz <groug@kaod.org> -Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> -Message-Id: <20210204150208.367837-4-stefanha@redhat.com> -Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> - -Upstream-Status: Backport -[https://github.com/qemu/qemu/commit/a3fdbbc7f271bff7d53d0501b29d910ece0b3789] - -CVE: CVE-2020-35517 - -Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> -Signed-off-by: Khairul Rohaizzat Jamaluddin <khairul.rohaizzat.jamaluddin@intel.com> ---- - tools/virtiofsd/passthrough_ll.c | 144 ++++++++++++++++++++----------- - 1 file changed, 92 insertions(+), 52 deletions(-) - -diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c -index aa35fc6ba5a5..147b59338a18 100644 ---- a/tools/virtiofsd/passthrough_ll.c -+++ b/tools/virtiofsd/passthrough_ll.c -@@ -555,6 +555,38 @@ static int lo_fd(fuse_req_t req, fuse_ino_t ino) - return fd; - } - -+/* -+ * Open a file descriptor for an inode. Returns -EBADF if the inode is not a -+ * regular file or a directory. -+ * -+ * Use this helper function instead of raw openat(2) to prevent security issues -+ * when a malicious client opens special files such as block device nodes. -+ * Symlink inodes are also rejected since symlinks must already have been -+ * traversed on the client side. -+ */ -+static int lo_inode_open(struct lo_data *lo, struct lo_inode *inode, -+ int open_flags) -+{ -+ g_autofree char *fd_str = g_strdup_printf("%d", inode->fd); -+ int fd; -+ -+ if (!S_ISREG(inode->filetype) && !S_ISDIR(inode->filetype)) { -+ return -EBADF; -+ } -+ -+ /* -+ * The file is a symlink so O_NOFOLLOW must be ignored. We checked earlier -+ * that the inode is not a special file but if an external process races -+ * with us then symlinks are traversed here. It is not possible to escape -+ * the shared directory since it is mounted as "/" though. -+ */ -+ fd = openat(lo->proc_self_fd, fd_str, open_flags & ~O_NOFOLLOW); -+ if (fd < 0) { -+ return -errno; -+ } -+ return fd; -+} -+ - static void lo_init(void *userdata, struct fuse_conn_info *conn) - { - struct lo_data *lo = (struct lo_data *)userdata; -@@ -684,9 +716,9 @@ static void lo_setattr(fuse_req_t req, fuse_ino_t ino, struct stat *attr, - if (fi) { - truncfd = fd; - } else { -- sprintf(procname, "%i", ifd); -- truncfd = openat(lo->proc_self_fd, procname, O_RDWR); -+ truncfd = lo_inode_open(lo, inode, O_RDWR); - if (truncfd < 0) { -+ errno = -truncfd; - goto out_err; - } - } -@@ -848,7 +880,7 @@ static int lo_do_lookup(fuse_req_t req, fuse_ino_t parent, const char *name, - struct lo_inode *dir = lo_inode(req, parent); - - if (inodep) { -- *inodep = NULL; -+ *inodep = NULL; /* in case there is an error */ - } - - /* -@@ -1664,19 +1696,26 @@ static void update_open_flags(int writeback, int allow_direct_io, - } - } - -+/* -+ * Open a regular file, set up an fd mapping, and fill out the struct -+ * fuse_file_info for it. If existing_fd is not negative, use that fd instead -+ * opening a new one. Takes ownership of existing_fd. -+ * -+ * Returns 0 on success or a positive errno. -+ */ - static int lo_do_open(struct lo_data *lo, struct lo_inode *inode, -- struct fuse_file_info *fi) -+ int existing_fd, struct fuse_file_info *fi) - { -- char buf[64]; - ssize_t fh; -- int fd; -+ int fd = existing_fd; - - update_open_flags(lo->writeback, lo->allow_direct_io, fi); - -- sprintf(buf, "%i", inode->fd); -- fd = openat(lo->proc_self_fd, buf, fi->flags & ~O_NOFOLLOW); -- if (fd == -1) { -- return errno; -+ if (fd < 0) { -+ fd = lo_inode_open(lo, inode, fi->flags); -+ if (fd < 0) { -+ return -fd; -+ } - } - - pthread_mutex_lock(&lo->mutex); -@@ -1699,9 +1738,10 @@ static int lo_do_open(struct lo_data *lo, struct lo_inode *inode, - static void lo_create(fuse_req_t req, fuse_ino_t parent, const char *name, - mode_t mode, struct fuse_file_info *fi) - { -- int fd; -+ int fd = -1; - struct lo_data *lo = lo_data(req); - struct lo_inode *parent_inode; -+ struct lo_inode *inode = NULL; - struct fuse_entry_param e; - int err; - struct lo_cred old = {}; -@@ -1727,36 +1767,38 @@ static void lo_create(fuse_req_t req, fuse_ino_t parent, const char *name, - - update_open_flags(lo->writeback, lo->allow_direct_io, fi); - -- fd = openat(parent_inode->fd, name, (fi->flags | O_CREAT) & ~O_NOFOLLOW, -- mode); -+ /* Try to create a new file but don't open existing files */ -+ fd = openat(parent_inode->fd, name, fi->flags | O_CREAT | O_EXCL, mode); - err = fd == -1 ? errno : 0; -- lo_restore_cred(&old); - -- if (!err) { -- ssize_t fh; -+ lo_restore_cred(&old); - -- pthread_mutex_lock(&lo->mutex); -- fh = lo_add_fd_mapping(lo, fd); -- pthread_mutex_unlock(&lo->mutex); -- if (fh == -1) { -- close(fd); -- err = ENOMEM; -- goto out; -- } -+ /* Ignore the error if file exists and O_EXCL was not given */ -+ if (err && (err != EEXIST || (fi->flags & O_EXCL))) { -+ goto out; -+ } - -- fi->fh = fh; -- err = lo_do_lookup(req, parent, name, &e, NULL); -+ err = lo_do_lookup(req, parent, name, &e, &inode); -+ if (err) { -+ goto out; - } -- if (lo->cache == CACHE_NONE) { -- fi->direct_io = 1; -- } else if (lo->cache == CACHE_ALWAYS) { -- fi->keep_cache = 1; -+ -+ err = lo_do_open(lo, inode, fd, fi); -+ fd = -1; /* lo_do_open() takes ownership of fd */ -+ if (err) { -+ /* Undo lo_do_lookup() nlookup ref */ -+ unref_inode_lolocked(lo, inode, 1); - } - - out: -+ lo_inode_put(lo, &inode); - lo_inode_put(lo, &parent_inode); - - if (err) { -+ if (fd >= 0) { -+ close(fd); -+ } -+ - fuse_reply_err(req, err); - } else { - fuse_reply_create(req, &e, fi); -@@ -1770,7 +1812,6 @@ static struct lo_inode_plock *lookup_create_plock_ctx(struct lo_data *lo, - pid_t pid, int *err) - { - struct lo_inode_plock *plock; -- char procname[64]; - int fd; - - plock = -@@ -1787,12 +1828,10 @@ static struct lo_inode_plock *lookup_create_plock_ctx(struct lo_data *lo, - } - - /* Open another instance of file which can be used for ofd locks. */ -- sprintf(procname, "%i", inode->fd); -- - /* TODO: What if file is not writable? */ -- fd = openat(lo->proc_self_fd, procname, O_RDWR); -- if (fd == -1) { -- *err = errno; -+ fd = lo_inode_open(lo, inode, O_RDWR); -+ if (fd < 0) { -+ *err = -fd; - free(plock); - return NULL; - } -@@ -1949,7 +1988,7 @@ static void lo_open(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi) - return; - } - -- err = lo_do_open(lo, inode, fi); -+ err = lo_do_open(lo, inode, -1, fi); - lo_inode_put(lo, &inode); - if (err) { - fuse_reply_err(req, err); -@@ -2014,39 +2053,40 @@ static void lo_flush(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi) - static void lo_fsync(fuse_req_t req, fuse_ino_t ino, int datasync, - struct fuse_file_info *fi) - { -+ struct lo_inode *inode = lo_inode(req, ino); -+ struct lo_data *lo = lo_data(req); - int res; - int fd; -- char *buf; - - fuse_log(FUSE_LOG_DEBUG, "lo_fsync(ino=%" PRIu64 ", fi=0x%p)\n", ino, - (void *)fi); - -- if (!fi) { -- struct lo_data *lo = lo_data(req); -- -- res = asprintf(&buf, "%i", lo_fd(req, ino)); -- if (res == -1) { -- return (void)fuse_reply_err(req, errno); -- } -+ if (!inode) { -+ fuse_reply_err(req, EBADF); -+ return; -+ } - -- fd = openat(lo->proc_self_fd, buf, O_RDWR); -- free(buf); -- if (fd == -1) { -- return (void)fuse_reply_err(req, errno); -+ if (!fi) { -+ fd = lo_inode_open(lo, inode, O_RDWR); -+ if (fd < 0) { -+ res = -fd; -+ goto out; - } - } else { - fd = lo_fi_fd(req, fi); - } - - if (datasync) { -- res = fdatasync(fd); -+ res = fdatasync(fd) == -1 ? errno : 0; - } else { -- res = fsync(fd); -+ res = fsync(fd) == -1 ? errno : 0; - } - if (!fi) { - close(fd); - } -- fuse_reply_err(req, res == -1 ? errno : 0); -+out: -+ lo_inode_put(lo, &inode); -+ fuse_reply_err(req, res); - } - - static void lo_read(fuse_req_t req, fuse_ino_t ino, size_t size, off_t offset, diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20181.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20181.patch deleted file mode 100644 index 1b8c77f838..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20181.patch +++ /dev/null @@ -1,81 +0,0 @@ -From c2d2d14e8deece958bbc4fc649d22c3564bc4e7e Mon Sep 17 00:00:00 2001 -From: Greg Kurz <groug@kaod.org> -Date: Thu, 14 Jan 2021 17:04:12 +0100 -Subject: [PATCH] 9pfs: Fully restart unreclaim loop (CVE-2021-20181) - -Depending on the client activity, the server can be asked to open a huge -number of file descriptors and eventually hit RLIMIT_NOFILE. This is -currently mitigated using a reclaim logic : the server closes the file -descriptors of idle fids, based on the assumption that it will be able -to re-open them later. This assumption doesn't hold of course if the -client requests the file to be unlinked. In this case, we loop on the -entire fid list and mark all related fids as unreclaimable (the reclaim -logic will just ignore them) and, of course, we open or re-open their -file descriptors if needed since we're about to unlink the file. - -This is the purpose of v9fs_mark_fids_unreclaim(). Since the actual -opening of a file can cause the coroutine to yield, another client -request could possibly add a new fid that we may want to mark as -non-reclaimable as well. The loop is thus restarted if the re-open -request was actually transmitted to the backend. This is achieved -by keeping a reference on the first fid (head) before traversing -the list. - -This is wrong in several ways: -- a potential clunk request from the client could tear the first - fid down and cause the reference to be stale. This leads to a - use-after-free error that can be detected with ASAN, using a - custom 9p client -- fids are added at the head of the list : restarting from the - previous head will always miss fids added by a some other - potential request - -All these problems could be avoided if fids were being added at the -end of the list. This can be achieved with a QSIMPLEQ, but this is -probably too much change for a bug fix. For now let's keep it -simple and just restart the loop from the current head. - -Fixes: CVE-2021-20181 -Buglink: https://bugs.launchpad.net/qemu/+bug/1911666 -Reported-by: Zero Day Initiative <zdi-disclosures@trendmicro.com> -Reviewed-by: Christian Schoenebeck <qemu_oss@crudebyte.com> -Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> -Message-Id: <161064025265.1838153.15185571283519390907.stgit@bahia.lan> -Signed-off-by: Greg Kurz <groug@kaod.org> - -Upstream-Status: Backport [89fbea8737e8f7b954745a1ffc4238d377055305] -CVE: CVE-2021-20181 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/9pfs/9p.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c -index 94df440fc..6026b51a1 100644 ---- a/hw/9pfs/9p.c -+++ b/hw/9pfs/9p.c -@@ -502,9 +502,9 @@ static int coroutine_fn v9fs_mark_fids_unreclaim(V9fsPDU *pdu, V9fsPath *path) - { - int err; - V9fsState *s = pdu->s; -- V9fsFidState *fidp, head_fid; -+ V9fsFidState *fidp; - -- head_fid.next = s->fid_list; -+again: - for (fidp = s->fid_list; fidp; fidp = fidp->next) { - if (fidp->path.size != path->size) { - continue; -@@ -524,7 +524,7 @@ static int coroutine_fn v9fs_mark_fids_unreclaim(V9fsPDU *pdu, V9fsPath *path) - * switched to the worker thread - */ - if (err == 0) { -- fidp = &head_fid; -+ goto again; - } - } - } --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20203.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20203.patch deleted file mode 100644 index 269c6f1294..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20203.patch +++ /dev/null @@ -1,73 +0,0 @@ -From: Prasad J Pandit <pjp@fedoraproject.org> - -While activating device in vmxnet3_acticate_device(), it does not -validate guest supplied configuration values against predefined -minimum - maximum limits. This may lead to integer overflow or -OOB access issues. Add checks to avoid it. - -Fixes: CVE-2021-20203 -Buglink: https://bugs.launchpad.net/qemu/+bug/1913873 -Reported-by: Gaoning Pan <pgn@zju.edu.cn> -Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> - -Upstream-Status: Acepted [https://lists.gnu.org/archive/html/qemu-devel/2021-01/msg07935.html] -CVE: CVE-2021-20203 -Signed-off-by: Minjae Kim <flowergom@gmail.com> ---- - hw/net/vmxnet3.c | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - -diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c -index eff299f629..4a910ca971 100644 ---- a/hw/net/vmxnet3.c -+++ b/hw/net/vmxnet3.c -@@ -1420,6 +1420,7 @@ static void vmxnet3_activate_device(VMXNET3State *s) - vmxnet3_setup_rx_filtering(s); - /* Cache fields from shared memory */ - s->mtu = VMXNET3_READ_DRV_SHARED32(d, s->drv_shmem, devRead.misc.mtu); -+ assert(VMXNET3_MIN_MTU <= s->mtu && s->mtu < VMXNET3_MAX_MTU); - VMW_CFPRN("MTU is %u", s->mtu); - - s->max_rx_frags = -@@ -1473,6 +1474,9 @@ static void vmxnet3_activate_device(VMXNET3State *s) - /* Read rings memory locations for TX queues */ - pa = VMXNET3_READ_TX_QUEUE_DESCR64(d, qdescr_pa, conf.txRingBasePA); - size = VMXNET3_READ_TX_QUEUE_DESCR32(d, qdescr_pa, conf.txRingSize); -+ if (size > VMXNET3_TX_RING_MAX_SIZE) { -+ size = VMXNET3_TX_RING_MAX_SIZE; -+ } - - vmxnet3_ring_init(d, &s->txq_descr[i].tx_ring, pa, size, - sizeof(struct Vmxnet3_TxDesc), false); -@@ -1483,6 +1487,9 @@ static void vmxnet3_activate_device(VMXNET3State *s) - /* TXC ring */ - pa = VMXNET3_READ_TX_QUEUE_DESCR64(d, qdescr_pa, conf.compRingBasePA); - size = VMXNET3_READ_TX_QUEUE_DESCR32(d, qdescr_pa, conf.compRingSize); -+ if (size > VMXNET3_TC_RING_MAX_SIZE) { -+ size = VMXNET3_TC_RING_MAX_SIZE; -+ } - vmxnet3_ring_init(d, &s->txq_descr[i].comp_ring, pa, size, - sizeof(struct Vmxnet3_TxCompDesc), true); - VMXNET3_RING_DUMP(VMW_CFPRN, "TXC", i, &s->txq_descr[i].comp_ring); -@@ -1524,6 +1531,9 @@ static void vmxnet3_activate_device(VMXNET3State *s) - /* RX rings */ - pa = VMXNET3_READ_RX_QUEUE_DESCR64(d, qd_pa, conf.rxRingBasePA[j]); - size = VMXNET3_READ_RX_QUEUE_DESCR32(d, qd_pa, conf.rxRingSize[j]); -+ if (size > VMXNET3_RX_RING_MAX_SIZE) { -+ size = VMXNET3_RX_RING_MAX_SIZE; -+ } - vmxnet3_ring_init(d, &s->rxq_descr[i].rx_ring[j], pa, size, - sizeof(struct Vmxnet3_RxDesc), false); - VMW_CFPRN("RX queue %d:%d: Base: %" PRIx64 ", Size: %d", -@@ -1533,6 +1543,9 @@ static void vmxnet3_activate_device(VMXNET3State *s) - /* RXC ring */ - pa = VMXNET3_READ_RX_QUEUE_DESCR64(d, qd_pa, conf.compRingBasePA); - size = VMXNET3_READ_RX_QUEUE_DESCR32(d, qd_pa, conf.compRingSize); -+ if (size > VMXNET3_RC_RING_MAX_SIZE) { -+ size = VMXNET3_RC_RING_MAX_SIZE; -+ } - vmxnet3_ring_init(d, &s->rxq_descr[i].comp_ring, pa, size, - sizeof(struct Vmxnet3_RxCompDesc), true); - VMW_CFPRN("RXC queue %d: Base: %" PRIx64 ", Size: %d", i, pa, size); --- -2.29.2 diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20221.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20221.patch deleted file mode 100644 index d762a51d02..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20221.patch +++ /dev/null @@ -1,70 +0,0 @@ -From e428bcfb86fb46d9773ae11e69712052dcff3d45 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <f4bug@amsat.org> -Date: Sun, 31 Jan 2021 11:34:01 +0100 -Subject: [PATCH] hw/intc/arm_gic: Fix interrupt ID in GICD_SGIR register -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Per the ARM Generic Interrupt Controller Architecture specification -(document "ARM IHI 0048B.b (ID072613)"), the SGIINTID field is 4 bit, -not 10: - - - 4.3 Distributor register descriptions - - 4.3.15 Software Generated Interrupt Register, GICD_SG - - - Table 4-21 GICD_SGIR bit assignments - - The Interrupt ID of the SGI to forward to the specified CPU - interfaces. The value of this field is the Interrupt ID, in - the range 0-15, for example a value of 0b0011 specifies - Interrupt ID 3. - -Correct the irq mask to fix an undefined behavior (which eventually -lead to a heap-buffer-overflow, see [Buglink]): - - $ echo 'writel 0x8000f00 0xff4affb0' | qemu-system-aarch64 -M virt,accel=qtest -qtest stdio - [I 1612088147.116987] OPENED - [R +0.278293] writel 0x8000f00 0xff4affb0 - ../hw/intc/arm_gic.c:1498:13: runtime error: index 944 out of bounds for type 'uint8_t [16][8]' - SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../hw/intc/arm_gic.c:1498:13 - -This fixes a security issue when running with KVM on Arm with -kernel-irqchip=off. (The default is kernel-irqchip=on, which is -unaffected, and which is also the correct choice for performance.) - -Cc: qemu-stable@nongnu.org -Fixes: CVE-2021-20221 -Fixes: 9ee6e8bb853 ("ARMv7 support.") -Buglink: https://bugs.launchpad.net/qemu/+bug/1913916 -Buglink: https://bugs.launchpad.net/qemu/+bug/1913917 -Reported-by: Alexander Bulekov <alxndr@bu.edu> -Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> -Message-id: 20210131103401.217160-1-f4bug@amsat.org -Reviewed-by: Peter Maydell <peter.maydell@linaro.org> -Signed-off-by: Peter Maydell <peter.maydell@linaro.org> - -Upstream-Status: Backport [edfe2eb4360cde4ed5d95bda7777edcb3510f76a] -CVE: CVE-2021-20221 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/intc/arm_gic.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/intc/arm_gic.c b/hw/intc/arm_gic.c -index c60dc6b5e..fbde60de0 100644 ---- a/hw/intc/arm_gic.c -+++ b/hw/intc/arm_gic.c -@@ -1474,7 +1474,7 @@ static void gic_dist_writel(void *opaque, hwaddr offset, - int target_cpu; - - cpu = gic_get_current_cpu(s); -- irq = value & 0x3ff; -+ irq = value & 0xf; - switch ((value >> 24) & 3) { - case 0: - mask = (value >> 16) & ALL_CPU_MASK; --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20257.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20257.patch deleted file mode 100644 index 7175b24e99..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20257.patch +++ /dev/null @@ -1,55 +0,0 @@ -From affdf476543405045c281a7c67d1eaedbcea8135 Mon Sep 17 00:00:00 2001 -From: Jason Wang <jasowang@redhat.com> -Date: Wed, 24 Feb 2021 13:45:28 +0800 -Subject: [PATCH] e1000: fail early for evil descriptor - -During procss_tx_desc(), driver can try to chain data descriptor with -legacy descriptor, when will lead underflow for the following -calculation in process_tx_desc() for bytes: - - if (tp->size + bytes > msh) - bytes = msh - tp->size; - -This will lead a infinite loop. So check and fail early if tp->size if -greater or equal to msh. - -Reported-by: Alexander Bulekov <alxndr@bu.edu> -Reported-by: Cheolwoo Myung <cwmyung@snu.ac.kr> -Reported-by: Ruhr-University Bochum <bugs-syssec@rub.de> -Cc: Prasad J Pandit <ppandit@redhat.com> -Cc: qemu-stable@nongnu.org -Signed-off-by: Jason Wang <jasowang@redhat.com> - -Upstream-Status: Backport [3de46e6fc489c52c9431a8a832ad8170a7569bd8] -CVE: CVE-2021-20257 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/net/e1000.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/hw/net/e1000.c b/hw/net/e1000.c -index cf22c4f07..c3564c7ce 100644 ---- a/hw/net/e1000.c -+++ b/hw/net/e1000.c -@@ -670,6 +670,9 @@ process_tx_desc(E1000State *s, struct e1000_tx_desc *dp) - msh = tp->tso_props.hdr_len + tp->tso_props.mss; - do { - bytes = split_size; -+ if (tp->size >= msh) { -+ goto eop; -+ } - if (tp->size + bytes > msh) - bytes = msh - tp->size; - -@@ -695,6 +698,7 @@ process_tx_desc(E1000State *s, struct e1000_tx_desc *dp) - tp->size += split_size; - } - -+eop: - if (!(txd_lower & E1000_TXD_CMD_EOP)) - return; - if (!(tp->cptse && tp->size < tp->tso_props.hdr_len)) { --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20263.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20263.patch deleted file mode 100644 index 4f9a91f0c6..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20263.patch +++ /dev/null @@ -1,214 +0,0 @@ -From aaa5f8e00c2e85a893b972f1e243fb14c26b70dc Mon Sep 17 00:00:00 2001 -From: "Dr. David Alan Gilbert" <dgilbert@redhat.com> -Date: Wed, 24 Feb 2021 19:56:25 +0000 -Subject: [PATCH 2/2] virtiofs: drop remapped security.capability xattr as - needed - -On Linux, the 'security.capability' xattr holds a set of -capabilities that can change when an executable is run, giving -a limited form of privilege escalation to those programs that -the writer of the file deemed worthy. - -Any write causes the 'security.capability' xattr to be dropped, -stopping anyone from gaining privilege by modifying a blessed -file. - -Fuse relies on the daemon to do this dropping, and in turn the -daemon relies on the host kernel to drop the xattr for it. However, -with the addition of -o xattrmap, the xattr that the guest -stores its capabilities in is now not the same as the one that -the host kernel automatically clears. - -Where the mapping changes 'security.capability', explicitly clear -the remapped name to preserve the same behaviour. - -This bug is assigned CVE-2021-20263. - -Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> -Reviewed-by: Vivek Goyal <vgoyal@redhat.com> - -Upstream-Status: Backport [e586edcb410543768ef009eaa22a2d9dd4a53846] -CVE: CVE-2021-20263 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - docs/tools/virtiofsd.rst | 4 ++ - tools/virtiofsd/passthrough_ll.c | 77 +++++++++++++++++++++++++++++++- - 2 files changed, 80 insertions(+), 1 deletion(-) - -diff --git a/docs/tools/virtiofsd.rst b/docs/tools/virtiofsd.rst -index 866b7db3e..00554c75b 100644 ---- a/docs/tools/virtiofsd.rst -+++ b/docs/tools/virtiofsd.rst -@@ -228,6 +228,10 @@ The 'map' type adds a number of separate rules to add **prepend** as a prefix - to the matched **key** (or all attributes if **key** is empty). - There may be at most one 'map' rule and it must be the last rule in the set. - -+Note: When the 'security.capability' xattr is remapped, the daemon has to do -+extra work to remove it during many operations, which the host kernel normally -+does itself. -+ - xattr-mapping Examples - ---------------------- - -diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c -index 03c5e0d13..c9197da86 100644 ---- a/tools/virtiofsd/passthrough_ll.c -+++ b/tools/virtiofsd/passthrough_ll.c -@@ -160,6 +160,7 @@ struct lo_data { - int posix_lock; - int xattr; - char *xattrmap; -+ char *xattr_security_capability; - char *source; - char *modcaps; - double timeout; -@@ -226,6 +227,8 @@ static __thread bool cap_loaded = 0; - - static struct lo_inode *lo_find(struct lo_data *lo, struct stat *st, - uint64_t mnt_id); -+static int xattr_map_client(const struct lo_data *lo, const char *client_name, -+ char **out_name); - - static int is_dot_or_dotdot(const char *name) - { -@@ -365,6 +368,37 @@ out: - return ret; - } - -+/* -+ * The host kernel normally drops security.capability xattr's on -+ * any write, however if we're remapping xattr names we need to drop -+ * whatever the clients security.capability is actually stored as. -+ */ -+static int drop_security_capability(const struct lo_data *lo, int fd) -+{ -+ if (!lo->xattr_security_capability) { -+ /* We didn't remap the name, let the host kernel do it */ -+ return 0; -+ } -+ if (!fremovexattr(fd, lo->xattr_security_capability)) { -+ /* All good */ -+ return 0; -+ } -+ -+ switch (errno) { -+ case ENODATA: -+ /* Attribute didn't exist, that's fine */ -+ return 0; -+ -+ case ENOTSUP: -+ /* FS didn't support attribute anyway, also fine */ -+ return 0; -+ -+ default: -+ /* Hmm other error */ -+ return errno; -+ } -+} -+ - static void lo_map_init(struct lo_map *map) - { - map->elems = NULL; -@@ -717,6 +751,11 @@ static void lo_setattr(fuse_req_t req, fuse_ino_t ino, struct stat *attr, - uid_t uid = (valid & FUSE_SET_ATTR_UID) ? attr->st_uid : (uid_t)-1; - gid_t gid = (valid & FUSE_SET_ATTR_GID) ? attr->st_gid : (gid_t)-1; - -+ saverr = drop_security_capability(lo, ifd); -+ if (saverr) { -+ goto out_err; -+ } -+ - res = fchownat(ifd, "", uid, gid, AT_EMPTY_PATH | AT_SYMLINK_NOFOLLOW); - if (res == -1) { - goto out_err; -@@ -735,6 +774,14 @@ static void lo_setattr(fuse_req_t req, fuse_ino_t ino, struct stat *attr, - } - } - -+ saverr = drop_security_capability(lo, truncfd); -+ if (saverr) { -+ if (!fi) { -+ close(truncfd); -+ } -+ goto out_err; -+ } -+ - res = ftruncate(truncfd, attr->st_size); - if (!fi) { - saverr = errno; -@@ -1726,6 +1773,13 @@ static int lo_do_open(struct lo_data *lo, struct lo_inode *inode, - if (fd < 0) { - return -fd; - } -+ if (fi->flags & (O_TRUNC)) { -+ int err = drop_security_capability(lo, fd); -+ if (err) { -+ close(fd); -+ return err; -+ } -+ } - } - - pthread_mutex_lock(&lo->mutex); -@@ -2114,6 +2168,12 @@ static void lo_write_buf(fuse_req_t req, fuse_ino_t ino, - "lo_write_buf(ino=%" PRIu64 ", size=%zd, off=%lu)\n", ino, - out_buf.buf[0].size, (unsigned long)off); - -+ res = drop_security_capability(lo_data(req), out_buf.buf[0].fd); -+ if (res) { -+ fuse_reply_err(req, res); -+ return; -+ } -+ - /* - * If kill_priv is set, drop CAP_FSETID which should lead to kernel - * clearing setuid/setgid on file. -@@ -2353,6 +2413,7 @@ static void parse_xattrmap(struct lo_data *lo) - { - const char *map = lo->xattrmap; - const char *tmp; -+ int ret; - - lo->xattr_map_nentries = 0; - while (*map) { -@@ -2383,7 +2444,7 @@ static void parse_xattrmap(struct lo_data *lo) - * the last entry. - */ - parse_xattrmap_map(lo, map, sep); -- return; -+ break; - } else { - fuse_log(FUSE_LOG_ERR, - "%s: Unexpected type;" -@@ -2452,6 +2513,19 @@ static void parse_xattrmap(struct lo_data *lo) - fuse_log(FUSE_LOG_ERR, "Empty xattr map\n"); - exit(1); - } -+ -+ ret = xattr_map_client(lo, "security.capability", -+ &lo->xattr_security_capability); -+ if (ret) { -+ fuse_log(FUSE_LOG_ERR, "Failed to map security.capability: %s\n", -+ strerror(ret)); -+ exit(1); -+ } -+ if (!strcmp(lo->xattr_security_capability, "security.capability")) { -+ /* 1-1 mapping, don't need to do anything */ -+ free(lo->xattr_security_capability); -+ lo->xattr_security_capability = NULL; -+ } - } - - /* -@@ -3480,6 +3554,7 @@ static void fuse_lo_data_cleanup(struct lo_data *lo) - - free(lo->xattrmap); - free_xattrmap(lo); -+ free(lo->xattr_security_capability); - free(lo->source); - } - --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3392.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3392.patch deleted file mode 100644 index af94cff7e8..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3392.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 3791642c8d60029adf9b00bcb4e34d7d8a1aea4d Mon Sep 17 00:00:00 2001 -From: Michael Tokarev <mjt@tls.msk.ru> -Date: Mon, 19 Apr 2021 15:42:47 +0200 -Subject: [PATCH] mptsas: Remove unused MPTSASState 'pending' field - (CVE-2021-3392) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -While processing SCSI i/o requests in mptsas_process_scsi_io_request(), -the Megaraid emulator appends new MPTSASRequest object 'req' to -the 's->pending' queue. In case of an error, this same object gets -dequeued in mptsas_free_request() only if SCSIRequest object -'req->sreq' is initialised. This may lead to a use-after-free issue. - -Since s->pending is actually not used, simply remove it from -MPTSASState. - -Cc: qemu-stable@nongnu.org -Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> -Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> -Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> -Reported-by: Cheolwoo Myung <cwmyung@snu.ac.kr> -Message-id: 20210419134247.1467982-1-f4bug@amsat.org -Message-Id: <20210416102243.1293871-1-mjt@msgid.tls.msk.ru> -Suggested-by: Paolo Bonzini <pbonzini@redhat.com> -Reported-by: Cheolwoo Myung <cwmyung@snu.ac.kr> -BugLink: https://bugs.launchpad.net/qemu/+bug/1914236 (CVE-2021-3392) -Fixes: e351b826112 ("hw: Add support for LSI SAS1068 (mptsas) device") -[PMD: Reworded description, added more tags] -Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> -Reviewed-by: Peter Maydell <peter.maydell@linaro.org> -Signed-off-by: Peter Maydell <peter.maydell@linaro.org> - -CVE: CVE-2021-3392 -Upstream-Status: Backport [https://git.qemu.org/?p=qemu.git;a=commit;h=3791642c8d60029adf9b00bcb4e34d7d8a1aea4d] -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> ---- - hw/scsi/mptsas.c | 6 ------ - hw/scsi/mptsas.h | 1 - - 2 files changed, 7 deletions(-) - -diff --git a/hw/scsi/mptsas.c b/hw/scsi/mptsas.c -index 7416e7870614..db3219e7d206 100644 ---- a/hw/scsi/mptsas.c -+++ b/hw/scsi/mptsas.c -@@ -251,13 +251,10 @@ static int mptsas_build_sgl(MPTSASState *s, MPTSASRequest *req, hwaddr addr) - - static void mptsas_free_request(MPTSASRequest *req) - { -- MPTSASState *s = req->dev; -- - if (req->sreq != NULL) { - req->sreq->hba_private = NULL; - scsi_req_unref(req->sreq); - req->sreq = NULL; -- QTAILQ_REMOVE(&s->pending, req, next); - } - qemu_sglist_destroy(&req->qsg); - g_free(req); -@@ -303,7 +300,6 @@ static int mptsas_process_scsi_io_request(MPTSASState *s, - } - - req = g_new0(MPTSASRequest, 1); -- QTAILQ_INSERT_TAIL(&s->pending, req, next); - req->scsi_io = *scsi_io; - req->dev = s; - -@@ -1319,8 +1315,6 @@ static void mptsas_scsi_realize(PCIDevice *dev, Error **errp) - - s->request_bh = qemu_bh_new(mptsas_fetch_requests, s); - -- QTAILQ_INIT(&s->pending); -- - scsi_bus_new(&s->bus, sizeof(s->bus), &dev->qdev, &mptsas_scsi_info, NULL); - } - -diff --git a/hw/scsi/mptsas.h b/hw/scsi/mptsas.h -index b85ac1a5fcc7..c046497db719 100644 ---- a/hw/scsi/mptsas.h -+++ b/hw/scsi/mptsas.h -@@ -79,7 +79,6 @@ struct MPTSASState { - uint16_t reply_frame_size; - - SCSIBus bus; -- QTAILQ_HEAD(, MPTSASRequest) pending; - }; - - void mptsas_fix_scsi_io_endianness(MPIMsgSCSIIORequest *req); diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_1.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_1.patch deleted file mode 100644 index f9395add43..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_1.patch +++ /dev/null @@ -1,56 +0,0 @@ -From c01ae9a35b3c6b4a8e1f1bfa0a0caafe394f8b5c Mon Sep 17 00:00:00 2001 -From: Bin Meng <bmeng.cn@gmail.com> -Date: Tue, 16 Feb 2021 11:46:52 +0800 -Subject: [PATCH 1/6] hw/sd: sdhci: Simplify updating s->prnsts in - sdhci_sdma_transfer_multi_blocks() -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -s->prnsts is updated in both branches of the if () else () statement. -Move the common bits outside so that it is cleaner. - -Signed-off-by: Bin Meng <bmeng.cn@gmail.com> -Tested-by: Alexander Bulekov <alxndr@bu.edu> -Reviewed-by: Alexander Bulekov <alxndr@bu.edu> -Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> -Message-Id: <1613447214-81951-5-git-send-email-bmeng.cn@gmail.com> -Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> - -Upstream-Status: Backport [8bc1f1aa51d32c3184e7b19d5b94c35ecc06f056] -CVE: CVE-2021-3409 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/sd/sdhci.c | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) - -diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c -index 2f8b74a84..f83c5e295 100644 ---- a/hw/sd/sdhci.c -+++ b/hw/sd/sdhci.c -@@ -596,9 +596,9 @@ static void sdhci_sdma_transfer_multi_blocks(SDHCIState *s) - page_aligned = true; - } - -+ s->prnsts |= SDHC_DATA_INHIBIT | SDHC_DAT_LINE_ACTIVE; - if (s->trnmod & SDHC_TRNS_READ) { -- s->prnsts |= SDHC_DOING_READ | SDHC_DATA_INHIBIT | -- SDHC_DAT_LINE_ACTIVE; -+ s->prnsts |= SDHC_DOING_READ; - while (s->blkcnt) { - if (s->data_count == 0) { - sdbus_read_data(&s->sdbus, s->fifo_buffer, block_size); -@@ -625,8 +625,7 @@ static void sdhci_sdma_transfer_multi_blocks(SDHCIState *s) - } - } - } else { -- s->prnsts |= SDHC_DOING_WRITE | SDHC_DATA_INHIBIT | -- SDHC_DAT_LINE_ACTIVE; -+ s->prnsts |= SDHC_DOING_WRITE; - while (s->blkcnt) { - begin = s->data_count; - if (((boundary_count + begin) < block_size) && page_aligned) { --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_2.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_2.patch deleted file mode 100644 index f3d2bb1375..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_2.patch +++ /dev/null @@ -1,92 +0,0 @@ -From b9bb4700798bce98888c51d7b6dbc19ec49159d5 Mon Sep 17 00:00:00 2001 -From: Bin Meng <bmeng.cn@gmail.com> -Date: Wed, 3 Mar 2021 20:26:35 +0800 -Subject: [PATCH 2/6] hw/sd: sdhci: Don't transfer any data when command time - out -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -At the end of sdhci_send_command(), it starts a data transfer if the -command register indicates data is associated. But the data transfer -should only be initiated when the command execution has succeeded. - -With this fix, the following reproducer: - -outl 0xcf8 0x80001810 -outl 0xcfc 0xe1068000 -outl 0xcf8 0x80001804 -outw 0xcfc 0x7 -write 0xe106802c 0x1 0x0f -write 0xe1068004 0xc 0x2801d10101fffffbff28a384 -write 0xe106800c 0x1f 0x9dacbbcad9e8f7061524334251606f7e8d9cabbac9d8e7f60514233241505f -write 0xe1068003 0x28 0x80d000251480d000252280d000253080d000253e80d000254c80d000255a80d000256880d0002576 -write 0xe1068003 0x1 0xfe - -cannot be reproduced with the following QEMU command line: - -$ qemu-system-x86_64 -nographic -M pc-q35-5.0 \ - -device sdhci-pci,sd-spec-version=3 \ - -drive if=sd,index=0,file=null-co://,format=raw,id=mydrive \ - -device sd-card,drive=mydrive \ - -monitor none -serial none -qtest stdio - -Cc: qemu-stable@nongnu.org -Fixes: CVE-2020-17380 -Fixes: CVE-2020-25085 -Fixes: CVE-2021-3409 -Fixes: d7dfca0807a0 ("hw/sdhci: introduce standard SD host controller") -Reported-by: Alexander Bulekov <alxndr@bu.edu> -Reported-by: Cornelius Aschermann (Ruhr-Universität Bochum) -Reported-by: Sergej Schumilo (Ruhr-Universität Bochum) -Reported-by: Simon Wörner (Ruhr-Universität Bochum) -Buglink: https://bugs.launchpad.net/qemu/+bug/1892960 -Buglink: https://bugs.launchpad.net/qemu/+bug/1909418 -Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1928146 -Acked-by: Alistair Francis <alistair.francis@wdc.com> -Tested-by: Alexander Bulekov <alxndr@bu.edu> -Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org> -Signed-off-by: Bin Meng <bmeng.cn@gmail.com> -Message-Id: <20210303122639.20004-2-bmeng.cn@gmail.com> -Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> - -Upstream-Status: Backport [b263d8f928001b5cfa2a993ea43b7a5b3a1811e8] -CVE: CVE-2021-3409 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/sd/sdhci.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c -index f83c5e295..44f8a82ea 100644 ---- a/hw/sd/sdhci.c -+++ b/hw/sd/sdhci.c -@@ -326,6 +326,7 @@ static void sdhci_send_command(SDHCIState *s) - SDRequest request; - uint8_t response[16]; - int rlen; -+ bool timeout = false; - - s->errintsts = 0; - s->acmd12errsts = 0; -@@ -349,6 +350,7 @@ static void sdhci_send_command(SDHCIState *s) - trace_sdhci_response16(s->rspreg[3], s->rspreg[2], - s->rspreg[1], s->rspreg[0]); - } else { -+ timeout = true; - trace_sdhci_error("timeout waiting for command response"); - if (s->errintstsen & SDHC_EISEN_CMDTIMEOUT) { - s->errintsts |= SDHC_EIS_CMDTIMEOUT; -@@ -369,7 +371,7 @@ static void sdhci_send_command(SDHCIState *s) - - sdhci_update_irq(s); - -- if (s->blksize && (s->cmdreg & SDHC_CMD_DATA_PRESENT)) { -+ if (!timeout && s->blksize && (s->cmdreg & SDHC_CMD_DATA_PRESENT)) { - s->data_count = 0; - sdhci_data_transfer(s); - } --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_3.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_3.patch deleted file mode 100644 index c3b37ed616..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_3.patch +++ /dev/null @@ -1,109 +0,0 @@ -From 405ca416ccc8135544a4fe5732974497244128c9 Mon Sep 17 00:00:00 2001 -From: Bin Meng <bmeng.cn@gmail.com> -Date: Wed, 3 Mar 2021 20:26:36 +0800 -Subject: [PATCH 3/6] hw/sd: sdhci: Don't write to SDHC_SYSAD register when - transfer is in progress -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Per "SD Host Controller Standard Specification Version 7.00" -chapter 2.2.1 SDMA System Address Register: - -This register can be accessed only if no transaction is executing -(i.e., after a transaction has stopped). - -With this fix, the following reproducer: - -outl 0xcf8 0x80001010 -outl 0xcfc 0xfbefff00 -outl 0xcf8 0x80001001 -outl 0xcfc 0x06000000 -write 0xfbefff2c 0x1 0x05 -write 0xfbefff0f 0x1 0x37 -write 0xfbefff0a 0x1 0x01 -write 0xfbefff0f 0x1 0x29 -write 0xfbefff0f 0x1 0x02 -write 0xfbefff0f 0x1 0x03 -write 0xfbefff04 0x1 0x01 -write 0xfbefff05 0x1 0x01 -write 0xfbefff07 0x1 0x02 -write 0xfbefff0c 0x1 0x33 -write 0xfbefff0e 0x1 0x20 -write 0xfbefff0f 0x1 0x00 -write 0xfbefff2a 0x1 0x01 -write 0xfbefff0c 0x1 0x00 -write 0xfbefff03 0x1 0x00 -write 0xfbefff05 0x1 0x00 -write 0xfbefff2a 0x1 0x02 -write 0xfbefff0c 0x1 0x32 -write 0xfbefff01 0x1 0x01 -write 0xfbefff02 0x1 0x01 -write 0xfbefff03 0x1 0x01 - -cannot be reproduced with the following QEMU command line: - -$ qemu-system-x86_64 -nographic -machine accel=qtest -m 512M \ - -nodefaults -device sdhci-pci,sd-spec-version=3 \ - -drive if=sd,index=0,file=null-co://,format=raw,id=mydrive \ - -device sd-card,drive=mydrive -qtest stdio - -Cc: qemu-stable@nongnu.org -Fixes: CVE-2020-17380 -Fixes: CVE-2020-25085 -Fixes: CVE-2021-3409 -Fixes: d7dfca0807a0 ("hw/sdhci: introduce standard SD host controller") -Reported-by: Alexander Bulekov <alxndr@bu.edu> -Reported-by: Cornelius Aschermann (Ruhr-Universität Bochum) -Reported-by: Sergej Schumilo (Ruhr-Universität Bochum) -Reported-by: Simon Wörner (Ruhr-Universität Bochum) -Buglink: https://bugs.launchpad.net/qemu/+bug/1892960 -Buglink: https://bugs.launchpad.net/qemu/+bug/1909418 -Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1928146 -Tested-by: Alexander Bulekov <alxndr@bu.edu> -Signed-off-by: Bin Meng <bmeng.cn@gmail.com> -Message-Id: <20210303122639.20004-3-bmeng.cn@gmail.com> -Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> - -Upstream-Status: Backport [8be45cc947832b3c02144c9d52921f499f2d77fe] -CVE: CVE-2021-3409 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/sd/sdhci.c | 20 +++++++++++--------- - 1 file changed, 11 insertions(+), 9 deletions(-) - -diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c -index 44f8a82ea..d8a46f307 100644 ---- a/hw/sd/sdhci.c -+++ b/hw/sd/sdhci.c -@@ -1121,15 +1121,17 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val, unsigned size) - - switch (offset & ~0x3) { - case SDHC_SYSAD: -- s->sdmasysad = (s->sdmasysad & mask) | value; -- MASKED_WRITE(s->sdmasysad, mask, value); -- /* Writing to last byte of sdmasysad might trigger transfer */ -- if (!(mask & 0xFF000000) && TRANSFERRING_DATA(s->prnsts) && s->blkcnt && -- s->blksize && SDHC_DMA_TYPE(s->hostctl1) == SDHC_CTRL_SDMA) { -- if (s->trnmod & SDHC_TRNS_MULTI) { -- sdhci_sdma_transfer_multi_blocks(s); -- } else { -- sdhci_sdma_transfer_single_block(s); -+ if (!TRANSFERRING_DATA(s->prnsts)) { -+ s->sdmasysad = (s->sdmasysad & mask) | value; -+ MASKED_WRITE(s->sdmasysad, mask, value); -+ /* Writing to last byte of sdmasysad might trigger transfer */ -+ if (!(mask & 0xFF000000) && s->blkcnt && s->blksize && -+ SDHC_DMA_TYPE(s->hostctl1) == SDHC_CTRL_SDMA) { -+ if (s->trnmod & SDHC_TRNS_MULTI) { -+ sdhci_sdma_transfer_multi_blocks(s); -+ } else { -+ sdhci_sdma_transfer_single_block(s); -+ } - } - } - break; --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_4.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_4.patch deleted file mode 100644 index d5be99759d..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_4.patch +++ /dev/null @@ -1,75 +0,0 @@ -From b672bcaf5522294a4d8de3e88e0932d55585ee3b Mon Sep 17 00:00:00 2001 -From: Bin Meng <bmeng.cn@gmail.com> -Date: Wed, 3 Mar 2021 20:26:37 +0800 -Subject: [PATCH 4/6] hw/sd: sdhci: Correctly set the controller status for - ADMA -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -When an ADMA transfer is started, the codes forget to set the -controller status to indicate a transfer is in progress. - -With this fix, the following 2 reproducers: - -https://paste.debian.net/plain/1185136 -https://paste.debian.net/plain/1185141 - -cannot be reproduced with the following QEMU command line: - -$ qemu-system-x86_64 -nographic -machine accel=qtest -m 512M \ - -nodefaults -device sdhci-pci,sd-spec-version=3 \ - -drive if=sd,index=0,file=null-co://,format=raw,id=mydrive \ - -device sd-card,drive=mydrive -qtest stdio - -Cc: qemu-stable@nongnu.org -Fixes: CVE-2020-17380 -Fixes: CVE-2020-25085 -Fixes: CVE-2021-3409 -Fixes: d7dfca0807a0 ("hw/sdhci: introduce standard SD host controller") -Reported-by: Alexander Bulekov <alxndr@bu.edu> -Reported-by: Cornelius Aschermann (Ruhr-Universität Bochum) -Reported-by: Sergej Schumilo (Ruhr-Universität Bochum) -Reported-by: Simon Wörner (Ruhr-Universität Bochum) -Buglink: https://bugs.launchpad.net/qemu/+bug/1892960 -Buglink: https://bugs.launchpad.net/qemu/+bug/1909418 -Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1928146 -Tested-by: Alexander Bulekov <alxndr@bu.edu> -Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> -Signed-off-by: Bin Meng <bmeng.cn@gmail.com> -Message-Id: <20210303122639.20004-4-bmeng.cn@gmail.com> -Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> - -Upstream-Status: Backport [bc6f28995ff88f5d82c38afcfd65406f0ae375aa] -CVE: CVE-2021-3409 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/sd/sdhci.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c -index d8a46f307..7de03c6dd 100644 ---- a/hw/sd/sdhci.c -+++ b/hw/sd/sdhci.c -@@ -768,7 +768,9 @@ static void sdhci_do_adma(SDHCIState *s) - - switch (dscr.attr & SDHC_ADMA_ATTR_ACT_MASK) { - case SDHC_ADMA_ATTR_ACT_TRAN: /* data transfer */ -+ s->prnsts |= SDHC_DATA_INHIBIT | SDHC_DAT_LINE_ACTIVE; - if (s->trnmod & SDHC_TRNS_READ) { -+ s->prnsts |= SDHC_DOING_READ; - while (length) { - if (s->data_count == 0) { - sdbus_read_data(&s->sdbus, s->fifo_buffer, block_size); -@@ -796,6 +798,7 @@ static void sdhci_do_adma(SDHCIState *s) - } - } - } else { -+ s->prnsts |= SDHC_DOING_WRITE; - while (length) { - begin = s->data_count; - if ((length + begin) < block_size) { --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_5.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_5.patch deleted file mode 100644 index 7199056838..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_5.patch +++ /dev/null @@ -1,56 +0,0 @@ -From c2298884cf6bcf2b047b4bae5f78432b052b5729 Mon Sep 17 00:00:00 2001 -From: Bin Meng <bmeng.cn@gmail.com> -Date: Wed, 3 Mar 2021 20:26:38 +0800 -Subject: [PATCH 5/6] hw/sd: sdhci: Limit block size only when SDHC_BLKSIZE - register is writable -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The codes to limit the maximum block size is only necessary when -SDHC_BLKSIZE register is writable. - -Tested-by: Alexander Bulekov <alxndr@bu.edu> -Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> -Signed-off-by: Bin Meng <bmeng.cn@gmail.com> -Message-Id: <20210303122639.20004-5-bmeng.cn@gmail.com> -Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> - -Upstream-Status: Backport [5cd7aa3451b76bb19c0f6adc2b931f091e5d7fcd] -CVE: CVE-2021-3409 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/sd/sdhci.c | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c -index 7de03c6dd..6c780126e 100644 ---- a/hw/sd/sdhci.c -+++ b/hw/sd/sdhci.c -@@ -1142,15 +1142,15 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val, unsigned size) - if (!TRANSFERRING_DATA(s->prnsts)) { - MASKED_WRITE(s->blksize, mask, extract32(value, 0, 12)); - MASKED_WRITE(s->blkcnt, mask >> 16, value >> 16); -- } - -- /* Limit block size to the maximum buffer size */ -- if (extract32(s->blksize, 0, 12) > s->buf_maxsz) { -- qemu_log_mask(LOG_GUEST_ERROR, "%s: Size 0x%x is larger than " -- "the maximum buffer 0x%x\n", __func__, s->blksize, -- s->buf_maxsz); -+ /* Limit block size to the maximum buffer size */ -+ if (extract32(s->blksize, 0, 12) > s->buf_maxsz) { -+ qemu_log_mask(LOG_GUEST_ERROR, "%s: Size 0x%x is larger than " -+ "the maximum buffer 0x%x\n", __func__, s->blksize, -+ s->buf_maxsz); - -- s->blksize = deposit32(s->blksize, 0, 12, s->buf_maxsz); -+ s->blksize = deposit32(s->blksize, 0, 12, s->buf_maxsz); -+ } - } - - break; --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_6.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_6.patch deleted file mode 100644 index 624c1f6496..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3409_6.patch +++ /dev/null @@ -1,99 +0,0 @@ -From db916870a839346767b6d5ca7d0eed3128ba5fea Mon Sep 17 00:00:00 2001 -From: Bin Meng <bmeng.cn@gmail.com> -Date: Wed, 3 Mar 2021 20:26:39 +0800 -Subject: [PATCH 6/6] hw/sd: sdhci: Reset the data pointer of s->fifo_buffer[] - when a different block size is programmed -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -If the block size is programmed to a different value from the -previous one, reset the data pointer of s->fifo_buffer[] so that -s->fifo_buffer[] can be filled in using the new block size in -the next transfer. - -With this fix, the following reproducer: - -outl 0xcf8 0x80001010 -outl 0xcfc 0xe0000000 -outl 0xcf8 0x80001001 -outl 0xcfc 0x06000000 -write 0xe000002c 0x1 0x05 -write 0xe0000005 0x1 0x02 -write 0xe0000007 0x1 0x01 -write 0xe0000028 0x1 0x10 -write 0x0 0x1 0x23 -write 0x2 0x1 0x08 -write 0xe000000c 0x1 0x01 -write 0xe000000e 0x1 0x20 -write 0xe000000f 0x1 0x00 -write 0xe000000c 0x1 0x32 -write 0xe0000004 0x2 0x0200 -write 0xe0000028 0x1 0x00 -write 0xe0000003 0x1 0x40 - -cannot be reproduced with the following QEMU command line: - -$ qemu-system-x86_64 -nographic -machine accel=qtest -m 512M \ - -nodefaults -device sdhci-pci,sd-spec-version=3 \ - -drive if=sd,index=0,file=null-co://,format=raw,id=mydrive \ - -device sd-card,drive=mydrive -qtest stdio - -Cc: qemu-stable@nongnu.org -Fixes: CVE-2020-17380 -Fixes: CVE-2020-25085 -Fixes: CVE-2021-3409 -Fixes: d7dfca0807a0 ("hw/sdhci: introduce standard SD host controller") -Reported-by: Alexander Bulekov <alxndr@bu.edu> -Reported-by: Cornelius Aschermann (Ruhr-Universität Bochum) -Reported-by: Sergej Schumilo (Ruhr-Universität Bochum) -Reported-by: Simon Wörner (Ruhr-Universität Bochum) -Buglink: https://bugs.launchpad.net/qemu/+bug/1892960 -Buglink: https://bugs.launchpad.net/qemu/+bug/1909418 -Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1928146 -Tested-by: Alexander Bulekov <alxndr@bu.edu> -Signed-off-by: Bin Meng <bmeng.cn@gmail.com> -Message-Id: <20210303122639.20004-6-bmeng.cn@gmail.com> -Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> - -Upstream-Status: Backport [cffb446e8fd19a14e1634c7a3a8b07be3f01d5c9] -CVE: CVE-2021-3409 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/sd/sdhci.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c -index 6c780126e..216842420 100644 ---- a/hw/sd/sdhci.c -+++ b/hw/sd/sdhci.c -@@ -1140,6 +1140,8 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val, unsigned size) - break; - case SDHC_BLKSIZE: - if (!TRANSFERRING_DATA(s->prnsts)) { -+ uint16_t blksize = s->blksize; -+ - MASKED_WRITE(s->blksize, mask, extract32(value, 0, 12)); - MASKED_WRITE(s->blkcnt, mask >> 16, value >> 16); - -@@ -1151,6 +1153,16 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val, unsigned size) - - s->blksize = deposit32(s->blksize, 0, 12, s->buf_maxsz); - } -+ -+ /* -+ * If the block size is programmed to a different value from -+ * the previous one, reset the data pointer of s->fifo_buffer[] -+ * so that s->fifo_buffer[] can be filled in using the new block -+ * size in the next transfer. -+ */ -+ if (blksize != s->blksize) { -+ s->data_count = 0; -+ } - } - - break; --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_1.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_1.patch deleted file mode 100644 index 5bacd67481..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_1.patch +++ /dev/null @@ -1,177 +0,0 @@ -From 4b1988a29d67277d6c8ce1df52975f5616592913 Mon Sep 17 00:00:00 2001 -From: Jason Wang <jasowang@redhat.com> -Date: Wed, 24 Feb 2021 11:44:36 +0800 -Subject: [PATCH 01/10] net: introduce qemu_receive_packet() -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Some NIC supports loopback mode and this is done by calling -nc->info->receive() directly which in fact suppresses the effort of -reentrancy check that is done in qemu_net_queue_send(). - -Unfortunately we can't use qemu_net_queue_send() here since for -loopback there's no sender as peer, so this patch introduce a -qemu_receive_packet() which is used for implementing loopback mode -for a NIC with this check. - -NIC that supports loopback mode will be converted to this helper. - -This is intended to address CVE-2021-3416. - -Cc: Prasad J Pandit <ppandit@redhat.com> -Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> -Cc: qemu-stable@nongnu.org -Signed-off-by: Jason Wang <jasowang@redhat.com> - -Upstream-Status: Backport [705df5466c98f3efdd2b68d3b31dad86858acad7] -CVE: CVE-2021-3416 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - include/net/net.h | 5 +++++ - include/net/queue.h | 8 ++++++++ - net/net.c | 38 +++++++++++++++++++++++++++++++------- - net/queue.c | 22 ++++++++++++++++++++++ - 4 files changed, 66 insertions(+), 7 deletions(-) - -diff --git a/include/net/net.h b/include/net/net.h -index 778fc787c..03f058ecb 100644 ---- a/include/net/net.h -+++ b/include/net/net.h -@@ -143,12 +143,17 @@ void *qemu_get_nic_opaque(NetClientState *nc); - void qemu_del_net_client(NetClientState *nc); - typedef void (*qemu_nic_foreach)(NICState *nic, void *opaque); - void qemu_foreach_nic(qemu_nic_foreach func, void *opaque); -+int qemu_can_receive_packet(NetClientState *nc); - int qemu_can_send_packet(NetClientState *nc); - ssize_t qemu_sendv_packet(NetClientState *nc, const struct iovec *iov, - int iovcnt); - ssize_t qemu_sendv_packet_async(NetClientState *nc, const struct iovec *iov, - int iovcnt, NetPacketSent *sent_cb); - ssize_t qemu_send_packet(NetClientState *nc, const uint8_t *buf, int size); -+ssize_t qemu_receive_packet(NetClientState *nc, const uint8_t *buf, int size); -+ssize_t qemu_receive_packet_iov(NetClientState *nc, -+ const struct iovec *iov, -+ int iovcnt); - ssize_t qemu_send_packet_raw(NetClientState *nc, const uint8_t *buf, int size); - ssize_t qemu_send_packet_async(NetClientState *nc, const uint8_t *buf, - int size, NetPacketSent *sent_cb); -diff --git a/include/net/queue.h b/include/net/queue.h -index c0269bb1d..9f2f289d7 100644 ---- a/include/net/queue.h -+++ b/include/net/queue.h -@@ -55,6 +55,14 @@ void qemu_net_queue_append_iov(NetQueue *queue, - - void qemu_del_net_queue(NetQueue *queue); - -+ssize_t qemu_net_queue_receive(NetQueue *queue, -+ const uint8_t *data, -+ size_t size); -+ -+ssize_t qemu_net_queue_receive_iov(NetQueue *queue, -+ const struct iovec *iov, -+ int iovcnt); -+ - ssize_t qemu_net_queue_send(NetQueue *queue, - NetClientState *sender, - unsigned flags, -diff --git a/net/net.c b/net/net.c -index 6a2c3d956..5e15e5d27 100644 ---- a/net/net.c -+++ b/net/net.c -@@ -528,6 +528,17 @@ int qemu_set_vnet_be(NetClientState *nc, bool is_be) - #endif - } - -+int qemu_can_receive_packet(NetClientState *nc) -+{ -+ if (nc->receive_disabled) { -+ return 0; -+ } else if (nc->info->can_receive && -+ !nc->info->can_receive(nc)) { -+ return 0; -+ } -+ return 1; -+} -+ - int qemu_can_send_packet(NetClientState *sender) - { - int vm_running = runstate_is_running(); -@@ -540,13 +551,7 @@ int qemu_can_send_packet(NetClientState *sender) - return 1; - } - -- if (sender->peer->receive_disabled) { -- return 0; -- } else if (sender->peer->info->can_receive && -- !sender->peer->info->can_receive(sender->peer)) { -- return 0; -- } -- return 1; -+ return qemu_can_receive_packet(sender->peer); - } - - static ssize_t filter_receive_iov(NetClientState *nc, -@@ -679,6 +684,25 @@ ssize_t qemu_send_packet(NetClientState *nc, const uint8_t *buf, int size) - return qemu_send_packet_async(nc, buf, size, NULL); - } - -+ssize_t qemu_receive_packet(NetClientState *nc, const uint8_t *buf, int size) -+{ -+ if (!qemu_can_receive_packet(nc)) { -+ return 0; -+ } -+ -+ return qemu_net_queue_receive(nc->incoming_queue, buf, size); -+} -+ -+ssize_t qemu_receive_packet_iov(NetClientState *nc, const struct iovec *iov, -+ int iovcnt) -+{ -+ if (!qemu_can_receive_packet(nc)) { -+ return 0; -+ } -+ -+ return qemu_net_queue_receive_iov(nc->incoming_queue, iov, iovcnt); -+} -+ - ssize_t qemu_send_packet_raw(NetClientState *nc, const uint8_t *buf, int size) - { - return qemu_send_packet_async_with_flags(nc, QEMU_NET_PACKET_FLAG_RAW, -diff --git a/net/queue.c b/net/queue.c -index 19e32c80f..c872d51df 100644 ---- a/net/queue.c -+++ b/net/queue.c -@@ -182,6 +182,28 @@ static ssize_t qemu_net_queue_deliver_iov(NetQueue *queue, - return ret; - } - -+ssize_t qemu_net_queue_receive(NetQueue *queue, -+ const uint8_t *data, -+ size_t size) -+{ -+ if (queue->delivering) { -+ return 0; -+ } -+ -+ return qemu_net_queue_deliver(queue, NULL, 0, data, size); -+} -+ -+ssize_t qemu_net_queue_receive_iov(NetQueue *queue, -+ const struct iovec *iov, -+ int iovcnt) -+{ -+ if (queue->delivering) { -+ return 0; -+ } -+ -+ return qemu_net_queue_deliver_iov(queue, NULL, 0, iov, iovcnt); -+} -+ - ssize_t qemu_net_queue_send(NetQueue *queue, - NetClientState *sender, - unsigned flags, --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_10.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_10.patch deleted file mode 100644 index 7deec1a347..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_10.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 65b851efd3d0280425c202f4e5880c48f8334dae Mon Sep 17 00:00:00 2001 -From: Alexander Bulekov <alxndr@bu.edu> -Date: Mon, 1 Mar 2021 14:35:30 -0500 -Subject: [PATCH 10/10] lan9118: switch to use qemu_receive_packet() for - loopback -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This patch switches to use qemu_receive_packet() which can detect -reentrancy and return early. - -This is intended to address CVE-2021-3416. - -Cc: Prasad J Pandit <ppandit@redhat.com> -Cc: qemu-stable@nongnu.org -Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com -Signed-off-by: Alexander Bulekov <alxndr@bu.edu> -Signed-off-by: Jason Wang <jasowang@redhat.com> - -Upstream-Status: Backport [37cee01784ff0df13e5209517e1b3594a5e792d1] -CVE: CVE-2021-3416 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/net/lan9118.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c -index ab57c02c8..75f18ae2d 100644 ---- a/hw/net/lan9118.c -+++ b/hw/net/lan9118.c -@@ -669,7 +669,7 @@ static void do_tx_packet(lan9118_state *s) - /* FIXME: Honor TX disable, and allow queueing of packets. */ - if (s->phy_control & 0x4000) { - /* This assumes the receive routine doesn't touch the VLANClient. */ -- lan9118_receive(qemu_get_queue(s->nic), s->txp->data, s->txp->len); -+ qemu_receive_packet(qemu_get_queue(s->nic), s->txp->data, s->txp->len); - } else { - qemu_send_packet(qemu_get_queue(s->nic), s->txp->data, s->txp->len); - } --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_2.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_2.patch deleted file mode 100644 index 5e53e20bac..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_2.patch +++ /dev/null @@ -1,42 +0,0 @@ -From e2a48a3c7cc33dbbe89f896e0f07462cb04ff6b5 Mon Sep 17 00:00:00 2001 -From: Jason Wang <jasowang@redhat.com> -Date: Wed, 24 Feb 2021 12:13:22 +0800 -Subject: [PATCH 02/10] e1000: switch to use qemu_receive_packet() for loopback -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This patch switches to use qemu_receive_packet() which can detect -reentrancy and return early. - -This is intended to address CVE-2021-3416. - -Cc: Prasad J Pandit <ppandit@redhat.com> -Cc: qemu-stable@nongnu.org -Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> -Signed-off-by: Jason Wang <jasowang@redhat.com> - -Upstream-Status: Backport [1caff0340f49c93d535c6558a5138d20d475315c] -CVE: CVE-2021-3416 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/net/e1000.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/net/e1000.c b/hw/net/e1000.c -index d7d05ae30..cf22c4f07 100644 ---- a/hw/net/e1000.c -+++ b/hw/net/e1000.c -@@ -546,7 +546,7 @@ e1000_send_packet(E1000State *s, const uint8_t *buf, int size) - - NetClientState *nc = qemu_get_queue(s->nic); - if (s->phy_reg[PHY_CTRL] & MII_CR_LOOPBACK) { -- nc->info->receive(nc, buf, size); -+ qemu_receive_packet(nc, buf, size); - } else { - qemu_send_packet(nc, buf, size); - } --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_3.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_3.patch deleted file mode 100644 index 3fc469e3e3..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_3.patch +++ /dev/null @@ -1,43 +0,0 @@ -From c041a4da1ff119715e0ccf2d4a7af62568f17b93 Mon Sep 17 00:00:00 2001 -From: Jason Wang <jasowang@redhat.com> -Date: Wed, 24 Feb 2021 12:57:40 +0800 -Subject: [PATCH 03/10] dp8393x: switch to use qemu_receive_packet() for - loopback packet -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This patch switches to use qemu_receive_packet() which can detect -reentrancy and return early. - -This is intended to address CVE-2021-3416. - -Cc: Prasad J Pandit <ppandit@redhat.com> -Cc: qemu-stable@nongnu.org -Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com -Signed-off-by: Jason Wang <jasowang@redhat.com> - -Upstream-Status: Backport [331d2ac9ea307c990dc86e6493e8f0c48d14bb33] -CVE: CVE-2021-3416 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/net/dp8393x.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c -index 205c0decc..533a8304d 100644 ---- a/hw/net/dp8393x.c -+++ b/hw/net/dp8393x.c -@@ -506,7 +506,7 @@ static void dp8393x_do_transmit_packets(dp8393xState *s) - s->regs[SONIC_TCR] |= SONIC_TCR_CRSL; - if (nc->info->can_receive(nc)) { - s->loopback_packet = 1; -- nc->info->receive(nc, s->tx_buffer, tx_len); -+ qemu_receive_packet(nc, s->tx_buffer, tx_len); - } - } else { - /* Transmit packet */ --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_4.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_4.patch deleted file mode 100644 index e14f37735d..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_4.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 9ac5345344b75995bc96d171eaa5dc8d26bf0e21 Mon Sep 17 00:00:00 2001 -From: Jason Wang <jasowang@redhat.com> -Date: Wed, 24 Feb 2021 13:00:01 +0800 -Subject: [PATCH 04/10] msf2-mac: switch to use qemu_receive_packet() for - loopback -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This patch switches to use qemu_receive_packet() which can detect -reentrancy and return early. - -This is intended to address CVE-2021-3416. - -Cc: Prasad J Pandit <ppandit@redhat.com> -Cc: qemu-stable@nongnu.org -Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> -Signed-off-by: Jason Wang <jasowang@redhat.com> - -Upstream-Status: Backport [26194a58f4eb83c5bdf4061a1628508084450ba1] -CVE: CVE-2021-3416 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/net/msf2-emac.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/net/msf2-emac.c b/hw/net/msf2-emac.c -index 32ba9e841..3e6206044 100644 ---- a/hw/net/msf2-emac.c -+++ b/hw/net/msf2-emac.c -@@ -158,7 +158,7 @@ static void msf2_dma_tx(MSF2EmacState *s) - * R_CFG1 bit 0 is set. - */ - if (s->regs[R_CFG1] & R_CFG1_LB_EN_MASK) { -- nc->info->receive(nc, buf, size); -+ qemu_receive_packet(nc, buf, size); - } else { - qemu_send_packet(nc, buf, size); - } --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_5.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_5.patch deleted file mode 100644 index c3f8f97592..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_5.patch +++ /dev/null @@ -1,45 +0,0 @@ -From d465dc79c9ee729d91ef086b993e956b1935be69 Mon Sep 17 00:00:00 2001 -From: Jason Wang <jasowang@redhat.com> -Date: Wed, 24 Feb 2021 13:14:35 +0800 -Subject: [PATCH 05/10] sungem: switch to use qemu_receive_packet() for - loopback -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This patch switches to use qemu_receive_packet() which can detect -reentrancy and return early. - -This is intended to address CVE-2021-3416. - -Cc: Prasad J Pandit <ppandit@redhat.com> -Cc: qemu-stable@nongnu.org -Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> -Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> -Reviewed-by: Alistair Francis <alistair.francis@wdc.com> -Signed-off-by: Jason Wang <jasowang@redhat.com> - -Upstream-Status: Backport [8c92060d3c0248bd4d515719a35922cd2391b9b4] -CVE: CVE-2021-3416 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/net/sungem.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/net/sungem.c b/hw/net/sungem.c -index 33c3722df..3684a4d73 100644 ---- a/hw/net/sungem.c -+++ b/hw/net/sungem.c -@@ -306,7 +306,7 @@ static void sungem_send_packet(SunGEMState *s, const uint8_t *buf, - NetClientState *nc = qemu_get_queue(s->nic); - - if (s->macregs[MAC_XIFCFG >> 2] & MAC_XIFCFG_LBCK) { -- nc->info->receive(nc, buf, size); -+ qemu_receive_packet(nc, buf, size); - } else { - qemu_send_packet(nc, buf, size); - } --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_6.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_6.patch deleted file mode 100644 index 855c6970f4..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_6.patch +++ /dev/null @@ -1,43 +0,0 @@ -From c0010f9b2bafe866fe32e3c2688454bc24147136 Mon Sep 17 00:00:00 2001 -From: Jason Wang <jasowang@redhat.com> -Date: Wed, 24 Feb 2021 13:27:52 +0800 -Subject: [PATCH 06/10] tx_pkt: switch to use qemu_receive_packet_iov() for - loopback -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This patch switches to use qemu_receive_receive_iov() which can detect -reentrancy and return early. - -This is intended to address CVE-2021-3416. - -Cc: Prasad J Pandit <ppandit@redhat.com> -Cc: qemu-stable@nongnu.org -Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> -Signed-off-by: Jason Wang <jasowang@redhat.com> - -Upstream-Status: Backport [8c552542b81e56ff532dd27ec6e5328954bdda73] -CVE: CVE-2021-3416 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/net/net_tx_pkt.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/net/net_tx_pkt.c b/hw/net/net_tx_pkt.c -index da262edc3..1f9aa59ec 100644 ---- a/hw/net/net_tx_pkt.c -+++ b/hw/net/net_tx_pkt.c -@@ -553,7 +553,7 @@ static inline void net_tx_pkt_sendv(struct NetTxPkt *pkt, - NetClientState *nc, const struct iovec *iov, int iov_cnt) - { - if (pkt->is_loopback) { -- nc->info->receive_iov(nc, iov, iov_cnt); -+ qemu_receive_packet_iov(nc, iov, iov_cnt); - } else { - qemu_sendv_packet(nc, iov, iov_cnt); - } --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_7.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_7.patch deleted file mode 100644 index 4e1115de02..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_7.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 64b38675c728354e4015e4bec3d975cd4cb8a981 Mon Sep 17 00:00:00 2001 -From: Alexander Bulekov <alxndr@bu.edu> -Date: Fri, 26 Feb 2021 13:47:53 -0500 -Subject: [PATCH 07/10] rtl8139: switch to use qemu_receive_packet() for - loopback -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This patch switches to use qemu_receive_packet() which can detect -reentrancy and return early. - -This is intended to address CVE-2021-3416. - -Cc: Prasad J Pandit <ppandit@redhat.com> -Cc: qemu-stable@nongnu.org -Buglink: https://bugs.launchpad.net/qemu/+bug/1910826 -Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com -Signed-off-by: Alexander Bulekov <alxndr@bu.edu> -Signed-off-by: Jason Wang <jasowang@redhat.com> - -Upstream-Status: Backport [5311fb805a4403bba024e83886fa0e7572265de4] -CVE: CVE-2021-3416 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/net/rtl8139.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/net/rtl8139.c b/hw/net/rtl8139.c -index ba5ace1ab..d2dd03e6a 100644 ---- a/hw/net/rtl8139.c -+++ b/hw/net/rtl8139.c -@@ -1795,7 +1795,7 @@ static void rtl8139_transfer_frame(RTL8139State *s, uint8_t *buf, int size, - } - - DPRINTF("+++ transmit loopback mode\n"); -- rtl8139_do_receive(qemu_get_queue(s->nic), buf, size, do_interrupt); -+ qemu_receive_packet(qemu_get_queue(s->nic), buf, size); - - if (iov) { - g_free(buf2); --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_8.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_8.patch deleted file mode 100644 index ed716468dc..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_8.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 023ce62f0a788ad3a8233c7a828554bceeafd031 Mon Sep 17 00:00:00 2001 -From: Alexander Bulekov <alxndr@bu.edu> -Date: Mon, 1 Mar 2021 10:33:34 -0500 -Subject: [PATCH 08/10] pcnet: switch to use qemu_receive_packet() for loopback -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This patch switches to use qemu_receive_packet() which can detect -reentrancy and return early. - -This is intended to address CVE-2021-3416. - -Cc: Prasad J Pandit <ppandit@redhat.com> -Cc: qemu-stable@nongnu.org -Buglink: https://bugs.launchpad.net/qemu/+bug/1917085 -Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com -Signed-off-by: Alexander Bulekov <alxndr@bu.edu> -Signed-off-by: Jason Wang <jasowang@redhat.com> - -Upstream-Status: Backport [99ccfaa1edafd79f7a3a0ff7b58ae4da7c514928] -CVE: CVE-2021-3416 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/net/pcnet.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/net/pcnet.c b/hw/net/pcnet.c -index f3f18d859..dcd3fc494 100644 ---- a/hw/net/pcnet.c -+++ b/hw/net/pcnet.c -@@ -1250,7 +1250,7 @@ txagain: - if (BCR_SWSTYLE(s) == 1) - add_crc = !GET_FIELD(tmd.status, TMDS, NOFCS); - s->looptest = add_crc ? PCNET_LOOPTEST_CRC : PCNET_LOOPTEST_NOCRC; -- pcnet_receive(qemu_get_queue(s->nic), s->buffer, s->xmit_pos); -+ qemu_receive_packet(qemu_get_queue(s->nic), s->buffer, s->xmit_pos); - s->looptest = 0; - } else { - if (s->nic) { --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_9.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_9.patch deleted file mode 100644 index 39d32b33a4..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3416_9.patch +++ /dev/null @@ -1,46 +0,0 @@ -From ecf7e62bb2cb02c9bd40082504ae376f3e19ffd2 Mon Sep 17 00:00:00 2001 -From: Alexander Bulekov <alxndr@bu.edu> -Date: Mon, 1 Mar 2021 14:33:43 -0500 -Subject: [PATCH 09/10] cadence_gem: switch to use qemu_receive_packet() for - loopback -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This patch switches to use qemu_receive_packet() which can detect -reentrancy and return early. - -This is intended to address CVE-2021-3416. - -Cc: Prasad J Pandit <ppandit@redhat.com> -Cc: qemu-stable@nongnu.org -Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> -Signed-off-by: Alexander Bulekov <alxndr@bu.edu> -Signed-off-by: Jason Wang <jasowang@redhat.com> - -Upstream-Status: Backport [e73adfbeec9d4e008630c814759052ed945c3fed] -CVE: CVE-2021-3416 - -Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> ---- - hw/net/cadence_gem.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/hw/net/cadence_gem.c b/hw/net/cadence_gem.c -index 7a534691f..43b760e3f 100644 ---- a/hw/net/cadence_gem.c -+++ b/hw/net/cadence_gem.c -@@ -1275,8 +1275,8 @@ static void gem_transmit(CadenceGEMState *s) - /* Send the packet somewhere */ - if (s->phy_loop || (s->regs[GEM_NWCTRL] & - GEM_NWCTRL_LOCALLOOP)) { -- gem_receive(qemu_get_queue(s->nic), s->tx_packet, -- total_bytes); -+ qemu_receive_packet(qemu_get_queue(s->nic), s->tx_packet, -+ total_bytes); - } else { - qemu_send_packet(qemu_get_queue(s->nic), s->tx_packet, - total_bytes); --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/cross.patch b/poky/meta/recipes-devtools/qemu/qemu/cross.patch index 438c1ad086..a0fc39e5e2 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/cross.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/cross.patch @@ -6,19 +6,19 @@ Upstream-Status: Inappropriate [may be rewritten in a way upstream may accept?] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> -Index: qemu-5.2.0/configure +Index: qemu-6.0.0/configure =================================================================== ---- qemu-5.2.0.orig/configure -+++ qemu-5.2.0/configure -@@ -6973,7 +6973,6 @@ if has $sdl2_config; then +--- qemu-6.0.0.orig/configure ++++ qemu-6.0.0/configure +@@ -6371,7 +6371,6 @@ if has $sdl2_config; then fi echo "strip = [$(meson_quote $strip)]" >> $cross echo "windres = [$(meson_quote $windres)]" >> $cross --if test -n "$cross_prefix"; then +-if test "$cross_compile" = "yes"; then cross_arg="--cross-file config-meson.cross" echo "[host_machine]" >> $cross if test "$mingw32" = "yes" ; then -@@ -6999,9 +6998,6 @@ if test -n "$cross_prefix"; then +@@ -6403,9 +6402,6 @@ if test "$cross_compile" = "yes"; then else echo "endian = 'little'" >> $cross fi diff --git a/poky/meta/recipes-devtools/qemu/qemu/determinism.patch b/poky/meta/recipes-devtools/qemu/qemu/determinism.patch index cb1c907777..330a31204d 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/determinism.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/determinism.patch @@ -4,38 +4,19 @@ qemu build are not reproducible due to either full buildpaths or timestamps. Replace the full paths with relative ones. I couldn't figure out how to get meson to pass relative paths but we can fix that in the script. -For the keymaps, omit the timestamps as they don't matter to us. - Upstream-Status: Pending [some version of all/part of this may be accepted] RP 2021/3/1 -Index: qemu-5.2.0/scripts/decodetree.py +Index: qemu-6.0.0/scripts/decodetree.py =================================================================== ---- qemu-5.2.0.orig/scripts/decodetree.py -+++ qemu-5.2.0/scripts/decodetree.py -@@ -1303,8 +1303,8 @@ def main(): +--- qemu-6.0.0.orig/scripts/decodetree.py ++++ qemu-6.0.0/scripts/decodetree.py +@@ -1304,7 +1304,7 @@ def main(): toppat = ExcMultiPattern(0) for filename in args: - input_file = filename -- f = open(filename, 'r') + input_file = os.path.relpath(filename) -+ f = open(input_file, 'r') + f = open(filename, 'rt', encoding='utf-8') parse_file(f, toppat) f.close() - -Index: qemu-5.2.0/ui/keycodemapdb/tools/keymap-gen -=================================================================== ---- qemu-5.2.0.orig/ui/keycodemapdb/tools/keymap-gen -+++ qemu-5.2.0/ui/keycodemapdb/tools/keymap-gen -@@ -317,9 +317,8 @@ class LanguageGenerator(object): - raise NotImplementedError() - - def generate_header(self, database, args): -- today = time.strftime("%Y-%m-%d %H:%M") - self._boilerplate([ -- "This file is auto-generated from keymaps.csv on %s" % today, -+ "This file is auto-generated from keymaps.csv", - "Database checksum sha256(%s)" % database.mapchecksum, - "To re-generate, run:", - " %s" % args, diff --git a/poky/meta/recipes-devtools/qemu/qemu/mingwfix.patch b/poky/meta/recipes-devtools/qemu/qemu/mingwfix.patch deleted file mode 100644 index 8d76cef638..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/mingwfix.patch +++ /dev/null @@ -1,21 +0,0 @@ -OE assumes that mingw files are in a unix like file layout. The -'flattening' done by configure in qemu for mingw32 breaks things -for us. We are discussing with upstream but for now, hack this to -disable it and use the unix like layout everywhere. - -Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> -Upstream-Status: Submitted [https://lists.gnu.org/archive/html/qemu-devel/2021-01/msg01073.html] - -Index: qemu-5.2.0/configure -=================================================================== ---- qemu-5.2.0.orig/configure -+++ qemu-5.2.0/configure -@@ -1541,7 +1541,7 @@ libdir="${libdir:-$prefix/lib}" - libexecdir="${libexecdir:-$prefix/libexec}" - includedir="${includedir:-$prefix/include}" - --if test "$mingw32" = "yes" ; then -+if test "$mingw32" = "dontwantthis" ; then - mandir="$prefix" - datadir="$prefix" - docdir="$prefix" diff --git a/poky/meta/recipes-devtools/qemu/qemu/mmap.patch b/poky/meta/recipes-devtools/qemu/qemu/mmap.patch deleted file mode 100644 index edd9734f30..0000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/mmap.patch +++ /dev/null @@ -1,29 +0,0 @@ -If mremap() is called without the MREMAP_MAYMOVE flag with a start address -just before the end of memory (reserved_va) where new_size would exceed -GUEST_ADD_MAX, the assert(end - 1 <= GUEST_ADDR_MAX) in page_set_flags() -would trigger. - -Add an extra guard to the guest_range_valid() checks to prevent this and -avoid asserting binaries when reserved_va is set. - -This meant a test case now gives the same behaviour regardless of whether -reserved_va is set or not. - -Upstream-Status: Backport [https://github.com/qemu/qemu/commit/ccc5ccc17f8cfbfd87d9aede5d12a2d47c56e712] -Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org - -Index: qemu-5.2.0/linux-user/mmap.c -=================================================================== ---- qemu-5.2.0.orig/linux-user/mmap.c -+++ qemu-5.2.0/linux-user/mmap.c -@@ -727,7 +727,9 @@ abi_long target_mremap(abi_ulong old_add - - if (!guest_range_valid(old_addr, old_size) || - ((flags & MREMAP_FIXED) && -- !guest_range_valid(new_addr, new_size))) { -+ !guest_range_valid(new_addr, new_size)) || -+ ((flags & MREMAP_MAYMOVE) == 0 && -+ !guest_range_valid(old_addr, new_size))) { - errno = ENOMEM; - return -1; - } diff --git a/poky/meta/recipes-devtools/qemu/qemu/mmap2.patch b/poky/meta/recipes-devtools/qemu/qemu/mmap2.patch index 1652131757..e115473b70 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/mmap2.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/mmap2.patch @@ -13,27 +13,26 @@ rather than ENOMEM so adjust the other part of the test to this. Upstream-Status: Submitted [https://lists.gnu.org/archive/html/qemu-devel/2021-01/msg01355.html] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org -Index: qemu-5.2.0/linux-user/mmap.c +Index: qemu-6.0.0/linux-user/mmap.c =================================================================== ---- qemu-5.2.0.orig/linux-user/mmap.c -+++ qemu-5.2.0/linux-user/mmap.c -@@ -722,12 +722,14 @@ abi_long target_mremap(abi_ulong old_add +--- qemu-6.0.0.orig/linux-user/mmap.c ++++ qemu-6.0.0/linux-user/mmap.c +@@ -733,12 +733,16 @@ abi_long target_mremap(abi_ulong old_add int prot; void *host_addr; -- if (!guest_range_valid(old_addr, old_size) || +- if (!guest_range_valid_untagged(old_addr, old_size) || - ((flags & MREMAP_FIXED) && -- !guest_range_valid(new_addr, new_size)) || -- ((flags & MREMAP_MAYMOVE) == 0 && -- !guest_range_valid(old_addr, new_size))) { -- errno = ENOMEM; -+ if (!guest_range_valid(old_addr, old_size)) { ++ if (!guest_range_valid_untagged(old_addr, old_size)) { + errno = EFAULT; + return -1; + } -+ -+ if (((flags & MREMAP_FIXED) && !guest_range_valid(new_addr, new_size)) || -+ ((flags & MREMAP_MAYMOVE) == 0 && !guest_range_valid(old_addr, new_size))) { ++ ++ if (((flags & MREMAP_FIXED) && + !guest_range_valid_untagged(new_addr, new_size)) || + ((flags & MREMAP_MAYMOVE) == 0 && + !guest_range_valid_untagged(old_addr, new_size))) { +- errno = ENOMEM; + errno = EINVAL; return -1; } diff --git a/poky/meta/recipes-devtools/qemu/qemu_5.2.0.bb b/poky/meta/recipes-devtools/qemu/qemu_6.0.0.bb index f265204b10..90b135a617 100644 --- a/poky/meta/recipes-devtools/qemu/qemu_5.2.0.bb +++ b/poky/meta/recipes-devtools/qemu/qemu_6.0.0.bb @@ -19,11 +19,11 @@ do_install_append_class-nativesdk() { } PACKAGECONFIG ??= " \ - fdt sdl kvm \ + fdt sdl kvm pie \ ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer glx', '', d)} \ ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)} \ " -PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm \ +PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm pie \ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer glx', '', d)} \ " diff --git a/poky/meta/recipes-devtools/rpm/rpm_4.16.1.3.bb b/poky/meta/recipes-devtools/rpm/rpm_4.16.1.3.bb index 7c03b41fc8..95a6f5cf71 100644 --- a/poky/meta/recipes-devtools/rpm/rpm_4.16.1.3.bb +++ b/poky/meta/recipes-devtools/rpm/rpm_4.16.1.3.bb @@ -47,7 +47,7 @@ SRCREV = "3659b8a04f5b8bacf6535e0124e7fe23f15286bd" S = "${WORKDIR}/git" -DEPENDS = "libgcrypt db file popt xz bzip2 elfutils python3" +DEPENDS = "libgcrypt file popt xz bzip2 elfutils python3" DEPENDS_append_class-native = " file-replacement-native bzip2-replacement-native" inherit autotools gettext pkgconfig python3native @@ -70,11 +70,12 @@ EXTRA_OECONF_append_class-nativesdk = " --sysconfdir=/etc --disable-plugins" BBCLASSEXTEND = "native nativesdk" -PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'inhibit', '', d)}" +PACKAGECONFIG ??= "bdb ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'inhibit', '', d)}" # The inhibit plugin serves no purpose outside of the target PACKAGECONFIG_remove_class-native = "inhibit" PACKAGECONFIG_remove_class-nativesdk = "inhibit" +PACKAGECONFIG[bdb] = "--enable-bdb,--disable-bdb,db" PACKAGECONFIG[imaevm] = "--with-imaevm,,ima-evm-utils" PACKAGECONFIG[inhibit] = "--enable-inhibit-plugin,--disable-inhibit-plugin,dbus" PACKAGECONFIG[rpm2archive] = "--with-archive,--without-archive,libarchive" diff --git a/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb b/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb index 2b1409d78d..137e5097fa 100644 --- a/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb +++ b/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb @@ -32,7 +32,9 @@ do_compile() { } do_install() { + install -d "${D}${includedir}" oe_runmake install INSTALL_DIR=${D}${sbindir} + install -m 0644 "${S}"/squashfs_fs.h "${D}${includedir}" } ARM_INSTRUCTION_SET_armv4 = "arm" diff --git a/poky/meta/recipes-devtools/swig/swig.inc b/poky/meta/recipes-devtools/swig/swig.inc index e62718c508..292bca393d 100644 --- a/poky/meta/recipes-devtools/swig/swig.inc +++ b/poky/meta/recipes-devtools/swig/swig.inc @@ -13,6 +13,8 @@ SECTION = "devel" DEPENDS = "libpcre bison-native" SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz" +UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/swig/files/swig/" +UPSTREAM_CHECK_REGEX = "swig-(?P<pver>\d+(\.\d+)+)" inherit autotools python3native pkgconfig diff --git a/poky/meta/recipes-devtools/swig/swig/0001-Add-Node-7.x-aka-V8-5.2-support.patch b/poky/meta/recipes-devtools/swig/swig/0001-Add-Node-7.x-aka-V8-5.2-support.patch deleted file mode 100644 index 885c395614..0000000000 --- a/poky/meta/recipes-devtools/swig/swig/0001-Add-Node-7.x-aka-V8-5.2-support.patch +++ /dev/null @@ -1,330 +0,0 @@ -From 1a5aadcd66e85c63d228bfd811a521d617c22a38 Mon Sep 17 00:00:00 2001 -From: Patrick Schneider <patrick.schneider@meetnow.eu> -Date: Thu, 13 Apr 2017 15:02:53 +0200 -Subject: [PATCH] Add Node 7.x aka V8 5.2+ support - -* Use WeakCallbackInfo instead of WeakCallbackData -* Use GetPrivate instead of GetHiddenValue -* Adopted new signature for SetWeak to support destructor calling -* SetAccessor deprecation fixed -* Proper version checks where applicable - -Upstream-Status: Submitted [https://github.com/swig/swig/pull/968] - -Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> ---- - Lib/javascript/v8/javascriptcode.swg | 27 +++++++++++++++++----- - Lib/javascript/v8/javascripthelpers.swg | 29 +++++++++++++++++++++--- - Lib/javascript/v8/javascriptinit.swg | 16 +++++++++++-- - Lib/javascript/v8/javascriptrun.swg | 40 ++++++++++++++++++++++++++++----- - 4 files changed, 95 insertions(+), 17 deletions(-) - -diff --git a/Lib/javascript/v8/javascriptcode.swg b/Lib/javascript/v8/javascriptcode.swg -index fb7d55c..b8c5089 100644 ---- a/Lib/javascript/v8/javascriptcode.swg -+++ b/Lib/javascript/v8/javascriptcode.swg -@@ -133,10 +133,13 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Value> object, v - SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Object> *object, SWIGV8_Proxy *proxy) { --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) { - v8::Local<v8::Object> object = data.GetValue(); - SWIGV8_Proxy *proxy = data.GetParameter(); -+#else -+ static void $jswrapper(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) { -+ SWIGV8_Proxy *proxy = data.GetParameter(); - #endif - - if(proxy->swigCMemOwn && proxy->swigCObject) { -@@ -147,7 +150,9 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat - } - delete proxy; - -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - object.Clear(); -+#endif - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) - object.Dispose(); -@@ -155,7 +160,7 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat - object.Dispose(isolate); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) - object->Dispose(isolate); --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - object->Dispose(); - #endif - } -@@ -177,10 +182,13 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Value> object, v - SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - static void $jswrapper(v8::Isolate *isolate, v8::Persistent< v8::Object> *object, SWIGV8_Proxy *proxy) { --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) { - v8::Local<v8::Object> object = data.GetValue(); - SWIGV8_Proxy *proxy = data.GetParameter(); -+#else -+static void $jswrapper(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) { -+ SWIGV8_Proxy *proxy = data.GetParameter(); - #endif - - if(proxy->swigCMemOwn && proxy->swigCObject) { -@@ -197,7 +205,7 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat - object->Dispose(isolate); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - object->Dispose(); --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - object.Clear(); - #endif - } -@@ -211,7 +219,11 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat - * ----------------------------------------------------------------------------- */ - %fragment("js_getter", "templates") - %{ -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - static SwigV8ReturnValue $jswrapper(v8::Local<v8::String> property, const SwigV8PropertyCallbackInfo &info) { -+#else -+static SwigV8ReturnValue $jswrapper(v8::Local<v8::Name> property, const SwigV8PropertyCallbackInfo &info) { -+#endif - SWIGV8_HANDLESCOPE(); - - v8::Handle<v8::Value> jsresult; -@@ -233,8 +245,11 @@ fail: - * ----------------------------------------------------------------------------- */ - %fragment("js_setter", "templates") - %{ --static void $jswrapper(v8::Local<v8::String> property, v8::Local<v8::Value> value, -- const SwigV8PropertyCallbackInfoVoid &info) { -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+static void $jswrapper(v8::Local<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid &info) { -+#else -+static void $jswrapper(v8::Local<v8::Name> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid &info) { -+#endif - SWIGV8_HANDLESCOPE(); - - $jslocals -diff --git a/Lib/javascript/v8/javascripthelpers.swg b/Lib/javascript/v8/javascripthelpers.swg -index 091467d..7461079 100644 ---- a/Lib/javascript/v8/javascripthelpers.swg -+++ b/Lib/javascript/v8/javascripthelpers.swg -@@ -6,11 +6,16 @@ typedef v8::InvocationCallback SwigV8FunctionCallback; - typedef v8::AccessorGetter SwigV8AccessorGetterCallback; - typedef v8::AccessorSetter SwigV8AccessorSetterCallback; - typedef v8::AccessorInfo SwigV8PropertyCallbackInfoVoid; --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - typedef v8::FunctionCallback SwigV8FunctionCallback; - typedef v8::AccessorGetterCallback SwigV8AccessorGetterCallback; - typedef v8::AccessorSetterCallback SwigV8AccessorSetterCallback; - typedef v8::PropertyCallbackInfo<void> SwigV8PropertyCallbackInfoVoid; -+#else -+typedef v8::FunctionCallback SwigV8FunctionCallback; -+typedef v8::AccessorNameGetterCallback SwigV8AccessorGetterCallback; -+typedef v8::AccessorNameSetterCallback SwigV8AccessorSetterCallback; -+typedef v8::PropertyCallbackInfo<void> SwigV8PropertyCallbackInfoVoid; - #endif - - /** -@@ -65,18 +70,36 @@ SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Handle<v8::Object> obj, const char - */ - SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle<v8::Object> obj, const char* symbol, - SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - obj->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter); -+#else -+ obj->SetAccessor(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW(symbol), getter, setter); -+#endif - } - --SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::String> property, v8::Local<v8::Value> value, -- const SwigV8PropertyCallbackInfoVoid& info) -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info) -+#else -+SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::Name> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info) -+#endif - { - char buffer[256]; - char msg[512]; - int res; - -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - property->WriteUtf8(buffer, 256); - res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); -+#else -+ v8::Local<v8::String> sproperty; -+ if (property->ToString(SWIGV8_CURRENT_CONTEXT()).ToLocal(&sproperty)) { -+ sproperty->WriteUtf8(buffer, 256); -+ res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); -+ } -+ else { -+ res = -1; -+ } -+#endif - - if(res<0) { - SWIG_exception(SWIG_ERROR, "Tried to write read-only variable."); -diff --git a/Lib/javascript/v8/javascriptinit.swg b/Lib/javascript/v8/javascriptinit.swg -index 34befa7..86008d9 100644 ---- a/Lib/javascript/v8/javascriptinit.swg -+++ b/Lib/javascript/v8/javascriptinit.swg -@@ -7,15 +7,27 @@ SWIG_V8_SetModule(void *, swig_module_info *swig_module) { - v8::Local<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); - v8::Local<v8::External> mod = SWIGV8_EXTERNAL_NEW(swig_module); - assert(!mod.IsEmpty()); -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - global_obj->SetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"), mod); -+#else -+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); -+ global_obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, mod); -+#endif - } - - SWIGRUNTIME swig_module_info * - SWIG_V8_GetModule(void *) { - v8::Local<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - v8::Local<v8::Value> moduleinfo = global_obj->GetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data")); -+#else -+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); -+ v8::Local<v8::Value> moduleinfo; -+ if (!global_obj->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&moduleinfo)) -+ return 0; -+#endif - -- if (moduleinfo.IsEmpty()) -+ if (moduleinfo.IsEmpty() || moduleinfo->IsNull() || moduleinfo->IsUndefined()) - { - // It's not yet loaded - return 0; -@@ -23,7 +35,7 @@ SWIG_V8_GetModule(void *) { - - v8::Local<v8::External> moduleinfo_extern = v8::Local<v8::External>::Cast(moduleinfo); - -- if (moduleinfo_extern.IsEmpty()) -+ if (moduleinfo_extern.IsEmpty() || moduleinfo_extern->IsNull() || moduleinfo_extern->IsUndefined()) - { - // Something's not right - return 0; -diff --git a/Lib/javascript/v8/javascriptrun.swg b/Lib/javascript/v8/javascriptrun.swg -index 5ac52a5..30002c0 100644 ---- a/Lib/javascript/v8/javascriptrun.swg -+++ b/Lib/javascript/v8/javascriptrun.swg -@@ -193,8 +193,10 @@ public: - void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Value> object, void *parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy); --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - void (*dtor) (const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data); -+#else -+ void (*dtor) (const v8::WeakCallbackInfo<SWIGV8_Proxy> &data); - #endif - }; - -@@ -241,9 +243,12 @@ SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Val - SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy) { --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) { - SWIGV8_Proxy *proxy = data.GetParameter(); -+#else -+SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) { -+ SWIGV8_Proxy *proxy = data.GetParameter(); - #endif - - delete proxy; -@@ -312,12 +317,18 @@ SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle<v8::Object> obj, void *ptr, sw - } else { - cdata->handle.MakeWeak(cdata, SWIGV8_Proxy_DefaultDtor); - } --#else -+#elifif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { - cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor); - } else { - cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor); - } -+#else -+ if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { -+ cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor, v8::WeakCallbackType::kParameter); -+ } else { -+ cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor, v8::WeakCallbackType::kParameter); -+ } - #endif - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) -@@ -470,7 +481,14 @@ int SwigV8Packed_Check(v8::Handle<v8::Value> valRef) { - - v8::Handle<v8::Object> objRef = valRef->ToObject(); - if(objRef->InternalFieldCount() < 1) return false; -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - v8::Handle<v8::Value> flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__")); -+#else -+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); -+ v8::Local<v8::Value> flag; -+ if (!objRef->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&flag)) -+ return false; -+#endif - return (flag->IsBoolean() && flag->BooleanValue()); - } - -@@ -519,10 +537,13 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persist - SwigV8PackedData *cdata = static_cast<SwigV8PackedData *>(parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persistent<v8::Object> *object, SwigV8PackedData *cdata) { --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData<v8::Object, SwigV8PackedData> &data) { - v8::Local<v8::Object> object = data.GetValue(); - SwigV8PackedData *cdata = data.GetParameter(); -+#else -+SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo<SwigV8PackedData> &data) { -+ SwigV8PackedData *cdata = data.GetParameter(); - #endif - - delete cdata; -@@ -537,7 +558,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData<v8::Ob - object->Dispose(isolate); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - object->Dispose(); --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - object.Clear(); - #endif - } -@@ -550,7 +571,12 @@ v8::Handle<v8::Value> SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf - // v8::Handle<v8::Object> obj = SWIGV8_OBJECT_NEW(); - v8::Local<v8::Object> obj = SWIGV8_OBJECT_NEW(); - -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - obj->SetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"), SWIGV8_BOOLEAN_NEW(true)); -+#else -+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); -+ obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, SWIGV8_BOOLEAN_NEW(true)); -+#endif - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511) - obj->SetPointerInInternalField(0, cdata); -@@ -573,9 +599,11 @@ v8::Handle<v8::Value> SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf - cdata->handle.MakeWeak(v8::Isolate::GetCurrent(), cdata, _wrap_SwigV8PackedData_delete); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - cdata->handle.MakeWeak(cdata, _wrap_SwigV8PackedData_delete); --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete); - // v8::V8::SetWeak(&cdata->handle, cdata, _wrap_SwigV8PackedData_delete); -+#else -+ cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete, v8::WeakCallbackType::kParameter); - #endif - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) --- -2.9.5 - diff --git a/poky/meta/recipes-devtools/swig/swig/0001-Fix-generated-code-for-constant-expressions-containi.patch b/poky/meta/recipes-devtools/swig/swig/0001-Fix-generated-code-for-constant-expressions-containi.patch deleted file mode 100644 index f4ed782a82..0000000000 --- a/poky/meta/recipes-devtools/swig/swig/0001-Fix-generated-code-for-constant-expressions-containi.patch +++ /dev/null @@ -1,179 +0,0 @@ -From 90ba174fcea1618af57aa594199541d47a89b7f6 Mon Sep 17 00:00:00 2001 -From: William S Fulton <wsf@fultondesigns.co.uk> -Date: Sun, 17 Sep 2017 19:02:55 +0100 -Subject: [PATCH 1/2] Fix generated code for constant expressions containing - wchar_t L literals. - -Such as: - # define __WCHAR_MAX (0x7fffffff + L'\0') - -Reported on swig-user mailing list. ---- - CHANGES.current | 5 +++++ - Examples/test-suite/csharp/preproc_constants_c_runme.cs | 3 ++- - Examples/test-suite/csharp/preproc_constants_runme.cs | 2 ++ - Examples/test-suite/d/preproc_constants_c_runme.1.d | 2 ++ - Examples/test-suite/d/preproc_constants_c_runme.2.d | 2 ++ - Examples/test-suite/d/preproc_constants_runme.1.d | 2 ++ - Examples/test-suite/d/preproc_constants_runme.2.d | 2 ++ - Examples/test-suite/php/preproc_constants_c_runme.php | 2 ++ - Examples/test-suite/php/preproc_constants_runme.php | 2 ++ - Examples/test-suite/php5/preproc_constants_c_runme.php | 2 ++ - Examples/test-suite/php5/preproc_constants_runme.php | 2 ++ - Examples/test-suite/preproc_constants.i | 3 +++ - Source/CParse/parser.y | 2 +- - 13 files changed, 29 insertions(+), 2 deletions(-) - -Upstream-Status: Backport -[https://github.com/swig/swig/commit/90ba174fcea1618af57aa594199541d47a89b7f6] -Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> - -diff --git a/Examples/test-suite/csharp/preproc_constants_c_runme.cs b/Examples/test-suite/csharp/preproc_constants_c_runme.cs -index 76c684d..1c28e49 100644 ---- a/Examples/test-suite/csharp/preproc_constants_c_runme.cs -+++ b/Examples/test-suite/csharp/preproc_constants_c_runme.cs -@@ -61,7 +61,8 @@ public class runme { - assert( typeof(int) == preproc_constants_c.EXPR_LAND.GetType() ); - assert( typeof(int) == preproc_constants_c.EXPR_LOR.GetType() ); - assert( typeof(double) == preproc_constants_c.EXPR_CONDITIONAL.GetType() ); -- -+ assert( typeof(int) == preproc_constants_c.EXPR_WCHAR_MAX.GetType() ); -+ assert( typeof(int) == preproc_constants_c.EXPR_WCHAR_MIN.GetType() ); - } - static void assert(bool assertion) { - if (!assertion) -diff --git a/Examples/test-suite/csharp/preproc_constants_runme.cs b/Examples/test-suite/csharp/preproc_constants_runme.cs -index 9fae591..6b02e30 100644 ---- a/Examples/test-suite/csharp/preproc_constants_runme.cs -+++ b/Examples/test-suite/csharp/preproc_constants_runme.cs -@@ -60,6 +60,8 @@ public class runme { - assert( typeof(bool) == preproc_constants.EXPR_LAND.GetType() ); - assert( typeof(bool) == preproc_constants.EXPR_LOR.GetType() ); - assert( typeof(double) == preproc_constants.EXPR_CONDITIONAL.GetType() ); -+ assert( typeof(int) == preproc_constants.EXPR_WCHAR_MAX.GetType() ); -+ assert( typeof(int) == preproc_constants.EXPR_WCHAR_MIN.GetType() ); - - } - static void assert(bool assertion) { -diff --git a/Examples/test-suite/d/preproc_constants_c_runme.1.d b/Examples/test-suite/d/preproc_constants_c_runme.1.d -index d846c71..2b349af 100644 ---- a/Examples/test-suite/d/preproc_constants_c_runme.1.d -+++ b/Examples/test-suite/d/preproc_constants_c_runme.1.d -@@ -61,4 +61,6 @@ void main() { - static assert(is(int == typeof(EXPR_LAND()))); - static assert(is(int == typeof(EXPR_LOR()))); - static assert(is(double == typeof(EXPR_CONDITIONAL()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MAX()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MIN()))); - } -diff --git a/Examples/test-suite/d/preproc_constants_c_runme.2.d b/Examples/test-suite/d/preproc_constants_c_runme.2.d -index 9bdbb93..1bac525 100644 ---- a/Examples/test-suite/d/preproc_constants_c_runme.2.d -+++ b/Examples/test-suite/d/preproc_constants_c_runme.2.d -@@ -61,4 +61,6 @@ void main() { - static assert(is(int == typeof(EXPR_LAND()))); - static assert(is(int == typeof(EXPR_LOR()))); - static assert(is(double == typeof(EXPR_CONDITIONAL()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MAX()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MIN()))); - } -diff --git a/Examples/test-suite/d/preproc_constants_runme.1.d b/Examples/test-suite/d/preproc_constants_runme.1.d -index 009405f..f743f48 100644 ---- a/Examples/test-suite/d/preproc_constants_runme.1.d -+++ b/Examples/test-suite/d/preproc_constants_runme.1.d -@@ -60,4 +60,6 @@ void main() { - static assert(is(bool == typeof(EXPR_LAND()))); - static assert(is(bool == typeof(EXPR_LOR()))); - static assert(is(double == typeof(EXPR_CONDITIONAL()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MAX()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MIN()))); - } -diff --git a/Examples/test-suite/d/preproc_constants_runme.2.d b/Examples/test-suite/d/preproc_constants_runme.2.d -index 2d92ef0..0d96c37 100644 ---- a/Examples/test-suite/d/preproc_constants_runme.2.d -+++ b/Examples/test-suite/d/preproc_constants_runme.2.d -@@ -60,4 +60,6 @@ void main() { - static assert(is(bool == typeof(EXPR_LAND()))); - static assert(is(bool == typeof(EXPR_LOR()))); - static assert(is(double == typeof(EXPR_CONDITIONAL()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MAX()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MIN()))); - } -diff --git a/Examples/test-suite/php/preproc_constants_c_runme.php b/Examples/test-suite/php/preproc_constants_c_runme.php -index af9b76e..e59fe18 100644 ---- a/Examples/test-suite/php/preproc_constants_c_runme.php -+++ b/Examples/test-suite/php/preproc_constants_c_runme.php -@@ -62,5 +62,7 @@ check::equal(gettype(preproc_constants_c::EXPR_OR), "integer", "preproc_constant - check::equal(gettype(preproc_constants_c::EXPR_LAND), "integer", "preproc_constants.EXPR_LAND has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); -+check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); -+check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); - - ?> -diff --git a/Examples/test-suite/php/preproc_constants_runme.php b/Examples/test-suite/php/preproc_constants_runme.php -index 5c9119b..8e117ea 100644 ---- a/Examples/test-suite/php/preproc_constants_runme.php -+++ b/Examples/test-suite/php/preproc_constants_runme.php -@@ -61,5 +61,7 @@ check::equal(gettype(preproc_constants::EXPR_OR), "integer", "preproc_constants. - check::equal(gettype(preproc_constants::EXPR_LAND), "boolean", "preproc_constants.EXPR_LAND has unexpected type"); - check::equal(gettype(preproc_constants::EXPR_LOR), "boolean", "preproc_constants.EXPR_LOR has unexpected type"); - check::equal(gettype(preproc_constants::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); -+check::equal(gettype(preproc_constants::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); -+check::equal(gettype(preproc_constants::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); - - ?> -diff --git a/Examples/test-suite/php5/preproc_constants_c_runme.php b/Examples/test-suite/php5/preproc_constants_c_runme.php -index 1ea0195..d978fab 100644 ---- a/Examples/test-suite/php5/preproc_constants_c_runme.php -+++ b/Examples/test-suite/php5/preproc_constants_c_runme.php -@@ -62,5 +62,7 @@ check::equal(gettype(preproc_constants_c::EXPR_OR), "integer", "preproc_constant - check::equal(gettype(preproc_constants_c::EXPR_LAND), "integer", "preproc_constants.EXPR_LAND has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); -+check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); -+check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); - - ?> -diff --git a/Examples/test-suite/php5/preproc_constants_runme.php b/Examples/test-suite/php5/preproc_constants_runme.php -index fb9ee4f..7527026 100644 ---- a/Examples/test-suite/php5/preproc_constants_runme.php -+++ b/Examples/test-suite/php5/preproc_constants_runme.php -@@ -70,5 +70,7 @@ check::equal(gettype(preproc_constants::EXPR_LAND), "integer", "preproc_constant - check::equal(gettype(preproc_constants::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); - - check::equal(gettype(preproc_constants::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); -+check::equal(gettype(preproc_constants::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); -+check::equal(gettype(preproc_constants::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); - - ?> -diff --git a/Examples/test-suite/preproc_constants.i b/Examples/test-suite/preproc_constants.i -index 3a999ad..16b44c9 100644 ---- a/Examples/test-suite/preproc_constants.i -+++ b/Examples/test-suite/preproc_constants.i -@@ -87,6 +87,9 @@ - #define EXPR_LOR 0xFF || 1 - #define EXPR_CONDITIONAL true ? 2 : 2.2 - -+#define EXPR_WCHAR_MAX (0x7fffffff + L'\0') -+#define EXPR_WCHAR_MIN (-EXPR_WCHAR_MAX - 1) -+ - #define EXPR_CHAR_COMPOUND_ADD 'A' + 12 - #define EXPR_CHAR_COMPOUND_LSHIFT 'B' << 6 - #define H_SUPPRESS_SCALING_MAGIC (('s'<<24) | ('u'<<16) | ('p'<<8) | 'p') -diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y -index 2e92cd0..273dadb 100644 ---- a/Source/CParse/parser.y -+++ b/Source/CParse/parser.y -@@ -194,7 +194,7 @@ int SWIG_cparse_template_reduce(int treduce) { - * ----------------------------------------------------------------------------- */ - - static int promote_type(int t) { -- if (t <= T_UCHAR || t == T_CHAR) return T_INT; -+ if (t <= T_UCHAR || t == T_CHAR || t == T_WCHAR) return T_INT; - return t; - } - --- -2.9.5 - diff --git a/poky/meta/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch b/poky/meta/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch index 81df3e264f..f27f80ea18 100644 --- a/poky/meta/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch +++ b/poky/meta/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch @@ -13,13 +13,11 @@ http://sourceforge.net/mailarchive/message.php?msg_id=29179733 Source/Modules/main.cxx | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) -diff --git a/Source/Modules/main.cxx b/Source/Modules/main.cxx -index d2f5d3b..cbb0a12 100644 --- a/Source/Modules/main.cxx +++ b/Source/Modules/main.cxx -@@ -26,6 +26,11 @@ char cvsroot_main_cxx[] = "$Id$"; - #include "cparse.h" +@@ -25,6 +25,11 @@ #include <ctype.h> + #include <errno.h> #include <limits.h> // for INT_MAX +#ifndef _WIN32 +#include <cstddef> @@ -29,7 +27,7 @@ index d2f5d3b..cbb0a12 100644 // Global variables -@@ -902,9 +907,9 @@ int SWIG_main(int argc, char *argv[], Language *l) { +@@ -934,9 +939,9 @@ int SWIG_main(int argc, char *argv[], co // Check for SWIG_LIB environment variable if ((c = getenv("SWIG_LIB")) == (char *) 0) { @@ -40,7 +38,7 @@ index d2f5d3b..cbb0a12 100644 if (!(GetModuleFileName(0, buf, MAX_PATH) == 0 || (p = strrchr(buf, '\\')) == 0)) { *(p + 1) = '\0'; SwigLib = NewStringf("%sLib", buf); // Native windows installation path -@@ -914,7 +919,22 @@ int SWIG_main(int argc, char *argv[], Language *l) { +@@ -946,7 +951,22 @@ int SWIG_main(int argc, char *argv[], co if (Len(SWIG_LIB_WIN_UNIX) > 0) SwigLibWinUnix = NewString(SWIG_LIB_WIN_UNIX); // Unix installation path using a drive letter (for msys/mingw) #else @@ -64,6 +62,3 @@ index d2f5d3b..cbb0a12 100644 #endif } else { SwigLib = NewString(c); --- -1.7.9.5 - diff --git a/poky/meta/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch b/poky/meta/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch index 1b1128acab..114de7ed94 100644 --- a/poky/meta/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch +++ b/poky/meta/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch @@ -9,11 +9,9 @@ Upstream-Status: pending configure.ac | 38 +++++++------------------------------- 1 file changed, 7 insertions(+), 31 deletions(-) -diff --git a/configure.ac b/configure.ac -index 0c984b7..6edcec1 100644 --- a/configure.ac +++ b/configure.ac -@@ -70,38 +70,14 @@ AC_MSG_RESULT([$with_pcre]) +@@ -52,38 +52,14 @@ AC_MSG_RESULT([$with_pcre]) dnl To make configuring easier, check for a locally built PCRE using the Tools/pcre-build.sh script if test x"${with_pcre}" = xyes ; then @@ -59,6 +57,3 @@ index 0c984b7..6edcec1 100644 dnl CCache --- -1.9.3 - diff --git a/poky/meta/recipes-devtools/swig/swig/Python-Fix-new-GCC8-warnings-in-generated-code.patch b/poky/meta/recipes-devtools/swig/swig/Python-Fix-new-GCC8-warnings-in-generated-code.patch deleted file mode 100644 index a91385916c..0000000000 --- a/poky/meta/recipes-devtools/swig/swig/Python-Fix-new-GCC8-warnings-in-generated-code.patch +++ /dev/null @@ -1,191 +0,0 @@ -From b6c0ef4b8f6e5c089ac7104b3aaba8f1d17b8b82 Mon Sep 17 00:00:00 2001 -From: Olly Betts <olly@survex.com> -Date: Mon, 11 Jun 2018 15:51:53 +1200 -Subject: [PATCH] [Python] Fix new GCC8 warnings in generated code - -Avoid casts between incompatible function types where possible (when -keyword args are in use, it is not possible to avoid such warnings as -they are inherent in the design of Python's C API in that particular -case). Fixes #1259. - -Upstream-Status: Backport -[https://github.com/swig/swig/commit/7f9883011029674553a2a4b623d459f02b512458] - -Signed-off-by: Yi Zhao <yi.zhao@windriver.com> ---- - Lib/python/pyinit.swg | 4 ++-- - Lib/python/pyrun.swg | 34 ++++++++++++++++++++++++++-------- - Source/Modules/python.cxx | 26 +++++++++++++------------- - 3 files changed, 41 insertions(+), 23 deletions(-) - -diff --git a/Lib/python/pyinit.swg b/Lib/python/pyinit.swg -index 2cc5828..6bf68c1 100644 ---- a/Lib/python/pyinit.swg -+++ b/Lib/python/pyinit.swg -@@ -368,8 +368,8 @@ SWIG_init(void) { - (char *)"this", &SwigPyBuiltin_ThisClosure, NULL, NULL, NULL - }; - static SwigPyGetSet thisown_getset_closure = { -- (PyCFunction) SwigPyObject_own, -- (PyCFunction) SwigPyObject_own -+ SwigPyObject_own, -+ SwigPyObject_own - }; - static PyGetSetDef thisown_getset_def = { - (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure -diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg -index ab1237f..3d0b1b3 100644 ---- a/Lib/python/pyrun.swg -+++ b/Lib/python/pyrun.swg -@@ -465,6 +465,14 @@ SwigPyObject_repr(SwigPyObject *v, PyObject *args) - return repr; - } - -+/* We need a version taking two PyObject* parameters so it's a valid -+ * PyCFunction to use in swigobject_methods[]. */ -+SWIGRUNTIME PyObject * -+SwigPyObject_repr2(PyObject *v, PyObject *SWIGUNUSEDPARM(args)) -+{ -+ return SwigPyObject_repr((SwigPyObject*)v); -+} -+ - SWIGRUNTIME int - SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w) - { -@@ -594,11 +602,7 @@ SwigPyObject_append(PyObject* v, PyObject* next) - } - - SWIGRUNTIME PyObject* --#ifdef METH_NOARGS --SwigPyObject_next(PyObject* v) --#else - SwigPyObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) --#endif - { - SwigPyObject *sobj = (SwigPyObject *) v; - if (sobj->next) { -@@ -633,6 +637,20 @@ SwigPyObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) - return SWIG_Py_Void(); - } - -+#ifdef METH_NOARGS -+static PyObject* -+SwigPyObject_disown2(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) -+{ -+ return SwigPyObject_disown(v); -+} -+ -+static PyObject* -+SwigPyObject_acquire2(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) -+{ -+ return SwigPyObject_acquire(v); -+} -+#endif -+ - SWIGINTERN PyObject* - SwigPyObject_own(PyObject *v, PyObject *args) - { -@@ -673,12 +691,12 @@ SwigPyObject_own(PyObject *v, PyObject *args) - #ifdef METH_O - static PyMethodDef - swigobject_methods[] = { -- {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_NOARGS, (char *)"releases ownership of the pointer"}, -- {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_NOARGS, (char *)"acquires ownership of the pointer"}, -+ {(char *)"disown", (PyCFunction)SwigPyObject_disown2, METH_NOARGS, (char *)"releases ownership of the pointer"}, -+ {(char *)"acquire", (PyCFunction)SwigPyObject_acquire2,METH_NOARGS, (char *)"acquires ownership of the pointer"}, - {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, - {(char *)"append", (PyCFunction)SwigPyObject_append, METH_O, (char *)"appends another 'this' object"}, - {(char *)"next", (PyCFunction)SwigPyObject_next, METH_NOARGS, (char *)"returns the next 'this' object"}, -- {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_NOARGS, (char *)"returns object representation"}, -+ {(char *)"__repr__",(PyCFunction)SwigPyObject_repr2, METH_NOARGS, (char *)"returns object representation"}, - {0, 0, 0, 0} - }; - #else -@@ -689,7 +707,7 @@ swigobject_methods[] = { - {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, - {(char *)"append", (PyCFunction)SwigPyObject_append, METH_VARARGS, (char *)"appends another 'this' object"}, - {(char *)"next", (PyCFunction)SwigPyObject_next, METH_VARARGS, (char *)"returns the next 'this' object"}, -- {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_VARARGS, (char *)"returns object representation"}, -+ {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_VARARGS, (char *)"returns object representation"}, - {0, 0, 0, 0} - }; - #endif -diff --git a/Source/Modules/python.cxx b/Source/Modules/python.cxx -index a6801fc..72eaa77 100644 ---- a/Source/Modules/python.cxx -+++ b/Source/Modules/python.cxx -@@ -1109,7 +1109,7 @@ public: - * ------------------------------------------------------------ */ - int add_pyinstancemethod_new() { - String *name = NewString("SWIG_PyInstanceMethod_New"); -- Printf(methods, "\t { (char *)\"%s\", (PyCFunction)%s, METH_O, NULL},\n", name, name); -+ Printf(methods, "\t { \"%s\", %s, METH_O, NULL},\n", name, name); - Delete(name); - return 0; - } -@@ -2479,17 +2479,17 @@ public: - if (!kw) { - if (n && funpack) { - if (num_required == 0 && num_arguments == 0) { -- Printf(methods, "\t { (char *)\"%s\", (PyCFunction)%s, METH_NOARGS, ", name, function); -+ Printf(methods, "\t { \"%s\", %s, METH_NOARGS, ", name, function); - } else if (num_required == 1 && num_arguments == 1) { -- Printf(methods, "\t { (char *)\"%s\", (PyCFunction)%s, METH_O, ", name, function); -+ Printf(methods, "\t { \"%s\", %s, METH_O, ", name, function); - } else { -- Printf(methods, "\t { (char *)\"%s\", %s, METH_VARARGS, ", name, function); -+ Printf(methods, "\t { \"%s\", %s, METH_VARARGS, ", name, function); - } - } else { -- Printf(methods, "\t { (char *)\"%s\", %s, METH_VARARGS, ", name, function); -+ Printf(methods, "\t { \"%s\", %s, METH_VARARGS, ", name, function); - } - } else { -- Printf(methods, "\t { (char *)\"%s\", (PyCFunction) %s, METH_VARARGS | METH_KEYWORDS, ", name, function); -+ Printf(methods, "\t { \"%s\", (PyCFunction)%s, METH_VARARGS|METH_KEYWORDS, ", name, function); - } - - if (!n) { -@@ -3857,7 +3857,7 @@ public: - if (shadow) { - if (builtin) { - String *rname = SwigType_namestr(real_classname); -- Printf(builtin_methods, " { \"__disown__\", (PyCFunction) Swig::Director::swig_pyobj_disown< %s >, METH_NOARGS, \"\" },\n", rname); -+ Printf(builtin_methods, " { \"__disown__\", Swig::Director::swig_pyobj_disown< %s >, METH_NOARGS, \"\" },\n", rname); - Delete(rname); - } else { - String *symname = Getattr(n, "sym:name"); -@@ -4694,13 +4694,13 @@ public: - int argcount = Getattr(n, "python:argcount") ? atoi(Char(Getattr(n, "python:argcount"))) : 2; - String *ds = have_docstring(n) ? cdocstring(n, AUTODOC_FUNC) : NewString(""); - if (check_kwargs(n)) { -- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, METH_VARARGS|METH_KEYWORDS, (char *) \"%s\" },\n", symname, wname, ds); -+ Printf(builtin_methods, " { \"%s\", (PyCFunction)%s, METH_VARARGS|METH_KEYWORDS, \"%s\" },\n", symname, wname, ds); - } else if (argcount == 0) { -- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, METH_NOARGS, (char *) \"%s\" },\n", symname, wname, ds); -+ Printf(builtin_methods, " { \"%s\", %s, METH_NOARGS, \"%s\" },\n", symname, wname, ds); - } else if (argcount == 1) { -- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, METH_O, (char *) \"%s\" },\n", symname, wname, ds); -+ Printf(builtin_methods, " { \"%s\", %s, METH_O, \"%s\" },\n", symname, wname, ds); - } else { -- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, METH_VARARGS, (char *) \"%s\" },\n", symname, wname, ds); -+ Printf(builtin_methods, " { \"%s\", %s, METH_VARARGS, \"%s\" },\n", symname, wname, ds); - } - Delete(fullname); - Delete(wname); -@@ -4801,10 +4801,10 @@ public: - Append(pyflags, "METH_VARARGS"); - if (have_docstring(n)) { - String *ds = cdocstring(n, AUTODOC_STATICFUNC); -- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, %s, (char *) \"%s\" },\n", symname, wname, pyflags, ds); -+ Printf(builtin_methods, " { \"%s\", (PyCFunction)%s, %s, \"%s\" },\n", symname, wname, pyflags, ds); - Delete(ds); - } else { -- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, %s, \"\" },\n", symname, wname, pyflags); -+ Printf(builtin_methods, " { \"%s\", (PyCFunction)%s, %s, \"\" },\n", symname, wname, pyflags); - } - Delete(fullname); - Delete(wname); --- -2.7.4 - diff --git a/poky/meta/recipes-devtools/swig/swig/determinism.patch b/poky/meta/recipes-devtools/swig/swig/determinism.patch index 8ffb4bce8e..84c399182a 100644 --- a/poky/meta/recipes-devtools/swig/swig/determinism.patch +++ b/poky/meta/recipes-devtools/swig/swig/determinism.patch @@ -5,11 +5,9 @@ Upstream-Status: Inappropriate [OE reproducibiity fix upstream unlikely to take] RP 2021/3/1 -Index: swig-3.0.12/Source/Modules/main.cxx -=================================================================== ---- swig-3.0.12.orig/Source/Modules/main.cxx -+++ swig-3.0.12/Source/Modules/main.cxx -@@ -636,7 +636,6 @@ void SWIG_getoptions(int argc, char *arg +--- a/Source/Modules/main.cxx ++++ b/Source/Modules/main.cxx +@@ -642,7 +642,6 @@ static void getoptions(int argc, char *a } } else if (strcmp(argv[i], "-version") == 0) { fprintf(stdout, "\nSWIG Version %s\n", Swig_package_version()); diff --git a/poky/meta/recipes-devtools/swig/swig/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch b/poky/meta/recipes-devtools/swig/swig/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch deleted file mode 100644 index 10e4afd1ba..0000000000 --- a/poky/meta/recipes-devtools/swig/swig/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 9825fcbab5c4ddd867432f9922bebfbec7b78af0 Mon Sep 17 00:00:00 2001 -From: Mark Dufour <m.dufour@kopano.com> -Date: Tue, 14 Feb 2017 10:34:37 +0100 -Subject: [PATCH] [Coverity] fix issue reported for SWIG_Python_FixMethods - -Fix Coverity issue reported for SWIG_Python_FixMethods: - -"buffer_size: Calling strncpy with a source string whose length -(10 chars) is greater than or equal to the size argument (10) -will fail to null-terminate buff." - -The issue is only reported for the "swig_ptr: " line, but for -consistency we replace both occurrences of strncpy with memcpy. ---- -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Backport [https://github.com/swig/swig/pull/898] - - Lib/python/pyinit.swg | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -Index: swig-3.0.12/Lib/python/pyinit.swg -=================================================================== ---- swig-3.0.12.orig/Lib/python/pyinit.swg -+++ swig-3.0.12/Lib/python/pyinit.swg -@@ -306,9 +306,9 @@ SWIG_Python_FixMethods(PyMethodDef *meth - char *ndoc = (char*)malloc(ldoc + lptr + 10); - if (ndoc) { - char *buff = ndoc; -- strncpy(buff, methods[i].ml_doc, ldoc); -+ memcpy(buff, methods[i].ml_doc, ldoc); - buff += ldoc; -- strncpy(buff, "swig_ptr: ", 10); -+ memcpy(buff, "swig_ptr: ", 10); - buff += 10; - SWIG_PackVoidPtr(buff, ptr, ty->name, lptr); - methods[i].ml_doc = ndoc; diff --git a/poky/meta/recipes-devtools/swig/swig_3.0.12.bb b/poky/meta/recipes-devtools/swig/swig_3.0.12.bb deleted file mode 100644 index 090aaa8112..0000000000 --- a/poky/meta/recipes-devtools/swig/swig_3.0.12.bb +++ /dev/null @@ -1,13 +0,0 @@ -require ${BPN}.inc - -SRC_URI += "file://0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch \ - file://0001-configure-use-pkg-config-for-pcre-detection.patch \ - file://0001-Add-Node-7.x-aka-V8-5.2-support.patch \ - file://swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch \ - file://Python-Fix-new-GCC8-warnings-in-generated-code.patch \ - file://0001-Fix-generated-code-for-constant-expressions-containi.patch \ - file://determinism.patch \ - " -SRC_URI[md5sum] = "82133dfa7bba75ff9ad98a7046be687c" -SRC_URI[sha256sum] = "7cf9f447ae7ed1c51722efc45e7f14418d15d7a1e143ac9f09a668999f4fc94d" - diff --git a/poky/meta/recipes-devtools/swig/swig_4.0.2.bb b/poky/meta/recipes-devtools/swig/swig_4.0.2.bb new file mode 100644 index 0000000000..718ad89a5d --- /dev/null +++ b/poky/meta/recipes-devtools/swig/swig_4.0.2.bb @@ -0,0 +1,7 @@ +require ${BPN}.inc + +SRC_URI += "file://0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch \ + file://0001-configure-use-pkg-config-for-pcre-detection.patch \ + file://determinism.patch \ + " +SRC_URI[sha256sum] = "d53be9730d8d58a16bf0cbd1f8ac0c0c3e1090573168bfa151b01eb47fa906fc" diff --git a/poky/meta/recipes-devtools/unfs3/unfs3_git.bb b/poky/meta/recipes-devtools/unfs3/unfs3_git.bb index a21fb58397..f9bae720cc 100644 --- a/poky/meta/recipes-devtools/unfs3/unfs3_git.bb +++ b/poky/meta/recipes-devtools/unfs3/unfs3_git.bb @@ -37,7 +37,7 @@ BBCLASSEXTEND = "native nativesdk" inherit autotools EXTRA_OECONF_append_class-native = " --sbindir=${bindir}" CFLAGS_append = " -I${STAGING_INCDIR}/tirpc" -LDFLAGS_append = " -ltirpc" +EXTRA_OECONF_append = " LIBS=-ltirpc" # Turn off these header detects else the inode search # will walk entire file systems and this is a real problem diff --git a/poky/meta/recipes-devtools/vala/vala_0.50.4.bb b/poky/meta/recipes-devtools/vala/vala_0.52.3.bb index 4381635517..133dc9efad 100644 --- a/poky/meta/recipes-devtools/vala/vala_0.50.4.bb +++ b/poky/meta/recipes-devtools/vala/vala_0.52.3.bb @@ -2,4 +2,4 @@ require ${BPN}.inc SRC_URI += " file://0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch" -SRC_URI[sha256sum] = "58fc31fa8bf492035b11d1a7d514801710afc65bd458b24c0f8d00280a92a38c" +SRC_URI[sha256sum] = "037ea1a92bf0f1ab04a71b52a01d50aca1945ad1017b6189d9614f84f5c9b2d9" diff --git a/poky/meta/recipes-devtools/valgrind/valgrind_3.17.0.bb b/poky/meta/recipes-devtools/valgrind/valgrind_3.17.0.bb index ebbd83dd3f..d0c60d0a3d 100644 --- a/poky/meta/recipes-devtools/valgrind/valgrind_3.17.0.bb +++ b/poky/meta/recipes-devtools/valgrind/valgrind_3.17.0.bb @@ -130,7 +130,7 @@ RDEPENDS_${PN} += "perl" # redirect functions like strlen. RRECOMMENDS_${PN} += "${TCLIBC}-dbg" -RDEPENDS_${PN}-ptest += " bash coreutils file \ +RDEPENDS_${PN}-ptest += " bash coreutils curl file \ gdb libgomp \ perl \ perl-module-file-basename perl-module-file-glob perl-module-getopt-long \ |