Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: gnusrc/gnu/dist/toolchain/ld



Module Name:    gnusrc
Committed By:   thorpej
Date:           Wed Nov 20 06:51:10 UTC 2002

Modified Files:
        gnusrc/gnu/dist/toolchain/ld: ldexp.c ldgram.y ldlang.c ldlang.h
        gnusrc/gnu/dist/toolchain/ld/emultempl: elf32.em

Log Message:
Fix a problem with placing orphaned sections (like the ones with
C-referenceable names, i.e. "link sets") that happens with explicit
LMAs in the linker script:

        * As orphans are sorted after sections, the effective
          size of the section is changed.  Record a size ajustment
          for each orphan that is sorted after the section.

...and for sections which have an explicit load address expression:

        * The first time an orphan is sorted after a section,
          copy the load_base expression to the orphan, adding
          the _unadjusted_ size of the parent section.  We need
          to use the unadjusted size because by the time the
          expression can be folded, all of the orphan size
          adjustments will have accumulated, resulting in misplacing
          the orphan.

        * For each subsequent orphan sorted after a section,
          set the load_base of the orphan to the load address
          of the previous orphan plus the size of the previous
          orphan (actually, the unadjusted size, but for orphans,
          size and unadjusted size are always equal).


To generate a diff of this commit:
cvs rdiff -r1.1.1.3 -r1.2 gnusrc/gnu/dist/toolchain/ld/ldexp.c
cvs rdiff -r1.4 -r1.5 gnusrc/gnu/dist/toolchain/ld/ldgram.y
cvs rdiff -r1.1.1.4 -r1.2 gnusrc/gnu/dist/toolchain/ld/ldlang.c \
    gnusrc/gnu/dist/toolchain/ld/ldlang.h
cvs rdiff -r1.3 -r1.4 gnusrc/gnu/dist/toolchain/ld/emultempl/elf32.em

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index