[PATCH] linker BLOCK/ALIGN/LMA memory region functions

Timothy Wall twall@alum.mit.edu
Wed Feb 9 07:57:00 GMT 2000

This patch adds the following functions to the linker:

1) Blocking: a weak sort of alignment.  Insist that a section fit within
the blocking size, or be aligned to the blocking size if it doesn't.
2) Alignment into a memory region.  Allow specification of an alignment
boundary for a section output into a memory region.
NOTE: reviewing the docs, it looks like NEXT(EXP) may already do this.
Please comment if you're familiar with this area.  If NEXT(EXP) does the
same job, this section would be removed.
3) Load-time memory regions.  Allow linking into a load-time memory
region instead of a specific load-time address.

* ld/ld.h: Add BLOCK_N macro for setting a blocking address.
* ld/ld.texinfo: Add documentation for new linker script commands.
* ld/ldexp.c (exp_fold_tree): Handle BLOCK expression type.
* ld/ldgram.y: Add handling of new tokens.
* ld/ldlang.c (lang_output_section_statement_lookup): Make use of LMA
region, if available.
  (os_region_check): New function to verify an output section fits
within a region.
  (lang_size_sectiosn): Apply section blocking instead of ALIGN_N no-op.
   os_region-check on vma and lma regions.
  (lang_leave_output_section_statement): Handle align and blocking
  (lang_leave_overlay_section): Ditto.
  (lang_leav_overlay): Ditto.
* ld/ldlang.h: Add lma_region and new prototypes.
* ld/mri.c (mri_draw_tree): Add extra align/block parameters.
* ld/emultempl/armelf.em, elf32.em, pe.em: Add default values for new
align/block parameters to
  lang_leave_output_section_statement() calls.

More information about the Binutils mailing list