#157 Dangling pointer errors on grub build

Open
opened 1 year ago by aramshur · 0 comments
aramshur commented 1 year ago

This happens on both osbmk and lbmk.

util/mkimage.c: In function ‘grub_install_generate_image’:
util/mkimage.c:1386:41: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1386 |         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_;                \
      |                            ^~~~
util/mkimage.c:1386:9: note: in expansion of macro ‘PE_OHDR’
 1386 |         PE_OHDR (o32, o64, header_size) = grub_host_to_target32 (header_size);
      |         ^~~~~~~
util/mkimage.c:1387:40: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1387 |         PE_OHDR (o32, o64, entry_addr) = grub_host_to_target32 (layout.start_address);
util/mkimage.c:857:28: note: ‘tmp_’ declared here
  857 |   __typeof__((o64)->field) tmp_;                \
      |                            ^~~~
util/mkimage.c:1387:9: note: in expansion of macro ‘PE_OHDR’
 1387 |         PE_OHDR (o32, o64, entry_addr) = grub_host_to_target32 (layout.start_address);
      |         ^~~~~~~
util/mkimage.c:1388:40: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1388 |         PE_OHDR (o32, o64, image_base) = 0;
      |                                        ^
util/mkimage.c:857:28: note: ‘tmp_’ declared here
  857 |   __typeof__((o64)->field) tmp_;                \
      |                            ^~~~
util/mkimage.c:1388:9: note: in expansion of macro ‘PE_OHDR’
 1388 |         PE_OHDR (o32, o64, image_base) = 0;
      |         ^~~~~~~
util/mkimage.c:1389:40: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1389 |         PE_OHDR (o32, o64, image_size) = grub_host_to_target32 (pe_size);
util/mkimage.c:857:28: note: ‘tmp_’ declared here
  857 |   __typeof__((o64)->field) tmp_;                \
      |                            ^~~~
util/mkimage.c:1389:9: note: in expansion of macro ‘PE_OHDR’
 1389 |         PE_OHDR (o32, o64, image_size) = grub_host_to_target32 (pe_size);
      |         ^~~~~~~
util/mkimage.c:1390:47: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1390 |         PE_OHDR (o32, o64, section_alignment) = grub_host_to_target32 (image_target->section_align);
util/mkimage.c:857:28: note: ‘tmp_’ declared here
  857 |   __typeof__((o64)->field) tmp_;                \
      |                            ^~~~
util/mkimage.c:1390:9: note: in expansion of macro ‘PE_OHDR’
 1390 |         PE_OHDR (o32, o64, section_alignment) = grub_host_to_target32 (image_target->section_align);
      |         ^~~~~~~
util/mkimage.c:1391:44: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1391 |         PE_OHDR (o32, o64, file_alignment) = grub_host_to_target32 (GRUB_PE32_FILE_ALIGNMENT);
util/mkimage.c:857:28: note: ‘tmp_’ declared here
  857 |   __typeof__((o64)->field) tmp_;                \
      |                            ^~~~
util/mkimage.c:1391:9: note: in expansion of macro ‘PE_OHDR’
 1391 |         PE_OHDR (o32, o64, file_alignment) = grub_host_to_target32 (GRUB_PE32_FILE_ALIGNMENT);
      |         ^~~~~~~
util/mkimage.c:1392:39: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1392 |         PE_OHDR (o32, o64, subsystem) = grub_host_to_target16 (GRUB_PE32_SUBSYSTEM_EFI_APPLICATION);
util/mkimage.c:857:28: note: ‘tmp_’ declared here
  857 |   __typeof__((o64)->field) tmp_;                \
      |                            ^~~~
util/mkimage.c:1392:9: note: in expansion of macro ‘PE_OHDR’
 1392 |         PE_OHDR (o32, o64, subsystem) = grub_host_to_target16 (GRUB_PE32_SUBSYSTEM_EFI_APPLICATION);
      |         ^~~~~~~
util/mkimage.c:1395:48: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1395 |         PE_OHDR (o32, o64, stack_reserve_size) = grub_host_to_target32 (0x10000);
util/mkimage.c:857:28: note: ‘tmp_’ declared here
  857 |   __typeof__((o64)->field) tmp_;                \
      |                            ^~~~
util/mkimage.c:1395:9: note: in expansion of macro ‘PE_OHDR’
 1395 |         PE_OHDR (o32, o64, stack_reserve_size) = grub_host_to_target32 (0x10000);
      |         ^~~~~~~
util/mkimage.c:1396:47: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1396 |         PE_OHDR (o32, o64, stack_commit_size) = grub_host_to_target32 (0x10000);
util/mkimage.c:857:28: note: ‘tmp_’ declared here
  857 |   __typeof__((o64)->field) tmp_;                \
      |                            ^~~~
util/mkimage.c:1396:9: note: in expansion of macro ‘PE_OHDR’
 1396 |         PE_OHDR (o32, o64, stack_commit_size) = grub_host_to_target32 (0x10000);
      |         ^~~~~~~
util/mkimage.c:1397:47: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1397 |         PE_OHDR (o32, o64, heap_reserve_size) = grub_host_to_target32 (0x10000);
util/mkimage.c:857:28: note: ‘tmp_’ declared here
  857 |   __typeof__((o64)->field) tmp_;                \
      |                            ^~~~
util/mkimage.c:1397:9: note: in expansion of macro ‘PE_OHDR’
 1397 |         PE_OHDR (o32, o64, heap_reserve_size) = grub_host_to_target32 (0x10000);
      |         ^~~~~~~
util/mkimage.c:1398:46: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1398 |         PE_OHDR (o32, o64, heap_commit_size) = grub_host_to_target32 (0x10000);
util/mkimage.c:857:28: note: ‘tmp_’ declared here
  857 |   __typeof__((o64)->field) tmp_;                \
      |                            ^~~~
util/mkimage.c:1398:9: note: in expansion of macro ‘PE_OHDR’
 1398 |         PE_OHDR (o32, o64, heap_commit_size) = grub_host_to_target32 (0x10000);
      |         ^~~~~~~
util/mkimage.c:1400:50: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1400 |         PE_OHDR (o32, o64, num_data_directories) = grub_host_to_target32 (GRUB_PE32_NUM_DATA_DIRECTORIES);
util/mkimage.c:857:28: note: ‘tmp_’ declared here
  857 |   __typeof__((o64)->field) tmp_;                \
      |                            ^~~~
util/mkimage.c:1400:9: note: in expansion of macro ‘PE_OHDR’
 1400 |         PE_OHDR (o32, o64, num_data_directories) = grub_host_to_target32 (GRUB_PE32_NUM_DATA_DIRECTORIES);
      |         ^~~~~~~
util/mkimage.c:1403:39: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1403 |         PE_OHDR (o32, o64, code_base) = grub_host_to_target32 (vma);
util/mkimage.c:857:28: note: ‘tmp_’ declared here
  857 |   __typeof__((o64)->field) tmp_;                \
      |                            ^~~~
util/mkimage.c:1403:9: note: in expansion of macro ‘PE_OHDR’
 1403 |         PE_OHDR (o32, o64, code_base) = grub_host_to_target32 (vma);
      |         ^~~~~~~
util/mkimage.c:1404:39: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1404 |         PE_OHDR (o32, o64, code_size) = grub_host_to_target32 (layout.exec_size);
util/mkimage.c:857:28: note: ‘tmp_’ declared here
  857 |   __typeof__((o64)->field) tmp_;                \
      |                            ^~~~
util/mkimage.c:1404:9: note: in expansion of macro ‘PE_OHDR’
 1404 |         PE_OHDR (o32, o64, code_size) = grub_host_to_target32 (layout.exec_size);
      |         ^~~~~~~
util/mkimage.c:1415:39: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1415 |         PE_OHDR (o32, o64, data_size) = grub_host_to_target32 (scn_size + sbat_size +
util/mkimage.c:857:28: note: ‘tmp_’ declared here
  857 |   __typeof__((o64)->field) tmp_;                \
      |                            ^~~~
util/mkimage.c:1415:9: note: in expansion of macro ‘PE_OHDR’
 1415 |         PE_OHDR (o32, o64, data_size) = grub_host_to_target32 (scn_size + sbat_size +
      |         ^~~~~~~
util/mkimage.c:1448:55: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1448 |         PE_OHDR (o32, o64, base_relocation_table.rva) = grub_host_to_target32 (vma);
util/mkimage.c:857:28: note: ‘tmp_’ declared here
  857 |   __typeof__((o64)->field) tmp_;                \
      |                            ^~~~
util/mkimage.c:1448:9: note: in expansion of macro ‘PE_OHDR’
 1448 |         PE_OHDR (o32, o64, base_relocation_table.rva) = grub_host_to_target32 (vma);
      |         ^~~~~~~
util/mkimage.c:1449:56: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=]
 1449 |         PE_OHDR (o32, o64, base_relocation_table.size) = grub_host_to_target32 (scn_size);
util/mkimage.c:857:28: note: ‘tmp_’ declared here
  857 |   __typeof__((o64)->field) tmp_;                \
      |                            ^~~~
util/mkimage.c:1449:9: note: in expansion of macro ‘PE_OHDR’
 1449 |         PE_OHDR (o32, o64, base_relocation_table.size) = grub_host_to_target32 (scn_size);
      |         ^~~~~~~
cc1: all warnings being treated as errors
make[2]: *** [Makefile:8904: util/grub_editenv-mkimage.o] Error 1
make[2]: *** Waiting for unfinished jobs....
mv -f util/.deps-util/grub_editenv-grub-mkimage32.Tpo util/.deps-util/grub_editenv-grub-mkimage32.Po
make[2]: Leaving directory '/home/austin/osboot/osbmk/grub'
make[1]: *** [Makefile:11931: all-recursive] Error 1
make[1]: Leaving directory '/home/austin/osboot/osbmk/grub'
make: *** [Makefile:3783: all] Error 2

I'm building on arch linux. gcc version 12.1.0

This happens on both osbmk and lbmk. ``` util/mkimage.c: In function ‘grub_install_generate_image’: util/mkimage.c:1386:41: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1386 | 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_; \ | ^~~~ util/mkimage.c:1386:9: note: in expansion of macro ‘PE_OHDR’ 1386 | PE_OHDR (o32, o64, header_size) = grub_host_to_target32 (header_size); | ^~~~~~~ util/mkimage.c:1387:40: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1387 | PE_OHDR (o32, o64, entry_addr) = grub_host_to_target32 (layout.start_address); util/mkimage.c:857:28: note: ‘tmp_’ declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ util/mkimage.c:1387:9: note: in expansion of macro ‘PE_OHDR’ 1387 | PE_OHDR (o32, o64, entry_addr) = grub_host_to_target32 (layout.start_address); | ^~~~~~~ util/mkimage.c:1388:40: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1388 | PE_OHDR (o32, o64, image_base) = 0; | ^ util/mkimage.c:857:28: note: ‘tmp_’ declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ util/mkimage.c:1388:9: note: in expansion of macro ‘PE_OHDR’ 1388 | PE_OHDR (o32, o64, image_base) = 0; | ^~~~~~~ util/mkimage.c:1389:40: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1389 | PE_OHDR (o32, o64, image_size) = grub_host_to_target32 (pe_size); util/mkimage.c:857:28: note: ‘tmp_’ declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ util/mkimage.c:1389:9: note: in expansion of macro ‘PE_OHDR’ 1389 | PE_OHDR (o32, o64, image_size) = grub_host_to_target32 (pe_size); | ^~~~~~~ util/mkimage.c:1390:47: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1390 | PE_OHDR (o32, o64, section_alignment) = grub_host_to_target32 (image_target->section_align); util/mkimage.c:857:28: note: ‘tmp_’ declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ util/mkimage.c:1390:9: note: in expansion of macro ‘PE_OHDR’ 1390 | PE_OHDR (o32, o64, section_alignment) = grub_host_to_target32 (image_target->section_align); | ^~~~~~~ util/mkimage.c:1391:44: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1391 | PE_OHDR (o32, o64, file_alignment) = grub_host_to_target32 (GRUB_PE32_FILE_ALIGNMENT); util/mkimage.c:857:28: note: ‘tmp_’ declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ util/mkimage.c:1391:9: note: in expansion of macro ‘PE_OHDR’ 1391 | PE_OHDR (o32, o64, file_alignment) = grub_host_to_target32 (GRUB_PE32_FILE_ALIGNMENT); | ^~~~~~~ util/mkimage.c:1392:39: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1392 | PE_OHDR (o32, o64, subsystem) = grub_host_to_target16 (GRUB_PE32_SUBSYSTEM_EFI_APPLICATION); util/mkimage.c:857:28: note: ‘tmp_’ declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ util/mkimage.c:1392:9: note: in expansion of macro ‘PE_OHDR’ 1392 | PE_OHDR (o32, o64, subsystem) = grub_host_to_target16 (GRUB_PE32_SUBSYSTEM_EFI_APPLICATION); | ^~~~~~~ util/mkimage.c:1395:48: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1395 | PE_OHDR (o32, o64, stack_reserve_size) = grub_host_to_target32 (0x10000); util/mkimage.c:857:28: note: ‘tmp_’ declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ util/mkimage.c:1395:9: note: in expansion of macro ‘PE_OHDR’ 1395 | PE_OHDR (o32, o64, stack_reserve_size) = grub_host_to_target32 (0x10000); | ^~~~~~~ util/mkimage.c:1396:47: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1396 | PE_OHDR (o32, o64, stack_commit_size) = grub_host_to_target32 (0x10000); util/mkimage.c:857:28: note: ‘tmp_’ declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ util/mkimage.c:1396:9: note: in expansion of macro ‘PE_OHDR’ 1396 | PE_OHDR (o32, o64, stack_commit_size) = grub_host_to_target32 (0x10000); | ^~~~~~~ util/mkimage.c:1397:47: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1397 | PE_OHDR (o32, o64, heap_reserve_size) = grub_host_to_target32 (0x10000); util/mkimage.c:857:28: note: ‘tmp_’ declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ util/mkimage.c:1397:9: note: in expansion of macro ‘PE_OHDR’ 1397 | PE_OHDR (o32, o64, heap_reserve_size) = grub_host_to_target32 (0x10000); | ^~~~~~~ util/mkimage.c:1398:46: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1398 | PE_OHDR (o32, o64, heap_commit_size) = grub_host_to_target32 (0x10000); util/mkimage.c:857:28: note: ‘tmp_’ declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ util/mkimage.c:1398:9: note: in expansion of macro ‘PE_OHDR’ 1398 | PE_OHDR (o32, o64, heap_commit_size) = grub_host_to_target32 (0x10000); | ^~~~~~~ util/mkimage.c:1400:50: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1400 | PE_OHDR (o32, o64, num_data_directories) = grub_host_to_target32 (GRUB_PE32_NUM_DATA_DIRECTORIES); util/mkimage.c:857:28: note: ‘tmp_’ declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ util/mkimage.c:1400:9: note: in expansion of macro ‘PE_OHDR’ 1400 | PE_OHDR (o32, o64, num_data_directories) = grub_host_to_target32 (GRUB_PE32_NUM_DATA_DIRECTORIES); | ^~~~~~~ util/mkimage.c:1403:39: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1403 | PE_OHDR (o32, o64, code_base) = grub_host_to_target32 (vma); util/mkimage.c:857:28: note: ‘tmp_’ declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ util/mkimage.c:1403:9: note: in expansion of macro ‘PE_OHDR’ 1403 | PE_OHDR (o32, o64, code_base) = grub_host_to_target32 (vma); | ^~~~~~~ util/mkimage.c:1404:39: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1404 | PE_OHDR (o32, o64, code_size) = grub_host_to_target32 (layout.exec_size); util/mkimage.c:857:28: note: ‘tmp_’ declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ util/mkimage.c:1404:9: note: in expansion of macro ‘PE_OHDR’ 1404 | PE_OHDR (o32, o64, code_size) = grub_host_to_target32 (layout.exec_size); | ^~~~~~~ util/mkimage.c:1415:39: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1415 | PE_OHDR (o32, o64, data_size) = grub_host_to_target32 (scn_size + sbat_size + util/mkimage.c:857:28: note: ‘tmp_’ declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ util/mkimage.c:1415:9: note: in expansion of macro ‘PE_OHDR’ 1415 | PE_OHDR (o32, o64, data_size) = grub_host_to_target32 (scn_size + sbat_size + | ^~~~~~~ util/mkimage.c:1448:55: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1448 | PE_OHDR (o32, o64, base_relocation_table.rva) = grub_host_to_target32 (vma); util/mkimage.c:857:28: note: ‘tmp_’ declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ util/mkimage.c:1448:9: note: in expansion of macro ‘PE_OHDR’ 1448 | PE_OHDR (o32, o64, base_relocation_table.rva) = grub_host_to_target32 (vma); | ^~~~~~~ util/mkimage.c:1449:56: error: dangling pointer to ‘tmp_’ may be used [-Werror=dangling-pointer=] 1449 | PE_OHDR (o32, o64, base_relocation_table.size) = grub_host_to_target32 (scn_size); util/mkimage.c:857:28: note: ‘tmp_’ declared here 857 | __typeof__((o64)->field) tmp_; \ | ^~~~ util/mkimage.c:1449:9: note: in expansion of macro ‘PE_OHDR’ 1449 | PE_OHDR (o32, o64, base_relocation_table.size) = grub_host_to_target32 (scn_size); | ^~~~~~~ cc1: all warnings being treated as errors make[2]: *** [Makefile:8904: util/grub_editenv-mkimage.o] Error 1 make[2]: *** Waiting for unfinished jobs.... mv -f util/.deps-util/grub_editenv-grub-mkimage32.Tpo util/.deps-util/grub_editenv-grub-mkimage32.Po make[2]: Leaving directory '/home/austin/osboot/osbmk/grub' make[1]: *** [Makefile:11931: all-recursive] Error 1 make[1]: Leaving directory '/home/austin/osboot/osbmk/grub' make: *** [Makefile:3783: all] Error 2 ``` I'm building on arch linux. gcc version 12.1.0
Sign in to join this conversation.
No Label
No Milestone
No assignee
1 Participants
Loading...
Cancel
Save
There is no content yet.