From 8349e1fe4bdd624b12786f566e955e4758dcec5b Mon Sep 17 00:00:00 2001 From: verhaegs Date: Thu, 29 Dec 2005 15:18:27 +0000 Subject: [PATCH] The LIBS set is now passed as an argument to set_open_libraries and set_close_libraries. This will allow to have a separate set for each kobj linked into the kernel. Use #define to guarantee backward compatibility. git-svn-id: https://svn.aros.org/svn/aros/trunk/AROS@23903 fb15a70f-31f2-0310-bbcc-cdcc74a49acc --- compiler/autoinit/libraries.c | 6 ++--- compiler/autoinit/libraries_nolibs.c | 11 +++++---- compiler/include/aros/symbolsets.h | 45 ++++++++++++++++++++---------------- 3 files changed, 35 insertions(+), 27 deletions(-) diff --git a/compiler/autoinit/libraries.c b/compiler/autoinit/libraries.c index b61f12f4e1..cae8f78642 100644 --- a/compiler/autoinit/libraries.c +++ b/compiler/autoinit/libraries.c @@ -21,12 +21,12 @@ DECLARESET(LIBS); AROS_MAKE_ASM_SYM(int, dummy, __includelibrarieshandling, 0); AROS_EXPORT_ASM_SYM(__includelibrarieshandling); -int set_open_libraries(void) +int set_open_libraries_list(const void *list[]) { int pos; struct libraryset *set; - ForeachElementInSet(SETNAME(LIBS), 1, pos, set) + ForeachElementInSet(list, 1, pos, set) { LONG version = *set->versionptr; BOOL do_not_fail = 0; @@ -54,7 +54,7 @@ int set_open_libraries(void) return 1; } -void set_close_libraries(void) +void set_close_libraries_list(const void *list[]) { int pos; struct libraryset *set; diff --git a/compiler/autoinit/libraries_nolibs.c b/compiler/autoinit/libraries_nolibs.c index 7d8022c83f..02082f23f0 100644 --- a/compiler/autoinit/libraries_nolibs.c +++ b/compiler/autoinit/libraries_nolibs.c @@ -7,15 +7,18 @@ Lang: english */ +#include -int set_open_libraries(void) __attribute__ ((weak)); -void set_close_libraries(void) __attribute__ ((weak)); +DEFINESET(LIBS) -int set_open_libraries(void) +int set_open_libraries_list(const void *list[]) __attribute__ ((weak)); +void set_close_libraries_list(const void *list[]) __attribute__ ((weak)); + +int set_open_libraries_list(const void *list[]) { return 1; } -void set_close_libraries(void) +void set_close_libraries_list(const void *list[]) { } diff --git a/compiler/include/aros/symbolsets.h b/compiler/include/aros/symbolsets.h index 7b8c4c188c..7b88a0ea2d 100644 --- a/compiler/include/aros/symbolsets.h +++ b/compiler/include/aros/symbolsets.h @@ -21,26 +21,6 @@ struct libraryset void **baseptr; }; -extern int set_call_funcs(const void *set[], int direction, int test_fail); -extern -AROS_UFP3(int, set_call_libfuncs, - AROS_UFPA(const void**, set, A0), - AROS_UFPA(int, order, D0), - AROS_UFPA(void*, libbase, A6) -); -extern -AROS_UFP6(int, set_call_devfuncs, - AROS_UFPA(const void**, set, A0), - AROS_UFPA(int, order, D2), - AROS_UFPA(void*, ioreq, A1), - AROS_UFPA(ULONG, unitnum, D0), - AROS_UFPA(ULONG, flags, D1), - AROS_UFPA(void*, libbase, A6) -); - -extern int set_open_libraries(void); -extern void set_close_libraries(void); - #define SETNAME(set) __##set##_LIST__ #define DECLARESET(set) \ @@ -173,3 +153,28 @@ for \ AROS_EXPORT_ASM_SYM(__this_program_requires_symbol_sets_handling); #endif + +/* Function prototypes from autoinit and libinit */ +extern int set_call_funcs(const void *set[], int direction, int test_fail); +extern +AROS_UFP3(int, set_call_libfuncs, + AROS_UFPA(const void**, set, A0), + AROS_UFPA(int, order, D0), + AROS_UFPA(void*, libbase, A6) +); +extern +AROS_UFP6(int, set_call_devfuncs, + AROS_UFPA(const void**, set, A0), + AROS_UFPA(int, order, D2), + AROS_UFPA(void*, ioreq, A1), + AROS_UFPA(ULONG, unitnum, D0), + AROS_UFPA(ULONG, flags, D1), + AROS_UFPA(void*, libbase, A6) +); + +DECLARESET(LIBS) + +#define set_open_libraries() set_open_libraries_list(SETNAME(LIBS)) +#define set_close_libraries() set_close_libraries_list(SETNAME(LIBS)) +extern int set_open_libraries_list(const void *list[]); +extern void set_close_libraries_list(const void *list[]); -- 2.11.4.GIT