Vladimir Serbinenko
587d1e78c9
mkimage: Pass layout to mkimage_generate_elfXX rather than some fields.
...
This allows easier extension of this function without having too long of
arguments list.
2020-09-21 11:32:45 -04:00
H.J. Lu
1c4dc293df
x86-64: Treat R_X86_64_PLT32 as R_X86_64_PC32
...
Starting from binutils commit bd7ab16b4537788ad53521c45469a1bdae84ad4a:
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=bd7ab16b4537788ad53521c45469a1bdae84ad4a
x86-64 assembler generates R_X86_64_PLT32, instead of R_X86_64_PC32, for
32-bit PC-relative branches. Grub2 should treat R_X86_64_PLT32 as
R_X86_64_PC32.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
(cherry picked from commit 842c390469
)
2019-10-24 16:59:37 +02:00
Andrei Borzenkov
4bd4a88725
i386, x86_64, ppc: fix switch fallthrough cases with GCC7
...
In util/getroot and efidisk slightly modify exitsing comment to mostly
retain it but still make GCC7 compliant with respect to fall through
annotation.
In grub-core/lib/xzembed/xz_dec_lzma2.c it adds same comments as
upstream.
In grub-core/tests/setjmp_tets.c declare functions as "noreturn" to
suppress GCC7 warning.
In grub-core/gnulib/regexec.c use new __attribute__, because existing
annotation is not recognized by GCC7 parser (which requires that comment
immediately precedes case statement).
Otherwise add FALLTHROUGH comment.
Closes: 50598
2017-04-04 19:23:55 +03:00
Vladimir Serbinenko
42e24b6006
Fix thumb compilation with clang.
...
According to EABI only STT_FUNC has convention of lowest bit indicating
execution mode. R_THM_{JUMP,CALL}* relocations are assumed to be pointing
to thumb mode unless they use STT_FUNC.
2017-02-02 00:59:49 +01:00
Vladimir Serbinenko
34fe0b5901
arm64: Add support for GOT and PCREL32 relocations.
2017-02-01 21:46:19 +01:00
Vladimir Serbinenko
43b444e593
arm/arm64: Fix improper use of start address.
...
It was used instead of loading address of current section or of entire buffer.
2017-02-01 20:12:07 +01:00
Vladimir Serbinenko
a134ef1ab9
ia64: Add support for R_IA64_GPREL64I.
...
Recent GCC generates those relocations, so we need to support them.
2017-01-31 12:39:01 +01:00
Vladimir Serbinenko
86ef66d977
arm-uboot: Make self-relocatable to allow loading at any address
2016-02-27 13:40:52 +01:00
Vladimir Serbinenko
5bcb7d394c
Allow _start == 0 with relocatable images
2016-02-27 13:35:36 +01:00
Vladimir Serbinenko
df21fff504
Provide __bss_start and _end symbols in grub-mkimage.
...
For this ensure that all bss sections are merged.
We need this to correctly prelink non-PE relocatable images.
2016-02-27 13:35:36 +01:00
Vladimir Serbinenko
73a9c742fe
Encapsulate image layout into a separate structure.
...
Currently we pass around a lot of pointer. Instead put all relevant data
into one structure.
2016-02-27 13:35:36 +01:00
Vladimir Serbinenko
dd3969e7ec
mkimagexx: Split PE and generic part for relocations.
...
As a preparation for U-Boot relocations, split emitting PE-relocations
from parsing source ELF-relocations.
2016-02-27 13:35:36 +01:00
Vladimir Serbinenko
36212460d3
mkimage.c: Split into separate files.
...
util/grub-mkimagexx.c is included in a special way into mkimage.c.
Interoperation between defines makes this very tricky. Instead
just have a clean interface and compile util/grub-mkimage*.c separately
from mkimage.c
2016-02-27 13:35:36 +01:00
Vladimir Serbinenko
605eecc985
arm64: Add support for relocations needed for linaro gcc
2016-01-22 19:09:37 +01:00
Andrei Borzenkov
670c43af27
mkimage: fix unintended sign extension
...
Found by: Coverity scan.
CID: 73691, 73717
2016-01-09 21:05:44 +03:00
Andrei Borzenkov
1018e91dce
mkimage: zero fill alignment space
...
This did not cause real problem but is good for reproducible builds. I hit
it with recent bootinfoscript that displays embedded config; I was puzzled
by random garbage at the end.
Prezero memory buffer used to assemble core.img. This makes individual
memset redundant. Also ensure buffer is filled with zeroes in several other
places.
Also remove redundant zeroing code where we fill in the whole memory block
anyway.
2015-11-06 21:33:28 +03:00
Andrei Borzenkov
7aaed66455
grub-mkimage: fix potential NULL pointer dereference
...
Move fatal check whether symtab_section is NULL before first reference.
Found by: Coverity scan.
2015-01-30 22:26:05 +03:00
David Prévot
496a6b3024
Correct some translatable strings.
2013-12-21 03:03:31 +01:00
Vladimir Serbinenko
57a691b7e7
Decrease number of strings to translate.
2013-12-18 07:26:13 +01:00
Vladimir Serbinenko
f4dab3d1ac
Use grub_xasprintf to format translated error messages containing
...
64-bit quantity.
2013-12-17 16:41:09 +01:00
Vladimir Serbinenko
d6c2782a90
Unify message for unsupported relocation.
2013-12-17 16:17:46 +01:00
Vladimir Serbinenko
50d2e9596f
Mark miscompile error for translation.
2013-12-17 16:05:39 +01:00
Vladimir Serbinenko
18e76955be
Use %I64 and not %ll when using OS printf if compiling for windows.
2013-12-17 16:04:47 +01:00
Vladimir Serbinenko
f4171ebd34
Handle X86_64_PC64 relocation.
...
Those are generated by some cygwin compilers.
2013-12-16 14:24:19 +01:00
Vladimir Serbinenko
e7c418c58f
* util/grub-mkimagexx.c (relocate_addresses): Display offset rather
...
than almost useless pointer.
2013-12-15 14:18:30 +01:00
Vladimir Serbinenko
8c534b85f1
Revamp relocation handling.
...
Move more code to common dl.c. Add missing veneers for arm and arm64.
Decreases kernel size by 70 bytes on i386-pc (40-50 compressed)
2013-12-06 09:18:55 +01:00
Vladimir Serbinenko
a846dd4b3a
* util/grub-mkimagexx.c: Fix reloc section generation for ia64.
2013-12-05 23:07:10 +01:00
Vladimir Serbinenko
e5ed2f6947
Handle unaligned .bss on sparc64.
...
Current code improperly assumes that both __bss_start and _end are
aligned to 8-bytes. Eliminating this assumption and explicitly align
modules.
2013-12-05 06:35:19 +01:00
Vladimir Serbinenko
d6c92cdc34
Merge branch 'master' into leiflindholm/arm64
...
Conflicts:
include/grub/util/install.h
2013-11-25 13:02:27 +01:00
Vladimir Serbinenko
4906052019
Unify GOT/trampoline handling between PPC, MIPS and IA64 as they
...
do essentially the same thing, do it in similar way.
2013-11-21 21:54:33 +01:00
Leif Lindholm
15a463d742
ARM 64 port by Leif Lindholm
2013-11-16 20:52:55 +01:00
Vladimir Serbinenko
881c6a1049
* util/grub-mkimagexx.c (generate_elf): Fix module address on coreboot.
2013-11-10 19:34:19 +01:00
Vladimir Serbinenko
9612ebc00e
Add new ports: i386-xen and x86_64-xen. This allows running GRUB in
...
XEN PV environment and load kernels.
2013-11-09 21:29:11 +01:00
Vladimir Serbinenko
7cb24eb5ff
* util/grub-mkimagexx.c (relocate_symbols): Remove unneeded brackets.
2013-11-07 01:04:06 +01:00
Vladimir Serbinenko
a0c9d5c6d9
* util/grub-mkimagexx.c (locate_sections): Reject mislinked images.
2013-11-02 19:16:36 +01:00
Vladimir 'phcoder' Serbinenko
663f6eb195
* util/grub-mkimagexx.c (make_reloc_section): Fix memory leak.
...
(load_image): Likewise.
2013-10-19 02:39:06 +02:00
Vladimir 'phcoder' Serbinenko
ec16e02639
* util/grub-mkimage.c: Move backend part to ...
...
* util/mkimage.c: ... here.
2013-10-15 19:14:55 +02:00
Vladimir 'phcoder' Serbinenko
f7676b7016
* util/grub-mkimage.c (generate_image): Use size_t instead of
...
grub_size_t.
* util/grub-mkimagexx.c (locate_sections): Likewise.
(load_image): Likewise.
2013-10-09 05:36:00 +02:00
Vladimir 'phcoder' Serbinenko
f163045985
* util/grub-fstest.c: Fix several printf formats.
...
* util/grub-mkimage.c: Likewise.
* util/grub-mkimagexx.c: Likewise.
* util/grub-script-check.c: Likewise.
2013-08-23 09:01:11 +02:00
Leif Lindholm
854f383c28
Move common function to dl_helper.c
2013-05-11 10:42:11 +02:00
Vladimir 'phcoder' Serbinenko
8e71d87482
merge mainline into arm
2013-05-11 10:24:24 +02:00
Vladimir 'phcoder' Serbinenko
28af3d867c
Relocations cleanup
2013-04-12 16:53:58 +02:00
Vladimir 'phcoder' Serbinenko
d5e2a158e1
Fix ia64-efi image generation on big-endian machines. Deduplicate
...
some code while on it.
Reported by: Leif Lindholm.
2013-04-09 19:19:19 +02:00
Leif Lindholm
389b31cd71
Initial import of Leif's work
2013-04-07 02:41:07 +02:00
Vladimir 'phcoder' Serbinenko
9d742bd431
* util/grub-mkimagexx.c (locate_sections): Support non-standard
...
ELF section gap.
(load_image): Likewise.
2012-02-29 18:57:43 +01:00
Vladimir 'phcoder' Serbinenko
c36e5cd162
Remove any awareness of *.c util files about target.
...
* Makefile.util.def (grub-setup): Split to ...
(grub-bios-setup): ... and this.
(grub-sparc64-setup): ... and this.
* configure.ac: Don't add machine_CPPFLAGS into HOST_CPPFLAGS.
* docs/man/grub-setup.h2m: Split into ...
* docs/man/grub-sparc64-setup.h2m: ... this.
* docs/man/grub-bios-setup.h2m: ... and this.
* include/grub/dl.h (grub_dl) [GRUB_UTIL]: Remove struct.
* include/grub/elf.h (Elf_*) [GRUB_UTIL]: Remove types.
(GRUB_TARGET_WORDSIZE) [GRUB_UTIL]: Remove.
(grub_target_addr_t): Remove.
(grub_target_size_t): Remove.
(grub_target_ssize_t): Remove.
* util/grub-install.in: Use new grub-*-setup.
* util/grub-mkimagexx.c (Elf_Word): New define.
(Elf_Half): Likewise.
(Elf_Section): Likewise.
(ELF_ST_TYPE): Likewise.
* util/grub-setup.c: Switch from GRUB_MACHINE_SPARC64 to
GRUB_SETUP_SPARC64 and from GRUB_MACHINE_PCBIOS to GRUB_SETUP_BIOS.
2012-02-27 14:24:22 +01:00
Vladimir 'phcoder' Serbinenko
d61386e21d
Improve string. Gettextize.
2012-02-12 15:25:25 +01:00
Vladimir 'phcoder' Serbinenko
0b6225bd27
* util/grub-mkimage.c (generate_image): Explicitly init decompress_size.
...
* util/grub-mkimagexx.c (MASK3): New define.
(add_value_to_slot_20b): Use MASK3.
(add_value_to_slot_21): Likewise.
(relocate_addresses): Fix format specification.
(load_image): Explicitly init symtab_section.
2012-02-11 11:50:10 +01:00
Vladimir 'phcoder' Serbinenko
495fc8c181
* util/grub-mkimage.c (compress_kernel_lzma): Respect format security.
...
(generate_image): Make prefix a const char *.
Fix format specifications. Respect format security.
Avoid void * arithmetics.
Avoid shadowing.
(argp_parser): Remove unused variable. Respect format security.
* util/grub-mkimagexx.c (relocate_symbols): Avoid shadowing.
(count_funcs) [!MKIMAGE_ELF64]: #if-out.
(count_funcs): Remove unused variable.
(relocate_addresses): Fix format specification.
Disable x86-64 with elf32. Remove unused variables.
(add_fixup_entry): Avoid shadowing.
(make_reloc_section): Fix format specification.
Use assert.
(locate_sections): Fix format specifications.
(load_image): Avoid shadowing.
2012-02-10 13:56:18 +01:00
Vladimir 'phcoder' Serbinenko
9c4b5c13e6
Improve gettext support. Stylistic fixes and error handling fixes while
...
on it.
2012-02-08 19:26:01 +01:00