summaryrefslogtreecommitdiffstats
path: root/libexec/rtld-elf/rtld.c
diff options
context:
space:
mode:
authormdodd <mdodd@FreeBSD.org>2003-06-19 03:55:38 +0000
committermdodd <mdodd@FreeBSD.org>2003-06-19 03:55:38 +0000
commitca4dc263500f579375794e3f00560f5dbdef5a4f (patch)
tree79ce4076fa3de213bb6c88e48a06c7412fb332e8 /libexec/rtld-elf/rtld.c
parentb30ab680435de281a79997c003bace36f138771b (diff)
downloadFreeBSD-src-ca4dc263500f579375794e3f00560f5dbdef5a4f.zip
FreeBSD-src-ca4dc263500f579375794e3f00560f5dbdef5a4f.tar.gz
Provide a mechanism for dumping relocation information.
Setting the LD_DUMP_REL_PRE or LD_DUMP_REL_POST environment variables cause rtld-elf to output a table of all relocations. This is useful for debugging.
Diffstat (limited to 'libexec/rtld-elf/rtld.c')
-rw-r--r--libexec/rtld-elf/rtld.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
index 6bc1f77..484cd8d 100644
--- a/libexec/rtld-elf/rtld.c
+++ b/libexec/rtld-elf/rtld.c
@@ -365,6 +365,11 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_proc, Obj_Entry **objp)
exit(0);
}
+ if (getenv("LD_DUMP_REL_PRE") != NULL) {
+ dump_relocations(obj_main);
+ exit (0);
+ }
+
if (relocate_objects(obj_main,
ld_bind_now != NULL && *ld_bind_now != '\0', &obj_rtld) == -1)
die();
@@ -373,6 +378,11 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_proc, Obj_Entry **objp)
if (do_copy_relocations(obj_main) == -1)
die();
+ if (getenv("LD_DUMP_REL_POST") != NULL) {
+ dump_relocations(obj_main);
+ exit (0);
+ }
+
dbg("initializing key program variables");
set_program_var("__progname", argv[0] != NULL ? basename(argv[0]) : "");
set_program_var("environ", env);
OpenPOWER on IntegriCloud