mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Christian Eggers <ceggers@arri.de>
To: barebox@lists.infradead.org
Cc: Christian Eggers <ceggers@arri.de>, ceggers@gmx.de
Subject: [PATCH] lds: Fix alignment of initcall table
Date: Fri, 17 Jan 2020 10:50:13 +0100	[thread overview]
Message-ID: <20200117095013.31379-1-ceggers@arri.de> (raw)

[-- Attachment #1: Type: text/plain, Size: 5880 bytes --]

Depending on the preceding *(.rodata*) sections, the contents of the
RO_DATA_SECTION macro may be unaligned.

In my case, the initcall table was unaligned, because the preceding
.rodata ended with the defaultenv when CONFIG_KALLSYMS was set to N.

                0x00000000000b0a00      0x1c2 arch/arm/lib32/built-in.o
 .rodata.unwind_get_byte.str1.1
                0x00000000000b0bc2       0x1e arch/arm/lib32/built-in.o
 .rodata.default_environment
                0x00000000000b0be0       0x1d defaultenv/built-in.o
 .rodata.defaultenv_add_base.part.0.str1.1
                0x00000000000b0bfd       0x35 defaultenv/built-in.o
 .rodata.defaultenv_load.str1.1
                0x00000000000b0c32       0x2b defaultenv/built-in.o
                                         0x36 (size before relaxing)
                0x00000000000b0c5d       <--- oops
                 __barebox_initcalls_start = .
 *(.initcall.0)

Tested on i.MX6 (ARM v7).

Fixes: c5d38e9201 ("lds: Add and use RO_DATA_SECTION macro")
Signed-off-by: Christian Eggers <ceggers@arri.de>
---
 arch/arm/lib32/barebox.lds.S           | 1 +
 arch/arm/lib64/barebox.lds.S           | 1 +
 arch/mips/lib/barebox.lds.S            | 1 +
 arch/nios2/cpu/barebox.lds.S           | 1 +
 arch/openrisc/cpu/barebox.lds.S        | 1 +
 arch/ppc/boards/pcm030/barebox.lds.S   | 1 +
 arch/riscv/lib/barebox.lds.S           | 1 +
 arch/x86/mach-efi/elf_ia32_efi.lds.S   | 1 +
 arch/x86/mach-efi/elf_x86_64_efi.lds.S | 1 +
 9 files changed, 9 insertions(+)

diff --git a/arch/arm/lib32/barebox.lds.S b/arch/arm/lib32/barebox.lds.S
index c479e02e9..e08833d22 100644
--- a/arch/arm/lib32/barebox.lds.S
+++ b/arch/arm/lib32/barebox.lds.S
@@ -57,6 +57,7 @@ SECTIONS
        . = ALIGN(4);
        .rodata : {
                *(.rodata*)
+               . = ALIGN(4);
                RO_DATA_SECTION
        }

diff --git a/arch/arm/lib64/barebox.lds.S b/arch/arm/lib64/barebox.lds.S
index cf6ef1889..f361c7c55 100644
--- a/arch/arm/lib64/barebox.lds.S
+++ b/arch/arm/lib64/barebox.lds.S
@@ -55,6 +55,7 @@ SECTIONS
        . = ALIGN(4);
        .rodata : {
                *(.rodata*)
+               . = ALIGN(4);
                RO_DATA_SECTION
        }

diff --git a/arch/mips/lib/barebox.lds.S b/arch/mips/lib/barebox.lds.S
index e96c3bf6e..331fb0e83 100644
--- a/arch/mips/lib/barebox.lds.S
+++ b/arch/mips/lib/barebox.lds.S
@@ -32,6 +32,7 @@ SECTIONS
        . = ALIGN(4);
        .rodata : {
                *(.rodata*)
+               . = ALIGN(4);
                RO_DATA_SECTION
        }

diff --git a/arch/nios2/cpu/barebox.lds.S b/arch/nios2/cpu/barebox.lds.S
index 8d82aa59e..c7a6626d2 100644
--- a/arch/nios2/cpu/barebox.lds.S
+++ b/arch/nios2/cpu/barebox.lds.S
@@ -51,6 +51,7 @@ SECTIONS

        .rodata : {
                *(.rodata*)
+               . = ALIGN(4);
                RO_DATA_SECTION
        }

diff --git a/arch/openrisc/cpu/barebox.lds.S b/arch/openrisc/cpu/barebox.lds.S
index adb0c22f8..da48c35e5 100644
--- a/arch/openrisc/cpu/barebox.lds.S
+++ b/arch/openrisc/cpu/barebox.lds.S
@@ -49,6 +49,7 @@ SECTIONS
                *(.rodata);
                *(.rodata.*)
                *(.bbenv.rodata.*)
+               . = ALIGN(4);
                RO_DATA_SECTION
        } > ram

diff --git a/arch/ppc/boards/pcm030/barebox.lds.S b/arch/ppc/boards/pcm030/barebox.lds.S
index 6c91ed625..051a94058 100644
--- a/arch/ppc/boards/pcm030/barebox.lds.S
+++ b/arch/ppc/boards/pcm030/barebox.lds.S
@@ -38,6 +38,7 @@ SECTIONS
     *(.rodata*)
     *(.rodata1*)
     *(.rodata.str1.4)
+    . = ALIGN(16);
     RO_DATA_SECTION
   }

diff --git a/arch/riscv/lib/barebox.lds.S b/arch/riscv/lib/barebox.lds.S
index 5149f8ce2..6e6641043 100644
--- a/arch/riscv/lib/barebox.lds.S
+++ b/arch/riscv/lib/barebox.lds.S
@@ -32,6 +32,7 @@ SECTIONS
        . = ALIGN(8);
        .rodata : {
                *(.rodata*)
+               . = ALIGN(8);
                RO_DATA_SECTION
        }

diff --git a/arch/x86/mach-efi/elf_ia32_efi.lds.S b/arch/x86/mach-efi/elf_ia32_efi.lds.S
index 18ddf1780..2232b8d86 100644
--- a/arch/x86/mach-efi/elf_ia32_efi.lds.S
+++ b/arch/x86/mach-efi/elf_ia32_efi.lds.S
@@ -35,6 +35,7 @@ SECTIONS

        .data : {
                *(.rodata*)
+               . = ALIGN(4096);
                RO_DATA_SECTION
                *(.data)
                *(.data1)
diff --git a/arch/x86/mach-efi/elf_x86_64_efi.lds.S b/arch/x86/mach-efi/elf_x86_64_efi.lds.S
index 40a942503..0d42e6ddd 100644
--- a/arch/x86/mach-efi/elf_x86_64_efi.lds.S
+++ b/arch/x86/mach-efi/elf_x86_64_efi.lds.S
@@ -38,6 +38,7 @@ SECTIONS

        .data : {
                *(.rodata*)
+               . = ALIGN(4096);
                RO_DATA_SECTION
                *(.got.plt)
                *(.got)
--
2.16.4

________________________________
 [http://assets.arri.com/media/sign/2019-12-13a-ARRI-E-mail-Signatur-Parkstadt.jpg] <https://www.google.com/maps/place/Herbert-Bayer-Stra%C3%9Fe+10,+80807+M%C3%BCnchen/data=!4m2!3m1!1s0x479e74379489f045:0x4bbf0c7a9e893d66?sa=X&ved=2ahUKEwjjvdSlh8TmAhWIp4sKHe3vDlQQ8gEwAHoECAsQAQ>

Get all the latest information from www.arri.com<https://www.arri.com/>, Facebook<https://www.facebook.com/TeamARRI>, Twitter<https://twitter.com/ARRIChannel>, Instagram<https://instagram.com/arri> and YouTube<https://www.youtube.com/user/ARRIChannel>.

Arnold & Richter Cine Technik GmbH & Co. Betriebs KG
Sitz: München - Registergericht: Amtsgericht München - Handelsregisternummer: HRA 57918
Persönlich haftender Gesellschafter: Arnold & Richter Cine Technik GmbH
Sitz: München - Registergericht: Amtsgericht München - Handelsregisternummer: HRB 54477
Geschäftsführer: Dr. Michael Neuhäuser; Stephan Schenk; Walter Trauninger; Markus Zeiler


[-- Attachment #2: Type: text/plain, Size: 149 bytes --]

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

             reply	other threads:[~2020-01-17  9:51 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-17  9:50 Christian Eggers [this message]
2020-01-17 10:26 ` Sam Ravnborg
2020-01-17 11:12   ` Christian Eggers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200117095013.31379-1-ceggers@arri.de \
    --to=ceggers@arri.de \
    --cc=barebox@lists.infradead.org \
    --cc=ceggers@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox