Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
BC
public
external
libvpx
Commits
807acf17
Commit
807acf17
authored
12 years ago
by
John Koleszar
Browse files
Options
Download
Patches
Plain Diff
vpx_ports: merge with master
Change-Id: I25c067326153455abe1a79f8f44f70b87350e655
parent
1d0dc7c9
v1.14.0-linphone
1.4.X
experimental
feature/update_to_v1.9.0-linphone
feature/uwp_nuget
forest
frame_parallel
highbitdepth
indianrunnerduck
javanwhistlingduck
khakicampbell
linphone
linphone-android
linphone-old
longtailedduck
m29-baseline
m31-baseline
m49-2623
m52-2743
m54-2840
m56-2924
m66-3359
m68-3440
mandarinduck
mcw
mcw2
nextgen
nextgenv2
pcs-2013
playground
sandbox/Jingning/experimental
sandbox/Jingning/transcode
sandbox/Jingning/vpx
sandbox/aconverse@google.com/ansbench
sandbox/debargha/playground
sandbox/hkuang/frame_parallel
sandbox/hkuang@google.com/decode
sandbox/jimbankoski@google.com/proposed-aom
sandbox/jingning@google.com/decoder_test_suite
sandbox/jingning@google.com/experimental
sandbox/jzern@google.com/test
sandbox/wangch@google.com/vp9
sandbox/yaowu@google.com/mergeaom
stable-vp9-decoder
v1.12.0-linphone
v1.6.1_linphone
v1.7.0-linphone
v1.9.0-linphone
vp9-preview
v1.9.0
v1.9.0-rc1
v1.8.2
v1.8.1
v1.8.0
v1.7.0
v1.6.1
v1.6.0
v1.5.0
v1.4.0
v1.3.0
No related merge requests found
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
vpx_ports/arm.h
+1
-1
vpx_ports/arm.h
vpx_ports/arm_cpudetect.c
+67
-40
vpx_ports/arm_cpudetect.c
vpx_ports/asm_offsets.h
+3
-3
vpx_ports/asm_offsets.h
vpx_ports/emms.asm
+3
-3
vpx_ports/emms.asm
vpx_ports/mem.h
+1
-1
vpx_ports/mem.h
vpx_ports/mem_ops.h
+6
-6
vpx_ports/mem_ops.h
vpx_ports/mem_ops_aligned.h
+13
-13
vpx_ports/mem_ops_aligned.h
vpx_ports/vpx_timer.h
+5
-6
vpx_ports/vpx_timer.h
vpx_ports/vpxtypes.h
+1
-6
vpx_ports/vpxtypes.h
vpx_ports/x86.h
+40
-2
vpx_ports/x86.h
vpx_ports/x86_abi_support.asm
+49
-1
vpx_ports/x86_abi_support.asm
with
189 additions
and
82 deletions
vpx_ports/arm.h
+
1
−
1
View file @
807acf17
...
...
@@ -12,7 +12,7 @@
#ifndef VPX_PORTS_ARM_H
#define VPX_PORTS_ARM_H
#include
<stdlib.h>
#include
"config.h"
#include
"
vpx_
config.h"
/*ARMv5TE "Enhanced DSP" instructions.*/
#define HAS_EDSP 0x01
...
...
This diff is collapsed.
Click to expand it.
vpx_ports/arm_cpudetect.c
+
67
−
40
View file @
807acf17
...
...
@@ -29,8 +29,31 @@ static int arm_cpu_env_mask(void) {
return
env
&&
*
env
?
(
int
)
strtol
(
env
,
NULL
,
0
)
:
~
0
;
}
#if !CONFIG_RUNTIME_CPU_DETECT
#if defined(_MSC_VER)
int
arm_cpu_caps
(
void
)
{
/* This function should actually be a no-op. There is no way to adjust any of
* these because the RTCD tables do not exist: the functions are called
* statically */
int
flags
;
int
mask
;
if
(
!
arm_cpu_env_flags
(
&
flags
))
{
return
flags
;
}
mask
=
arm_cpu_env_mask
();
#if HAVE_EDSP
flags
|=
HAS_EDSP
;
#endif
/* HAVE_EDSP */
#if HAVE_MEDIA
flags
|=
HAS_MEDIA
;
#endif
/* HAVE_MEDIA */
#if HAVE_NEON
flags
|=
HAS_NEON
;
#endif
/* HAVE_NEON */
return
flags
&
mask
;
}
#elif defined(_MSC_VER)
/* end !CONFIG_RUNTIME_CPU_DETECT */
/*For GetExceptionCode() and EXCEPTION_ILLEGAL_INSTRUCTION.*/
#define WIN32_LEAN_AND_MEAN
#define WIN32_EXTRA_LEAN
...
...
@@ -47,7 +70,7 @@ int arm_cpu_caps(void) {
* instructions via their assembled hex code.
* All of these instructions should be essentially nops.
*/
#if
defined(HAVE_ARMV5TE)
#if
HAVE_EDSP
if
(
mask
&
HAS_EDSP
)
{
__try
{
/*PLD [r13]*/
...
...
@@ -57,7 +80,7 @@ int arm_cpu_caps(void) {
/*Ignore exception.*/
}
}
#if
defined(HAVE_ARMV6)
#if
HAVE_MEDIA
if
(
mask
&
HAS_MEDIA
)
__try
{
/*SHADD8 r3,r3,r3*/
...
...
@@ -67,7 +90,7 @@ int arm_cpu_caps(void) {
/*Ignore exception.*/
}
}
#if
defined(HAVE_ARMV7)
#if
HAVE_NEON
if
(
mask
&
HAS_NEON
)
{
__try
{
/*VORR q0,q0,q0*/
...
...
@@ -77,13 +100,39 @@ if (mask &HAS_NEON) {
/*Ignore exception.*/
}
}
#endif
#endif
#endif
#endif
/* HAVE_NEON */
#endif
/* HAVE_MEDIA */
#endif
/* HAVE_EDSP */
return
flags
&
mask
;
}
#elif defined(__linux__)
#elif defined(__ANDROID__)
/* end _MSC_VER */
#include
<cpu-features.h>
int
arm_cpu_caps
(
void
)
{
int
flags
;
int
mask
;
uint64_t
features
;
if
(
!
arm_cpu_env_flags
(
&
flags
))
{
return
flags
;
}
mask
=
arm_cpu_env_mask
();
features
=
android_getCpuFeatures
();
#if HAVE_EDSP
flags
|=
HAS_EDSP
;
#endif
/* HAVE_EDSP */
#if HAVE_MEDIA
flags
|=
HAS_MEDIA
;
#endif
/* HAVE_MEDIA */
#if HAVE_NEON
if
(
features
&
ANDROID_CPU_ARM_FEATURE_NEON
)
flags
|=
HAS_NEON
;
#endif
/* HAVE_NEON */
return
flags
&
mask
;
}
#elif defined(__linux__)
/* end __ANDROID__ */
#include
<stdio.h>
int
arm_cpu_caps
(
void
)
{
...
...
@@ -105,24 +154,24 @@ int arm_cpu_caps(void) {
*/
char
buf
[
512
];
while
(
fgets
(
buf
,
511
,
fin
)
!=
NULL
)
{
#if
defined(HAVE_ARMV5TE) || defined(HAVE_ARMV7)
#if
HAVE_EDSP || HAVE_NEON
if
(
memcmp
(
buf
,
"Features"
,
8
)
==
0
)
{
char
*
p
;
#if
defined(HAVE_ARMV5TE)
#if
HAVE_EDSP
p
=
strstr
(
buf
,
" edsp"
);
if
(
p
!=
NULL
&&
(
p
[
5
]
==
' '
||
p
[
5
]
==
'\n'
))
{
flags
|=
HAS_EDSP
;
}
#if
defined(HAVE_ARMV7)
#if
HAVE_NEON
p
=
strstr
(
buf
,
" neon"
);
if
(
p
!=
NULL
&&
(
p
[
5
]
==
' '
||
p
[
5
]
==
'\n'
))
{
flags
|=
HAS_NEON
;
}
#endif
#endif
#endif
/* HAVE_NEON */
#endif
/* HAVE_EDSP */
}
#endif
#if
defined(HAVE_ARMV6)
#endif
/* HAVE_EDSP || HAVE_NEON */
#if
HAVE_MEDIA
if
(
memcmp
(
buf
,
"CPU architecture:"
,
17
)
==
0
)
{
int
version
;
version
=
atoi
(
buf
+
17
);
...
...
@@ -130,35 +179,13 @@ int arm_cpu_caps(void) {
flags
|=
HAS_MEDIA
;
}
}
#endif
#endif
/* HAVE_MEDIA */
}
fclose
(
fin
);
}
return
flags
&
mask
;
}
#elif !CONFIG_RUNTIME_CPU_DETECT
int
arm_cpu_caps
(
void
)
{
int
flags
;
int
mask
;
if
(
!
arm_cpu_env_flags
(
&
flags
))
{
return
flags
;
}
mask
=
arm_cpu_env_mask
();
#if defined(HAVE_ARMV5TE)
flags
|=
HAS_EDSP
;
#endif
#if defined(HAVE_ARMV6)
flags
|=
HAS_MEDIA
;
#endif
#if defined(HAVE_ARMV7)
flags
|=
HAS_NEON
;
#endif
return
flags
&
mask
;
}
#else
#else
/* end __linux__ */
#error "--enable-runtime-cpu-detect selected, but no CPU detection method " \
"available for your platform. Reconfigure with
out --en
able-runtime-cpu-detect."
"available for your platform. Reconfigure with
--dis
able-runtime-cpu-detect."
#endif
This diff is collapsed.
Click to expand it.
vpx_ports/asm_offsets.h
+
3
−
3
View file @
807acf17
...
...
@@ -18,12 +18,12 @@
static void assert_##name(void) UNUSED;\
static void assert_##name(void) {switch(0){case 0:case !!(cond):;}}
#if
defined(INLINE_ASM) &&
INLINE_ASM
#define DEFINE(sym, val) asm("\n" #sym " EQU %0" : : "i" (val))
;
#if INLINE_ASM
#define DEFINE(sym, val) asm("\n" #sym " EQU %0" : : "i" (val))
#define BEGIN int main(void) {
#define END return 0; }
#else
#define DEFINE(sym, val) int sym = val
;
#define DEFINE(sym, val)
const
int sym = val
#define BEGIN
#define END
#endif
...
...
This diff is collapsed.
Click to expand it.
vpx_ports/emms.asm
+
3
−
3
View file @
807acf17
...
...
@@ -12,14 +12,14 @@
%include "vpx_ports/x86_abi_support.asm"
section
.text
global
sym
(
vpx_reset_mmx_state
)
global
sym
(
vpx_reset_mmx_state
)
PRIVATE
sym
(
vpx_reset_mmx_state
):
emms
ret
%ifidn __OUTPUT_FORMAT__,x64
global
sym
(
vpx_winx64_fldcw
)
global
sym
(
vpx_winx64_fldcw
)
PRIVATE
sym
(
vpx_winx64_fldcw
):
sub
rsp
,
8
mov
[
rsp
],
rcx
; win x64 specific
...
...
@@ -28,7 +28,7 @@ sym(vpx_winx64_fldcw):
ret
global
sym
(
vpx_winx64_fstcw
)
global
sym
(
vpx_winx64_fstcw
)
PRIVATE
sym
(
vpx_winx64_fstcw
):
sub
rsp
,
8
fstcw
[
rsp
]
...
...
This diff is collapsed.
Click to expand it.
vpx_ports/mem.h
+
1
−
1
View file @
807acf17
...
...
@@ -14,7 +14,7 @@
#include
"vpx_config.h"
#include
"vpx/vpx_integer.h"
#if defined(__GNUC__) && __GNUC__
#if
(
defined(__GNUC__) && __GNUC__
) || defined(__SUNPRO_C)
#define DECLARE_ALIGNED(n,typ,val) typ val __attribute__ ((aligned (n)))
#elif defined(_MSC_VER)
#define DECLARE_ALIGNED(n,typ,val) __declspec(align(n)) typ val
...
...
This diff is collapsed.
Click to expand it.
vpx_ports/mem_ops.h
+
6
−
6
View file @
807acf17
...
...
@@ -139,27 +139,27 @@ static unsigned MEM_VALUE_T mem_get_le32(const void *vmem) {
#undef mem_get_sbe16
#define mem_get_sbe16 mem_ops_wrap_symbol(mem_get_sbe16)
mem_get_s_generic
(
be
,
16
)
;
mem_get_s_generic
(
be
,
16
)
#undef mem_get_sbe24
#define mem_get_sbe24 mem_ops_wrap_symbol(mem_get_sbe24)
mem_get_s_generic
(
be
,
24
)
;
mem_get_s_generic
(
be
,
24
)
#undef mem_get_sbe32
#define mem_get_sbe32 mem_ops_wrap_symbol(mem_get_sbe32)
mem_get_s_generic
(
be
,
32
)
;
mem_get_s_generic
(
be
,
32
)
#undef mem_get_sle16
#define mem_get_sle16 mem_ops_wrap_symbol(mem_get_sle16)
mem_get_s_generic
(
le
,
16
)
;
mem_get_s_generic
(
le
,
16
)
#undef mem_get_sle24
#define mem_get_sle24 mem_ops_wrap_symbol(mem_get_sle24)
mem_get_s_generic
(
le
,
24
)
;
mem_get_s_generic
(
le
,
24
)
#undef mem_get_sle32
#define mem_get_sle32 mem_ops_wrap_symbol(mem_get_sle32)
mem_get_s_generic
(
le
,
32
)
;
mem_get_s_generic
(
le
,
32
)
#undef mem_put_be16
#define mem_put_be16 mem_ops_wrap_symbol(mem_put_be16)
...
...
This diff is collapsed.
Click to expand it.
vpx_ports/mem_ops_aligned.h
+
13
−
13
View file @
807acf17
...
...
@@ -80,7 +80,7 @@
*mem = (uint##sz##_t)raw;\
}
#include
"config.h"
#include
"
vpx_
config.h"
#if CONFIG_BIG_ENDIAN
#define mem_get_be_aligned_generic(sz) mem_get_ne_aligned_generic(be,sz)
#define mem_get_sbe_aligned_generic(sz) mem_get_sne_aligned_generic(be,sz)
...
...
@@ -99,51 +99,51 @@
#undef mem_get_be16_aligned
#define mem_get_be16_aligned mem_ops_wrap_symbol(mem_get_be16_aligned)
mem_get_be_aligned_generic
(
16
)
;
mem_get_be_aligned_generic
(
16
)
#undef mem_get_be32_aligned
#define mem_get_be32_aligned mem_ops_wrap_symbol(mem_get_be32_aligned)
mem_get_be_aligned_generic
(
32
)
;
mem_get_be_aligned_generic
(
32
)
#undef mem_get_le16_aligned
#define mem_get_le16_aligned mem_ops_wrap_symbol(mem_get_le16_aligned)
mem_get_le_aligned_generic
(
16
)
;
mem_get_le_aligned_generic
(
16
)
#undef mem_get_le32_aligned
#define mem_get_le32_aligned mem_ops_wrap_symbol(mem_get_le32_aligned)
mem_get_le_aligned_generic
(
32
)
;
mem_get_le_aligned_generic
(
32
)
#undef mem_get_sbe16_aligned
#define mem_get_sbe16_aligned mem_ops_wrap_symbol(mem_get_sbe16_aligned)
mem_get_sbe_aligned_generic
(
16
)
;
mem_get_sbe_aligned_generic
(
16
)
#undef mem_get_sbe32_aligned
#define mem_get_sbe32_aligned mem_ops_wrap_symbol(mem_get_sbe32_aligned)
mem_get_sbe_aligned_generic
(
32
)
;
mem_get_sbe_aligned_generic
(
32
)
#undef mem_get_sle16_aligned
#define mem_get_sle16_aligned mem_ops_wrap_symbol(mem_get_sle16_aligned)
mem_get_sle_aligned_generic
(
16
)
;
mem_get_sle_aligned_generic
(
16
)
#undef mem_get_sle32_aligned
#define mem_get_sle32_aligned mem_ops_wrap_symbol(mem_get_sle32_aligned)
mem_get_sle_aligned_generic
(
32
)
;
mem_get_sle_aligned_generic
(
32
)
#undef mem_put_be16_aligned
#define mem_put_be16_aligned mem_ops_wrap_symbol(mem_put_be16_aligned)
mem_put_be_aligned_generic
(
16
)
;
mem_put_be_aligned_generic
(
16
)
#undef mem_put_be32_aligned
#define mem_put_be32_aligned mem_ops_wrap_symbol(mem_put_be32_aligned)
mem_put_be_aligned_generic
(
32
)
;
mem_put_be_aligned_generic
(
32
)
#undef mem_put_le16_aligned
#define mem_put_le16_aligned mem_ops_wrap_symbol(mem_put_le16_aligned)
mem_put_le_aligned_generic
(
16
)
;
mem_put_le_aligned_generic
(
16
)
#undef mem_put_le32_aligned
#define mem_put_le32_aligned mem_ops_wrap_symbol(mem_put_le32_aligned)
mem_put_le_aligned_generic
(
32
)
;
mem_put_le_aligned_generic
(
32
)
#undef mem_get_ne_aligned_generic
#undef mem_get_se_aligned_generic
...
...
This diff is collapsed.
Click to expand it.
vpx_ports/vpx_timer.h
+
5
−
6
View file @
807acf17
...
...
@@ -11,6 +11,7 @@
#ifndef VPX_TIMER_H
#define VPX_TIMER_H
#include
"vpx/vpx_integer.h"
#if CONFIG_OS_SUPPORT
...
...
@@ -72,22 +73,20 @@ vpx_usec_timer_mark(struct vpx_usec_timer *t) {
}
static
long
static
int64_t
vpx_usec_timer_elapsed
(
struct
vpx_usec_timer
*
t
)
{
#if defined(_WIN32)
LARGE_INTEGER
freq
,
diff
;
diff
.
QuadPart
=
t
->
end
.
QuadPart
-
t
->
begin
.
QuadPart
;
if
(
QueryPerformanceFrequency
(
&
freq
)
&&
diff
.
QuadPart
<
freq
.
QuadPart
)
return
(
long
)(
diff
.
QuadPart
*
1000000
/
freq
.
QuadPart
);
return
1000000
;
QueryPerformanceFrequency
(
&
freq
);
return
diff
.
QuadPart
*
1000000
/
freq
.
QuadPart
;
#else
struct
timeval
diff
;
timersub
(
&
t
->
end
,
&
t
->
begin
,
&
diff
);
return
diff
.
tv_sec
?
1000000
:
diff
.
tv_usec
;
return
diff
.
tv_sec
*
1000000
+
diff
.
tv_usec
;
#endif
}
...
...
This diff is collapsed.
Click to expand it.
vpx_ports/vpxtypes.h
+
1
−
6
View file @
807acf17
...
...
@@ -12,7 +12,7 @@
#ifndef __VPXTYPES_H__
#define __VPXTYPES_H__
#include
"vpx_
ports/
config.h"
#include
"vpx_config.h"
// #include <sys/types.h>
#ifdef _MSC_VER
...
...
@@ -96,11 +96,6 @@ typedef unsigned __int64 vpxu64;
# define PRId64 "lld"
# define VPX64 PRId64
typedef
long
vpxs64
;
#elif defined(__SYMBIAN32__)
# undef PRId64
# define PRId64 "u"
# define VPX64 PRId64
typedef
unsigned
int
vpxs64
;
#else
# error "64 bit integer type undefined for this platform!"
#endif
...
...
This diff is collapsed.
Click to expand it.
vpx_ports/x86.h
+
40
−
2
View file @
807acf17
...
...
@@ -12,7 +12,7 @@
#ifndef VPX_PORTS_X86_H
#define VPX_PORTS_X86_H
#include
<stdlib.h>
#include
"config.h"
#include
"
vpx_
config.h"
typedef
enum
{
VPX_CPU_UNKNOWN
=
-
1
,
...
...
@@ -49,6 +49,26 @@ typedef enum {
: "=a" (ax), "=D" (bx), "=c" (cx), "=d" (dx) \
: "a" (func));
#endif
#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
#if ARCH_X86_64
#define cpuid(func,ax,bx,cx,dx)\
asm volatile (\
"xchg %rsi, %rbx \n\t" \
"cpuid \n\t" \
"movl %ebx, %edi \n\t" \
"xchg %rsi, %rbx \n\t" \
: "=a" (ax), "=D" (bx), "=c" (cx), "=d" (dx) \
: "a" (func));
#else
#define cpuid(func,ax,bx,cx,dx)\
asm volatile (\
"pushl %ebx \n\t" \
"cpuid \n\t" \
"movl %ebx, %edi \n\t" \
"popl %ebx \n\t" \
: "=a" (ax), "=D" (bx), "=c" (cx), "=d" (dx) \
: "a" (func));
#endif
#else
#if ARCH_X86_64
void
__cpuid
(
int
CPUInfo
[
4
],
int
info_type
);
...
...
@@ -133,9 +153,13 @@ x86_readtsc(void) {
unsigned
int
tsc
;
__asm__
__volatile__
(
"rdtsc
\n\t
"
:
"=a"
(
tsc
)
:
);
return
tsc
;
#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
unsigned
int
tsc
;
asm
volatile
(
"rdtsc
\n\t
"
:
"=a"
(
tsc
)
:
);
return
tsc
;
#else
#if ARCH_X86_64
return
__rdtsc
();
return
(
unsigned
int
)
__rdtsc
();
#else
__asm
rdtsc
;
#endif
...
...
@@ -146,6 +170,9 @@ x86_readtsc(void) {
#if defined(__GNUC__) && __GNUC__
#define x86_pause_hint()\
__asm__ __volatile__ ("pause \n\t")
#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
#define x86_pause_hint()\
asm volatile ("pause \n\t")
#else
#if ARCH_X86_64
#define x86_pause_hint()\
...
...
@@ -167,6 +194,17 @@ x87_get_control_word(void) {
__asm__
__volatile__
(
"fstcw %0
\n\t
"
:
"=m"
(
*&
mode
)
:
);
return
mode
;
}
#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
static
void
x87_set_control_word
(
unsigned
short
mode
)
{
asm
volatile
(
"fldcw %0"
:
:
"m"
(
*&
mode
));
}
static
unsigned
short
x87_get_control_word
(
void
)
{
unsigned
short
mode
;
asm
volatile
(
"fstcw %0
\n\t
"
:
"=m"
(
*&
mode
)
:
);
return
mode
;
}
#elif ARCH_X86_64
/* No fldcw intrinsics on Windows x64, punt to external asm */
extern
void
vpx_winx64_fldcw
(
unsigned
short
mode
);
...
...
This diff is collapsed.
Click to expand it.
vpx_ports/x86_abi_support.asm
+
49
−
1
View file @
807acf17
...
...
@@ -22,6 +22,8 @@
%define ABI_IS_32BIT 1
%elifidn __OUTPUT_FORMAT__,win32
%define ABI_IS_32BIT 1
%elifidn __OUTPUT_FORMAT__,aout
%define ABI_IS_32BIT 1
%else
%define ABI_IS_32BIT 0
%endif
...
...
@@ -86,12 +88,41 @@
%define sym(x) x
%elifidn __OUTPUT_FORMAT__,elf64
%define sym(x) x
%elifidn __OUTPUT_FORMAT__,elfx32
%define sym(x) x
%elifidn __OUTPUT_FORMAT__,x64
%define sym(x) x
%else
%define sym(x) _ %+ x
%endif
; PRIVATE
; Macro for the attribute to hide a global symbol for the target ABI.
; This is only active if CHROMIUM is defined.
;
; Chromium doesn't like exported global symbols due to symbol clashing with
; plugins among other things.
;
; Requires Chromium's patched copy of yasm:
; http://src.chromium.org/viewvc/chrome?view=rev&revision=73761
; http://www.tortall.net/projects/yasm/ticket/236
;
%ifdef CHROMIUM
%ifidn __OUTPUT_FORMAT__,elf32
%define PRIVATE :hidden
%elifidn __OUTPUT_FORMAT__,elf64
%define PRIVATE :hidden
%elifidn __OUTPUT_FORMAT__,elfx32
%define PRIVATE :hidden
%elifidn __OUTPUT_FORMAT__,x64
%define PRIVATE
%else
%define PRIVATE :private_extern
%endif
%else
%define PRIVATE
%endif
; arg()
; Return the address specification of the given argument
;
...
...
@@ -179,7 +210,16 @@
%endmacro
%endif
%endif
%define HIDDEN_DATA(x) x
%ifdef CHROMIUM
%ifidn __OUTPUT_FORMAT__,macho32
%define HIDDEN_DATA(x) x:private_extern
%else
%define HIDDEN_DATA(x) x
%endif
%else
%define HIDDEN_DATA(x) x
%endif
%else
%macro GET_GOT 1
%endmacro
...
...
@@ -187,6 +227,9 @@
%ifidn __OUTPUT_FORMAT__,elf64
%define WRT_PLT wrt ..plt
%define HIDDEN_DATA(x) x:data hidden
%elifidn __OUTPUT_FORMAT__,elfx32
%define WRT_PLT wrt ..plt
%define HIDDEN_DATA(x) x:data hidden
%else
%define HIDDEN_DATA(x) x
%endif
...
...
@@ -314,6 +357,8 @@
%macro SECTION_RODATA 0
section
.text
%endmacro
%elifidn __OUTPUT_FORMAT__,aout
%define SECTION_RODATA section .data
%else
%define SECTION_RODATA section .rodata
%endif
...
...
@@ -326,5 +371,8 @@ section .text
%elifidn __OUTPUT_FORMAT__,elf64
section
.note.GNU
-
stack
noalloc
noexec
nowrite
progbits
section
.text
%elifidn __OUTPUT_FORMAT__,elfx32
section
.note.GNU
-
stack
noalloc
noexec
nowrite
progbits
section
.text
%endif
This diff is collapsed.
Click to expand it.
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets