Add -z globalaudit linker command line option to set the DF_GLOBALAUDIT flag bit in the dynamic tags.

* emultempl/elf32.em (handle_option): Accept the -z globalaudit
	command line option.
	* lexsup.c (elf_static_list_options): Add -z globalaudit.
	* ld.texinfo: Document the support for the new command line
	option.
	* NEWS: Mention the new feature.
	* testsuite/ld-elf/audit.exp: Add a test of the -z globalaudit
	command line option.
	* testsuite/ld-elf/globalaudit.rd: New file: Expected output from
	readelf.
This commit is contained in:
Nick Clifton 2017-08-11 16:36:28 +01:00
parent 9593aade74
commit 93ab9c0de7
7 changed files with 36 additions and 0 deletions

View file

@ -1,3 +1,16 @@
2017-08-11 Nick Clifton <nickc@redhat.com>
* emultempl/elf32.em (handle_option): Accept the -z globalaudit
command line option.
* lexsup.c (elf_static_list_options): Add -z globalaudit.
* ld.texinfo: Document the support for the new command line
option.
* NEWS: Mention the new feature.
* testsuite/ld-elf/audit.exp: Add a test of the -z globalaudit
command line option.
* testsuite/ld-elf/globalaudit.rd: New file: Expected output from
readelf.
2017-08-11 H.J. Lu <hongjiu.lu@intel.com> 2017-08-11 H.J. Lu <hongjiu.lu@intel.com>
PR ld/21884 PR ld/21884

View file

@ -1,4 +1,7 @@
-*- text -*- -*- text -*-
* Add -z globalaudit command line option to force audit libraries to be run
for every dynamic object loaded by an executable - provided that the loader
supports this functionality.
* Tighten linker script grammar around file name specifiers to prevent the use * Tighten linker script grammar around file name specifiers to prevent the use
of SORT_BY_ALIGNMENT and SORT_BY_INIT_PRIORITY on filenames. These would of SORT_BY_ALIGNMENT and SORT_BY_INIT_PRIORITY on filenames. These would

View file

@ -2676,6 +2676,10 @@ fragment <<EOF
link_info.noexecstack = TRUE; link_info.noexecstack = TRUE;
link_info.execstack = FALSE; link_info.execstack = FALSE;
} }
else if (strcmp (optarg, "globalaudit") == 0)
{
link_info.flags_1 |= DF_1_GLOBAUDIT;
}
EOF EOF
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then

View file

@ -1136,6 +1136,14 @@ This option is only meaningful when building a shared object. It makes
the symbols defined by this shared object available for symbol resolution the symbols defined by this shared object available for symbol resolution
of subsequently loaded libraries. of subsequently loaded libraries.
@item globalaudit
This option is only meaningful when building a dynamic executable.
This option marks the executable as requiring global auditing by
setting the @code{DF_1_GLOBAUDIT} bit in the @code{DT_FLAGS_1} dynamic
tag. Global auditing requires that any auditing library defined via
the @option{--depaudit} or @option{-P} command line options be run for
all dynamic objects loaded by the application.
@item initfirst @item initfirst
This option is only meaningful when building a shared object. This option is only meaningful when building a shared object.
It marks the object so that its runtime initialization will occur It marks the object so that its runtime initialization will occur

View file

@ -1828,6 +1828,8 @@ elf_static_list_options (FILE *file)
-z execstack Mark executable as requiring executable stack\n")); -z execstack Mark executable as requiring executable stack\n"));
fprintf (file, _("\ fprintf (file, _("\
-z noexecstack Mark executable as not requiring executable stack\n")); -z noexecstack Mark executable as not requiring executable stack\n"));
fprintf (file, _("\
-z globalaudit Mark executable requiring global auditing\n"));
} }
static void static void

View file

@ -60,6 +60,9 @@ set build_tests {
{"Run with -lusesaudit -lusesaudit2" {"Run with -lusesaudit -lusesaudit2"
"-Ltmpdir/ -lusesaudit -lusesaudit2" "" "-Ltmpdir/ -lusesaudit -lusesaudit2" ""
{main.c} {{"readelf" {-d} "depaudit2.rd"}} "useslibusesaudit2.out"} {main.c} {{"readelf" {-d} "depaudit2.rd"}} "useslibusesaudit2.out"}
{"Link with -z globalaudit"
"-Wl,-Paudit.so -Wl,-z,globalaudit" ""
{main.c} {{"readelf" {-d} "globalaudit.rd"}} "globalaudit.out"}
} }
run_cc_link_tests $build_tests run_cc_link_tests $build_tests

View file

@ -0,0 +1,3 @@
#...
.*\(FLAGS_1\).*Flags: GLOBAUDIT
#pass