mirror of https://gitee.com/openkylin/qemu.git
ELF codedump build failures
Rename ELF coredump types to avoid conflict with the corresponding host types. Signed-off-by: Laurent Desnogues <laurent.desnogues@gmail.com>
This commit is contained in:
parent
379f6698d7
commit
a2547a1378
|
@ -134,13 +134,13 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i
|
||||||
regs->rip = infop->entry;
|
regs->rip = infop->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef target_ulong elf_greg_t;
|
typedef target_ulong target_elf_greg_t;
|
||||||
typedef uint32_t target_uid_t;
|
typedef uint32_t target_uid_t;
|
||||||
typedef uint32_t target_gid_t;
|
typedef uint32_t target_gid_t;
|
||||||
typedef int32_t target_pid_t;
|
typedef int32_t target_pid_t;
|
||||||
|
|
||||||
#define ELF_NREG 27
|
#define ELF_NREG 27
|
||||||
typedef elf_greg_t elf_gregset_t[ELF_NREG];
|
typedef target_elf_greg_t target_elf_gregset_t[ELF_NREG];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Note that ELF_NREG should be 29 as there should be place for
|
* Note that ELF_NREG should be 29 as there should be place for
|
||||||
|
@ -149,7 +149,7 @@ typedef elf_greg_t elf_gregset_t[ELF_NREG];
|
||||||
*
|
*
|
||||||
* See linux kernel: arch/x86/include/asm/elf.h
|
* See linux kernel: arch/x86/include/asm/elf.h
|
||||||
*/
|
*/
|
||||||
static void elf_core_copy_regs(elf_gregset_t *regs, const CPUState *env)
|
static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUState *env)
|
||||||
{
|
{
|
||||||
(*regs)[0] = env->regs[15];
|
(*regs)[0] = env->regs[15];
|
||||||
(*regs)[1] = env->regs[14];
|
(*regs)[1] = env->regs[14];
|
||||||
|
@ -211,13 +211,13 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i
|
||||||
regs->edx = 0;
|
regs->edx = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef target_ulong elf_greg_t;
|
typedef target_ulong target_elf_greg_t;
|
||||||
typedef uint16_t target_uid_t;
|
typedef uint16_t target_uid_t;
|
||||||
typedef uint16_t target_gid_t;
|
typedef uint16_t target_gid_t;
|
||||||
typedef int32_t target_pid_t;
|
typedef int32_t target_pid_t;
|
||||||
|
|
||||||
#define ELF_NREG 17
|
#define ELF_NREG 17
|
||||||
typedef elf_greg_t elf_gregset_t[ELF_NREG];
|
typedef target_elf_greg_t target_elf_gregset_t[ELF_NREG];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Note that ELF_NREG should be 19 as there should be place for
|
* Note that ELF_NREG should be 19 as there should be place for
|
||||||
|
@ -226,7 +226,7 @@ typedef elf_greg_t elf_gregset_t[ELF_NREG];
|
||||||
*
|
*
|
||||||
* See linux kernel: arch/x86/include/asm/elf.h
|
* See linux kernel: arch/x86/include/asm/elf.h
|
||||||
*/
|
*/
|
||||||
static void elf_core_copy_regs(elf_gregset_t *regs, const CPUState *env)
|
static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUState *env)
|
||||||
{
|
{
|
||||||
(*regs)[0] = env->regs[R_EBX];
|
(*regs)[0] = env->regs[R_EBX];
|
||||||
(*regs)[1] = env->regs[R_ECX];
|
(*regs)[1] = env->regs[R_ECX];
|
||||||
|
@ -286,15 +286,15 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i
|
||||||
regs->ARM_r10 = infop->start_data;
|
regs->ARM_r10 = infop->start_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef uint32_t elf_greg_t;
|
typedef uint32_t target_elf_greg_t;
|
||||||
typedef uint16_t target_uid_t;
|
typedef uint16_t target_uid_t;
|
||||||
typedef uint16_t target_gid_t;
|
typedef uint16_t target_gid_t;
|
||||||
typedef int32_t target_pid_t;
|
typedef int32_t target_pid_t;
|
||||||
|
|
||||||
#define ELF_NREG 18
|
#define ELF_NREG 18
|
||||||
typedef elf_greg_t elf_gregset_t[ELF_NREG];
|
typedef target_elf_greg_t target_elf_gregset_t[ELF_NREG];
|
||||||
|
|
||||||
static void elf_core_copy_regs(elf_gregset_t *regs, const CPUState *env)
|
static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUState *env)
|
||||||
{
|
{
|
||||||
(*regs)[0] = env->regs[0];
|
(*regs)[0] = env->regs[0];
|
||||||
(*regs)[1] = env->regs[1];
|
(*regs)[1] = env->regs[1];
|
||||||
|
@ -1748,7 +1748,7 @@ int load_elf_binary(struct linux_binprm * bprm, struct target_pt_regs * regs,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Definitions to generate Intel SVR4-like core files.
|
* Definitions to generate Intel SVR4-like core files.
|
||||||
* These mostly have the same names as the SVR4 types with "elf_"
|
* These mostly have the same names as the SVR4 types with "target_elf_"
|
||||||
* tacked on the front to prevent clashes with linux definitions,
|
* tacked on the front to prevent clashes with linux definitions,
|
||||||
* and the typedef forms have been avoided. This is mostly like
|
* and the typedef forms have been avoided. This is mostly like
|
||||||
* the SVR4 structure, but more Linuxy, with things that Linux does
|
* the SVR4 structure, but more Linuxy, with things that Linux does
|
||||||
|
@ -1768,9 +1768,9 @@ int load_elf_binary(struct linux_binprm * bprm, struct target_pt_regs * regs,
|
||||||
* Next you define type of register set used for dumping. ELF specification
|
* Next you define type of register set used for dumping. ELF specification
|
||||||
* says that it needs to be array of elf_greg_t that has size of ELF_NREG.
|
* says that it needs to be array of elf_greg_t that has size of ELF_NREG.
|
||||||
*
|
*
|
||||||
* typedef <target_regtype> elf_greg_t;
|
* typedef <target_regtype> target_elf_greg_t;
|
||||||
* #define ELF_NREG <number of registers>
|
* #define ELF_NREG <number of registers>
|
||||||
* typedef elf_greg_t elf_gregset_t[ELF_NREG];
|
* typedef taret_elf_greg_t target_elf_gregset_t[ELF_NREG];
|
||||||
*
|
*
|
||||||
* Then define following types to match target types. Actual types can
|
* Then define following types to match target types. Actual types can
|
||||||
* be found from linux kernel (arch/<ARCH>/include/asm/posix_types.h):
|
* be found from linux kernel (arch/<ARCH>/include/asm/posix_types.h):
|
||||||
|
@ -1782,7 +1782,8 @@ int load_elf_binary(struct linux_binprm * bprm, struct target_pt_regs * regs,
|
||||||
* Last step is to implement target specific function that copies registers
|
* Last step is to implement target specific function that copies registers
|
||||||
* from given cpu into just specified register set. Prototype is:
|
* from given cpu into just specified register set. Prototype is:
|
||||||
*
|
*
|
||||||
* static void elf_core_copy_regs(elf_gregset_t *regs, const CPUState *env);
|
* static void elf_core_copy_regs(taret_elf_gregset_t *regs,
|
||||||
|
* const CPUState *env);
|
||||||
*
|
*
|
||||||
* Parameters:
|
* Parameters:
|
||||||
* regs - copy register values into here (allocated and zeroed by caller)
|
* regs - copy register values into here (allocated and zeroed by caller)
|
||||||
|
@ -1802,14 +1803,14 @@ struct memelfnote {
|
||||||
size_t notesz;
|
size_t notesz;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct elf_siginfo {
|
struct target_elf_siginfo {
|
||||||
int si_signo; /* signal number */
|
int si_signo; /* signal number */
|
||||||
int si_code; /* extra code */
|
int si_code; /* extra code */
|
||||||
int si_errno; /* errno */
|
int si_errno; /* errno */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct elf_prstatus {
|
struct target_elf_prstatus {
|
||||||
struct elf_siginfo pr_info; /* Info associated with signal */
|
struct target_elf_siginfo pr_info; /* Info associated with signal */
|
||||||
short pr_cursig; /* Current signal */
|
short pr_cursig; /* Current signal */
|
||||||
target_ulong pr_sigpend; /* XXX */
|
target_ulong pr_sigpend; /* XXX */
|
||||||
target_ulong pr_sighold; /* XXX */
|
target_ulong pr_sighold; /* XXX */
|
||||||
|
@ -1821,13 +1822,13 @@ struct elf_prstatus {
|
||||||
struct target_timeval pr_stime; /* XXX System time */
|
struct target_timeval pr_stime; /* XXX System time */
|
||||||
struct target_timeval pr_cutime; /* XXX Cumulative user time */
|
struct target_timeval pr_cutime; /* XXX Cumulative user time */
|
||||||
struct target_timeval pr_cstime; /* XXX Cumulative system time */
|
struct target_timeval pr_cstime; /* XXX Cumulative system time */
|
||||||
elf_gregset_t pr_reg; /* GP registers */
|
target_elf_gregset_t pr_reg; /* GP registers */
|
||||||
int pr_fpvalid; /* XXX */
|
int pr_fpvalid; /* XXX */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ELF_PRARGSZ (80) /* Number of chars for args */
|
#define ELF_PRARGSZ (80) /* Number of chars for args */
|
||||||
|
|
||||||
struct elf_prpsinfo {
|
struct target_elf_prpsinfo {
|
||||||
char pr_state; /* numeric process state */
|
char pr_state; /* numeric process state */
|
||||||
char pr_sname; /* char for pr_state */
|
char pr_sname; /* char for pr_state */
|
||||||
char pr_zomb; /* zombie */
|
char pr_zomb; /* zombie */
|
||||||
|
@ -1844,7 +1845,7 @@ struct elf_prpsinfo {
|
||||||
/* Here is the structure in which status of each thread is captured. */
|
/* Here is the structure in which status of each thread is captured. */
|
||||||
struct elf_thread_status {
|
struct elf_thread_status {
|
||||||
TAILQ_ENTRY(elf_thread_status) ets_link;
|
TAILQ_ENTRY(elf_thread_status) ets_link;
|
||||||
struct elf_prstatus prstatus; /* NT_PRSTATUS */
|
struct target_elf_prstatus prstatus; /* NT_PRSTATUS */
|
||||||
#if 0
|
#if 0
|
||||||
elf_fpregset_t fpu; /* NT_PRFPREG */
|
elf_fpregset_t fpu; /* NT_PRFPREG */
|
||||||
struct task_struct *thread;
|
struct task_struct *thread;
|
||||||
|
@ -1856,8 +1857,8 @@ struct elf_thread_status {
|
||||||
|
|
||||||
struct elf_note_info {
|
struct elf_note_info {
|
||||||
struct memelfnote *notes;
|
struct memelfnote *notes;
|
||||||
struct elf_prstatus *prstatus; /* NT_PRSTATUS */
|
struct target_elf_prstatus *prstatus; /* NT_PRSTATUS */
|
||||||
struct elf_prpsinfo *psinfo; /* NT_PRPSINFO */
|
struct target_elf_prpsinfo *psinfo; /* NT_PRPSINFO */
|
||||||
|
|
||||||
TAILQ_HEAD(thread_list_head, elf_thread_status) thread_list;
|
TAILQ_HEAD(thread_list_head, elf_thread_status) thread_list;
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -1899,8 +1900,8 @@ static int vma_walker(void *priv, unsigned long start, unsigned long end,
|
||||||
static void fill_elf_header(struct elfhdr *, int, uint16_t, uint32_t);
|
static void fill_elf_header(struct elfhdr *, int, uint16_t, uint32_t);
|
||||||
static void fill_note(struct memelfnote *, const char *, int,
|
static void fill_note(struct memelfnote *, const char *, int,
|
||||||
unsigned int, void *);
|
unsigned int, void *);
|
||||||
static void fill_prstatus(struct elf_prstatus *, const TaskState *, int);
|
static void fill_prstatus(struct target_elf_prstatus *, const TaskState *, int);
|
||||||
static int fill_psinfo(struct elf_prpsinfo *, const TaskState *);
|
static int fill_psinfo(struct target_elf_prpsinfo *, const TaskState *);
|
||||||
static void fill_auxv_note(struct memelfnote *, const TaskState *);
|
static void fill_auxv_note(struct memelfnote *, const TaskState *);
|
||||||
static void fill_elf_note_phdr(struct elf_phdr *, int, off_t);
|
static void fill_elf_note_phdr(struct elf_phdr *, int, off_t);
|
||||||
static size_t note_size(const struct memelfnote *);
|
static size_t note_size(const struct memelfnote *);
|
||||||
|
@ -1914,10 +1915,10 @@ static int write_note(struct memelfnote *, int);
|
||||||
static int write_note_info(struct elf_note_info *, int);
|
static int write_note_info(struct elf_note_info *, int);
|
||||||
|
|
||||||
#ifdef BSWAP_NEEDED
|
#ifdef BSWAP_NEEDED
|
||||||
static void bswap_prstatus(struct elf_prstatus *);
|
static void bswap_prstatus(struct target_elf_prstatus *);
|
||||||
static void bswap_psinfo(struct elf_prpsinfo *);
|
static void bswap_psinfo(struct target_elf_prpsinfo *);
|
||||||
|
|
||||||
static void bswap_prstatus(struct elf_prstatus *prstatus)
|
static void bswap_prstatus(struct target_elf_prstatus *prstatus)
|
||||||
{
|
{
|
||||||
prstatus->pr_info.si_signo = tswapl(prstatus->pr_info.si_signo);
|
prstatus->pr_info.si_signo = tswapl(prstatus->pr_info.si_signo);
|
||||||
prstatus->pr_info.si_code = tswapl(prstatus->pr_info.si_code);
|
prstatus->pr_info.si_code = tswapl(prstatus->pr_info.si_code);
|
||||||
|
@ -1934,7 +1935,7 @@ static void bswap_prstatus(struct elf_prstatus *prstatus)
|
||||||
prstatus->pr_fpvalid = tswap32(prstatus->pr_fpvalid);
|
prstatus->pr_fpvalid = tswap32(prstatus->pr_fpvalid);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void bswap_psinfo(struct elf_prpsinfo *psinfo)
|
static void bswap_psinfo(struct target_elf_prpsinfo *psinfo)
|
||||||
{
|
{
|
||||||
psinfo->pr_flag = tswapl(psinfo->pr_flag);
|
psinfo->pr_flag = tswapl(psinfo->pr_flag);
|
||||||
psinfo->pr_uid = tswap16(psinfo->pr_uid);
|
psinfo->pr_uid = tswap16(psinfo->pr_uid);
|
||||||
|
@ -2128,7 +2129,7 @@ static size_t note_size(const struct memelfnote *note)
|
||||||
return (note->notesz);
|
return (note->notesz);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fill_prstatus(struct elf_prstatus *prstatus,
|
static void fill_prstatus(struct target_elf_prstatus *prstatus,
|
||||||
const TaskState *ts, int signr)
|
const TaskState *ts, int signr)
|
||||||
{
|
{
|
||||||
(void) memset(prstatus, 0, sizeof (*prstatus));
|
(void) memset(prstatus, 0, sizeof (*prstatus));
|
||||||
|
@ -2143,7 +2144,7 @@ static void fill_prstatus(struct elf_prstatus *prstatus,
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fill_psinfo(struct elf_prpsinfo *psinfo, const TaskState *ts)
|
static int fill_psinfo(struct target_elf_prpsinfo *psinfo, const TaskState *ts)
|
||||||
{
|
{
|
||||||
char *filename, *base_filename;
|
char *filename, *base_filename;
|
||||||
unsigned int i, len;
|
unsigned int i, len;
|
||||||
|
|
Loading…
Reference in New Issue