Message ID | 20220922130452.233323-2-chenzhongjin@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: Mark constants in .S files as data | expand |
On Thu, 22 Sept 2022 at 15:08, Chen Zhongjin <chenzhongjin@huawei.com> wrote: > > This file only contains a set of constants forming the efi header. > > Make the constants part of data symbols by wrapping them with > SYM_DATA. > > Signed-off-by: Julien Thierry <jthierry@redhat.com> > Signed-off-by: Chen Zhongjin <chenzhongjin@huawei.com> > Reviewed-by: Mark Brown <broonie@kernel.org> Why is this necessary? These are not emitted into a .text section, and are not even covered by the kernel's mapping of memory. So the .L prefixed labels are deliberate: it prevents the symbols from polluting the symbol namespace with symbols pointing nowhere. > --- > arch/arm64/kernel/efi-header.S | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/arm64/kernel/efi-header.S b/arch/arm64/kernel/efi-header.S > index 28d8a5dca5f1..3eacd27ab761 100644 > --- a/arch/arm64/kernel/efi-header.S > +++ b/arch/arm64/kernel/efi-header.S > @@ -28,6 +28,7 @@ > .macro __EFI_PE_HEADER > #ifdef CONFIG_EFI > .set .Lpe_header_offset, . - .L_head > +SYM_DATA_START_LOCAL(arm64_efi_header) > .long PE_MAGIC > .short IMAGE_FILE_MACHINE_ARM64 // Machine > .short .Lsection_count // NumberOfSections > @@ -160,6 +161,7 @@ > > .balign SEGMENT_ALIGN > .Lefi_header_end: > +SYM_DATA_END_LABEL(arm64_efi_header, SYM_L_LOCAL, efi_header_end) > #else > .set .Lpe_header_offset, 0x0 > #endif > -- > 2.17.1 >
Hi, On 2022/9/22 21:13, Ard Biesheuvel wrote: > On Thu, 22 Sept 2022 at 15:08, Chen Zhongjin <chenzhongjin@huawei.com> wrote: >> This file only contains a set of constants forming the efi header. >> >> Make the constants part of data symbols by wrapping them with >> SYM_DATA. >> >> Signed-off-by: Julien Thierry <jthierry@redhat.com> >> Signed-off-by: Chen Zhongjin <chenzhongjin@huawei.com> >> Reviewed-by: Mark Brown <broonie@kernel.org> > Why is this necessary? These are not emitted into a .text section, and > are not even covered by the kernel's mapping of memory. So the .L > prefixed labels are deliberate: it prevents the symbols from polluting > the symbol namespace with symbols pointing nowhere. > This is basically because when I'm developing objtool and these constants will disrupts the instruction decoding so I just mark them as x86 did. I tried to sent this patch set is because now the objtool patch set is growing huge so I want to split some independent part. But now I found you are right that this are meaningless. They are not even inside vmlinux. I'll discard them. Sorry for bothering and thanks for your advise and patient! Best, Chen >> --- >> arch/arm64/kernel/efi-header.S | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/arch/arm64/kernel/efi-header.S b/arch/arm64/kernel/efi-header.S >> index 28d8a5dca5f1..3eacd27ab761 100644 >> --- a/arch/arm64/kernel/efi-header.S >> +++ b/arch/arm64/kernel/efi-header.S >> @@ -28,6 +28,7 @@ >> .macro __EFI_PE_HEADER >> #ifdef CONFIG_EFI >> .set .Lpe_header_offset, . - .L_head >> +SYM_DATA_START_LOCAL(arm64_efi_header) >> .long PE_MAGIC >> .short IMAGE_FILE_MACHINE_ARM64 // Machine >> .short .Lsection_count // NumberOfSections >> @@ -160,6 +161,7 @@ >> >> .balign SEGMENT_ALIGN >> .Lefi_header_end: >> +SYM_DATA_END_LABEL(arm64_efi_header, SYM_L_LOCAL, efi_header_end) >> #else >> .set .Lpe_header_offset, 0x0 >> #endif >> -- >> 2.17.1 >>
diff --git a/arch/arm64/kernel/efi-header.S b/arch/arm64/kernel/efi-header.S index 28d8a5dca5f1..3eacd27ab761 100644 --- a/arch/arm64/kernel/efi-header.S +++ b/arch/arm64/kernel/efi-header.S @@ -28,6 +28,7 @@ .macro __EFI_PE_HEADER #ifdef CONFIG_EFI .set .Lpe_header_offset, . - .L_head +SYM_DATA_START_LOCAL(arm64_efi_header) .long PE_MAGIC .short IMAGE_FILE_MACHINE_ARM64 // Machine .short .Lsection_count // NumberOfSections @@ -160,6 +161,7 @@ .balign SEGMENT_ALIGN .Lefi_header_end: +SYM_DATA_END_LABEL(arm64_efi_header, SYM_L_LOCAL, efi_header_end) #else .set .Lpe_header_offset, 0x0 #endif