arc: No need in sections defined in sources with newer tools
authorAlexey Brodkin <abrodkin@synopsys.com>
Wed, 3 Aug 2016 17:44:39 +0000 (20:44 +0300)
committerAlexey Brodkin <abrodkin@synopsys.com>
Fri, 5 Aug 2016 09:50:25 +0000 (12:50 +0300)
Starting from arc-2016.03 GNU tools linker properly works with
symbols defined in linker script and so external declarations
are no longer required, dump them.

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
arch/arc/cpu/u-boot.lds
arch/arc/include/asm/sections.h
arch/arc/lib/Makefile
arch/arc/lib/relocate.c
arch/arc/lib/sections.c [deleted file]

index 693df74061f5c1203f18668a832fb7464abce999..d3d0a53bf2db29a1a9b963818826da3e28c77d9e 100644 (file)
@@ -4,38 +4,29 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
+#include <config.h>
+
 OUTPUT_FORMAT("elf32-littlearc", "elf32-littlearc", "elf32-littlearc")
 OUTPUT_ARCH(arc)
 ENTRY(_start)
 SECTIONS
 {
-       . = ALIGN(4);
+       . = CONFIG_SYS_TEXT_BASE;
+       __image_copy_start = .;
+       __text_start = .;
        .text : {
-               *(.__text_start)
-               *(.__image_copy_start)
                arch/arc/lib/start.o (.text*)
                *(.text*)
        }
-
-       . = ALIGN(4);
-       .text_end :
-       {
-               *(.__text_end)
-       }
+       __text_end = .;
 
        . = ALIGN(1024);
-       .ivt_start : {
-               *(.__ivt_start)
-       }
-
+       __ivt_start = .;
        .ivt :
        {
                *(.ivt)
        }
-
-       .ivt_end : {
-               *(.__ivt_end)
-       }
+       __ivt_end = .;
 
        . = ALIGN(4);
        .rodata : {
@@ -53,34 +44,20 @@ SECTIONS
        }
 
        . = ALIGN(4);
-       .rel_dyn_start : {
-               *(.__rel_dyn_start)
-       }
-
+       __rel_dyn_start = .;
        .rela.dyn : {
                *(.rela.dyn)
        }
-
-       .rel_dyn_end : {
-               *(.__rel_dyn_end)
-       }
+       __rel_dyn_end = .;
 
        . = ALIGN(4);
-       .bss_start : {
-               *(.__bss_start);
-       }
-
+       __bss_start = .;
        .bss : {
                *(.bss*)
        }
-
-       .bss_end : {
-               *(.__bss_end);
-       }
+       __bss_end = .;
 
        . = ALIGN(4);
-       .image_copy_end : {
-               *(.__image_copy_end)
-               *(.__init_end)
-       }
+       __image_copy_end = .;
+       __init_end = .;
 }
index b8f2a859fd9a17aff0db8b97decaa39faf2e556f..00f12172ab5968e8e589528cb36280f6a040db5c 100644 (file)
@@ -9,9 +9,7 @@
 
 #include <asm-generic/sections.h>
 
-extern ulong __text_end;
 extern ulong __ivt_start;
 extern ulong __ivt_end;
-extern ulong __image_copy_start;
 
 #endif /* __ASM_ARC_SECTIONS_H */
index e592802907786938db5f36fc2a819fefe3c38639..eb62b3c427480918ce016a24ba907606f1f2c051 100644 (file)
@@ -9,7 +9,6 @@ head-y := start.o
 obj-y += cache.o
 obj-y += cpu.o
 obj-y += interrupts.o
-obj-y += sections.o
 obj-y += relocate.o
 obj-y += strchr-700.o
 obj-y += strcmp.o
index 7709633d5be124d610f9ceef86a6b90c7ee669ec..7802f4054594fcfa311225c542eef9256d27c4f0 100644 (file)
@@ -6,7 +6,10 @@
 
 #include <common.h>
 #include <elf.h>
-#include <asm/sections.h>
+#include <asm-generic/sections.h>
+
+extern ulong __image_copy_start;
+extern ulong __ivt_end;
 
 DECLARE_GLOBAL_DATA_PTR;
 
diff --git a/arch/arc/lib/sections.c b/arch/arc/lib/sections.c
deleted file mode 100644 (file)
index a72c694..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 2013-2014 Synopsys, Inc. All rights reserved.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * For some reason linker sets linker-generated symbols to zero in PIE mode.
- * A work-around is substitution of linker-generated symbols with
- * compiler-generated symbols which are properly handled by linker in PAE mode.
- */
-
-char __bss_start[0] __attribute__((section(".__bss_start")));
-char __bss_end[0] __attribute__((section(".__bss_end")));
-char __image_copy_start[0] __attribute__((section(".__image_copy_start")));
-char __image_copy_end[0] __attribute__((section(".__image_copy_end")));
-char __rel_dyn_start[0] __attribute__((section(".__rel_dyn_start")));
-char __rel_dyn_end[0] __attribute__((section(".__rel_dyn_end")));
-char __text_start[0] __attribute__((section(".__text_start")));
-char __text_end[0] __attribute__((section(".__text_end")));
-char __init_end[0] __attribute__((section(".__init_end")));
-char __ivt_start[0] __attribute__((section(".__ivt_start")));
-char __ivt_end[0] __attribute__((section(".__ivt_end")));