Merge pull request #25 from q66/ppc-no-alias
fix ALIAS usage in ppc, fix meson build, hide libucontext_trampolinepull/26/head
commit
9affe94dee
|
@ -14,6 +14,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
__attribute__ ((visibility ("hidden")))
|
||||||
void
|
void
|
||||||
libucontext_trampoline(void)
|
libucontext_trampoline(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -14,6 +14,7 @@ LOCALSZ = 1
|
||||||
|
|
||||||
#include "defs.h"
|
#include "defs.h"
|
||||||
|
|
||||||
|
.hidden libucontext_trampoline
|
||||||
FUNC(libucontext_trampoline)
|
FUNC(libucontext_trampoline)
|
||||||
move $gp, $s1
|
move $gp, $s1
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ LOCALSZ = 1
|
||||||
|
|
||||||
#include "defs.h"
|
#include "defs.h"
|
||||||
|
|
||||||
|
.hidden libucontext_trampoline
|
||||||
FUNC(libucontext_trampoline)
|
FUNC(libucontext_trampoline)
|
||||||
move $gp, $s1
|
move $gp, $s1
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,10 @@
|
||||||
|
|
||||||
ALIAS(swapcontext, __libucontext_swapcontext)
|
ALIAS(swapcontext, __libucontext_swapcontext)
|
||||||
ALIAS(__swapcontext, __libucontext_swapcontext)
|
ALIAS(__swapcontext, __libucontext_swapcontext)
|
||||||
ALIAS(libucontext_swapcontext, __libucontext_swapcontext)
|
|
||||||
|
/* make sure this is visible regardless of EXPORT_UNPREFIXED */
|
||||||
|
.weak libucontext_swapcontext
|
||||||
|
libucontext_swapcontext = __libucontext_swapcontext
|
||||||
|
|
||||||
FUNC(__libucontext_swapcontext)
|
FUNC(__libucontext_swapcontext)
|
||||||
li 0, 249 # SYS_swapcontext
|
li 0, 249 # SYS_swapcontext
|
||||||
|
|
|
@ -14,7 +14,10 @@
|
||||||
|
|
||||||
ALIAS(swapcontext, __libucontext_swapcontext)
|
ALIAS(swapcontext, __libucontext_swapcontext)
|
||||||
ALIAS(__swapcontext, __libucontext_swapcontext)
|
ALIAS(__swapcontext, __libucontext_swapcontext)
|
||||||
ALIAS(libucontext_swapcontext, __libucontext_swapcontext)
|
|
||||||
|
/* make sure this is visible regardless of EXPORT_UNPREFIXED */
|
||||||
|
.weak libucontext_swapcontext
|
||||||
|
libucontext_swapcontext = __libucontext_swapcontext
|
||||||
|
|
||||||
FUNC(__libucontext_swapcontext)
|
FUNC(__libucontext_swapcontext)
|
||||||
addis 2, 12, .TOC.-__libucontext_swapcontext@ha
|
addis 2, 12, .TOC.-__libucontext_swapcontext@ha
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
#include "defs.h"
|
#include "defs.h"
|
||||||
|
|
||||||
|
.hidden libucontext_trampoline
|
||||||
FUNC(libucontext_trampoline)
|
FUNC(libucontext_trampoline)
|
||||||
basr %r14, %r7 /* run function pointer (%r7) and return here */
|
basr %r14, %r7 /* run function pointer (%r7) and return here */
|
||||||
ltgr %r8, %r8 /* check to see if uc_link (%r8) is null */
|
ltgr %r8, %r8 /* check to see if uc_link (%r8) is null */
|
||||||
|
|
66
meson.build
66
meson.build
|
@ -2,6 +2,7 @@ project(
|
||||||
'libucontext',
|
'libucontext',
|
||||||
'c',
|
'c',
|
||||||
meson_version : '>=0.55.0',
|
meson_version : '>=0.55.0',
|
||||||
|
default_options: ['c_std=gnu99', 'default_library=both'],
|
||||||
version : run_command('head', files('VERSION')).stdout()
|
version : run_command('head', files('VERSION')).stdout()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -39,6 +40,10 @@ if cpu not in ['mips', 'mips64', 'ppc', 'ppc64', 's390x']
|
||||||
project_source_files += [
|
project_source_files += [
|
||||||
'arch' / cpu / 'trampoline.c'
|
'arch' / cpu / 'trampoline.c'
|
||||||
]
|
]
|
||||||
|
else
|
||||||
|
project_source_files += [
|
||||||
|
'arch' / cpu / 'startcontext.S'
|
||||||
|
]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
project_includes = [
|
project_includes = [
|
||||||
|
@ -47,10 +52,7 @@ project_includes = [
|
||||||
]
|
]
|
||||||
|
|
||||||
build_args = [
|
build_args = [
|
||||||
'-std=gnu99',
|
'-D_BSD_SOURCE'
|
||||||
'-D_BSD_SOURCE',
|
|
||||||
'-fPIC',
|
|
||||||
'-DPIC'
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -68,11 +70,9 @@ if freestanding
|
||||||
build_args += '-DFREESTANDING'
|
build_args += '-DFREESTANDING'
|
||||||
build_posix = false
|
build_posix = false
|
||||||
export_unprefixed = false
|
export_unprefixed = false
|
||||||
project_headers += ['arch' / cpu / 'include/libucontext/bits.h']
|
project_headers += ['arch' / cpu / 'freestanding/bits.h']
|
||||||
project_includes += ['arch' / cpu / 'include']
|
|
||||||
else
|
else
|
||||||
project_headers += ['arch/common/include/libucontext/bits.h']
|
project_headers += ['arch/common/bits.h']
|
||||||
project_includes += ['arch/common/include']
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if export_unprefixed
|
if export_unprefixed
|
||||||
|
@ -84,37 +84,31 @@ endif
|
||||||
# ======
|
# ======
|
||||||
|
|
||||||
headers = include_directories(project_includes)
|
headers = include_directories(project_includes)
|
||||||
is_subproject = meson.is_subproject()
|
|
||||||
# Build only static library if subproject
|
|
||||||
|
|
||||||
libucontext_target = both_libraries(
|
libucontext_target = library(
|
||||||
'ucontext',
|
'ucontext',
|
||||||
project_source_files,
|
project_source_files,
|
||||||
version: meson.project_version(),
|
version: meson.project_version(),
|
||||||
install : not is_subproject,
|
install : not meson.is_subproject(),
|
||||||
c_args : build_args,
|
c_args : build_args,
|
||||||
|
pic: true,
|
||||||
include_directories : headers,
|
include_directories : headers,
|
||||||
)
|
)
|
||||||
if is_subproject
|
|
||||||
libucontext_target = libucontext_target.get_static_lib()
|
|
||||||
endif
|
|
||||||
libucontext_dep = declare_dependency(
|
libucontext_dep = declare_dependency(
|
||||||
include_directories: headers,
|
include_directories: headers,
|
||||||
link_with : libucontext_target
|
link_with : libucontext_target
|
||||||
)
|
)
|
||||||
|
|
||||||
if build_posix
|
if build_posix
|
||||||
libucontext_posix_target = both_libraries(
|
libucontext_posix_target = library(
|
||||||
'ucontext_posix',
|
'ucontext_posix',
|
||||||
project_source_files + ['libucontext_posix.c'],
|
project_source_files + ['libucontext_posix.c'],
|
||||||
version: meson.project_version(),
|
version: meson.project_version(),
|
||||||
install : not is_subproject,
|
install : not meson.is_subproject(),
|
||||||
c_args : build_args,
|
c_args : build_args,
|
||||||
|
pic: true,
|
||||||
include_directories : headers,
|
include_directories : headers,
|
||||||
)
|
)
|
||||||
if is_subproject
|
|
||||||
libucontext_posix_target = libucontext_posix_target.get_static_lib()
|
|
||||||
endif
|
|
||||||
libucontext_posix_dep = declare_dependency(
|
libucontext_posix_dep = declare_dependency(
|
||||||
include_directories: headers,
|
include_directories: headers,
|
||||||
link_with : libucontext_posix_target
|
link_with : libucontext_posix_target
|
||||||
|
@ -125,7 +119,7 @@ endif
|
||||||
# Project
|
# Project
|
||||||
# =======
|
# =======
|
||||||
|
|
||||||
if not is_subproject
|
if not meson.is_subproject()
|
||||||
# Make this library usable from the system's
|
# Make this library usable from the system's
|
||||||
# package manager.
|
# package manager.
|
||||||
install_headers(project_headers, subdir : meson.project_name())
|
install_headers(project_headers, subdir : meson.project_name())
|
||||||
|
@ -145,7 +139,7 @@ endif
|
||||||
# ====
|
# ====
|
||||||
|
|
||||||
# TODO: meson.build for docs
|
# TODO: meson.build for docs
|
||||||
if not is_subproject
|
if not meson.is_subproject()
|
||||||
#subdir('docs')
|
#subdir('docs')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -153,23 +147,21 @@ endif
|
||||||
# Unit Tests
|
# Unit Tests
|
||||||
# ==========
|
# ==========
|
||||||
|
|
||||||
if not is_subproject
|
test('test_libucontext',
|
||||||
test('test_libucontext',
|
executable(
|
||||||
|
'test_libucontext',
|
||||||
|
files('test_libucontext.c'),
|
||||||
|
dependencies : libucontext_dep,
|
||||||
|
install : false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if build_posix
|
||||||
|
test('test_libucontext_posix',
|
||||||
executable(
|
executable(
|
||||||
'test_libucontext',
|
'test_libucontext_posix',
|
||||||
files('test_libucontext.c'),
|
files('test_libucontext_posix.c'),
|
||||||
dependencies : libucontext_dep,
|
dependencies : [libucontext_dep, libucontext_posix_dep],
|
||||||
install : false
|
install : false
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
if build_posix
|
|
||||||
test('test_libucontext_posix',
|
|
||||||
executable(
|
|
||||||
'test_libucontext_posix',
|
|
||||||
files('test_libucontext_posix.c'),
|
|
||||||
dependencies : libucontext_posix_dep,
|
|
||||||
install : false
|
|
||||||
)
|
|
||||||
)
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
|
|
Loading…
Reference in New Issue