Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:michael-chang:tmp
grub2
0001-mkimage-Fix-dangling-pointer-may-be-used-e...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-mkimage-Fix-dangling-pointer-may-be-used-error.patch of Package grub2
From a0fcb7f7075901aa12079c39a534837755652d9d Mon Sep 17 00:00:00 2001 From: Michael Chang <mchang@suse.com> Date: Wed, 16 Mar 2022 14:17:32 +0800 Subject: [PATCH 1/3] mkimage: Fix dangling pointer may be used error The warning is real as long as dangling pointer to 'tmp_' may be used if o32 and o64 are both null. However that is not going to happen and can be ignored safely because the PE_OHDR is being used in a context that either o32 or o64 must have been properly initialized. Sadly compiler seems not to always optimize that unused _tmp away so explicit suppression remain needed here. ../util/mkimage.c: In function 'grub_install_generate_image': ../util/mkimage.c:1422:41: error: dangling pointer to 'tmp_' may be used [-Werror=dangling-pointer=] 1422 | PE_OHDR (o32, o64, header_size) = grub_host_to_target32 (header_size); ../util/mkimage.c:857:28: note: 'tmp_' declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ Signed-off-by: Michael Chang <mchang@suse.com> --- util/mkimage.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/util/mkimage.c b/util/mkimage.c index 5a8021a213..659824c140 100644 --- a/util/mkimage.c +++ b/util/mkimage.c @@ -1419,6 +1419,10 @@ grub_install_generate_image (const char *dir, const char *prefix, section = (struct grub_pe32_section_table *)(o64 + 1); } +#if __GNUC__ >= 12 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdangling-pointer" +#endif PE_OHDR (o32, o64, header_size) = grub_host_to_target32 (header_size); PE_OHDR (o32, o64, entry_addr) = grub_host_to_target32 (layout.start_address); PE_OHDR (o32, o64, image_base) = 0; @@ -1438,6 +1442,9 @@ grub_install_generate_image (const char *dir, const char *prefix, /* The sections. */ PE_OHDR (o32, o64, code_base) = grub_host_to_target32 (vma); PE_OHDR (o32, o64, code_size) = grub_host_to_target32 (layout.exec_size); +#if __GNUC__ >= 12 +#pragma GCC diagnostic pop +#endif section = init_pe_section (image_target, section, ".text", &vma, layout.exec_size, image_target->section_align, @@ -1447,10 +1454,17 @@ grub_install_generate_image (const char *dir, const char *prefix, GRUB_PE32_SCN_MEM_READ); scn_size = ALIGN_UP (layout.kernel_size - layout.exec_size, GRUB_PE32_FILE_ALIGNMENT); +#if __GNUC__ >= 12 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdangling-pointer" +#endif /* ALIGN_UP (sbat_size, GRUB_PE32_FILE_ALIGNMENT) is done earlier. */ PE_OHDR (o32, o64, data_size) = grub_host_to_target32 (scn_size + sbat_size + ALIGN_UP (total_module_size, GRUB_PE32_FILE_ALIGNMENT)); +#if __GNUC__ >= 12 +#pragma GCC diagnostic pop +#endif section = init_pe_section (image_target, section, ".data", &vma, scn_size, image_target->section_align, @@ -1481,8 +1495,15 @@ grub_install_generate_image (const char *dir, const char *prefix, } scn_size = layout.reloc_size; +#if __GNUC__ >= 12 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdangling-pointer" +#endif PE_OHDR (o32, o64, base_relocation_table.rva) = grub_host_to_target32 (vma); PE_OHDR (o32, o64, base_relocation_table.size) = grub_host_to_target32 (scn_size); +#if __GNUC__ >= 12 +#pragma GCC diagnostic pop +#endif memcpy (pe_img + raw_data, layout.reloc_section, scn_size); init_pe_section (image_target, section, ".reloc", &vma, scn_size, image_target->section_align, -- 2.34.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor