All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] MIPS: provide a default u-boot-spl.lds
@ 2016-05-26 11:43 Daniel Schwierzeck
  2016-05-26 12:08 ` Marek Vasut
  2016-05-26 13:28 ` [U-Boot] [PATCH v2] " Daniel Schwierzeck
  0 siblings, 2 replies; 9+ messages in thread
From: Daniel Schwierzeck @ 2016-05-26 11:43 UTC (permalink / raw)
  To: u-boot

Provide a default linker script for SPL binaries. Start address
and size of text section and BSS section are configurable. All
sections are arranged in a way that only relevant sections are
kept in the code section for maximum size reduction. All other
sections are kept but moved outside the code section to help
with debugging.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>

---

 arch/mips/cpu/u-boot-spl.lds | 83 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 83 insertions(+)
 create mode 100644 arch/mips/cpu/u-boot-spl.lds

diff --git a/arch/mips/cpu/u-boot-spl.lds b/arch/mips/cpu/u-boot-spl.lds
new file mode 100644
index 0000000..e18074b
--- /dev/null
+++ b/arch/mips/cpu/u-boot-spl.lds
@@ -0,0 +1,83 @@
+/*
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+MEMORY { .spl_mem : ORIGIN = CONFIG_SPL_TEXT_BASE, \
+		LENGTH = CONFIG_SPL_MAX_SIZE }
+MEMORY { .bss_mem : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
+		LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
+
+OUTPUT_ARCH(mips)
+ENTRY(_start)
+SECTIONS
+{
+	. = 0x00000000;
+
+	. = ALIGN(4);
+	.text : {
+		*(.text*)
+	} > .spl_mem
+
+	. = ALIGN(4);
+	.rodata : {
+		*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
+	} > .spl_mem
+
+	. = ALIGN(4);
+	.data : {
+		*(SORT_BY_ALIGNMENT(.data*))
+		*(SORT_BY_ALIGNMENT(.sdata*))
+	} > .spl_mem
+
+	. = ALIGN(4);
+	__image_copy_end = .;
+
+	.bss (NOLOAD) : {
+		__bss_start = .;
+		*(.bss*)
+		*(.sbss*)
+		*(COMMON)
+		. = ALIGN(4);
+		__bss_end = .;
+	} > .bss_mem
+
+	.rel.dyn (NOLOAD) : {
+		*(.rel.dyn)
+	}
+
+	.dynsym : {
+		*(.dynsym)
+	}
+
+	.dynbss : {
+		*(.dynbss)
+	}
+
+	.dynstr : {
+		*(.dynstr)
+	}
+
+	.dynamic : {
+		*(.dynamic)
+	}
+
+	.plt : {
+		*(.plt)
+	}
+
+	.interp : {
+		*(.interp)
+	}
+
+	.gnu : {
+		*(.gnu*)
+	}
+
+	.MIPS.stubs : {
+		*(.MIPS.stubs)
+	}
+
+	.hash : {
+		*(.hash)
+	}
+}
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] MIPS: provide a default u-boot-spl.lds
  2016-05-26 11:43 [U-Boot] [PATCH] MIPS: provide a default u-boot-spl.lds Daniel Schwierzeck
@ 2016-05-26 12:08 ` Marek Vasut
  2016-05-26 12:42   ` Daniel Schwierzeck
  2016-05-26 13:28 ` [U-Boot] [PATCH v2] " Daniel Schwierzeck
  1 sibling, 1 reply; 9+ messages in thread
From: Marek Vasut @ 2016-05-26 12:08 UTC (permalink / raw)
  To: u-boot

On 05/26/2016 01:43 PM, Daniel Schwierzeck wrote:
> Provide a default linker script for SPL binaries. Start address
> and size of text section and BSS section are configurable. All
> sections are arranged in a way that only relevant sections are
> kept in the code section for maximum size reduction. All other
> sections are kept but moved outside the code section to help
> with debugging.
> 
> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>

I'm worried this will blow when you enable DM in SPL, since DM uses
special section(s) to keep the driver linked lists in. You'll probably
need to add something like KEEP(*(SORT(.u_boot_list*))); somewhere in
there.

> ---
> 
>  arch/mips/cpu/u-boot-spl.lds | 83 ++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 83 insertions(+)
>  create mode 100644 arch/mips/cpu/u-boot-spl.lds
> 
> diff --git a/arch/mips/cpu/u-boot-spl.lds b/arch/mips/cpu/u-boot-spl.lds
> new file mode 100644
> index 0000000..e18074b
> --- /dev/null
> +++ b/arch/mips/cpu/u-boot-spl.lds
> @@ -0,0 +1,83 @@
> +/*
> + * SPDX-License-Identifier:	GPL-2.0+
> + */
> +
> +MEMORY { .spl_mem : ORIGIN = CONFIG_SPL_TEXT_BASE, \
> +		LENGTH = CONFIG_SPL_MAX_SIZE }
> +MEMORY { .bss_mem : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
> +		LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
> +
> +OUTPUT_ARCH(mips)
> +ENTRY(_start)
> +SECTIONS
> +{
> +	. = 0x00000000;
> +
> +	. = ALIGN(4);
> +	.text : {
> +		*(.text*)
> +	} > .spl_mem
> +
> +	. = ALIGN(4);
> +	.rodata : {
> +		*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
> +	} > .spl_mem
> +
> +	. = ALIGN(4);
> +	.data : {
> +		*(SORT_BY_ALIGNMENT(.data*))
> +		*(SORT_BY_ALIGNMENT(.sdata*))
> +	} > .spl_mem
> +
> +	. = ALIGN(4);
> +	__image_copy_end = .;
> +
> +	.bss (NOLOAD) : {
> +		__bss_start = .;
> +		*(.bss*)
> +		*(.sbss*)
> +		*(COMMON)
> +		. = ALIGN(4);
> +		__bss_end = .;
> +	} > .bss_mem
> +
> +	.rel.dyn (NOLOAD) : {
> +		*(.rel.dyn)
> +	}
> +
> +	.dynsym : {
> +		*(.dynsym)
> +	}
> +
> +	.dynbss : {
> +		*(.dynbss)
> +	}
> +
> +	.dynstr : {
> +		*(.dynstr)
> +	}
> +
> +	.dynamic : {
> +		*(.dynamic)
> +	}
> +
> +	.plt : {
> +		*(.plt)
> +	}
> +
> +	.interp : {
> +		*(.interp)
> +	}
> +
> +	.gnu : {
> +		*(.gnu*)
> +	}
> +
> +	.MIPS.stubs : {
> +		*(.MIPS.stubs)
> +	}
> +
> +	.hash : {
> +		*(.hash)
> +	}
> +}
> 


-- 
Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] MIPS: provide a default u-boot-spl.lds
  2016-05-26 12:08 ` Marek Vasut
@ 2016-05-26 12:42   ` Daniel Schwierzeck
  2016-05-26 12:47     ` Marek Vasut
  0 siblings, 1 reply; 9+ messages in thread
From: Daniel Schwierzeck @ 2016-05-26 12:42 UTC (permalink / raw)
  To: u-boot



Am 26.05.2016 um 14:08 schrieb Marek Vasut:
> On 05/26/2016 01:43 PM, Daniel Schwierzeck wrote:
>> Provide a default linker script for SPL binaries. Start address
>> and size of text section and BSS section are configurable. All
>> sections are arranged in a way that only relevant sections are
>> kept in the code section for maximum size reduction. All other
>> sections are kept but moved outside the code section to help
>> with debugging.
>>
>> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
> 
> I'm worried this will blow when you enable DM in SPL, since DM uses
> special section(s) to keep the driver linked lists in. You'll probably
> need to add something like KEEP(*(SORT(.u_boot_list*))); somewhere in
> there.
> 

why should this blow? But you are right, u_boot_list is missing.

-- 
- Daniel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160526/57f1edf0/attachment.sig>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] MIPS: provide a default u-boot-spl.lds
  2016-05-26 12:42   ` Daniel Schwierzeck
@ 2016-05-26 12:47     ` Marek Vasut
  0 siblings, 0 replies; 9+ messages in thread
From: Marek Vasut @ 2016-05-26 12:47 UTC (permalink / raw)
  To: u-boot

On 05/26/2016 02:42 PM, Daniel Schwierzeck wrote:
> 
> 
> Am 26.05.2016 um 14:08 schrieb Marek Vasut:
>> On 05/26/2016 01:43 PM, Daniel Schwierzeck wrote:
>>> Provide a default linker script for SPL binaries. Start address
>>> and size of text section and BSS section are configurable. All
>>> sections are arranged in a way that only relevant sections are
>>> kept in the code section for maximum size reduction. All other
>>> sections are kept but moved outside the code section to help
>>> with debugging.
>>>
>>> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
>>
>> I'm worried this will blow when you enable DM in SPL, since DM uses
>> special section(s) to keep the driver linked lists in. You'll probably
>> need to add something like KEEP(*(SORT(.u_boot_list*))); somewhere in
>> there.
>>
> 
> why should this blow?

Because the u-boot driver list will be discarded by linker and that will
lead either to linker complaining about it or scary bugs at runtime.

But you are right, u_boot_list is missing.
> 
:)

-- 
Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH v2] MIPS: provide a default u-boot-spl.lds
  2016-05-26 11:43 [U-Boot] [PATCH] MIPS: provide a default u-boot-spl.lds Daniel Schwierzeck
  2016-05-26 12:08 ` Marek Vasut
@ 2016-05-26 13:28 ` Daniel Schwierzeck
  2016-05-26 15:17   ` Marek Vasut
  2016-05-30  9:48   ` Daniel Schwierzeck
  1 sibling, 2 replies; 9+ messages in thread
From: Daniel Schwierzeck @ 2016-05-26 13:28 UTC (permalink / raw)
  To: u-boot

Provide a default linker script for SPL binaries. Start address
and size of text section and BSS section are configurable. All
sections are arranged in a way that only relevant sections are
kept in the code section for maximum size reduction. All other
sections are kept but moved outside the code section to help
with debugging.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>

---

Changes in v2:
- add missing section .u_boot_list

 arch/mips/config.mk          |  5 ++-
 arch/mips/cpu/u-boot-spl.lds | 90 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 93 insertions(+), 2 deletions(-)
 create mode 100644 arch/mips/cpu/u-boot-spl.lds

diff --git a/arch/mips/config.mk b/arch/mips/config.mk
index 609a998..dcd3460 100644
--- a/arch/mips/config.mk
+++ b/arch/mips/config.mk
@@ -65,7 +65,7 @@ else
 PF_ABICALLS			:= -mabicalls
 PF_PIC				:= -fpic
 PF_PIE				:= -pie
-PF_OBJCOPY			:= -j .got -j .u_boot_list -j .rel.dyn -j .padding
+PF_OBJCOPY			:= -j .got -j .rel.dyn -j .padding
 PF_OBJCOPY			+= -j .dtb.init.rodata
 endif
 
@@ -74,4 +74,5 @@ PLATFORM_CPPFLAGS		+= -msoft-float
 PLATFORM_LDFLAGS		+= -G 0 -static -n -nostdlib
 PLATFORM_RELFLAGS		+= -ffunction-sections -fdata-sections
 LDFLAGS_FINAL			+= --gc-sections $(PF_PIE)
-OBJCOPYFLAGS			+= -j .text -j .rodata -j .data $(PF_OBJCOPY)
+OBJCOPYFLAGS			+= -j .text -j .rodata -j .data -j .u_boot_list
+OBJCOPYFLAGS			+= $(PF_OBJCOPY)
diff --git a/arch/mips/cpu/u-boot-spl.lds b/arch/mips/cpu/u-boot-spl.lds
new file mode 100644
index 0000000..07004ea
--- /dev/null
+++ b/arch/mips/cpu/u-boot-spl.lds
@@ -0,0 +1,90 @@
+/*
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+MEMORY { .spl_mem : ORIGIN = CONFIG_SPL_TEXT_BASE, \
+		LENGTH = CONFIG_SPL_MAX_SIZE }
+MEMORY { .bss_mem : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
+		LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
+
+OUTPUT_ARCH(mips)
+ENTRY(_start)
+SECTIONS
+{
+	. = 0x00000000;
+
+	. = ALIGN(4);
+	.text : {
+		*(.text*)
+	} > .spl_mem
+
+	. = ALIGN(4);
+	.rodata : {
+		*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
+	} > .spl_mem
+
+	. = ALIGN(4);
+	.data : {
+		*(SORT_BY_ALIGNMENT(.data*))
+		*(SORT_BY_ALIGNMENT(.sdata*))
+	} > .spl_mem
+
+#ifdef CONFIG_SPL_DM
+	. = ALIGN(4);
+	.u_boot_list : {
+		KEEP(*(SORT(.u_boot_list*)));
+	} > .spl_mem
+#endif
+
+	. = ALIGN(4);
+	__image_copy_end = .;
+
+	.bss (NOLOAD) : {
+		__bss_start = .;
+		*(.bss*)
+		*(.sbss*)
+		*(COMMON)
+		. = ALIGN(4);
+		__bss_end = .;
+	} > .bss_mem
+
+	.rel.dyn (NOLOAD) : {
+		*(.rel.dyn)
+	}
+
+	.dynsym : {
+		*(.dynsym)
+	}
+
+	.dynbss : {
+		*(.dynbss)
+	}
+
+	.dynstr : {
+		*(.dynstr)
+	}
+
+	.dynamic : {
+		*(.dynamic)
+	}
+
+	.plt : {
+		*(.plt)
+	}
+
+	.interp : {
+		*(.interp)
+	}
+
+	.gnu : {
+		*(.gnu*)
+	}
+
+	.MIPS.stubs : {
+		*(.MIPS.stubs)
+	}
+
+	.hash : {
+		*(.hash)
+	}
+}
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH v2] MIPS: provide a default u-boot-spl.lds
  2016-05-26 13:28 ` [U-Boot] [PATCH v2] " Daniel Schwierzeck
@ 2016-05-26 15:17   ` Marek Vasut
  2016-05-27 10:03     ` Daniel Schwierzeck
  2016-05-30  9:48   ` Daniel Schwierzeck
  1 sibling, 1 reply; 9+ messages in thread
From: Marek Vasut @ 2016-05-26 15:17 UTC (permalink / raw)
  To: u-boot

On 05/26/2016 03:28 PM, Daniel Schwierzeck wrote:
> Provide a default linker script for SPL binaries. Start address
> and size of text section and BSS section are configurable. All
> sections are arranged in a way that only relevant sections are
> kept in the code section for maximum size reduction. All other
> sections are kept but moved outside the code section to help
> with debugging.
> 
> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
> 
> ---
> 
> Changes in v2:
> - add missing section .u_boot_list
> 
>  arch/mips/config.mk          |  5 ++-
>  arch/mips/cpu/u-boot-spl.lds | 90 ++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 93 insertions(+), 2 deletions(-)
>  create mode 100644 arch/mips/cpu/u-boot-spl.lds
> 
> diff --git a/arch/mips/config.mk b/arch/mips/config.mk
> index 609a998..dcd3460 100644
> --- a/arch/mips/config.mk
> +++ b/arch/mips/config.mk
> @@ -65,7 +65,7 @@ else
>  PF_ABICALLS			:= -mabicalls
>  PF_PIC				:= -fpic
>  PF_PIE				:= -pie
> -PF_OBJCOPY			:= -j .got -j .u_boot_list -j .rel.dyn -j .padding
> +PF_OBJCOPY			:= -j .got -j .rel.dyn -j .padding
>  PF_OBJCOPY			+= -j .dtb.init.rodata
>  endif
>  
> @@ -74,4 +74,5 @@ PLATFORM_CPPFLAGS		+= -msoft-float
>  PLATFORM_LDFLAGS		+= -G 0 -static -n -nostdlib
>  PLATFORM_RELFLAGS		+= -ffunction-sections -fdata-sections
>  LDFLAGS_FINAL			+= --gc-sections $(PF_PIE)
> -OBJCOPYFLAGS			+= -j .text -j .rodata -j .data $(PF_OBJCOPY)
> +OBJCOPYFLAGS			+= -j .text -j .rodata -j .data -j .u_boot_list
> +OBJCOPYFLAGS			+= $(PF_OBJCOPY)
> diff --git a/arch/mips/cpu/u-boot-spl.lds b/arch/mips/cpu/u-boot-spl.lds
> new file mode 100644
> index 0000000..07004ea
> --- /dev/null
> +++ b/arch/mips/cpu/u-boot-spl.lds
> @@ -0,0 +1,90 @@
> +/*
> + * SPDX-License-Identifier:	GPL-2.0+
> + */
> +
> +MEMORY { .spl_mem : ORIGIN = CONFIG_SPL_TEXT_BASE, \
> +		LENGTH = CONFIG_SPL_MAX_SIZE }
> +MEMORY { .bss_mem : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
> +		LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
> +
> +OUTPUT_ARCH(mips)
> +ENTRY(_start)
> +SECTIONS
> +{
> +	. = 0x00000000;
> +
> +	. = ALIGN(4);
> +	.text : {
> +		*(.text*)
> +	} > .spl_mem
> +
> +	. = ALIGN(4);
> +	.rodata : {
> +		*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
> +	} > .spl_mem
> +
> +	. = ALIGN(4);
> +	.data : {
> +		*(SORT_BY_ALIGNMENT(.data*))
> +		*(SORT_BY_ALIGNMENT(.sdata*))
> +	} > .spl_mem
> +
> +#ifdef CONFIG_SPL_DM

Is the ifdef really necessary ? I think if the list is empty, the
u_boot_list will just be an zero-length symbol and since both this and
the image_copy_end are 4-byte aligned, there will be no wasted space.

> +	. = ALIGN(4);
> +	.u_boot_list : {
> +		KEEP(*(SORT(.u_boot_list*)));
> +	} > .spl_mem
> +#endif
> +
> +	. = ALIGN(4);
> +	__image_copy_end = .;
> +
> +	.bss (NOLOAD) : {
> +		__bss_start = .;
> +		*(.bss*)
> +		*(.sbss*)
> +		*(COMMON)
> +		. = ALIGN(4);
> +		__bss_end = .;
> +	} > .bss_mem
> +
> +	.rel.dyn (NOLOAD) : {
> +		*(.rel.dyn)
> +	}
> +
> +	.dynsym : {
> +		*(.dynsym)
> +	}
> +
> +	.dynbss : {
> +		*(.dynbss)
> +	}
> +
> +	.dynstr : {
> +		*(.dynstr)
> +	}
> +
> +	.dynamic : {
> +		*(.dynamic)
> +	}
> +
> +	.plt : {
> +		*(.plt)
> +	}
> +
> +	.interp : {
> +		*(.interp)
> +	}
> +
> +	.gnu : {
> +		*(.gnu*)
> +	}
> +
> +	.MIPS.stubs : {
> +		*(.MIPS.stubs)
> +	}
> +
> +	.hash : {
> +		*(.hash)
> +	}
> +}
> 


-- 
Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH v2] MIPS: provide a default u-boot-spl.lds
  2016-05-26 15:17   ` Marek Vasut
@ 2016-05-27 10:03     ` Daniel Schwierzeck
  2016-05-27 12:44       ` Marek Vasut
  0 siblings, 1 reply; 9+ messages in thread
From: Daniel Schwierzeck @ 2016-05-27 10:03 UTC (permalink / raw)
  To: u-boot



Am 26.05.2016 um 17:17 schrieb Marek Vasut:
> On 05/26/2016 03:28 PM, Daniel Schwierzeck wrote:
>> Provide a default linker script for SPL binaries. Start address
>> and size of text section and BSS section are configurable. All
>> sections are arranged in a way that only relevant sections are
>> kept in the code section for maximum size reduction. All other
>> sections are kept but moved outside the code section to help
>> with debugging.
>>
>> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
>>
>> ---
>>
>> Changes in v2:
>> - add missing section .u_boot_list
>>
>>  arch/mips/config.mk          |  5 ++-
>>  arch/mips/cpu/u-boot-spl.lds | 90 ++++++++++++++++++++++++++++++++++++++++++++
>>  2 files changed, 93 insertions(+), 2 deletions(-)
>>  create mode 100644 arch/mips/cpu/u-boot-spl.lds
>>
>> diff --git a/arch/mips/config.mk b/arch/mips/config.mk
>> index 609a998..dcd3460 100644
>> --- a/arch/mips/config.mk
>> +++ b/arch/mips/config.mk
>> @@ -65,7 +65,7 @@ else
>>  PF_ABICALLS			:= -mabicalls
>>  PF_PIC				:= -fpic
>>  PF_PIE				:= -pie
>> -PF_OBJCOPY			:= -j .got -j .u_boot_list -j .rel.dyn -j .padding
>> +PF_OBJCOPY			:= -j .got -j .rel.dyn -j .padding
>>  PF_OBJCOPY			+= -j .dtb.init.rodata
>>  endif
>>  
>> @@ -74,4 +74,5 @@ PLATFORM_CPPFLAGS		+= -msoft-float
>>  PLATFORM_LDFLAGS		+= -G 0 -static -n -nostdlib
>>  PLATFORM_RELFLAGS		+= -ffunction-sections -fdata-sections
>>  LDFLAGS_FINAL			+= --gc-sections $(PF_PIE)
>> -OBJCOPYFLAGS			+= -j .text -j .rodata -j .data $(PF_OBJCOPY)
>> +OBJCOPYFLAGS			+= -j .text -j .rodata -j .data -j .u_boot_list
>> +OBJCOPYFLAGS			+= $(PF_OBJCOPY)
>> diff --git a/arch/mips/cpu/u-boot-spl.lds b/arch/mips/cpu/u-boot-spl.lds
>> new file mode 100644
>> index 0000000..07004ea
>> --- /dev/null
>> +++ b/arch/mips/cpu/u-boot-spl.lds
>> @@ -0,0 +1,90 @@
>> +/*
>> + * SPDX-License-Identifier:	GPL-2.0+
>> + */
>> +
>> +MEMORY { .spl_mem : ORIGIN = CONFIG_SPL_TEXT_BASE, \
>> +		LENGTH = CONFIG_SPL_MAX_SIZE }
>> +MEMORY { .bss_mem : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
>> +		LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
>> +
>> +OUTPUT_ARCH(mips)
>> +ENTRY(_start)
>> +SECTIONS
>> +{
>> +	. = 0x00000000;
>> +
>> +	. = ALIGN(4);
>> +	.text : {
>> +		*(.text*)
>> +	} > .spl_mem
>> +
>> +	. = ALIGN(4);
>> +	.rodata : {
>> +		*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
>> +	} > .spl_mem
>> +
>> +	. = ALIGN(4);
>> +	.data : {
>> +		*(SORT_BY_ALIGNMENT(.data*))
>> +		*(SORT_BY_ALIGNMENT(.sdata*))
>> +	} > .spl_mem
>> +
>> +#ifdef CONFIG_SPL_DM
> 
> Is the ifdef really necessary ? I think if the list is empty, the
> u_boot_list will just be an zero-length symbol and since both this and
> the image_copy_end are 4-byte aligned, there will be no wasted space.

yes, I also tested it with your with your CI20 patches. If I disable
CONFIG_SPL_DM, there still is u_boot_list entry from the MMC driver
which would waste 120 Bytes.


> 
>> +	. = ALIGN(4);
>> +	.u_boot_list : {
>> +		KEEP(*(SORT(.u_boot_list*)));
>> +	} > .spl_mem
>> +#endif
>> +
>> +	. = ALIGN(4);
>> +	__image_copy_end = .;
>> +
>> +	.bss (NOLOAD) : {
>> +		__bss_start = .;
>> +		*(.bss*)
>> +		*(.sbss*)
>> +		*(COMMON)
>> +		. = ALIGN(4);
>> +		__bss_end = .;
>> +	} > .bss_mem
>> +
>> +	.rel.dyn (NOLOAD) : {
>> +		*(.rel.dyn)
>> +	}
>> +
>> +	.dynsym : {
>> +		*(.dynsym)
>> +	}
>> +
>> +	.dynbss : {
>> +		*(.dynbss)
>> +	}
>> +
>> +	.dynstr : {
>> +		*(.dynstr)
>> +	}
>> +
>> +	.dynamic : {
>> +		*(.dynamic)
>> +	}
>> +
>> +	.plt : {
>> +		*(.plt)
>> +	}
>> +
>> +	.interp : {
>> +		*(.interp)
>> +	}
>> +
>> +	.gnu : {
>> +		*(.gnu*)
>> +	}
>> +
>> +	.MIPS.stubs : {
>> +		*(.MIPS.stubs)
>> +	}
>> +
>> +	.hash : {
>> +		*(.hash)
>> +	}
>> +}
>>
> 
> 

-- 
- Daniel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160527/fe975f1c/attachment.sig>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH v2] MIPS: provide a default u-boot-spl.lds
  2016-05-27 10:03     ` Daniel Schwierzeck
@ 2016-05-27 12:44       ` Marek Vasut
  0 siblings, 0 replies; 9+ messages in thread
From: Marek Vasut @ 2016-05-27 12:44 UTC (permalink / raw)
  To: u-boot

On 05/27/2016 12:03 PM, Daniel Schwierzeck wrote:
> 
> 
> Am 26.05.2016 um 17:17 schrieb Marek Vasut:
>> On 05/26/2016 03:28 PM, Daniel Schwierzeck wrote:
>>> Provide a default linker script for SPL binaries. Start address
>>> and size of text section and BSS section are configurable. All
>>> sections are arranged in a way that only relevant sections are
>>> kept in the code section for maximum size reduction. All other
>>> sections are kept but moved outside the code section to help
>>> with debugging.
>>>
>>> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
>>>
>>> ---
>>>
>>> Changes in v2:
>>> - add missing section .u_boot_list
>>>
>>>  arch/mips/config.mk          |  5 ++-
>>>  arch/mips/cpu/u-boot-spl.lds | 90 ++++++++++++++++++++++++++++++++++++++++++++
>>>  2 files changed, 93 insertions(+), 2 deletions(-)
>>>  create mode 100644 arch/mips/cpu/u-boot-spl.lds
>>>
>>> diff --git a/arch/mips/config.mk b/arch/mips/config.mk
>>> index 609a998..dcd3460 100644
>>> --- a/arch/mips/config.mk
>>> +++ b/arch/mips/config.mk
>>> @@ -65,7 +65,7 @@ else
>>>  PF_ABICALLS			:= -mabicalls
>>>  PF_PIC				:= -fpic
>>>  PF_PIE				:= -pie
>>> -PF_OBJCOPY			:= -j .got -j .u_boot_list -j .rel.dyn -j .padding
>>> +PF_OBJCOPY			:= -j .got -j .rel.dyn -j .padding
>>>  PF_OBJCOPY			+= -j .dtb.init.rodata
>>>  endif
>>>  
>>> @@ -74,4 +74,5 @@ PLATFORM_CPPFLAGS		+= -msoft-float
>>>  PLATFORM_LDFLAGS		+= -G 0 -static -n -nostdlib
>>>  PLATFORM_RELFLAGS		+= -ffunction-sections -fdata-sections
>>>  LDFLAGS_FINAL			+= --gc-sections $(PF_PIE)
>>> -OBJCOPYFLAGS			+= -j .text -j .rodata -j .data $(PF_OBJCOPY)
>>> +OBJCOPYFLAGS			+= -j .text -j .rodata -j .data -j .u_boot_list
>>> +OBJCOPYFLAGS			+= $(PF_OBJCOPY)
>>> diff --git a/arch/mips/cpu/u-boot-spl.lds b/arch/mips/cpu/u-boot-spl.lds
>>> new file mode 100644
>>> index 0000000..07004ea
>>> --- /dev/null
>>> +++ b/arch/mips/cpu/u-boot-spl.lds
>>> @@ -0,0 +1,90 @@
>>> +/*
>>> + * SPDX-License-Identifier:	GPL-2.0+
>>> + */
>>> +
>>> +MEMORY { .spl_mem : ORIGIN = CONFIG_SPL_TEXT_BASE, \
>>> +		LENGTH = CONFIG_SPL_MAX_SIZE }
>>> +MEMORY { .bss_mem : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
>>> +		LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
>>> +
>>> +OUTPUT_ARCH(mips)
>>> +ENTRY(_start)
>>> +SECTIONS
>>> +{
>>> +	. = 0x00000000;
>>> +
>>> +	. = ALIGN(4);
>>> +	.text : {
>>> +		*(.text*)
>>> +	} > .spl_mem
>>> +
>>> +	. = ALIGN(4);
>>> +	.rodata : {
>>> +		*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
>>> +	} > .spl_mem
>>> +
>>> +	. = ALIGN(4);
>>> +	.data : {
>>> +		*(SORT_BY_ALIGNMENT(.data*))
>>> +		*(SORT_BY_ALIGNMENT(.sdata*))
>>> +	} > .spl_mem
>>> +
>>> +#ifdef CONFIG_SPL_DM
>>
>> Is the ifdef really necessary ? I think if the list is empty, the
>> u_boot_list will just be an zero-length symbol and since both this and
>> the image_copy_end are 4-byte aligned, there will be no wasted space.
> 
> yes, I also tested it with your with your CI20 patches. If I disable
> CONFIG_SPL_DM, there still is u_boot_list entry from the MMC driver
> which would waste 120 Bytes.

Awwwww, precious 120 bytes. Ok, keep this as is:

Acked-by: Marek Vasut <marex@denx.de>

>>> +	. = ALIGN(4);
>>> +	.u_boot_list : {
>>> +		KEEP(*(SORT(.u_boot_list*)));
>>> +	} > .spl_mem
>>> +#endif
>>> +
>>> +	. = ALIGN(4);
>>> +	__image_copy_end = .;
>>> +
>>> +	.bss (NOLOAD) : {
>>> +		__bss_start = .;
>>> +		*(.bss*)
>>> +		*(.sbss*)
>>> +		*(COMMON)
>>> +		. = ALIGN(4);
>>> +		__bss_end = .;
>>> +	} > .bss_mem
>>> +
>>> +	.rel.dyn (NOLOAD) : {
>>> +		*(.rel.dyn)
>>> +	}
>>> +
>>> +	.dynsym : {
>>> +		*(.dynsym)
>>> +	}
>>> +
>>> +	.dynbss : {
>>> +		*(.dynbss)
>>> +	}
>>> +
>>> +	.dynstr : {
>>> +		*(.dynstr)
>>> +	}
>>> +
>>> +	.dynamic : {
>>> +		*(.dynamic)
>>> +	}
>>> +
>>> +	.plt : {
>>> +		*(.plt)
>>> +	}
>>> +
>>> +	.interp : {
>>> +		*(.interp)
>>> +	}
>>> +
>>> +	.gnu : {
>>> +		*(.gnu*)
>>> +	}
>>> +
>>> +	.MIPS.stubs : {
>>> +		*(.MIPS.stubs)
>>> +	}
>>> +
>>> +	.hash : {
>>> +		*(.hash)
>>> +	}
>>> +}
>>>
>>
>>
> 


-- 
Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH v2] MIPS: provide a default u-boot-spl.lds
  2016-05-26 13:28 ` [U-Boot] [PATCH v2] " Daniel Schwierzeck
  2016-05-26 15:17   ` Marek Vasut
@ 2016-05-30  9:48   ` Daniel Schwierzeck
  1 sibling, 0 replies; 9+ messages in thread
From: Daniel Schwierzeck @ 2016-05-30  9:48 UTC (permalink / raw)
  To: u-boot



Am 26.05.2016 um 15:28 schrieb Daniel Schwierzeck:
> Provide a default linker script for SPL binaries. Start address
> and size of text section and BSS section are configurable. All
> sections are arranged in a way that only relevant sections are
> kept in the code section for maximum size reduction. All other
> sections are kept but moved outside the code section to help
> with debugging.
> 
> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
> 
> ---
> 
> Changes in v2:
> - add missing section .u_boot_list
> 
>  arch/mips/config.mk          |  5 ++-
>  arch/mips/cpu/u-boot-spl.lds | 90 ++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 93 insertions(+), 2 deletions(-)
>  create mode 100644 arch/mips/cpu/u-boot-spl.lds
> 

applied to u-boot-mips

-- 
- Daniel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160530/d366dc0b/attachment.sig>

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-05-30  9:48 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-26 11:43 [U-Boot] [PATCH] MIPS: provide a default u-boot-spl.lds Daniel Schwierzeck
2016-05-26 12:08 ` Marek Vasut
2016-05-26 12:42   ` Daniel Schwierzeck
2016-05-26 12:47     ` Marek Vasut
2016-05-26 13:28 ` [U-Boot] [PATCH v2] " Daniel Schwierzeck
2016-05-26 15:17   ` Marek Vasut
2016-05-27 10:03     ` Daniel Schwierzeck
2016-05-27 12:44       ` Marek Vasut
2016-05-30  9:48   ` Daniel Schwierzeck

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.