Skip to content
Snippets Groups Projects
  1. Sep 04, 2019
  2. Jul 09, 2018
  3. Jul 03, 2018
  4. Jun 21, 2018
    • Tom Rini's avatar
      Makefile: Ensure we build with -std=gnu11 · fa893990
      Tom Rini authored
      
      As many targets are now commonly built with gcc-6 or later (which
      defaults to a newer C standard than older compilers), certain C
      constructs are now being used as they produce more readable code.  And
      while all compilers that we support building with support the C11
      standard (and GNU11) they do not default to that standard.  Ensure that
      we pass along -std=gnu11 when building.
      
      Signed-off-by: default avatarTom Rini <trini@konsulko.com>
      fa893990
  5. Jun 19, 2018
  6. Jun 04, 2018
  7. Jun 03, 2018
  8. May 31, 2018
    • Eugeniu Rosca's avatar
      kconfig: re-sync with Linux 4.17-rc4 · e91610da
      Eugeniu Rosca authored
      
      Align Kconfig to Linux 4.17-rc4 with minimal impact on non-kconfig files.
      
      Previous Kconfig sync was done by commit bf7ab1e7 ("kconfig:
      re-sync with Linux 4.10") and it achieved almost perfect alignment with
      a few (intended) exceptions, caused by below U-boot commits:
      
      [A] v2015.04 5f9eb220 ("kbuild: remove scripts/multiconfig.sh")
      [B] v2015.07 20c20826 ("Kconfig: Enable usage of escape char '\' in string values")
      [C] v2016.01 da58dec8 ("Various Makefiles: Add SPDX-License-Identifier tags")
      [D] v2016.03 5b8031cc ("Add more SPDX-License-Identifier tags")
      [E] v2016.03 192bc694 ("Fix GCC format-security errors and convert sprintfs.")
      
      Here is the list of Kconfig commits which followed the v4.10 alignment:
      
      [F] v2018.01 0931ed3c ("kconfig/symbol.c: use correct pointer type argument for sizeof")
      [G] v2018.03 1414e09b ("kconfig: revert change that was not needed for -Wformat-security")
      [H] v2018.05 83d290c5 ("SPDX: Convert all of our single license tags to Linux Kernel style")
      
      Commit [F] was subsequently applied to Linux kernel as commit [I]
      with the same patch id, so it won't contribute to further misalignment.
      
      [I] v4.15-rc1 88127dae6ed9 ("kconfig/symbol.c: use correct pointer type argument for sizeof")
      
      Commit [G] is a Kconfig-specific revert of commit [E].
      Commit [H] relocated and reformatted the license doing no functional change.
      
      In summary, the only functional change that makes U-boot Kconfig
      diverge from Linux Kconfig is commit [B]. After a brief analysis,
      the purpose of [B] seems to be placing "\n" literals in string symbols
      like CONFIG_AUTOBOOT_PROMPT="autoboot in %d seconds\n" in order to pass
      them directly to printf and expect correct output at runtime. Currently,
      Linux doesn't seem to have this requirement, so for the moment [B] looks
      like a U-boot specific feature/fix. From point of view of further Kconfig
      alignment and backporting efforts, it is highly desired that commits
      like [B] are propagated to Linux and any Kconfig fixes/features are
      contributed to Linux kernel first. This specific Kconfig re-sync just
      keeps [B] in place.
      
      Contrary to 4.10 Kconfig re-sync (which achieves zero non-kconfig
      changes), 4.17-rc4 re-sync does some amount of updates in Kbuild
      (striving to keep them at minimum), due to a number of reasons:
      * Kbuild is affected by the removal of Kconfig "*shipped" files and now
        requires flex and bison pre-installed on the host.
      * PYTHON{2,3} variables are defined in top-level Makefile as
        prerequisite for running the newly developed Kconfig unit tests.
      * silentoldconfig becomes an "internal implementation detail" deprecated
        for external use, being renamed to syncconfig.
      
      The exact non-kconfig files touched by this commit are:
      
      $ git show --format="" --stat -- ':!scripts/kconfig'
       .gitignore             |  2 ++
       Makefile               |  9 +++++++--
       scripts/Makefile.build | 11 +++++++++++
       scripts/Makefile.lib   | 41 ++++++++++++-----------------------------
      
      The imported Linux commits touching the above files are:
      
      c054be10ffdbd5   ("remove gperf left-overs from build system")
      73a4f6dbe70a1b   ("kbuild: add LEX and YACC variables")
      033dba2ec06c47   ("kbuild: prepare to remove C files pre-generated by flex and bison")
      eea199b445f64c   ("kbuild: remove unnecessary LEX_PREFIX and YACC_PREFIX")
      e71de5ee08dcb0   ("kbuild: remove remaining use of undefined YACC_PREFIX")
      d59fbbd09d5d6b   ("kbuild: replace hardcoded bison in cmd_bison_h with $(YACC)")
      911a91c39cabcb H ("kconfig: rename silentoldconfig to syncconfig")
      59889300274569   (".gitignore: move *.lex.c *.tab.[ch] patterns to the top-level .gitignore")
      9a8dfb394c0467   ("kbuild: clean up *.lex.c and *.tab.[ch] patterns from top-level Makefile")
      833e622459432e H ("genksyms: generate lexer and parser during build instead of shipping")
      b23d1a241f4eb4 H ("kbuild: add %.lex.c and %.tab.[ch] to 'targets' automatically")
      e9781b52d4e0e3 H ("kbuild: add PYTHON2 and PYTHON3 variables")
      
      The commits marked with 'H' are assessed as "hard" (build will fail)
      prerequisites and the rest of them are assessed as "soft" prerequisites
      for the re-sync. In spite of relatively high number of non-H commits,
      they belong to this Kconfig update topic-wise and decrease the number of
      cherry pick conflicts for many commits in this series. Additional effort
      can be put in eliminating the soft prerequisites, if really needed.
      
      The commits which contributed to this Kconfig re-sync are listed below.
      Whenever a conflict resolution has been performed (mostly by hand, but
      sometimes automatically by git), it is revealed by the '!' sign in the
      second column, which means a patch id mismatch between Linux and U-boot
      commits:
      
      9be3213b14d44f   ("gconfig: remove misleading parentheses around a condition")
      ff85a1a80e0034   ("kconfig: Check for libncurses before menuconfig")
      ad8181060788c8   ("kconfig: fix sparse warnings in nconfig")
      cb77f0d623ff33 ! ("scripts: Switch to more portable Perl shebang")
      bb3290d91695bb ! ("Remove gperf usage from toolchain")
      c054be10ffdbd5   ("remove gperf left-overs from build system")
      b24413180f5600 ! ("License cleanup: add SPDX GPL-2.0 license identifier to files with no license")
      9059a3493efea6 ! ("kconfig: fix relational operators for bool and tristate symbols")
      2c37e08464a850   ("kconfig: Warn if choice default is not in choice")
      33ca1a24866373   ("kconfig: Document the 'menu' struct")
      52aede4ba5efd1   ("kconfig: Document the 'symbol' struct")
      c873443430ebd1   ("kconfig: Sync zconf.y with zconf.tab.c_shipped")
      9a826842ff2fbd   ("kconfig: Rename menu_check_dep() to rewrite_m()")
      fa8cedaef814ce   ("kconfig: Clarify expression rewriting")
      f77850d3fe0c96   ("kconfig: Clean up modules handling and fix crash")
      e3b03bf29d6b99   ("kconfig: display recursive dependency resolution hint just once")
      73a4f6dbe70a1b ! ("kbuild: add LEX and YACC variables")
      033dba2ec06c47 ! ("kbuild: prepare to remove C files pre-generated by flex and bison")
      29c833061c1d8c   ("kconfig: generate lexer and parser during build instead of shipping")
      26e47a3c11a25c   ("kconfig: Don't leak symbol names during parsing")
      24161a6711c945   ("kconfig: Don't leak 'source' filenames during parsing")
      bc28fe1d5ede88   ("kconfig: Don't leak 'option' arguments during parsing")
      0724a7c32a54e3   ("kconfig: Don't leak main menus during parsing")
      ae7440ef0c8013   ("kconfig: Fix automatic menu creation mem leak")
      5b1374b3b3c2fc   ("kconfig: Fix expr_free() E_NOT leak")
      7cf33f88e29410   ("kconfig: Fix choice symbol expression leak")
      05cccce580456d   ("kconfig: Document automatic submenu creation code")
      0735f7e5def2ab   ("kconfig: Document important expression functions")
      df60f4b92d3d0b   ("kconfig: Remove menu_end_entry()")
      b92d804a51796b   ("kconfig: drop 'boolean' keyword")
      6479f327dea60d   ("kconfig: Warn if there is more than one help text")
      52e58a3caeba5d   ("kconfig: make input_mode static")
      5a3dc717b3c785   ("kconfig: make xfgets() really static")
      84dd95d4f87a0d   ("kconfig: make conf_unsaved a local variable of conf_read()")
      765f4cdef6f80d   ("kconfig: use default 'yy' prefix for lexer and parser")
      eea199b445f64c   ("kbuild: remove unnecessary LEX_PREFIX and YACC_PREFIX")
      e71de5ee08dcb0   ("kbuild: remove remaining use of undefined YACC_PREFIX")
      d59fbbd09d5d6b ! ("kbuild: replace hardcoded bison in cmd_bison_h with $(YACC)")
      3e41ba05b6d60c   ("kconfig: Document SYMBOL_OPTIONAL logic")
      d3465af60f4471   ("kconfig: Clarify choice dependency propagation")
      9d1a9e8bc18bea   ("kconfig: Document 'if' flattening logic")
      b53688014e3325   ("kconfig: Clarify menu and 'if' dependency propagation")
      d0fd0428ecf04b   ("kconfig: fix make xconfig when gettext is missing")
      312ee68752faaa   ("kconfig: announce removal of oldnoconfig if used")
      1ccb27143360bd   ("kconfig: make "Selected by:" and "Implied by:" readable")
      cedd55d49dee94 ! ("kconfig: Remove silentoldconfig from help and docs; fix kconfig/conf's help")
      1b9eda2e4892cb   ("kconfig: Warn if help text is blank")
      cb67ab2cd2b8ab   ("kconfig: do not write choice values when their dependency becomes n")
      4f208f392103e8   ("kconfig: show '?' prompt even if no help text is available")
      cd58a91def2acc   ("kconfig: remove 'config*' pattern from .gitignnore")
      d2a04648a5dbc3   ("kconfig: remove check_stdin()")
      f3ff6fb5db68bc   ("kconfig: echo stdin to stdout if either is redirected")
      9e3e10c725360b   ("kconfig: send error messages to stderr")
      d717f24d8c6808   ("kconfig: add xrealloc() helper")
      523ca58b7db2e3   ("kconfig: remove const qualifier from sym_expand_string_value()")
      cd81fc82b93fa4   ("kconfig: add xstrdup() helper")
      f4bc1eefc1608e   ("kconfig: set SYMBOL_AUTO to the symbol marked with defconfig_list")
      bf0bbdcf100322   ("kconfig: Don't leak choice names during parsing")
      1a90ce36c6eff6   ("kconfig: Update ncurses package names for menuconfig")
      5ae6fcc4bb82bd   ("kconfig: fix line number in recursive inclusion error message")
      07a422bb213adb ! ("kbuild: restore autoksyms.h touch to the top Makefile")
      9a47ceec543bfb   ("kconfig: clean-up reverse dependency help implementation")
      d9119b5925a03b   ("kconfig: Print reverse dependencies in groups")
      f467c5640c29ad   ("kconfig: only write '# CONFIG_FOO is not set' for visible symbols")
      59a80b5e892dde   ("kconfig: do not call check_conf() for olddefconfig")
      4bb3a5b085cd6f   ("kconfig: remove unneeded input_mode test in conf()")
      99f0b6578bab44   ("kconfig: remove redundant input_mode test for check_conf() loop")
      2aad9b89621386   ("kconfig: hide irrelevant sub-menus for oldconfig")
      81d2bc2273052e   ("kconfig: invoke oldconfig instead of silentoldconfig from local*config")
      911a91c39cabcb ! ("kconfig: rename silentoldconfig to syncconfig")
      2a61625835c7c8 ! ("kconfig: remove redundant streamline_config.pl prerequisite")
      022a4bf6b59dfd   ("kconfig: tests: add framework for Kconfig unit testing")
      1903c511905984   ("kconfig: tests: add basic choice tests")
      49ac3c0c3aa3b7   ("kconfig: tests: test automatic submenu creation")
      b76960c0f6b25d   ("kconfig: tests: test if new symbols in choice are asked")
      930c429a656fdb   ("kconfig: tests: check unneeded "is not set" with unmet dependency")
      ee236610653ede   ("kconfig: tests: check visibility of tristate choice values in y choice")
      beaaddb625400e   ("kconfig: tests: test defconfig when two choices interact")
      3e4888c2e3d77d   ("kconfig: tests: test randconfig for choice in choice")
      29c434f367ea7b   ("kconfig: tests: test if recursive dependencies are detected")
      e2c75e7667c737   ("kconfig: tests: test if recursive inclusion is detected")
      f622f827958162   ("kconfig: warn unmet direct dependency of tristate symbols selected by y")
      f8f69dc0b4e070   ("kconfig: make unmet dependency warnings readable")
      26561514cc9def   ("kconfig: do not include both curses.h and ncurses.h for nconfig")
      32a94b8b0c3e5a   ("kconfig: remove duplicated file name and lineno of recursive inclusion")
      379a8eb8eb1a55   ("kconfig: detect recursive inclusion earlier")
      18492685e479fd   ("kconfig: use yylineno option instead of manual lineno increments")
      59889300274569 ! (".gitignore: move *.lex.c *.tab.[ch] patterns to the top-level .gitignore")
      9a8dfb394c0467 ! ("kbuild: clean up *.lex.c and *.tab.[ch] patterns from top-level Makefile")
      833e622459432e ! ("genksyms: generate lexer and parser during build instead of shipping")
      b23d1a241f4eb4 ! ("kbuild: add %.lex.c and %.tab.[ch] to 'targets' automatically")
      17baab68d337a0   ("kconfig: extend output of 'listnewconfig'")
      e9781b52d4e0e3 ! ("kbuild: add PYTHON2 and PYTHON3 variables")
      
      The current Kconfig update generates below build-time warnings:
        YACC    scripts/dtc/dtc-parser.tab.h
      scripts/dtc/dtc-parser.y: warning: 3 shift/reduce conflicts [-Wconflicts-sr]
        YACC    scripts/dtc/dtc-parser.tab.c
      scripts/dtc/dtc-parser.y: warning: 3 shift/reduce conflicts [-Wconflicts-sr]
      
      This seems to happen because the Kbuild updates apparently didn't make
      room for both "*shipped"-based builds and flex/bison-based builds. A
      similar problem has been reported for genksyms parser in v4.17-rc1
      commit 833e622459432e ("genksyms: generate lexer and parser during build
      instead of shipping"). I have figured out empirically that the warnings
      are healed after updating the in-tree U-boot DTC to upstream v1.4.6-9,
      same as done by Linux v4.17-rc1 commit 9130ba88464032 ("scripts/dtc:
      Update to upstream version v1.4.6-9-gaadd0b65c987"). Whether fixing the
      DTC-related yacc warnings should be done together with the Kconfig
      re-sync, I would like to hear from community.
      
      My testing was limited to:
      - make defconfig all
      - make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- r8a7795_ulcb_defconfig all
      - comparing .config before and after the re-sync
      - running the newly imported Kconfig unit tests as seen below:
      
      $ make testconfig
      Tested-by: default avatarPetr Vorel <petr.vorel@gmail.com>
      
      ============================= test session starts =============================
      scripts/kconfig/tests/auto_submenu/__init__.py::test PASSED             [  7%]
      scripts/kconfig/tests/choice/__init__.py::test_oldask0 PASSED           [ 14%]
      scripts/kconfig/tests/choice/__init__.py::test_oldask1 PASSED           [ 21%]
      scripts/kconfig/tests/choice/__init__.py::test_allyes PASSED            [ 28%]
      scripts/kconfig/tests/choice/__init__.py::test_allmod PASSED            [ 35%]
      scripts/kconfig/tests/choice/__init__.py::test_allno PASSED             [ 42%]
      scripts/kconfig/tests/choice/__init__.py::test_alldef PASSED            [ 50%]
      scripts/kconfig/tests/choice_value_with_m_dep/__init__.py::test PASSED  [ 57%]
      scripts/kconfig/tests/err_recursive_inc/__init__.py::test PASSED        [ 64%]
      scripts/kconfig/tests/inter_choice/__init__.py::test PASSED             [ 71%]
      scripts/kconfig/tests/new_choice_with_dep/__init__.py::test PASSED      [ 78%]
      scripts/kconfig/tests/no_write_if_dep_unmet/__init__.py::test PASSED    [ 85%]
      scripts/kconfig/tests/rand_nested_choice/__init__.py::test PASSED       [ 92%]
      scripts/kconfig/tests/warn_recursive_dep/__init__.py::test PASSED       [100%]
      ========================== 14 passed in 0.34 seconds ==========================
      
      Signed-off-by: default avatarEugeniu Rosca <erosca@de.adit-jv.com>
      Reviewed-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      Tested-by: default avatarPetr Vorel <petr.vorel@gmail.com>
      e91610da
  9. May 24, 2018
    • Philipp Tomsich's avatar
      Makefile: adopt --std=gnu11 for HOSTCFLAGS on Linux · 9de4f959
      Philipp Tomsich authored
      
      Following the conversion of the SPDX license tags, a number of files
      compiled with -pedantic now generate warnings similar to the following
      for using C99-style '//' comments in ISO C90 code:
      
        tools/gen_eth_addr.c:1:1: warning: C++ style comments are not allowed in ISO C90
         // SPDX-License-Identifier: GPL-2.0+
         ^
      
      The SPDX comment-style change means that these files have adopted C99,
      so need to change the language-standard to --std=gnu99 or --std=gnu11
      to let the compiler know this.
      
      As we now require GCC 6 or newer for the cross-compiler, the project has
      implicitly moved the project to GNU11: let older GCC versions on various
      Linux distros know to treat our host tools as GNU11 as well.
      
      References: commit 83d290c5 ("SPDX: Convert all of our single license tags to Linux Kernel style")
      Signed-off-by: default avatarPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
      Reviewed-by: default avatarTom Rini <trini@konsulko.com>
      9de4f959
  10. May 07, 2018
    • Tom Rini's avatar
      Prepare v2018.05 · 890e79f2
      Tom Rini authored
      
      Signed-off-by: default avatarTom Rini <trini@konsulko.com>
      890e79f2
    • Tom Rini's avatar
      SPDX: Convert all of our single license tags to Linux Kernel style · 83d290c5
      Tom Rini authored
      
      When U-Boot started using SPDX tags we were among the early adopters and
      there weren't a lot of other examples to borrow from.  So we picked the
      area of the file that usually had a full license text and replaced it
      with an appropriate SPDX-License-Identifier: entry.  Since then, the
      Linux Kernel has adopted SPDX tags and they place it as the very first
      line in a file (except where shebangs are used, then it's second line)
      and with slightly different comment styles than us.
      
      In part due to community overlap, in part due to better tag visibility
      and in part for other minor reasons, switch over to that style.
      
      This commit changes all instances where we have a single declared
      license in the tag as both the before and after are identical in tag
      contents.  There's also a few places where I found we did not have a tag
      and have introduced one.
      
      Signed-off-by: default avatarTom Rini <trini@konsulko.com>
      83d290c5
  11. May 01, 2018
  12. Apr 28, 2018
    • Masahiro Yamada's avatar
      kbuild: use -fmacro-prefix-map to make __FILE__ a relative path · 1eb2e71e
      Masahiro Yamada authored
      
      The __FILE__ macro is used everywhere in U-Boot to locate the file
      printing the log message, such as WARN_ON(), etc.  If U-Boot is
      built out of tree, this can be a long absolute path.
      
      This is because Kbuild runs in the objtree instead of the srctree,
      then __FILE__ is expanded to a file path prefixed with $(srctree)/.
      
      A brand-new option from GCC, -fmacro-prefix-map, solves this problem.
      If your compiler supports it, __FILE__ is the relative path from the
      srctree regardless of O= option.  This provides more readable log,
      more reproducible builds, and smaller image size.
      
      [ Linux commit: a73619a845d5625079cc1b3b820f44c899618388 ]
      
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: default avatarSimon Glass <sjg@chromium.org>
      1eb2e71e
  13. Apr 27, 2018
  14. Apr 17, 2018
  15. Apr 15, 2018
    • Rasmus Villemoes's avatar
      Makefile: always preserve output for images that can contain HAB Blocks · 06587617
      Rasmus Villemoes authored
      
      The current makefile logic disables creation of the
      SPL.log/u-boot-ivt.img.log etc. files when V=1 is given on the command
      line, the rationale presumably being that the user wants and gets the
      information on the console.
      
      However, from general principles, I don't think a higher V= level
      should affect which build artifacts get generated (and certainly
      shouldn't produce fewer). Concretely, it's also a problem that when
      doing a V=1 build in a terminal, the relevant HAB blocks lines easily
      drown in all the other V=1 output.
      
      Moreover, build systems such as Yocto by default pass V=1, so in that
      case the information gets hidden away in the do_compile log file, making
      it nigh impossible to create a recipe for creating signed U-boot images
      - I don't want to disable V=1, because having verbose output in the log
      file is valuable when things go wrong, but OTOH trying to go digging in
      the do_compile log file (and getting exactly the right lines) is not
      pleasant to even think about.
      
      So change the logic so that for V=0, the mkimage output is redirected
      to MKIMAGEOUTPUT (which is also the current behaviour), while for any
      other value of V, we _additionally_ write the information to make's
      stdout, whatever that might be.
      
      Signed-off-by: default avatarRasmus Villemoes <rasmus.villemoes@prevas.dk>
      Tested-by: default avatarBreno Lima <breno.lima@nxp.com>
      06587617
  16. Apr 13, 2018
  17. Apr 07, 2018
    • Rasmus Villemoes's avatar
      Allow providing default environment from file · f3d8f7dd
      Rasmus Villemoes authored
      
      Modifying the default environment via CONFIG_EXTRA_ENV_SETTINGS is
      somewhat inflexible, partly because the cpp language does not allow
      appending to an existing macro. This prevents reuse of "environment
      fragments" for different boards, which in turn makes maintaining that
      environment consistently tedious and error-prone.
      
      This implements a Kconfig option for allowing one to define the entire
      default environment in an external file, which can then, for example, be
      generated programmatically as part of a Yocto recipe, or simply be kept
      in version control separately from the U-boot repository.
      
      Tested-by: default avatarSean Nyekjaer <sean.nyekjaer@prevas.dk>
      Signed-off-by: default avatarRasmus Villemoes <rasmus.villemoes@prevas.dk>
      Reviewed-by: default avatarLukasz Majewski <lukma@denx.de>
      f3d8f7dd
  18. Apr 03, 2018
    • Alexey Brodkin's avatar
      Makefile: Disable stack-usage check for ARC · 948071ba
      Alexey Brodkin authored
      With the most recent tools for ARC (arc-2017.09) in case of
      "naked" function compiler throws a warning:
      ---------------------------------->8-----------------------------
      board/synopsys/hsdk/hsdk.c: In function 'hsdk_core_init_f':
      board/synopsys/hsdk/hsdk.c:345:1: warning: stack usage computation not supported for this target
       }
       ^
      ---------------------------------->8-----------------------------
      
      That happens because the compiler doesn't handle "naked" functions
      as a special case where stack calculation shouldn't be done.
      
      But for now until this is fixed in GCC to get clean buildman output
      we're disabling stack-usage check for ARC.
      
      See https://lists.denx.de/pipermail/u-boot/2018-April/324455.html
      
      
      for more background.
      
      Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
      Cc: Tom Rini <trini@konsulko.com>
      948071ba
    • Tom Rini's avatar
      Prepare v2018.05-rc1 · 645b5afb
      Tom Rini authored
      
      Signed-off-by: default avatarTom Rini <trini@konsulko.com>
      645b5afb
  19. Mar 29, 2018
  20. Mar 13, 2018
  21. Mar 06, 2018
  22. Feb 27, 2018
  23. Feb 23, 2018
    • Alexey Brodkin's avatar
      Makefile: Don't mess with .text section location for selected arches · 1022807c
      Alexey Brodkin authored
      Most of architectures have .text section situated in the very beginning
      of U-Boot binary and thus it is very logical that CONFIG_SYS_TEXT_BASE
      is used on final linkage step to specify where U-Boot gets linked to.
      
      For that we pass the following construction to the LD:
      ---------------------------->8-----------------------
      xxx-ld ...  -Ttext $(CONFIG_SYS_TEXT_BASE) ...
      ---------------------------->8-----------------------
      
      But there could be exceptions. For example:
       1. In case of ARCv2 we want to put vectors table in its own section
          .ivt in front of .text section which means we need either add an
          offset to CONFIG_SYS_TEXT_BASE to compensate for .ivt or don't
          pass "-Ttext" to the LD at all and specify link base in linker
          script directly.
      
       2. Some architectures even though have .text section in the very
          beginning of the U-Boot image still use different symbols to
          specify link-base:
             * NIOS2: CONFIG_SYS_MONITOR_BASE (which I really like because
               that exactly what makes sense - where out image starts but not
               beginning of its .text section which just happened to match the
               whole image beginning)
             * EXTENSA: CONFIG_SYS_TEXT_ADDR
             * X86: Which doesn't use CONFIG_SYS_MONITOR_BASE in case of EFI
               otherwise sets explicit link base in u-boot.lds
      
      I think that's good to allow for flexibility and don't require each and
      every architecture or even platform to specify CONFIG_SYS_TEXT_BASE as well
      as use it to set .text section location.
      
      So let's only pass "-Ttext xxx" for those architectures who don't set
      link-base explicitly in their linker scripts.
      
      This patch iaddresses comments for previously sent
      https://patchwork.ozlabs.org/patch/867540/
      
      .
      
      Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
      Cc: Marek Vasut <marek.vasut@gmail.com>
      Cc: Max Filippov <jcmvbkbc@gmail.com>
      Cc: Simon Glass <sjg@chromium.org>
      Cc: Tom Rini <trini@konsulko.com>
      1022807c
  24. Feb 20, 2018
  25. Feb 12, 2018
  26. Jan 30, 2018
  27. Jan 26, 2018
  28. Jan 12, 2018
  29. Jan 09, 2018
  30. Jan 02, 2018
  31. Dec 19, 2017
Loading