[v8,0/4] Properly align all PT_LOAD segments with tests

Message ID 20220118215731.1320930-1-hjl.tools@gmail.com
Headers
Series Properly align all PT_LOAD segments with tests |

Message

H.J. Lu Jan. 18, 2022, 9:57 p.m. UTC
  Changes from v7:

1. Skip non-power of two alignment when considering the maximum p_align.
2. Add tst-p_alignmod-base.c to build tst-p_alignmod-base.so with

bool
__attribute__ ((weak, noclone, noinline))
is_aligned_p (void *p, int align)
{
  return (((uintptr_t) p) & (align - 1)) == 0;
}

3. Update the Copyright year.

Changes from v6:

1. Rebase.
2. Add tests for other p_align cases.

Linker may set p_align of a PT_LOAD segment larger than p_align of the
first PT_LOAD segment to satisfy a section alignment.  We should align
the first PT_LOAD segment to the maximum p_align of all PT_LOAD segments.


H.J. Lu (4):
  elf: Properly align all PT_LOAD segments [BZ #28676]
  elf: Add a test for PT_LOAD segments with mixed p_align [BZ #28676]
  elf: Add a test for PT_LOAD segments with p_align == 1 [BZ #28688]
  elf: Add a test for PT_LOAD segments with invalid p_align [BZ #28688]

 elf/Makefile               |  38 +++++++++++
 elf/dl-load.c              |   9 ++-
 elf/tst-elf-edit.h         | 126 +++++++++++++++++++++++++++++++++++++
 elf/tst-p_align.h          |  20 ++++++
 elf/tst-p_align1.c         |  27 ++++++++
 elf/tst-p_align2.c         |  27 ++++++++
 elf/tst-p_align3.c         |  27 ++++++++
 elf/tst-p_align3.sh        |  27 ++++++++
 elf/tst-p_alignmod-base.c  |  41 ++++++++++++
 elf/tst-p_alignmod1-edit.c |  34 ++++++++++
 elf/tst-p_alignmod2-edit.c |  27 ++++++++
 elf/tst-p_alignmod3.c      |  25 ++++++++
 12 files changed, 427 insertions(+), 1 deletion(-)
 create mode 100644 elf/tst-elf-edit.h
 create mode 100644 elf/tst-p_align.h
 create mode 100644 elf/tst-p_align1.c
 create mode 100644 elf/tst-p_align2.c
 create mode 100644 elf/tst-p_align3.c
 create mode 100755 elf/tst-p_align3.sh
 create mode 100644 elf/tst-p_alignmod-base.c
 create mode 100644 elf/tst-p_alignmod1-edit.c
 create mode 100644 elf/tst-p_alignmod2-edit.c
 create mode 100644 elf/tst-p_alignmod3.c