By default sections are 16-byte aligned on some architectures, but the
command name structure (struct cmd_tbl_s) does not have padding to
16 bytes. We use the linker to collect elements of an array of
these structures and then at run-time we want this array to be
accessible.

If the linker puts padding between elements then we cannot access the
array properly.

This change reduces the alignment to 4-bytes so that the command
table can be accessed correctly on any architecture.

Signed-off-by: Simon Glass <s...@chromium.org>
---
Changes in v4:
- Add more info to command section alignment commit

 include/command.h |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/include/command.h b/include/command.h
index f1accd0..c270110 100644
--- a/include/command.h
+++ b/include/command.h
@@ -117,7 +117,8 @@ extern int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, 
char * const argv[]);
 #define CMD_FLAG_REPEAT                0x0001  /* repeat last command          
*/
 #define CMD_FLAG_BOOTD         0x0002  /* command is from bootd        */
 
-#define Struct_Section  __attribute__ ((unused,section (".u_boot_cmd")))
+#define Struct_Section  __attribute__((unused, section(".u_boot_cmd"), \
+               aligned(4)))
 
 #ifdef CONFIG_AUTO_COMPLETE
 # define _CMD_COMPLETE(x) x,
-- 
1.7.3.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to