From 1a5a18a3f3c0e6b19ea9aad759f2f2577d909170 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 5 Jun 2018 14:44:48 +0200 Subject: vala: fix extract_all_objects() result Because vala is not listed in clike_langs, is_source(fname) is returning False for Vala source files. Therefore, extract_all_objects() is completely empty for Vala programs. Fixes #791 --- test cases/vala/25 extract_all_objects/meson.build | 11 +++++++++++ test cases/vala/25 extract_all_objects/prog.vala | 7 +++++++ test cases/vala/26 vala and asm/meson.build | 23 ++++++++++++++++++++++ test cases/vala/26 vala and asm/prog.vala | 9 +++++++++ test cases/vala/26 vala and asm/retval-arm.S | 11 +++++++++++ test cases/vala/26 vala and asm/retval-x86.S | 12 +++++++++++ test cases/vala/26 vala and asm/retval-x86_64.S | 11 +++++++++++ .../vala/26 vala and asm/symbol-underscore.h | 5 +++++ 8 files changed, 89 insertions(+) create mode 100644 test cases/vala/25 extract_all_objects/meson.build create mode 100644 test cases/vala/25 extract_all_objects/prog.vala create mode 100644 test cases/vala/26 vala and asm/meson.build create mode 100644 test cases/vala/26 vala and asm/prog.vala create mode 100644 test cases/vala/26 vala and asm/retval-arm.S create mode 100644 test cases/vala/26 vala and asm/retval-x86.S create mode 100644 test cases/vala/26 vala and asm/retval-x86_64.S create mode 100644 test cases/vala/26 vala and asm/symbol-underscore.h (limited to 'test cases/vala') diff --git a/test cases/vala/25 extract_all_objects/meson.build b/test cases/vala/25 extract_all_objects/meson.build new file mode 100644 index 0000000..a1a4ebc --- /dev/null +++ b/test cases/vala/25 extract_all_objects/meson.build @@ -0,0 +1,11 @@ +project('valatest', 'vala', 'c') + +valadeps = [dependency('glib-2.0'), dependency('gobject-2.0')] + +# A dummy target, just so that we can check that extract_all_objects() works +# properly for Vala sources. Due to a bug, Vala's .c.o files weren't included +# which would cause the "e" executable below to have no "main" and fail to link. +dummy = executable('valaprog_dummy', 'prog.vala', dependencies : valadeps, build_by_default: false) + +objs = dummy.extract_all_objects() +e = executable('valaprog', objects: objs, dependencies : valadeps) diff --git a/test cases/vala/25 extract_all_objects/prog.vala b/test cases/vala/25 extract_all_objects/prog.vala new file mode 100644 index 0000000..638e776 --- /dev/null +++ b/test cases/vala/25 extract_all_objects/prog.vala @@ -0,0 +1,7 @@ +class MainProg : GLib.Object { + + public static int main(string[] args) { + stdout.printf("Vala is working.\n"); + return 0; + } +} diff --git a/test cases/vala/26 vala and asm/meson.build b/test cases/vala/26 vala and asm/meson.build new file mode 100644 index 0000000..4e662e7 --- /dev/null +++ b/test cases/vala/26 vala and asm/meson.build @@ -0,0 +1,23 @@ +project('vala and asm', 'vala', 'c') + +cpu = host_machine.cpu_family() +cc = meson.get_compiler('c') + +supported_cpus = ['arm', 'x86', 'x86_64'] + +if not supported_cpus.contains(cpu) + error('MESON_SKIP_TEST unsupported cpu:' + cpu) +endif + +if meson.get_compiler('c').get_id() == 'msvc' + error('MESON_SKIP_TEST MSVC can\'t compile assembly') +endif + +if cc.symbols_have_underscore_prefix() + add_project_arguments('-DMESON_TEST__UNDERSCORE_SYMBOL', language: 'c') +endif + +valadeps = [dependency('glib-2.0'), dependency('gobject-2.0')] +e = executable('vala-asm', ['prog.vala', 'retval-' + cpu + '.S'], + dependencies: valadeps) +test('test-vala-asm', e) diff --git a/test cases/vala/26 vala and asm/prog.vala b/test cases/vala/26 vala and asm/prog.vala new file mode 100644 index 0000000..d5f89a4 --- /dev/null +++ b/test cases/vala/26 vala and asm/prog.vala @@ -0,0 +1,9 @@ +extern int get_retval(); + +class MainProg : GLib.Object { + + public static int main(string[] args) { + stdout.printf("Vala is working.\n"); + return get_retval(); + } +} diff --git a/test cases/vala/26 vala and asm/retval-arm.S b/test cases/vala/26 vala and asm/retval-arm.S new file mode 100644 index 0000000..a892362 --- /dev/null +++ b/test cases/vala/26 vala and asm/retval-arm.S @@ -0,0 +1,11 @@ +#include "symbol-underscore.h" + +.text +.globl SYMBOL_NAME(get_retval) +# ifdef __linux__ +.type get_retval, %function +#endif + +SYMBOL_NAME(get_retval): + mov r0, #0 + mov pc, lr diff --git a/test cases/vala/26 vala and asm/retval-x86.S b/test cases/vala/26 vala and asm/retval-x86.S new file mode 100644 index 0000000..3cb0237 --- /dev/null +++ b/test cases/vala/26 vala and asm/retval-x86.S @@ -0,0 +1,12 @@ +#include "symbol-underscore.h" + +.text +.globl SYMBOL_NAME(get_retval) +/* Only supported on Linux with GAS */ +# ifdef __linux__ +.type get_retval, %function +#endif + +SYMBOL_NAME(get_retval): + xorl %eax, %eax + retl diff --git a/test cases/vala/26 vala and asm/retval-x86_64.S b/test cases/vala/26 vala and asm/retval-x86_64.S new file mode 100644 index 0000000..1a5f3eb --- /dev/null +++ b/test cases/vala/26 vala and asm/retval-x86_64.S @@ -0,0 +1,11 @@ +#include "symbol-underscore.h" + +.text +.globl SYMBOL_NAME(get_retval) +# ifdef __linux__ +.type get_retval, %function +#endif + +SYMBOL_NAME(get_retval): + xorl %eax, %eax + retq diff --git a/test cases/vala/26 vala and asm/symbol-underscore.h b/test cases/vala/26 vala and asm/symbol-underscore.h new file mode 100644 index 0000000..d0f3ef9 --- /dev/null +++ b/test cases/vala/26 vala and asm/symbol-underscore.h @@ -0,0 +1,5 @@ +#if defined(MESON_TEST__UNDERSCORE_SYMBOL) +# define SYMBOL_NAME(name) _##name +#else +# define SYMBOL_NAME(name) name +#endif -- cgit v1.1