|
From: <sv...@va...> - 2016-02-23 21:48:22
|
Author: iraisr
Date: Tue Feb 23 21:48:13 2016
New Revision: 15810
Log:
Enable remote debugging for position independent executables
on Solaris. With gcc 5.3, PIEs can be produced on Solaris 12.
gdb on Solaris requires AT_ENTRY to correctly work with those.
See very long comment before function svr4_exec_displacement().
n-i-bz
Modified:
trunk/coregrind/m_initimg/initimg-solaris.c
trunk/include/vki/vki-solaris.h
Modified: trunk/coregrind/m_initimg/initimg-solaris.c
==============================================================================
--- trunk/coregrind/m_initimg/initimg-solaris.c (original)
+++ trunk/coregrind/m_initimg/initimg-solaris.c Tue Feb 23 21:48:13 2016
@@ -442,6 +442,7 @@
AT_SUN_EXECNAME
AT_PHDR (not for elfs with no PT_PHDR, such as ld.so.1)
AT_BASE
+ AT_ENTRY
AT_FLAGS
AT_PAGESZ
AT_SUN_AUXFLAFGS
@@ -450,9 +451,9 @@
AT_SUN_SYSSTAT_ZONE_ADDR (if supported)
AT_NULL
- It would be possible to also add AT_PHENT, AT_PHNUM, AT_ENTRY,
- AT_SUN_LDDATA, but they don't seem to be so important. */
- auxsize = 9 * sizeof(*auxv);
+ It would be possible to also add AT_PHENT, AT_PHNUM, AT_SUN_LDDATA,
+ but they don't seem to be so important. */
+ auxsize = 10 * sizeof(*auxv);
# if defined(SOLARIS_RESERVE_SYSSTAT_ADDR)
auxsize += sizeof(*auxv);
# endif
@@ -631,6 +632,11 @@
auxv->a_un.a_val = info->interp_offset;
auxv++;
+ /* AT_ENTRY */
+ auxv->a_type = VKI_AT_ENTRY;
+ auxv->a_un.a_val = info->entry;
+ auxv++;
+
/* AT_FLAGS */
auxv->a_type = VKI_AT_FLAGS;
# if defined(VGA_x86) || defined(VGA_amd64)
Modified: trunk/include/vki/vki-solaris.h
==============================================================================
--- trunk/include/vki/vki-solaris.h (original)
+++ trunk/include/vki/vki-solaris.h Tue Feb 23 21:48:13 2016
@@ -257,6 +257,7 @@
#define VKI_AT_PAGESZ AT_PAGESZ
#define VKI_AT_BASE AT_BASE
#define VKI_AT_FLAGS AT_FLAGS
+#define VKI_AT_ENTRY AT_ENTRY
#define VKI_AT_SUN_PLATFORM AT_SUN_PLATFORM
#define VKI_AT_SUN_HWCAP AT_SUN_HWCAP
#define VKI_AT_SUN_EXECNAME AT_SUN_EXECNAME
|