Skip to content
Snippets Groups Projects
  1. May 26, 2021
  2. May 10, 2021
  3. Jan 22, 2021
  4. Dec 02, 2020
    • Masahiro Yamada's avatar
      ARC: build: move symlink creation to arch/arc/Makefile to avoid race · c5e6ae56
      Masahiro Yamada authored
      
      If you run 'make uImage uImage.gz' with the parallel option, uImage.gz
      will be created by two threads simultaneously.
      
      This is because arch/arc/Makefile does not specify the dependency
      between uImage and uImage.gz. Hence, GNU Make assumes they can be
      built in parallel. One thread descends into arch/arc/boot/ to create
      uImage, and another to create uImage.gz.
      
      Please notice the same log is displayed twice in the following steps:
      
        $ export CROSS_COMPILE=<your-arc-compiler-prefix>
        $ make -s ARCH=arc defconfig
        $ make -j$(nproc) ARCH=arc uImage uImage.gz
        [ snip ]
          LD      vmlinux
          SORTTAB vmlinux
          SYSMAP  System.map
          OBJCOPY arch/arc/boot/vmlinux.bin
          OBJCOPY arch/arc/boot/vmlinux.bin
          GZIP    arch/arc/boot/vmlinux.bin.gz
          GZIP    arch/arc/boot/vmlinux.bin.gz
          UIMAGE  arch/arc/boot/uImage.gz
          UIMAGE  arch/arc/boot/uImage.gz
        Image Name:   Linux-5.10.0-rc4-00003-g62f23044
        Created:      Sun Nov 22 02:52:26 2020
        Image Type:   ARC Linux Kernel Image (gzip compressed)
        Data Size:    2109376 Bytes = 2059.94 KiB = 2.01 MiB
        Load Address: 80000000
        Entry Point:  80004000
          Image arch/arc/boot/uImage is ready
        Image Name:   Linux-5.10.0-rc4-00003-g62f23044
        Created:      Sun Nov 22 02:52:26 2020
        Image Type:   ARC Linux Kernel Image (gzip compressed)
        Data Size:    2815455 Bytes = 2749.47 KiB = 2.69 MiB
        Load Address: 80000000
        Entry Point:  80004000
      
      This is a race between the two threads trying to write to the same file
      arch/arc/boot/uImage.gz. This is a potential problem that can generate
      a broken file.
      
      I fixed a similar problem for ARM by commit 3939f334 ("ARM: 8418/1:
      add boot image dependencies to not generate invalid images").
      
      I highly recommend to avoid such build rules that cause a race condition.
      
      Move the uImage rule to arch/arc/Makefile.
      
      Another strangeness is that arch/arc/boot/Makefile compares the
      timestamps between $(obj)/uImage and $(obj)/uImage.*:
      
        $(obj)/uImage: $(obj)/uImage.$(suffix-y)
                @LN -sf $(notdir $<) $@
                @echo '  Image $@ is ready'
      
      This does not work as expected since $(obj)/uImage is a symlink.
      The symlink should be created in a phony target rule.
      
      I used $(kecho) instead of echo to suppress the message
      'Image arch/arc/boot/uImage is ready' when the -s option is given.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      c5e6ae56
    • Masahiro Yamada's avatar
      ARC: build: add boot_targets to PHONY · 0cfccb3c
      Masahiro Yamada authored
      
      The top-level boot_targets (uImage and uImage.*) should be phony
      targets. They just let Kbuild descend into arch/arc/boot/ and create
      files there.
      
      If a file exists in the top directory with the same name, the boot
      image will not be created.
      
      You can confirm it by the following steps:
      
        $ export CROSS_COMPILE=<your-arc-compiler-prefix>
        $ make -s ARCH=arc defconfig all   # vmlinux will be built
        $ touch uImage.gz
        $ make ARCH=arc uImage.gz
        CALL    scripts/atomic/check-atomics.sh
        CALL    scripts/checksyscalls.sh
        CHK     include/generated/compile.h
        # arch/arc/boot/uImage.gz is not created
      
      Specify the targets as PHONY to fix this.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      0cfccb3c
    • Masahiro Yamada's avatar
      ARC: build: add uImage.lzma to the top-level target · f2712ec7
      Masahiro Yamada authored
      
      arch/arc/boot/Makefile supports uImage.lzma, but you cannot do
      'make uImage.lzma' because the corresponding target is missing
      in arch/arc/Makefile. Add it.
      
      I also changed the assignment operator '+=' to ':=' since this is the
      only place where we expect this variable to be set.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      f2712ec7
    • Masahiro Yamada's avatar
      ARC: build: remove non-existing bootpImage from KBUILD_IMAGE · 98367209
      Masahiro Yamada authored
      
      The deb-pkg builds for ARCH=arc fail.
      
        $ export CROSS_COMPILE=<your-arc-compiler-prefix>
        $ make -s ARCH=arc defconfig
        $ make ARCH=arc bindeb-pkg
        SORTTAB vmlinux
        SYSMAP  System.map
        MODPOST Module.symvers
        make KERNELRELEASE=5.10.0-rc4 ARCH=arc KBUILD_BUILD_VERSION=2 -f ./Makefile intdeb-pkg
        sh ./scripts/package/builddeb
        cp: cannot stat 'arch/arc/boot/bootpImage': No such file or directory
        make[4]: *** [scripts/Makefile.package:87: intdeb-pkg] Error 1
        make[3]: *** [Makefile:1527: intdeb-pkg] Error 2
        make[2]: *** [debian/rules:13: binary-arch] Error 2
        dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
        make[1]: *** [scripts/Makefile.package:83: bindeb-pkg] Error 2
        make: *** [Makefile:1527: bindeb-pkg] Error 2
      
      The reason is obvious; arch/arc/Makefile sets $(boot)/bootpImage as
      the default image, but there is no rule to build it.
      
      Remove the meaningless KBUILD_IMAGE assignment so it will fallback
      to the default vmlinux. With this change, you can build the deb package.
      
      I removed the 'bootpImage' target as well. At best, it provides
      'make bootpImage' as an alias of 'make vmlinux', but I do not see
      much sense in doing so.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      98367209
  5. Oct 06, 2020
  6. Jun 16, 2020
  7. Oct 28, 2019
    • Eugeniy Paltsev's avatar
      ARC: merge HAPS-HS with nSIM-HS configs · 1681baa7
      Eugeniy Paltsev authored
      
      Starting from nSIM 2019.06 is possible to use DW UART
      instead of ARC UART. That allows us to merge
      "nsim_hs" with "haps_hs" and "nsim_hs_smp" with "haps_hs_smp"
      with minor changes which were done in previous commits.
      
      We eliminate nsim_hs_defconfig and nsim_hs_smp_defconfig
      and leave haps_hs_defconfig and haps_hs_smp_defconfig
      which can be used on HAPS / nSIM / ZEBU / QEMU platforms
      without additional changes in Linux kernel.
      
      For nSIM we should now use UART property values
      "-prop=nsim_mem-dev=uart0,kind=dwuart,base=0xf0000000"
      instead of previously used
      "-prop=nsim_mem-dev=uart0,base=0xc0fc1000"
      "use_connect" and "irq" values of UART property remains untouched.
      
      Signed-off-by: default avatarEugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      1681baa7
  8. Sep 04, 2019
    • Masahiro Yamada's avatar
      kbuild,arc: add CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 for ARC · 15f5db60
      Masahiro Yamada authored
      
      arch/arc/Makefile overrides -O2 with -O3. This is the only user of
      ARCH_CFLAGS. There is no user of ARCH_CPPFLAGS or ARCH_AFLAGS.
      My plan is to remove ARCH_{CPP,A,C}FLAGS after refactoring the ARC
      Makefile.
      
      Currently, ARC has no way to enable -Wmaybe-uninitialized because both
      -O3 and -Os disable it. Enabling it will be useful for compile-testing.
      This commit allows allmodconfig (, which defaults to -O2) to enable it.
      
      Add CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y to all the defconfig files
      in arch/arc/configs/ in order to keep the current config settings.
      
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      Acked-by: default avatarVineet Gupta <vgupta@synopsys.com>
      15f5db60
  9. Jul 10, 2019
  10. Jun 19, 2019
  11. Jun 11, 2019
  12. Feb 25, 2019
  13. Nov 30, 2018
    • Kevin Hilman's avatar
      ARC: change defconfig defaults to ARCv2 · b7cc40c3
      Kevin Hilman authored
      
      Change the default defconfig (used with 'make defconfig') to the ARCv2
      nsim_hs_defconfig, and also switch the default Kconfig ISA selection to
      ARCv2.
      
      This allows several default defconfigs (e.g. make defconfig, make
      allnoconfig, make tinyconfig) to all work with ARCv2 by default.
      
      Note since we change default architecture from ARCompact to ARCv2
      it's required to explicitly mention architecture type in ARCompact
      defconfigs otherwise ARCv2 will be implied and binaries will be
      generated for ARCv2.
      
      Cc: <stable@vger.kernel.org> # 4.4.x
      Signed-off-by: default avatarKevin Hilman <khilman@baylibre.com>
      Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      b7cc40c3
  14. Oct 02, 2018
    • Rob Herring's avatar
      kbuild: consolidate Devicetree dtb build rules · 37c8a5fa
      Rob Herring authored
      
      There is nothing arch specific about building dtb files other than their
      location under /arch/*/boot/dts/. Keeping each arch aligned is a pain.
      The dependencies and supported targets are all slightly different.
      Also, a cross-compiler for each arch is needed, but really the host
      compiler preprocessor is perfectly fine for building dtbs. Move the
      build rules to a common location and remove the arch specific ones. This
      is done in a single step to avoid warnings about overriding rules.
      
      The build dependencies had been a mixture of 'scripts' and/or 'prepare'.
      These pull in several dependencies some of which need a target compiler
      (specifically devicetable-offsets.h) and aren't needed to build dtbs.
      All that is really needed is dtc, so adjust the dependencies to only be
      dtc.
      
      This change enables support 'dtbs_install' on some arches which were
      missing the target.
      
      Acked-by: default avatarWill Deacon <will.deacon@arm.com>
      Acked-by: default avatarPaul Burton <paul.burton@mips.com>
      Acked-by: default avatarLey Foon Tan <ley.foon.tan@intel.com>
      Acked-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      Cc: Michal Marek <michal.lkml@markovi.net>
      Cc: Vineet Gupta <vgupta@synopsys.com>
      Cc: Russell King <linux@armlinux.org.uk>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
      Cc: Michal Simek <monstr@monstr.eu>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: James Hogan <jhogan@kernel.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Chris Zankel <chris@zankel.net>
      Cc: Max Filippov <jcmvbkbc@gmail.com>
      Cc: linux-kbuild@vger.kernel.org
      Cc: linux-snps-arc@lists.infradead.org
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: uclinux-h8-devel@lists.sourceforge.jp
      Cc: linux-mips@linux-mips.org
      Cc: nios2-dev@lists.rocketboards.org
      Cc: linuxppc-dev@lists.ozlabs.org
      Cc: linux-xtensa@linux-xtensa.org
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      37c8a5fa
  15. Sep 18, 2018
  16. Sep 13, 2018
    • Alexey Brodkin's avatar
      ARC: build: Get rid of toolchain check · 615f6445
      Alexey Brodkin authored
      
      This check is very naive: we simply test if GCC invoked without
      "-mcpu=XXX" has ARC700 define set. In that case we think that GCC
      was built with "--with-cpu=arc700" and has libgcc built for ARC700.
      
      Otherwise if ARC700 is not defined we think that everythng was built
      for ARCv2.
      
      But in reality our life is much more interesting.
      
      1. Regardless of GCC configuration (i.e. what we pass in "--with-cpu"
         it may generate code for any ARC core).
      
      2. libgcc might be built with explicitly specified "--mcpu=YYY"
      
      That's exactly what happens in case of multilibbed toolchains:
       - GCC is configured with default settings
       - All the libs built for many different CPU flavors
      
      I.e. that check gets in the way of usage of multilibbed
      toolchains. And even non-multilibbed toolchains are affected.
      OpenEmbedded also builds GCC without "--with-cpu" because
      each and every target component later is compiled with explicitly
      set "-mcpu=ZZZ".
      
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      615f6445
  17. Sep 10, 2018
    • Vineet Gupta's avatar
      ARCv2: build: use mcpu=hs38 iso generic mcpu=archs · 00a99339
      Vineet Gupta authored
      
      helps gcc with better instruction selections such as 64-bit multiply MPYD
      
      before
      ------
      82c34b58 <sched_clock>:
      82c34b58:	ld	r2,[0x83068d00]
      82c34b60:	add_s	r2,r2,0x7530
      82c34b66:	mov_s	r0,0x989680
      82c34b6c:	mpymu	r5,r2,r0
      82c34b70:	mpy	r4,r2,r0
      82c34b74:	mov_s	r0,r4
      82c34b76:	j_s.d	[blink]
      82c34b78:	mov_s	r1,r5
      82c34b7a:	nop_s
      
      after
      ------
      82c34b7c <sched_clock>:
      82c34b7c:	ld	r0,[0x83064d00]
      82c34b84:	add_s	r0,r0,0x7530
      82c34b8a:	mpydu	r0,r0,0x989680
      82c34b92:	j_s	[blink]
      
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      00a99339
  18. Aug 31, 2018
  19. Aug 23, 2018
  20. Jun 14, 2018
    • Alexey Brodkin's avatar
      ARC: Explicitly add -mmedium-calls to CFLAGS · 74c11e30
      Alexey Brodkin authored
      
      GCC built for arc*-*-linux has "-mmedium-calls" implicitly enabled by default
      thus we don't see any problems during Linux kernel compilation.
      ----------------------------->8------------------------
      arc-linux-gcc -mcpu=arc700 -Q --help=target | grep calls
        -mlong-calls                          [disabled]
        -mmedium-calls                        [enabled]
      ----------------------------->8------------------------
      
      But if we try to use so-called Elf32 toolchain with GCC configured for
      arc*-*-elf* then we'd see the following failure:
      ----------------------------->8------------------------
      init/do_mounts.o: In function 'init_rootfs':
      do_mounts.c:(.init.text+0x108): relocation truncated to fit: R_ARC_S21W_PCREL
      against symbol 'unregister_filesystem' defined in .text section in fs/filesystems.o
      
      arc-elf32-ld: final link failed: Symbol needs debug section which does not exist
      make: *** [vmlinux] Error 1
      ----------------------------->8------------------------
      
      That happens because neither "-mmedium-calls" nor "-mlong-calls" are enabled in
      Elf32 GCC:
      ----------------------------->8------------------------
      arc-elf32-gcc -mcpu=arc700 -Q --help=target | grep calls
        -mlong-calls                          [disabled]
        -mmedium-calls                        [disabled]
      ----------------------------->8------------------------
      
      Now to make it possible to use Elf32 toolchain for building Linux kernel
      we're explicitly add "-mmedium-calls" to CFLAGS.
      
      And since we add "-mmedium-calls" to the global CFLAGS there's no point in
      having per-file copies thus removing them.
      
      Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      74c11e30
  21. Oct 04, 2017
  22. Sep 01, 2017
    • Alexey Brodkin's avatar
      ARC: [plat-hsdk] initial port for HSDK board · a518d637
      Alexey Brodkin authored
      
      This initial port adds support of ARC HS Development Kit board with some
      basic features such serial port, USB, SD/MMC and Ethernet.
      
      Essentially we run Linux kernel on all 4 cores (i.e. utilize SMP) and
      heavily use IO Coherency for speeding-up DMA-aware peripherals.
      
      Note as opposed to other ARC boards we link Linux kernel to
      0x9000_0000 intentionally because cores 1 and 3 configured with DCCM
      situated at our more usual link base 0x8000_0000. We still can use
      memory region starting at 0x8000_0000 as we reallocate DCCM in our
      platform code.
      
      Note that PAE remapping for DMA clients does not work due to an RTL bug,
      so CREG_PAE register must be programmed to all zeroes, otherwise it will
      cause problems with DMA to/from peripherals even if PAE40 is not used.
      
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Signed-off-by: default avatarEugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      a518d637
  23. Aug 04, 2017
  24. Mar 20, 2017
  25. Nov 11, 2016
    • Arnd Bergmann's avatar
      Kbuild: enable -Wmaybe-uninitialized warning for "make W=1" · a76bcf55
      Arnd Bergmann authored
      Traditionally, we have always had warnings about uninitialized variables
      enabled, as this is part of -Wall, and generally a good idea [1], but it
      also always produced false positives, mainly because this is a variation
      of the halting problem and provably impossible to get right in all cases
      [2].
      
      Various people have identified cases that are particularly bad for false
      positives, and in commit e74fc973 ("Turn off -Wmaybe-uninitialized
      when building with -Os"), I turned off the warning for any build that
      was done with CC_OPTIMIZE_FOR_SIZE.  This drastically reduced the number
      of false positive warnings in the default build but unfortunately had
      the side effect of turning the warning off completely in 'allmodconfig'
      builds, which in turn led to a lot of warnings (both actual bugs, and
      remaining false positives) to go in unnoticed.
      
      With commit 877417e6 ("Kbuild: change CC_OPTIMIZE_FOR_SIZE
      definition") enabled the warning again for allmodconfig builds in v4.7
      and in v4.8-rc1, I had finally managed to address all warnings I get in
      an ARM allmodconfig build and most other maybe-uninitialized warnings
      for ARM randconfig builds.
      
      However, commit 6e8d666e ("Disable "maybe-uninitialized" warning
      globally") was merged at the same time and disabled it completely for
      all configurations, because of false-positive warnings on x86 that I had
      not addressed until then.  This caused a lot of actual bugs to get
      merged into mainline, and I sent several dozen patches for these during
      the v4.9 development cycle.  Most of these are actual bugs, some are for
      correct code that is safe because it is only called under external
      constraints that make it impossible to run into the case that gcc sees,
      and in a few cases gcc is just stupid and finds something that can
      obviously never happen.
      
      I have now done a few thousand randconfig builds on x86 and collected
      all patches that I needed to address every single warning I got (I can
      provide the combined patch for the other warnings if anyone is
      interested), so I hope we can get the warning back and let people catch
      the actual bugs earlier.
      
      This reverts the change to disable the warning completely and for now
      brings it back at the "make W=1" level, so we can get it merged into
      mainline without introducing false positives.  A follow-up patch enables
      it on all levels unless some configuration option turns it off because
      of false-positives.
      
      Link: https://rusty.ozlabs.org/?p=232 [1]
      Link: https://gcc.gnu.org/wiki/Better_Uninitialized_Warnings
      
       [2]
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a76bcf55
  26. Nov 08, 2016
    • Vineet Gupta's avatar
      Revert "ARC: build: retire old toggles" · 76a08404
      Vineet Gupta authored
      This has caused a bunch of build failures at a few sites, with GNU
      2015.12 and older as the assembler seems to need -mlock to be able to
      grok llock/scond instructions for ARC700 builds.
      different places since the
      older tools still seem to release
      of tools which most people are using seem to trip with the -mlock flag
      not being passed.
      
      This reverts commit c3005475.
      76a08404
  27. Oct 28, 2016
  28. Sep 30, 2016
    • Vineet Gupta's avatar
      ARC: dw2 unwind: add infrastructure for adding cfi pseudo ops to asm · 5a205a32
      Vineet Gupta authored
      
      1. detect whether binutils supports the cfi pseudo ops
      2. define conditional macros to generate the ops
      3. define new ENTRY_CFI/END_CFI to annotate hand asm code.
         - Needed because we don't want to emit dwarf info in general ENTRY/END
           used by lowest level trap/exception/interrutp handlers as unwinder
           gets confused trying to unwind out of them. We want unwinder to
           instead stop when it hits onfo those routines
         - These provide minimal start/end cfi ops assuming routine doesn't
           touch stack memory/regs
      
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      5a205a32
    • Vineet Gupta's avatar
      ARC: dw2 unwind: don't force dwarf 2 · 2d048642
      Vineet Gupta authored
      
      In .debug_frame based unwinding regime, we used to force -gdwarf-2 since
      kernel unwinder only claimed to handle dwarf 2. This changed since commit
      6d0d5060 ("ARC: dw2 unwind: Don't bail for CIE.version != 1")
      which added some support beyond dwarf 2, atleast to handle CIE != 1
      
      The ill-effect of -gdwarf-2 is that it forces generation of .debug_*
      sections, which bloats loadable modules .ko files. For the curious, this
      doesn't affect vmlinx binary since linker script discards .debug_* but
      same discard is not yet implemented for modules.
      
      So it seems we can drop the -gdwarf-2 toggle, which should not be needed
      anyways given that we now use .eh_frame based unwinding.
      
      I've verified using GNU 2016.09-engo10 that the actual unwind info is
      not different with or w/o this toggle - but the debug_* sections are
      gone for good.
      
      before
      -----
      arc-linux-readelf -S q_proc.ko-unwinding-1-eh_frame-switch | grep debug
        [15] .debug_info       PROGBITS        00000000 000300 00d08d 00 	0   0  1
        [16] .rela.debug_info  RELA            00000000 0162a0 008844 0c   I 29  15  4
        [17] .debug_abbrev     PROGBITS        00000000 00d38d 0005f8 00 	0   0  1
        [18] .debug_loc        PROGBITS        00000000 00d985 000070 00 	0   0  1
        [19] .rela.debug_loc   RELA            00000000 01eae4 0000c0 0c   I 29  18  4
        [20] .debug_aranges    PROGBITS        00000000 00d9f5 000040 00 	0   0  1
        [21] .rela.debug_arang RELA            00000000 01eba4 000030 0c   I 29  20  4
        [22] .debug_ranges     PROGBITS        00000000 00da35 000018 00 	0   0  1
        [23] .rela.debug_range RELA            00000000 01ebd4 000030 0c   I 29  22  4
        [24] .debug_line       PROGBITS        00000000 00da4d 000b5b 00 	0   0  1
        [25] .rela.debug_line  RELA            00000000 01ec04 0000cc 0c   I 29  24  4
        [26] .debug_str        PROGBITS        00000000 00e5a8 007831 01   MS 0   0  1
      
      after
      ----
      
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      2d048642
    • Vineet Gupta's avatar
      ARC: dw2 unwind: switch to .eh_frame based unwinding · 6716dbbd
      Vineet Gupta authored
      
      So finally after almost 8 years of dealing with .debug_frame, we are
      finally switching to .eh_frame. The reason being stripped kernel
      binaries had non-functional unwinder as .debug_frame was gone.
      Also, in general .eh_frame seems more common way of doing unwinding.
      
      This also folds a revert of f52e126c ("ARC: unwind: ensure that
      .debug_frame is generated (vs. .eh_frame)") to ensure that we start
      getting .eh_frame
      
      Reported-by: default avatarDaniel Mentz <danielmentz@google.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      6716dbbd
  29. Jul 27, 2016
    • Linus Torvalds's avatar
      Disable "maybe-uninitialized" warning globally · 6e8d666e
      Linus Torvalds authored
      
      Several build configurations had already disabled this warning because
      it generates a lot of false positives.  But some had not, and it was
      still enabled for "allmodconfig" builds, for example.
      
      Looking at the warnings produced, every single one I looked at was a
      false positive, and the warnings are frequent enough (and big enough)
      that they can easily hide real problems that you don't notice in the
      noise generated by -Wmaybe-uninitialized.
      
      The warning is good in theory, but this is a classic case of a warning
      that causes more problems than the warning can solve.
      
      If gcc gets better at avoiding false positives, we may be able to
      re-enable this warning.  But as is, we're better off without it, and I
      want to be able to see the *real* warnings.
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6e8d666e
  30. Jun 28, 2016
    • Vineet Gupta's avatar
      ARC: unwind: ensure that .debug_frame is generated (vs. .eh_frame) · f52e126c
      Vineet Gupta authored
      
      With recent binutils update to support dwarf CFI pseudo-ops in gas, we
      now get .eh_frame vs. .debug_frame. Although the call frame info is
      exactly the same in both, the CIE differs, which the current kernel
      unwinder can't cope with.
      
      This broke both the kernel unwinder as well as loadable modules (latter
      because of a new unhandled relo R_ARC_32_PCREL from .rela.eh_frame in
      the module loader)
      
      The ideal solution would be to switch unwinder to .eh_frame.
      For now however we can make do by just ensureing .debug_frame is
      generated by removing -fasynchronous-unwind-tables
      
       .eh_frame    generated with -gdwarf-2 -fasynchronous-unwind-tables
       .debug_frame generated with -gdwarf-2
      
      Fixes STAR 9001058196
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      f52e126c
  31. May 30, 2016
  32. May 09, 2016
  33. Mar 18, 2016
    • Vineet Gupta's avatar
      ARC: build: Turn off -Wmaybe-uninitialized for ARC gcc 4.8 · a69fe1a2
      Vineet Gupta authored
      linux-next has been reporting gazillion warnings for ARC build and
      I finally decided to take a bite:
      
      http://kisskb.ellerman.id.au/kisskb/buildresult/12638735/
      
      
      
      Most of the them are due to -Wmaybe-uninitialized
      
      | ../kernel/sysctl.c: In function '__do_proc_doulongvec_minmax':
      | ../kernel/sysctl.c:1928:12: warning: 'p' may be used uninitialized in this function [-Wmaybe-uninitialized]
      |   ret = tmp - *buf;
      |            ^
      | ../kernel/sysctl.c:2342:29: note: 'p' was declared here
      |  char *kbuf = NULL, *p;
      |                     ^
      | ...
      | ...
      
      Cursory look at code seemed fine and a definite gcc false positive in say
      kernel/sysctl.c
      
      Mystery was why only for ARC (and not with ARM linaro toolchain based
      off same gcc 4.8). Turns out that -O3 (default for ARC) triggers these
      and if I enable -O3 for ARM kernel build, I see the same splat.
      
      I initially wanted to disable this only for gcc 4.8, but Arnd reported
      it is seen even on gcc 6.0 for ARM with -O3. Thus better to disable
      this independent of gcc version.
      
      Cc: Claudiu Zissulescu <Claudiu.Zissulescu@synopsys.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Michal Marek <mmarek@suse.cz>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: linux-kbuild@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      a69fe1a2
  34. Mar 12, 2016
    • Vineet Gupta's avatar
      ARC: build: Better way to detect ISA compatible toolchain · 20d78037
      Vineet Gupta authored
      
      ARC architecture has 2 instruction sets: ARCompact/ARCv2.
      While same gcc supports compiling for either (using appropriate toggles),
      we can't use the same toolchain to build kernel because libgcc needs
      to be unique and the toolchian (uClibc based) is not multilibed.
      
      uClibc toolchain is convenient since it allows all userspace and
      kernel to be built with a single install for an ISA.
      
      This however means 2 gnu installs (with same triplet prefix) are needed
      for building for 2 ISA and need to be in PATH.
      As developers we keep switching the builds, but would occassionally fail
      to update the PATH leading to usage of wrong tools. And this would only
      show up at the end of kernel build when linking incompatible libgcc.
      
      So the initial solution was to have gcc define a special preprocessor macro
      DEFAULT_CPU_xxx which is unique for default toolchain configuration.
      Claudiu proposed using grep for an existing preprocessor macro which is
      again uniquely defined per ISA.
      
      Cc: Michal Marek <mmarek@suse.cz>
      Suggested-by: default avatarClaudiu Zissulescu <claziss@synopsys.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      20d78037
Loading