mirror of https://github.com/proxmox/mirror_qemu
elfload: only give abi_long/ulong the alignment specified by the target
Previously, this was done for target_long/ulong, and propagated to abi_long/ulong via a typedef. But target_long/ulong should not have any specific alignment, it is never used to access guest memory. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>master
parent
f8fd4fc4cd
commit
6cfd9b5251
|
@ -4153,7 +4153,6 @@ bflt="no"
|
||||||
target_nptl="no"
|
target_nptl="no"
|
||||||
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
|
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
|
||||||
gdb_xml_files=""
|
gdb_xml_files=""
|
||||||
target_long_alignment=4
|
|
||||||
target_llong_alignment=8
|
target_llong_alignment=8
|
||||||
target_libs_softmmu=
|
target_libs_softmmu=
|
||||||
|
|
||||||
|
@ -4166,10 +4165,8 @@ case "$target_arch2" in
|
||||||
;;
|
;;
|
||||||
x86_64)
|
x86_64)
|
||||||
TARGET_BASE_ARCH=i386
|
TARGET_BASE_ARCH=i386
|
||||||
target_long_alignment=8
|
|
||||||
;;
|
;;
|
||||||
alpha)
|
alpha)
|
||||||
target_long_alignment=8
|
|
||||||
target_nptl="yes"
|
target_nptl="yes"
|
||||||
;;
|
;;
|
||||||
arm|armeb)
|
arm|armeb)
|
||||||
|
@ -4188,7 +4185,6 @@ case "$target_arch2" in
|
||||||
m68k)
|
m68k)
|
||||||
bflt="yes"
|
bflt="yes"
|
||||||
gdb_xml_files="cf-core.xml cf-fp.xml"
|
gdb_xml_files="cf-core.xml cf-fp.xml"
|
||||||
target_long_alignment=2
|
|
||||||
target_llong_alignment=2
|
target_llong_alignment=2
|
||||||
;;
|
;;
|
||||||
microblaze|microblazeel)
|
microblaze|microblazeel)
|
||||||
|
@ -4211,7 +4207,6 @@ case "$target_arch2" in
|
||||||
TARGET_ARCH=mips64
|
TARGET_ARCH=mips64
|
||||||
TARGET_BASE_ARCH=mips
|
TARGET_BASE_ARCH=mips
|
||||||
echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
|
echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
|
||||||
target_long_alignment=8
|
|
||||||
;;
|
;;
|
||||||
moxie)
|
moxie)
|
||||||
;;
|
;;
|
||||||
|
@ -4233,7 +4228,6 @@ case "$target_arch2" in
|
||||||
TARGET_BASE_ARCH=ppc
|
TARGET_BASE_ARCH=ppc
|
||||||
TARGET_ABI_DIR=ppc
|
TARGET_ABI_DIR=ppc
|
||||||
gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
|
gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
|
||||||
target_long_alignment=8
|
|
||||||
;;
|
;;
|
||||||
ppc64abi32)
|
ppc64abi32)
|
||||||
TARGET_ARCH=ppc64
|
TARGET_ARCH=ppc64
|
||||||
|
@ -4251,7 +4245,6 @@ case "$target_arch2" in
|
||||||
;;
|
;;
|
||||||
sparc64)
|
sparc64)
|
||||||
TARGET_BASE_ARCH=sparc
|
TARGET_BASE_ARCH=sparc
|
||||||
target_long_alignment=8
|
|
||||||
;;
|
;;
|
||||||
sparc32plus)
|
sparc32plus)
|
||||||
TARGET_ARCH=sparc64
|
TARGET_ARCH=sparc64
|
||||||
|
@ -4261,7 +4254,6 @@ case "$target_arch2" in
|
||||||
;;
|
;;
|
||||||
s390x)
|
s390x)
|
||||||
target_nptl="yes"
|
target_nptl="yes"
|
||||||
target_long_alignment=8
|
|
||||||
;;
|
;;
|
||||||
unicore32)
|
unicore32)
|
||||||
;;
|
;;
|
||||||
|
@ -4292,7 +4284,6 @@ case "$cpu" in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
echo "TARGET_LONG_ALIGNMENT=$target_long_alignment" >> $config_target_mak
|
|
||||||
echo "TARGET_LLONG_ALIGNMENT=$target_llong_alignment" >> $config_target_mak
|
echo "TARGET_LLONG_ALIGNMENT=$target_llong_alignment" >> $config_target_mak
|
||||||
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
|
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
|
||||||
target_arch_name="`upper $TARGET_ARCH`"
|
target_arch_name="`upper $TARGET_ARCH`"
|
||||||
|
|
|
@ -40,14 +40,14 @@ typedef int64_t target_llong __attribute__((aligned(TARGET_LLONG_ALIGNMENT)));
|
||||||
typedef uint64_t target_ullong __attribute__((aligned(TARGET_LLONG_ALIGNMENT)));
|
typedef uint64_t target_ullong __attribute__((aligned(TARGET_LLONG_ALIGNMENT)));
|
||||||
/* target_ulong is the type of a virtual address */
|
/* target_ulong is the type of a virtual address */
|
||||||
#if TARGET_LONG_SIZE == 4
|
#if TARGET_LONG_SIZE == 4
|
||||||
typedef int32_t target_long __attribute__((aligned(TARGET_LONG_ALIGNMENT)));
|
typedef int32_t target_long;
|
||||||
typedef uint32_t target_ulong __attribute__((aligned(TARGET_LONG_ALIGNMENT)));
|
typedef uint32_t target_ulong;
|
||||||
#define TARGET_FMT_lx "%08x"
|
#define TARGET_FMT_lx "%08x"
|
||||||
#define TARGET_FMT_ld "%d"
|
#define TARGET_FMT_ld "%d"
|
||||||
#define TARGET_FMT_lu "%u"
|
#define TARGET_FMT_lu "%u"
|
||||||
#elif TARGET_LONG_SIZE == 8
|
#elif TARGET_LONG_SIZE == 8
|
||||||
typedef int64_t target_long __attribute__((aligned(TARGET_LONG_ALIGNMENT)));
|
typedef int64_t target_long;
|
||||||
typedef uint64_t target_ulong __attribute__((aligned(TARGET_LONG_ALIGNMENT)));
|
typedef uint64_t target_ulong;
|
||||||
#define TARGET_FMT_lx "%016" PRIx64
|
#define TARGET_FMT_lx "%016" PRIx64
|
||||||
#define TARGET_FMT_ld "%" PRId64
|
#define TARGET_FMT_ld "%" PRId64
|
||||||
#define TARGET_FMT_lu "%" PRIu64
|
#define TARGET_FMT_lu "%" PRIu64
|
||||||
|
|
|
@ -2,8 +2,15 @@
|
||||||
#define QEMU_TYPES_H
|
#define QEMU_TYPES_H
|
||||||
#include "cpu.h"
|
#include "cpu.h"
|
||||||
|
|
||||||
|
#ifdef TARGET_ABI32
|
||||||
|
#define TARGET_ABI_BITS 32
|
||||||
|
#else
|
||||||
|
#define TARGET_ABI_BITS TARGET_LONG_BITS
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef TARGET_M68K
|
#ifdef TARGET_M68K
|
||||||
#define ABI_INT_ALIGNMENT 2
|
#define ABI_INT_ALIGNMENT 2
|
||||||
|
#define ABI_LONG_ALIGNMENT 2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ABI_SHORT_ALIGNMENT
|
#ifndef ABI_SHORT_ALIGNMENT
|
||||||
|
@ -12,6 +19,9 @@
|
||||||
#ifndef ABI_INT_ALIGNMENT
|
#ifndef ABI_INT_ALIGNMENT
|
||||||
#define ABI_INT_ALIGNMENT 4
|
#define ABI_INT_ALIGNMENT 4
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef ABI_LONG_ALIGNMENT
|
||||||
|
#define ABI_LONG_ALIGNMENT (TARGET_ABI_BITS / 8)
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef int16_t abi_short __attribute__ ((aligned(ABI_SHORT_ALIGNMENT)));
|
typedef int16_t abi_short __attribute__ ((aligned(ABI_SHORT_ALIGNMENT)));
|
||||||
typedef uint16_t abi_ushort __attribute__((aligned(ABI_SHORT_ALIGNMENT)));
|
typedef uint16_t abi_ushort __attribute__((aligned(ABI_SHORT_ALIGNMENT)));
|
||||||
|
@ -19,12 +29,11 @@ typedef int32_t abi_int __attribute__((aligned(ABI_INT_ALIGNMENT)));
|
||||||
typedef uint32_t abi_uint __attribute__((aligned(ABI_INT_ALIGNMENT)));
|
typedef uint32_t abi_uint __attribute__((aligned(ABI_INT_ALIGNMENT)));
|
||||||
|
|
||||||
#ifdef TARGET_ABI32
|
#ifdef TARGET_ABI32
|
||||||
typedef uint32_t abi_ulong;
|
typedef uint32_t abi_ulong __attribute__((aligned(ABI_LONG_ALIGNMENT)));
|
||||||
typedef int32_t abi_long;
|
typedef int32_t abi_long __attribute__((aligned(ABI_LONG_ALIGNMENT)));
|
||||||
#define TARGET_ABI_FMT_lx "%08x"
|
#define TARGET_ABI_FMT_lx "%08x"
|
||||||
#define TARGET_ABI_FMT_ld "%d"
|
#define TARGET_ABI_FMT_ld "%d"
|
||||||
#define TARGET_ABI_FMT_lu "%u"
|
#define TARGET_ABI_FMT_lu "%u"
|
||||||
#define TARGET_ABI_BITS 32
|
|
||||||
|
|
||||||
static inline abi_ulong tswapal(abi_ulong v)
|
static inline abi_ulong tswapal(abi_ulong v)
|
||||||
{
|
{
|
||||||
|
@ -32,12 +41,11 @@ static inline abi_ulong tswapal(abi_ulong v)
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
typedef target_ulong abi_ulong;
|
typedef target_ulong abi_ulong __attribute__((aligned(ABI_LONG_ALIGNMENT)));
|
||||||
typedef target_long abi_long;
|
typedef target_long abi_long __attribute__((aligned(ABI_LONG_ALIGNMENT)));
|
||||||
#define TARGET_ABI_FMT_lx TARGET_FMT_lx
|
#define TARGET_ABI_FMT_lx TARGET_FMT_lx
|
||||||
#define TARGET_ABI_FMT_ld TARGET_FMT_ld
|
#define TARGET_ABI_FMT_ld TARGET_FMT_ld
|
||||||
#define TARGET_ABI_FMT_lu TARGET_FMT_lu
|
#define TARGET_ABI_FMT_lu TARGET_FMT_lu
|
||||||
#define TARGET_ABI_BITS TARGET_LONG_BITS
|
|
||||||
/* for consistency, define ABI32 too */
|
/* for consistency, define ABI32 too */
|
||||||
#if TARGET_ABI_BITS == 32
|
#if TARGET_ABI_BITS == 32
|
||||||
#define TARGET_ABI32 1
|
#define TARGET_ABI32 1
|
||||||
|
|
Loading…
Reference in New Issue