remove all references to .dynsym
authorAlbert ARIBAUD <albert.u.boot@aribaud.net>
Tue, 11 Jun 2013 12:17:31 +0000 (14:17 +0200)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Fri, 21 Jun 2013 21:04:05 +0000 (23:04 +0200)
Discard all .dynsym sections from linker scripts
Remove all __dynsym_start definitions from linker scripts
Remove all __dynsym_start references from the codebase

Note: this touches include/asm-generic/sections.h, which
is not ARM-specific, but actual uses of __dynsym_start
are only in ARM, so this patch can safely go through
the ARM repository.

Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
Tested-by: Lubomir Popov <lpopov@mm-sol.com>
Tested-by: Jeroen Hofstee <jeroen@myspectrum.nl>
Reviewed-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
16 files changed:
arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds
arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
arch/arm/cpu/ixp/u-boot.lds
arch/arm/cpu/u-boot-spl.lds
arch/arm/cpu/u-boot.lds
arch/arm/lib/relocate.S
board/actux1/u-boot.lds
board/actux2/u-boot.lds
board/actux3/u-boot.lds
board/ait/cam_enc_4xx/u-boot-spl.lds
board/davinci/da8xxevm/u-boot-spl-da850evm.lds
board/davinci/da8xxevm/u-boot-spl-hawk.lds
board/dvlhost/u-boot.lds
board/freescale/mx31ads/u-boot.lds
board/vpac270/u-boot-spl.lds
include/asm-generic/sections.h

index 673c725..f4e7525 100644 (file)
@@ -57,11 +57,6 @@ SECTIONS
                __rel_dyn_end = .;
        }
 
-       .dynsym : {
-               __dynsym_start = .;
-               *(.dynsym)
-       }
-
        .bss : {
                . = ALIGN(4);
                __bss_start = .;
index 967a135..446d095 100644 (file)
@@ -57,11 +57,6 @@ SECTIONS
                __rel_dyn_end = .;
        }
 
-       .dynsym : {
-               __dynsym_start = .;
-               *(.dynsym)
-       }
-
        .bss : {
                . = ALIGN(4);
                __bss_start = .;
index 553589c..5cfff68 100644 (file)
@@ -62,11 +62,6 @@ SECTIONS
                __rel_dyn_end = .;
        }
 
-       .dynsym : {
-               __dynsym_start = .;
-               *(.dynsym)
-       }
-
        _end = .;
 
 /*
@@ -88,6 +83,7 @@ SECTIONS
                KEEP(*(.__bss_end));
        }
 
+       /DISCARD/ : { *(.dynsym) }
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynamic*) }
        /DISCARD/ : { *(.plt*) }
index 1408f03..b6ed25f 100644 (file)
@@ -58,11 +58,6 @@ SECTIONS
                __rel_dyn_end = .;
        }
 
-       .dynsym : {
-               __dynsym_start = .;
-               *(.dynsym)
-       }
-
        _end = .;
 
        .bss __rel_dyn_start (OVERLAY) : {
@@ -72,6 +67,7 @@ SECTIONS
                __bss_end = .;
        }
 
+       /DISCARD/ : { *(.dynsym) }
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynamic*) }
        /DISCARD/ : { *(.plt*) }
index d9bbee3..fe2ca98 100644 (file)
@@ -65,11 +65,6 @@ SECTIONS
                __rel_dyn_end = .;
        }
 
-       .dynsym : {
-               __dynsym_start = .;
-               *(.dynsym)
-       }
-
        _end = .;
 
        /*
@@ -101,6 +96,7 @@ SECTIONS
                KEEP(*(.__bss_end));
        }
 
+       /DISCARD/ : { *(.dynsym) }
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynamic*) }
        /DISCARD/ : { *(.plt*) }
index 4446da9..7a7c4c0 100644 (file)
@@ -56,8 +56,6 @@ copy_loop:
        /*
         * fix .rel.dyn relocations
         */
-       ldr     r10, _dynsym_start_ofs  /* r10 <- __dynsym_start local ofs */
-       add     r10, r10, r7            /* r10 <- SRC &__dynsym_start */
        ldr     r2, _rel_dyn_start_ofs  /* r2 <- __rel_dyn_start local ofs */
        add     r2, r2, r7              /* r2 <- SRC &__rel_dyn_start */
        ldr     r3, _rel_dyn_end_ofs    /* r3 <- __rel_dyn_end local ofs */
@@ -69,17 +67,8 @@ fixloop:
        and     r7, r1, #0xff
        cmp     r7, #23                 /* relative fixup? */
        beq     fixrel
-       cmp     r7, #2                  /* absolute fixup? */
-       beq     fixabs
        /* ignore unknown type of fixup */
        b       fixnext
-fixabs:
-       /* absolute fix: set location to (offset) symbol value */
-       mov     r1, r1, LSR #4          /* r1 <- symbol index in .dynsym */
-       add     r1, r10, r1             /* r1 <- address of symbol in table */
-       ldr     r1, [r1, #4]            /* r1 <- symbol value */
-       add     r1, r1, r9              /* r1 <- relocated sym addr */
-       b       fixnext
 fixrel:
        /* relative fix: increase location by offset */
        ldr     r1, [r0]
@@ -106,7 +95,5 @@ _rel_dyn_start_ofs:
        .word __rel_dyn_start - relocate_code
 _rel_dyn_end_ofs:
        .word __rel_dyn_end - relocate_code
-_dynsym_start_ofs:
-       .word __dynsym_start - relocate_code
 
 ENDPROC(relocate_code)
index ef4a25b..989ad71 100644 (file)
@@ -70,11 +70,6 @@ SECTIONS
                __rel_dyn_end = .;
        }
 
-       .dynsym : {
-               __dynsym_start = .;
-               *(.dynsym)
-       }
-
        _end = .;
 
 /*
@@ -96,6 +91,7 @@ SECTIONS
                KEEP(*(.__bss_end));
        }
 
+       /DISCARD/ : { *(.dynsym) }
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynamic*) }
        /DISCARD/ : { *(.plt*) }
index 00ad8b7..0e20670 100644 (file)
@@ -70,11 +70,6 @@ SECTIONS
                __rel_dyn_end = .;
        }
 
-       .dynsym : {
-               __dynsym_start = .;
-               *(.dynsym)
-       }
-
        _end = .;
 
 /*
@@ -96,6 +91,7 @@ SECTIONS
                KEEP(*(.__bss_end));
        }
 
+       /DISCARD/ : { *(.dynsym) }
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynamic*) }
        /DISCARD/ : { *(.plt*) }
index 44b990e..b7d29b4 100644 (file)
@@ -70,11 +70,6 @@ SECTIONS
                __rel_dyn_end = .;
        }
 
-       .dynsym : {
-               __dynsym_start = .;
-               *(.dynsym)
-       }
-
        _end = .;
 
 /*
@@ -96,6 +91,7 @@ SECTIONS
                KEEP(*(.__bss_end));
        }
 
+       /DISCARD/ : { *(.dynsym) }
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynamic*) }
        /DISCARD/ : { *(.plt*) }
index 1daa1b3..3972685 100644 (file)
@@ -54,11 +54,6 @@ SECTIONS
                __rel_dyn_end = .;
        } >.sram
 
-       .dynsym : {
-               __dynsym_start = .;
-               *(.dynsym)
-       } >.sram
-
        .bss :
        {
                . = ALIGN(4);
index b1b8701..6fa4509 100644 (file)
@@ -55,11 +55,6 @@ SECTIONS
                __rel_dyn_end = .;
        } >.sram
 
-       .dynsym : {
-               __dynsym_start = .;
-               *(.dynsym)
-       } >.sram
-
        .bss :
        {
                . = ALIGN(4);
index 596a9e0..b452f20 100644 (file)
@@ -61,7 +61,6 @@ SECTIONS
        __image_copy_end = .;
        __rel_dyn_start = .;
        __rel_dyn_end = .;
-       __dynsym_start = .;
 
        __got_start = .;
        . = ALIGN(4);
index 6d4b187..ecd9efe 100644 (file)
@@ -70,11 +70,6 @@ SECTIONS
                __rel_dyn_end = .;
        }
 
-       .dynsym : {
-               __dynsym_start = .;
-               *(.dynsym)
-       }
-
        _end = .;
 
 /*
@@ -96,6 +91,7 @@ SECTIONS
                KEEP(*(.__bss_end));
        }
 
+       /DISCARD/ : { *(.dynsym) }
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynamic*) }
        /DISCARD/ : { *(.plt*) }
index 4969960..2197883 100644 (file)
@@ -73,11 +73,6 @@ SECTIONS
                __rel_dyn_end = .;
        }
 
-       .dynsym : {
-               __dynsym_start = .;
-               *(.dynsym)
-       }
-
        _end = .;
 
 /*
@@ -100,6 +95,7 @@ SECTIONS
        }
 
        /DISCARD/ : { *(.bss*) }
+       /DISCARD/ : { *(.dynsym) }
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynsym*) }
        /DISCARD/ : { *(.dynamic*) }
index 61d1154..1a3ef92 100644 (file)
@@ -67,11 +67,6 @@ SECTIONS
                __rel_dyn_end = .;
        }
 
-       .dynsym : {
-               __dynsym_start = .;
-               *(.dynsym)
-       }
-
        . = ALIGN(0x800);
 
        _end = .;
@@ -84,6 +79,7 @@ SECTIONS
        }
 
        /DISCARD/ : { *(.bss*) }
+       /DISCARD/ : { *(.dynsym) }
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynsym*) }
        /DISCARD/ : { *(.dynamic*) }
index 4b39844..3e32eee 100644 (file)
@@ -90,9 +90,6 @@ extern void _start(void);
 extern ulong _rel_dyn_start_ofs;
 extern ulong _rel_dyn_end_ofs;
 
-/* Start/end of the relocation symbol table, as an offset from _start */
-extern ulong _dynsym_start_ofs;
-
 /* End of the region to be relocated, as an offset form _start */
 extern ulong _image_copy_end_ofs;