@@ -1189,6 +1189,32 @@ static int elf_fdpic_map_file_by_direct_mmap(struct elf_fdpic_params *params,
1189
1189
*/
1190
1190
#ifdef CONFIG_ELF_CORE
1191
1191
1192
+ struct elf_prstatus_fdpic
1193
+ {
1194
+ struct elf_siginfo pr_info ; /* Info associated with signal */
1195
+ short pr_cursig ; /* Current signal */
1196
+ unsigned long pr_sigpend ; /* Set of pending signals */
1197
+ unsigned long pr_sighold ; /* Set of held signals */
1198
+ pid_t pr_pid ;
1199
+ pid_t pr_ppid ;
1200
+ pid_t pr_pgrp ;
1201
+ pid_t pr_sid ;
1202
+ struct __kernel_old_timeval pr_utime ; /* User time */
1203
+ struct __kernel_old_timeval pr_stime ; /* System time */
1204
+ struct __kernel_old_timeval pr_cutime ; /* Cumulative user time */
1205
+ struct __kernel_old_timeval pr_cstime ; /* Cumulative system time */
1206
+ elf_gregset_t pr_reg ; /* GP registers */
1207
+ /* When using FDPIC, the loadmap addresses need to be communicated
1208
+ * to GDB in order for GDB to do the necessary relocations. The
1209
+ * fields (below) used to communicate this information are placed
1210
+ * immediately after ``pr_reg'', so that the loadmap addresses may
1211
+ * be viewed as part of the register set if so desired.
1212
+ */
1213
+ unsigned long pr_exec_fdpic_loadmap ;
1214
+ unsigned long pr_interp_fdpic_loadmap ;
1215
+ int pr_fpvalid ; /* True if math co-processor being used. */
1216
+ };
1217
+
1192
1218
/*
1193
1219
* Decide whether a segment is worth dumping; default is yes to be
1194
1220
* sure (missing info is worse than too much; etc).
@@ -1345,7 +1371,7 @@ static inline void fill_note(struct memelfnote *note, const char *name, int type
1345
1371
* fill up all the fields in prstatus from the given task struct, except
1346
1372
* registers which need to be filled up separately.
1347
1373
*/
1348
- static void fill_prstatus (struct elf_prstatus * prstatus ,
1374
+ static void fill_prstatus (struct elf_prstatus_fdpic * prstatus ,
1349
1375
struct task_struct * p , long signr )
1350
1376
{
1351
1377
prstatus -> pr_info .si_signo = prstatus -> pr_cursig = signr ;
@@ -1428,7 +1454,7 @@ static int fill_psinfo(struct elf_prpsinfo *psinfo, struct task_struct *p,
1428
1454
struct elf_thread_status
1429
1455
{
1430
1456
struct list_head list ;
1431
- struct elf_prstatus prstatus ; /* NT_PRSTATUS */
1457
+ struct elf_prstatus_fdpic prstatus ; /* NT_PRSTATUS */
1432
1458
elf_fpregset_t fpu ; /* NT_PRFPREG */
1433
1459
struct task_struct * thread ;
1434
1460
#ifdef ELF_CORE_COPY_XFPREGS
@@ -1562,7 +1588,7 @@ static int elf_fdpic_core_dump(struct coredump_params *cprm)
1562
1588
loff_t offset = 0 , dataoff ;
1563
1589
int numnote ;
1564
1590
struct memelfnote * notes = NULL ;
1565
- struct elf_prstatus * prstatus = NULL ; /* NT_PRSTATUS */
1591
+ struct elf_prstatus_fdpic * prstatus = NULL ; /* NT_PRSTATUS */
1566
1592
struct elf_prpsinfo * psinfo = NULL ; /* NT_PRPSINFO */
1567
1593
LIST_HEAD (thread_list );
1568
1594
struct list_head * t ;
0 commit comments